Sandstar Web Socket

Communication bidirectionnelle en temps réel navigateur-appareil

Connectez votre navigateur directement aux contrôleurs de bâtiment -- pas de plugins, pas d'applets Java, pas de problèmes de middleware.

Sandstar Web Socket apporte une communication en temps réel et bidirectionnelle entre les applications web et les contrôleurs d'automatisation de bâtiment basés sur Sedona. Ouvrez un onglet de navigateur, connectez-vous à un appareil et commencez à lire les valeurs des capteurs, à écrire les consignes et à surveiller les changements -- tout en temps réel.

Construit en tant qu'extension native de SkySpark, il s'intègre directement dans votre infrastructure existante. Pas de serveurs supplémentaires à maintenir, pas de processus séparés à surveiller. Installez simplement le pod et vos applications web peuvent parler aux appareils Sedona instantanément.

Pourquoi cela existe

Traditionnellement, connecter un navigateur web à un contrôleur Sedona nécessitait un microservice Kotlin/Java séparé agissant comme traducteur. Cela signifiait gérer un autre processus, traiter les bizarreries de l'interface FFI Java et déboguer dans deux environnements d'exécution. Sandstar Web Socket élimine tout cela avec une unique implémentation Fantom native qui s'exécute à l'intérieur de SkySpark lui-même.

À qui c'est destiné

  • Intégrateurs d'automatisation de bâtiment qui ont besoin d'outils basés sur le web pour les appareils Sedona
  • Développeurs SkySpark créant des interfaces web personnalisées pour l'interaction avec les appareils
  • Administrateurs système qui veulent moins de composants mobiles dans leur pile d'automatisation

Tableau de bord de connexion

Chaque appareil, d'un coup d'œil

Voyez chaque contrôleur connecté, chaque session de navigateur active et chaque message circulant dans le système -- en direct. Le point de terminaison de statut vous donne des diagnostics instantanés sans toucher à un fichier journal.

Les comptes de connexion, les états de session par appareil, la santé de la socket DASP et les statistiques du gestionnaire de watch sont tous disponibles à /live/soxstatus. Intégrez-le à votre pile de surveillance ou consultez-le depuis un navigateur.

Serveur SOX WebSocket
ws://localhost:7070
3
Appareils actifs
5
Clients navigateur
142
Msgs / s
192.168.1.100:1876
ok 1 session
192.168.1.101:1876
ok 1 session
10.0.0.50:1876
down reconnexion
Socket DASP : actif Uptime: 4d 12h 37m
Onglet navigateur 1
Éditeur Vue
Onglet navigateur 2
Tableau de bord
WebSocket :7070
SoxWebSocketMod
Routeur
msgs JSON
Pool
1 par appareil
Watches
timeout 30s
DASP / UDP
Contrôleur Sedona
.100:1876
Contrôleur Sedona
.101:1876
TCP/WebSocket
UDP/DASP

Flux de données en temps réel

Navigateur vers appareil en un saut

Votre navigateur ouvre une WebSocket sur le port 7070. Le serveur traduit les messages JSON en commandes du protocole SOX et les envoie via DASP/UDP au contrôleur Sedona. Les réponses reviennent par le même chemin -- pas de polling, pas de délais.

Plusieurs onglets de navigateur partagent automatiquement la même session d'appareil. Le routeur de messages gère 17 types de commandes SOX -- lectures, écritures, abonnements, transferts de fichiers, gestion des composants, et bien plus -- tout via une seule connexion WebSocket.

r: lire w: écrire sub: souscrire v: version a: ajouter d: supprimer fileGet filePut

Gestion de session

Pooling intelligent, zéro erreur de connexion

Les contrôleurs Sedona supportent un maximum de 2 connexions simultanées. Au lieu de lutter contre cette limite, le pool de sessions partage une seule connexion par appareil à tous les clients navigateur. Ouvrez cinq onglets vers le même contrôleur -- ils partagent tous une session.

Si une connexion échoue, la récupération automatique se déclenche avec un backoff exponentiel. Les sessions inactives sont nettoyées après 5 minutes, et un timeout de linger de 30 secondes prévient le thrashing de connexion des cycles rapides de connexion/déconnexion. Vos utilisateurs ne verront jamais d'erreurs de connexion.

1
Session par appareil
5m
Timeout inactivité
30s
Fenêtre de linger
Pool de session SoxSessionPool
192.168.1.100:1876
connecté
État ok
Partagé par
Onglet A Onglet B Onglet C
Dernière activité il y a 2s
Fenêtre DASP receiveMax: 8
192.168.1.101:1876
connecté
État ok
Partagé par
Onglet D
Dernière activité il y a 14s
10.0.0.50:1876
reconnexion
État down
Tentative tentative 3, backoff 10s
Dernier vu il y a 47s
Abonnements en direct 192.168.1.100
streaming
Watch tab-8f3a TTL: 28s / 30s
ZoneTemp
comp #12 · slot 3 · runtime
72.4°F
+0.2 depuis dernier
ZoneSetpoint
comp #12 · slot 5 · config
72.0°F
inchangé
DamperPos
comp #18 · slot 2 · runtime
67%
-3 depuis dernier
FanEnable
comp #20 · slot 0 · runtime
true
bool
OccSchedule
comp #25 · slot 1 · runtime
1occupé
int
5 composants abonnés Événements par lots · nettoyage 10s

Surveillance de valeurs en direct

Surveillez les changements de valeurs en temps réel

Abonnez-vous à n'importe quel composant sur un contrôleur Sedona et voyez ses valeurs mises à jour en direct. Le système watch groupe les abonnements par onglet de navigateur, de sorte que chaque page obtient exactement les données dont elle a besoin -- et se nettoie automatiquement quand vous fermez l'onglet.

Les événements sont mis en lot pour l'efficacité et livrés via la même connexion WebSocket. Le nettoyage en arrière-plan s'exécute toutes les 10 secondes pour détecter les watches obsolètes des clients déconnectés. Si un onglet cesse de ping pendant 30 secondes, ses abonnements sont automatiquement désabonnés de l'appareil.

Plusieurs watches peuvent se chevaucher sur le même composant -- le système suit les comptes de référence et ne se désabonne de l'appareil que lorsque le dernier observateur se retire. Pas d'abonnements en double, pas de watches orphelins.

Transfert de fichier

Téléchargez le firmware, téléchargez les configs

Transférez les fichiers d'application (SAX, SAB) vers et depuis les contrôleurs Sedona avec des transferts par chunks reprennables. Le protocole à trois phases -- ouvrir, chunk, fermer -- vous donne le suivi de progression et la récupération d'erreur intégrés.

Les verrous de fichiers par appareil empêchent les transferts simultanés de corrompre les données. Chaque transfert obtient un identifiant unique, et les transferts abandonnés sont automatiquement nettoyés après 5 minutes d'inactivité. Téléchargez une nouvelle application, téléchargez une sauvegarde, ou renommez les fichiers sur l'appareil -- tout via la même API.

Chunks de 512 bytes
Verrouillage par appareil
Nettoyage auto 5m
Upload + download
Transferts de fichier 192.168.1.100
app.sab
complété
24,576 bytes · 48 chunks × 512B upload · 100%
kits.scode
transfert
131,072 bytes · chunk 164 / 256 download · 64%
manifest.xml
ouvert
attente du premier chunk... upload · 0%
Verrou fichier appareil: actif
3 transferts · ID: #7

Intéressé par ce projet ?

Explorez le code source, contribuez ou prenez contact.