Sandstar Web Socket

实时浏览器到设备通信

直接将您的浏览器连接到楼宇控制器 -- 无需插件、Java 小程序或中间件困扰。

Sandstar Web Socket 在 Web 应用程序和基于 Sedona 的楼宇自动化控制器之间提供实时、双向通信。打开浏览器标签页,连接到设备,开始读取传感器数值、写入设定值和监控变化 -- 一切都在实时进行。

作为原生 SkySpark 扩展构建,它可以直接集成到现有基础设施中。无需维护额外服务器,无需照管独立进程。只需安装 pod,Web 应用就能即时与 Sedona 设备通信。

存在的原因

传统上,将 Web 浏览器连接到 Sedona 控制器需要一个充当翻译器的独立 Kotlin/Java 微服务。这意味着需要管理另一个进程、处理 Java FFI 问题,以及在两个运行时环境中调试。Sandstar Web Socket 通过单个在 SkySpark 内部运行的原生 Fantom 实现消除了所有这些问题。

适用于谁

  • 楼宇自动化集成商 需要针对 Sedona 设备的基于 Web 的工具
  • SkySpark 开发人员 为设备交互构建自定义 Web 界面
  • 系统管理员 希望在自动化堆栈中减少活动部件

连接仪表板

每个设备,一目了然

查看每个连接的控制器、活跃浏览器会话和流经系统的消息 -- 实时进行。状态端点提供即时诊断,无需查看日志文件。

连接计数、每设备会话状态、DASP 套接字健康和监视管理器统计信息均可在 /live/soxstatus 获取。将其集成到监控堆栈或从浏览器检查。

SOX WebSocket 服务器
ws://localhost:7070
3
活跃设备
5
浏览器客户端
142
消息/秒
192.168.1.100:1876
ok 1 个会话
192.168.1.101:1876
ok 1 个会话
10.0.0.50:1876
down 重新连接中
DASP 套接字:活跃 正常运行时间:4 天 12 小时 37 分
浏览器标签页 1
Vue 编辑器
浏览器标签页 2
仪表板
WebSocket :7070
SoxWebSocketMod
路由器
JSON 消息
每个设备 1 个
监视
30 秒超时
DASP / UDP
Sedona 控制器
.100:1876
Sedona 控制器
.101:1876
TCP/WebSocket
UDP/DASP

实时数据流

浏览器到设备,一步之遥

您的浏览器向端口 7070 打开 WebSocket。服务器将 JSON 消息转换为 SOX 协议命令并通过 DASP/UDP 发送到 Sedona 控制器。响应沿同一路径返回 -- 无轮询、无延迟。

多个浏览器标签页自动共享同一设备会话。消息路由器处理 17 种 SOX 命令类型 -- 读取、写入、订阅、文件传输、组件管理等 -- 全部通过单个 WebSocket 连接。

r: 读取 w: 写入 sub: 订阅 v: 版本 a: 添加 d: 删除 fileGet filePut

会话管理

智能池,零连接错误

Sedona 控制器支持最多 2 个并发连接。会话池与其限制相反,为每个设备共享单个连接,在所有浏览器客户端间使用。在同一控制器上打开五个标签页 -- 它们都共享一个会话。

如果连接断开,自动恢复会以指数退避方式启动。空闲会话在 5 分钟后清理,30 秒的停留超时可防止快速连接/断开循环导致的连接抖动。您的用户永远不会看到连接错误。

1
每设备会话
5 分钟
空闲超时
30 秒
停留窗口
会话池 SoxSessionPool
192.168.1.100:1876
已连接
状态 ok
共享者
标签页 A 标签页 B 标签页 C
最后活动 2 秒前
DASP 窗口 receiveMax: 8
192.168.1.101:1876
已连接
状态 ok
共享者
标签页 D
最后活动 14 秒前
10.0.0.50:1876
重新连接中
状态 断开
重试 尝试 3,退避 10 秒
最后看到 47 秒前
实时订阅 192.168.1.100
流传输中
监视 tab-8f3a TTL: 28 秒 / 30 秒
ZoneTemp
comp #12 · slot 3 · runtime
72.4°F
+0.2 从上次
ZoneSetpoint
comp #12 · slot 5 · config
72.0°F
未改变
DamperPos
comp #18 · slot 2 · runtime
67%
-3 从上次
FanEnable
comp #20 · slot 0 · runtime
true
bool
OccSchedule
comp #25 · slot 1 · runtime
1占有
int
5 个组件已订阅 批处理事件 · 10 秒清理

实时值监控

实时监视值变化

订阅 Sedona 控制器上的任何组件并实时查看其值更新。监视系统按浏览器标签页分组订阅,因此每个页面只获取它需要的数据 -- 并在您关闭标签页时自动清理。

事件被批处理以提高效率并通过同一 WebSocket 连接交付。后台清理每 10 秒运行一次以捕捉来自断开连接的客户端的陈旧监视。如果标签页在 30 秒内停止 ping,其订阅将自动从设备中取消订阅。

多个监视可以在同一组件上重叠 -- 系统跟踪引用计数,只在最后一个监视程序离开时从设备中取消订阅。无重复订阅,无孤立监视。

文件传输

上传固件,下载配置

使用分块、可恢复传输将应用程序文件 (SAX、SAB) 传输到 Sedona 控制器或从中传输。三阶段协议 -- 打开、分块、关闭 -- 提供内置的进度跟踪和错误恢复。

每个设备的文件锁防止并发传输损坏数据。每个传输都获得唯一 ID,不活跃 5 分钟后自动清理已放弃的传输。上传新应用、下载备份或在设备上重命名文件 -- 全部通过同一 API。

512 字节分块
每设备锁定
5 分钟自动清理
上传 + 下载
文件传输 192.168.1.100
app.sab
已完成
24,576 字节 · 48 个分块 × 512B 上传 · 100%
kits.scode
传输中
131,072 字节 · 分块 164 / 256 下载 · 64%
manifest.xml
打开
等待第一个分块... 上传 · 0%
设备文件锁:活跃
3 次传输 · ID: #7

对这个项目感兴趣吗?

探索源代码、贡献代码或联系我们。