Sandstar Web Socket

Echtzeit-Kommunikation zwischen Browser und Gerät

Verbinden Sie Ihren Browser direkt mit Gebäudecontrollern -- keine Plugins, keine Java-Applets, keine Middleware-Kopfschmerzen.

Sandstar Web Socket bietet Echtzeit-Bidirektionalkommunikation zwischen Webanwendungen und Sedona-basierten Gebäudeautomationscontrollern. Öffnen Sie einen Browser-Tab, verbinden Sie sich mit einem Gerät und lesen Sie sofort Sensorwerte, schreiben Sollwerte und überwachen Änderungen -- alles in Echtzeit.

Als native SkySpark-Erweiterung lässt es sich nahtlos in Ihre bestehende Infrastruktur integrieren. Keine zusätzlichen Server zu verwalten, keine separaten Prozesse zu betreuen. Installieren Sie einfach das Pod und Ihre Web-Apps können sofort mit Sedona-Geräten kommunizieren.

Warum es existiert

Traditionalerweise war die Verbindung eines Webbrowsers mit einem Sedona-Controller ein separater Kotlin-/Java-Microservice erforderlich, der als Übersetzer fungierte. Das bedeutete, einen weiteren Prozess zu verwalten, mit Java-FFI-Besonderheiten umzugehen und über zwei Laufzeitumgebungen hinweg zu debuggen. Sandstar Web Socket beseitigt all das mit einer einzigen nativen Fantom-Implementierung, die in SkySpark selbst läuft.

Für wen es gedacht ist

  • Gebäudeautomations-Integratoren, die webbasierte Tools für Sedona-Geräte benötigen
  • SkySpark-Entwickler, die benutzerdefinierte Web-Schnittstellen für Geräteinteraktion erstellen
  • Systemadministratoren, die weniger bewegliche Teile in ihrem Automationsstapel möchten

Verbindungs-Dashboard

Jedes Gerät auf einen Blick

Sehen Sie jeden verbundenen Controller, jede aktive Browser-Sitzung und jede Nachricht, die das System durchläuft -- live. Der Status-Endpunkt gibt Ihnen sofortige Diagnose, ohne eine Protokolldatei zu öffnen.

Verbindungszahlen, geräteweise Sitzungszustände, DASP-Socket-Integrität und Watch-Manager-Statistiken sind alle verfügbar unter /live/soxstatus. Integrieren Sie es in Ihren Monitoring-Stack oder überprüfen Sie es von einem Browser aus.

SOX WebSocket Server
ws://localhost:7070
3
Aktive Geräte
5
Browser-Clients
142
Meldungen / Sek.
192.168.1.100:1876
ok 1 Sitzung
192.168.1.101:1876
ok 1 Sitzung
10.0.0.50:1876
aus wird wieder verbunden
DASP Socket: aktiv Uptime: 4d 12h 37m
Browser Tab 1
Vue Editor
Browser Tab 2
Dashboard
WebSocket :7070
SoxWebSocketMod
Router
JSON-Meldungen
Pool
1 pro Gerät
Watches
30s Timeout
DASP / UDP
Sedona Controller
.100:1876
Sedona Controller
.101:1876
TCP/WebSocket
UDP/DASP

Echtzeit-Datenfluss

Browser zu Gerät in einem Hop

Ihr Browser öffnet einen WebSocket auf Port 7070. Der Server übersetzt JSON-Nachrichten in SOX-Protokollbefehle und sendet sie über DASP/UDP an den Sedona-Controller. Antworten fließen über denselben Weg zurück -- kein Polling, keine Verzögerungen.

Mehrere Browser-Tabs teilen sich automatisch dieselbe Gerätesitzung. Der Message-Router verarbeitet 17 SOX-Befehltypen -- Lesevorgänge, Schreibvorgänge, Abos, Dateiübertragungen, Komponentenverwaltung und mehr -- alles über eine einzelne WebSocket-Verbindung.

r: read w: write sub: subscribe v: version a: add d: delete fileGet filePut

Sitzungsverwaltung

Intelligentes Pooling, keine Verbindungsfehler

Sedona-Controller unterstützen maximal 2 gleichzeitige Verbindungen. Anstatt mit diesem Limit zu kämpfen, teilt der Sitzungspool eine einzelne Verbindung pro Gerät über alle Browser-Clients. Öffnen Sie fünf Tabs zum selben Controller -- sie teilen sich eine Sitzung.

Wenn eine Verbindung abbricht, aktiviert sich automatische Wiederherstellung mit exponentiellem Backoff. Inaktive Sitzungen werden nach 5 Minuten bereinigt, und ein 30-sekündiges Linger-Timeout verhindert Verbindungsfluktuationen durch schnelle Verbindungs-/Trennzyklen. Ihre Benutzer sehen niemals Verbindungsfehler.

1
Sitzung pro Gerät
5m
Inaktivitäts-Timeout
30s
Linger-Fenster
Sitzungspool SoxSessionPool
192.168.1.100:1876
verbunden
Status ok
Gemeinsam mit
Tab A Tab B Tab C
Letzte Aktivität vor 2s
DASP-Fenster receiveMax: 8
192.168.1.101:1876
verbunden
Status ok
Gemeinsam mit
Tab D
Letzte Aktivität vor 14s
10.0.0.50:1876
wird wieder verbunden
Status aus
Wiederholung Versuch 3, Backoff 10s
Zuletzt gesehen vor 47s
Live-Abos 192.168.1.100
streamen
Watch tab-8f3a TTL: 28s / 30s
ZoneTemp
comp #12 · slot 3 · runtime
72.4°F
+0.2 seit letztem
ZoneSetpoint
comp #12 · slot 5 · config
72.0°F
unverändert
DamperPos
comp #18 · slot 2 · runtime
67%
-3 seit letztem
FanEnable
comp #20 · slot 0 · runtime
wahr
bool
OccSchedule
comp #25 · slot 1 · runtime
1belegt
int
5 Komponenten abonniert Batch-Events · 10s Bereinigung

Live-Wertverfolgung

Beobachten Sie Wertänderungen in Echtzeit

Abonnieren Sie jede Komponente auf einem Sedona-Controller und sehen Sie deren Werte live aktualisiert. Das Watch-System gruppiert Abos nach Browser-Tab, sodass jede Seite genau die benötigten Daten erhält -- und räumt sich automatisch auf, wenn Sie den Tab schließen.

Events werden zur Effizienz batch-weise zusammengefasst und über dieselbe WebSocket-Verbindung übermittelt. Die Hintergrund-Bereinigung läuft alle 10 Sekunden, um verwaiste Watches von getrennten Clients zu erfassen. Wenn ein Tab 30 Sekunden lang nicht antwortet, werden seine Abos automatisch vom Gerät abgemeldet.

Mehrere Watches können sich auf dieselbe Komponente überschneiden -- das System verfolgt Referenzzähler und meldet nur vom Gerät ab, wenn der letzte Watcher abreist. Keine doppelten Abos, keine verwaisten Watches.

Dateiübertragung

Firmware hochladen, Konfigurationen herunterladen

Übertragen Sie Anwendungsdateien (SAX, SAB) zu und von Sedona-Controllern mit segmentierten, fortsetzbaren Übertragungen. Das Drei-Phasen-Protokoll -- öffnen, Segment, schließen -- bietet Fortschrittsanzeige und Fehlerwiederherstellung.

Pro-Gerät-Dateisperren verhindern gleichzeitige Übertragungen von Datenbeschädigungen. Jede Übertragung erhält eine eindeutige ID, und verwaiste Übertragungen werden nach 5 Minuten Inaktivität automatisch bereinigt. Laden Sie eine neue Anwendung hoch, laden Sie ein Backup herunter oder benennen Sie Dateien auf dem Gerät um -- alles über dieselbe API.

512-Byte-Segmente
Pro-Gerät-Sperren
5m Auto-Bereinigung
Upload + Download
Dateiübertragungen 192.168.1.100
app.sab
abgeschlossen
24.576 Bytes · 48 Segmente × 512B Upload · 100%
kits.scode
wird übertragen
131.072 Bytes · Segment 164 / 256 Download · 64%
manifest.xml
offen
wartet auf erstes Segment... Upload · 0%
Geräte-Dateisperr: aktiv
3 Übertragungen · ID: #7

Interesse an diesem Projekt?

Erkunde den Quellcode, trage bei oder nimm Kontakt auf.