NEWS
NodeRed Variablen oder ioBroker Datenpunkte
-
Hallo zusammen,
ich habe mal eine Frage in die Community, die ich mir schon öfters gestellt habe und mich würde einfach mal eure Meinung interessieren.
Ich benutze für die Logik in meinem ioBroker den NodeRed-Adapter.
Zum Teil habe ich da schon relativ komplexe Logiken abgebildet, wobei oftmals mehrere ioBroker Datenpunkte in Wechselwirkung gebracht werden, z.B. die Anwesenheitserkennung in Zusammenhang mit Lichtszenen.
Nun kann man ja in NodeRed mit Flow- oder Globalvariablen arbeiten und dort Werte zwischenspeichern. Oder man kann sich mit dem "ioBroker get" Node den aktuellen Wert von ioBroker abholen und weiter verwenden.
Nun hab ich mich schon öfters gefragt, ob es hier eine Bestpratice gibt. Macht es performancetechnisch einen Unterschied, ob man den Wert bereits in NodeRed vorliegen hat oder erst in ioBroker abholen muss oder kann man das gänzlich vernachlässigen?
Ich freue mich auf eure Beiträge -
@blade-of-fire In der Regel brauchst Du die Daten im Kontext nur speichern, wenn sie von extern kommen und Du nicht alles im iobroker speichern zu wollen - oder wenn Du ein oder mehrere Werte miteinander in einem Flow bzw. in einem Nachrichtenobjekt vergleichen musst - oder auch wenn Du du einen Zustand mehrfach in den Flows verwendest.
Wenn Du also den Zustand - anwesend oder abwesend - im Kontext (globaler Kontext) speicherst und vielleicht 50 mal in diversen Flows abfragst, ist das sicher performanter, als wenn Du 50 mal einen Datenpunkt im iobroker abfragst. Wenn Du einen Datenpunkt ein oder zweimal abfragst, dann wirst Du wohl keinen Unterschied feststellen - schließlich musst Du ja trotzdem einmal den Datenpunkt auslesen, um ihn in einem Kontext zu speicher.
Im Prinzip ist das aber wie bei Blockly/JavaScript auch. Dort kannst ja auch Werte in Variablen speichern und/oder aus den Datenpunkten auslesen.
-
@mickym Vielen Dank für die schnelle Antwort.
Vermutlich wird es wohl in den meisten Fällen (ein oder zwei Abfragen) keinen Unterschied machen.
Die Werte, auf die ich öfter oder von unterschiedlichen Flows aus zugreife, kann man ja bei Wertänderung in eine Globale Variable schreiben. Somit ist diese Variable ja immer aktuell im Kontext. -
@blade-of-fire Ja wie gesagt - das gilt allgemein - je öfter Du ein und denselben Status abfrägst, desto eher lohnt sich das Speichern im RAM/Memory.