NEWS
Datenpunkte GetState / SetState
-
Hallo,
habe da mal eine Fragen in die Runde.
Nach meinen Kenntnissen kann man mit SetState nur Daten des Javascript.Adapters schreiben.
In der Regel liegen diese unter Objekte in javascript.0
Mit GetState hingegen kann man auf alle Objekte, also auch die anderer Adapter lesend zugreifen.Ich benötige nun eine Lösung für folgendes Problem:
Ein Gerät mit einem Bewegungsmelder meldet eine Bewegung über eine MQTT-Instanz an IOBroker.
Ein zweites Gerät (ESP32-CAM) möchte auf dieses reagieren und Mail mit Fotos versenden.Es wäre nun praktisch, wenn man in IObroker über javascript mit Hilfe der Funktion z.B. "on({id: "mqtt.0.bewegungsmelder......" reagieren könnte und bei Änderung eines Wertes aus der Instanz z.B. mgtt.0 einen Wert bei der zweiten Instanz z.B. mqtt.1 setzen und somit über dieses Ergeignis informieren könnte.
Dies scheitert aber am Schreiben (SetState) über javascript eines Objektknotens einer anderen Instanz.
Vielleicht hat ja jemand eine andere Lösung im Ärmel, auf die ich bisher wegen Scheuklappen noch nicht gekommen bin.
Gruss Stefan
-
@stefanh-0 Das geht - du musst beim Schreiben aber die vollständige ID inklusive
mqtt.1
angeben. -
@stefanh-0 sagte: kann man mit SetState nur Daten des Javascript.Adapters schreiben.
Man kann mit setState(id, val, [ack]) alle Datenpunkte schreiben, wenn man die komplette ID übergibt. Für Datenpunkte unter javascript.N (N = Instanz) kann eine verkürzte ID übergeben werden.
-
OK, aber wie weiss der SetState() denn, ob er bei Angabe einer ID "javascript.0" davor hängen soll oder nicht? Denn es kann das gleiche objekt ja auch innerhalb und außerhalb von "javascript.0" geben.
Beispiel : setState("mqtt.2.camera.detection", "true");
Woher weiss das System dass nicht "javascript.0.mqtt.2.camera.detection" gemeint ist, sondern
"mqtt.2.camera.detection" als Objekt ausserhalb von Javascript??? -
@stefanh-0 sagte: Woher weiss das System dass nicht "javascript.0.mqtt.2.camera.detection" gemeint ist, sondern
"mqtt.2.camera.detection" als Objekt ausserhalb von Javascript???
Es wird erst geprüft, ob es das Objekt mit der ID "mqtt.2.camera.detection" gibt. Falls nicht, dann Prüfung auf "javascript.0.mqtt.2.camera.detection".
-
OK, das macht Sinn.
Wieder was neues gelernt, danke für die Info!