NEWS
Adapter-Entwicklung, Zugriff auf Objekte
-
Hallo,
ist es möglich innerhalb eines Adapters 'A' auf Statusänderungen eines anderen Adapters 'B' zu reagieren?
Zum Beispiel innerhalb des Adapters 'A', soll auf Wertänderung von 'DWD' reagiert werden:
... adapter.subscribeStates('dwd.0.warning.*'); ... adapter.on('stateChange', function (id, state) { if (id == 'dwd.0.warning.*begin'){ ..... } });
Tobias
-
adapter.subscribeForeignObjects ist die Lösung.
... adapter.subscribeForeignObjects ('dwd.0.warning.*'); ... adapter.on('stateChange', function (id, state) { if (id == 'dwd.0.warning.*begin'){ ..... } });
-
vielen Dank Bluefox. Es funktioniert.
Tobias
-
Hallo,
ich hätte hier zu den States auch eine Frage:ich habe den AdapterCreator verwendet und würde gerne verschiedene Datenpunkte abonnieren, die der Benutzer in der Admin-Oberfläche eintippen kann.
Aktuell habe ich es mit:
production = this.config.production;
this.subscribeStates(production);# oder this.subscribeForeignObjects(production);
versucht.
Leider bringt:
onStateChange(id, state) { this.log.info("Something happened!"); if (state) { // The state was changed this.log.info(`state ${id} changed: ${state.val} (ack = ${state.ack})`); } else { // The state was deleted this.log.info(`state ${id} deleted`); } }
Keine Ausgabe im Log.
Weiter oben im Adapter ist
this.on("stateChange", this.onStateChange.bind(this));
aktiviert.
Vielen Dank!
-
-
@skb du hast aber gesehen dass dieser Thread von 2015 ist, also 7 Jahre alt?
In der Zeit ist iobroker massiv verändert worden -
@homoran Klar, habe ich gesehen. Ich dachte, vielleicht hat den noch jemand "abonniert"
Und, ich gehe davon aus, das ich mit dem
this.subscribeForeignStates(states);
richtig liege
Danke!