NEWS
Socket.io states subscribe
-
Ich versuche gerade den socket.io Adapter zu kapieren. Da soll später mal ein externes node-red angebunden werden.
Ich hab mir das Example geladen https://github.com/ioBroker/ioBroker.so … er/example und mal local etwas damit rumgespielt.
Soweit läuft ja alles und prinzipiell klappte alles und ich kapiere schonmal so halwegs wir das Ganze läuft.
Allerdings hab ich noch nicht rausgefunden, wie ich einzelne states subscriben kann. Das Beispiel hat ja alle states abonniert.
Hab ich da was prinzipiell übersehen? oder Tomaten auf den..
Kann mir da jemand auf die Sprünge helfen?
Danke schonmal
-
Im Beispiel wird eine Wildcard (*) verwendet und damit alle States subscribed.
Das musst du nur durch die ID des States ersetzen denn du haben willst.
Gesendet von meinem HTC U11 mit Tapatalk
-
@Jey Cee:Im Beispiel wird eine Wildcard (*) verwendet und damit alle States subscribed. `
Ja, hab sowas in der conn.js gefunden. Meist du das?
this._socket.emit('subscribe', '*');
Oder gibt es da irgend ein servConn Property ?
-
Sorry, ich muss da noch mal nachfragen.
Das geht natürlich. Ich hab da jetzt ein property in conn.js angelegt:
var servConn = { ... subscribe: '*', ... ... this._socket.emit('subscribe', this.subscribe); ..
In in der index.html hab ich dann nach dem servConn.init() z.B.
servConn.subscribe = 'hm-rpc.0.NEQ1684242.1.STATE';
Das geht zwar, aber ist das wirklich so gedacht? Bin da etwas verunsichert.
-
Ok, für jemanden, der nicht aus der JS Ecke kommt, dauert's halt länger :lol:
Auch wenn mein vorherige Post funktioniert, ist er natürlich Quatsch. Nachdem ich mich ein kleines bisschen in JS-Events eingelesen habe, mach ich das nun so:
conn.js bleibt unverändert.
In der index.html (des Beispiels) löse ich dann den subscribe event aus.
let myState = 'hm-rpc.0.NEQ1684242.1.STATE'; servConn._socket.emit('subscribe', myState);
Das klappt zwar, ich bin mir aber immer noch nicht sicher, ob das so gedacht ist :roll:
Die Beschreibung auf https://github.com/ioBroker/ioBroker.socketio hilft da auch nicht wirklich weiter.
Eigentlich hab ich das ja so verstanden, dass die conn.js verwendet werden soll.
-
@rewenode Hallo..
hast du mal ein Komplettes Beispiel für den Subscripe?
Weil bei mir kommen immer alle Daten die geändert worden sind.
Will nur ein paar eigene haben.Danke,
Markus -
@ljmarkus Da kann ich nicht wirklich weiterhelfen.
Ich habe Jan. 2019 eine node-red <-> Socket.io Verbindung als Implementation in einem function-node zum Laufen gebracht. Das waren eigentlich nur Untersuchungen, für den Fall, dass ich mich mal an einen Node-red-contrib-iob-socketIo setze.
Ich habe dazu die conn.js vom iob socket.io clienten modifiziert und über das function-node genutzt.
Also nichts, was man einfach so weitergeben kann;-( Eher ein proof of concept.
Inzwischen ist das eigentlich komplett obsolet, weil man mit den vom iob mitgelieferten NR nodes nahezu alles erschlagen kann. Das war Anfang 2019 noch nicht der Fall.Reiner