NEWS
ioBroker Get und List Abfrage ob Datenpunkt existiert
-
Ich möchte mit wildcards mehrere Geräte Datenpunkte im ioBroker durchlaufen und wenn Sie nicht existieren neu erstellen.
Ich scheitere bisher immer daran das GET und LIST zwar einen Payload liefern wenn der Datenpunkt existiert aber NICHTS liefern wenn Er nicht existiert.
Ich muß da wohl sowas haben wie wenn am ioBroker-get Eingang ein Topic rein kommt aber kein Payload am ioBroker-get Ausgang raus kommt dann Meldung! um es weiter zu verarbeiten.
Hat jemand eine Idee ? -
@bernd1967 Nun ja es ist so, dass die iobroker Nodes keinen Fehler werfen, wenn etwas nicht existiert.
Im Prinzip ist es auch nicht weiter schlimm, weil wenn dann ein Datenpunkt gebraucht wird, dieser ja automatisch erstellt wird. Wenn er nicht da ist gibt es auch keine Informationen dazu. Insofern musst Du Dir mal überlegen ob Du es tatsächlich brauchst.
Ansonsten kannst Du den Flow natürlich so machen, dass ein Datenpunkt mit einem Defaultwert erstellt wird.
Das ist auch eine Frage der Philosophie. Woher soll ein System wissen, dass ein nicht vorhandener Datenpunkt fehlt??Hier mal genau der Flow - wie Du ihn vorher beschrieben hast. Über die msg.topic musst Du halt alles abfragen, ob da oder nicht.
Man kann so was ja dann noch in einen Subflow packen, so dass es immer wieder verwendbar ist, wenn man es braucht und es optisch schöner aussieht. Der dummy ist nur aus optischen Gründen vorhanden,
Wenn Du einen Subflow nutzt - dann kannst Du den Defaultwert auch in der Umgebungsvariablen des Subflows definieren oder natürlich die payload durchreichen.
-
@bernd1967 So hier mal eine Node, die immer einen Wert zurückliefert, egal ob der Datenpunkt existiert oder nicht:
-
Vielen Dank ! , funktioniert super.
Hab sogar noch eine andere Lösung durch Zufall gefunden.
Wenn man vor dem ioBroker-out am Eingang den Payload löscht wird:
a) ein vorhandener Datenpunkt nicht verändert
b) ein nicht vorhandener Datenpunkt wird angelegt und ohne Wert belegt.
Weiß nicht ob das ein bug ist oder so gewollt ist........@mickym sagte in ioBroker Get und List Abfrage ob Datenpunkt existiert:
Im Prinzip ist es auch nicht weiter schlimm, weil wenn dann ein Datenpunkt gebraucht wird, dieser ja automatisch erstellt wird.
Leider ist das nicht so, z.B. wird in der vis jarvis ein fehlender Datenpunkt nicht automatisch erstellt.
So geht dann ein klick auf einem switch ins Leere.Wenn er nicht da ist gibt es auch keine Informationen dazu.
Wäre aber nicht schlecht ein Fehler auszugeben das der Datenpunkt nicht existiert.
So kann ich als Endanwender viel einfacher darauf reagieren.Das ist auch eine Frage der Philosophie. Woher soll ein System wissen, dass ein nicht vorhandener Datenpunkt fehlt??
Das system weiß das ein Datenpunkt fehlt wenn keine Werte kommen, man könnte das im Programmcode abfangen.
-
@bernd1967
Leider muß ich feststellen das es doch nicht funktioniert.
Wenn ich den subflow mit mehreren Datenpunkten auf einmal füttere funktioniert es nicht.
Ich vermute mal das liegt am Trigger node -
@bernd1967 Du kannst die trigger node noch auf 100ms oder sogar auf 50ms stellen und vorne dran ggf noch eine delay node und Nachrichten begrenzen. Ggf. kann man die delay Node ja auch noch in den Subflow integrieren.
-
@mickym
Ja, Danke, das geht, dauert in der Summe dann aber länger.
Ich nutze jetzt erstmal die ioBroker-out Bug-Methode, die ist Blitzschnell.