NEWS
Mehrere Steckdosen Werte vergleichen zum Schalten
-
@kredar ja uch glaube ich weiß was Dein Problem ist. Du hast leider in Deiner Adapterkonfig angehakt, dass iobroker Werte in Strings konvertiert werden. Deswegen werden Deine Werte als Strings behandelt und aneinander gehängt. Mach mal diese unselige Option aus Deiner Adapterkonfig.
-
Wo genau? In welchem Adapter meinst du? Wie ich das von dir verstehe habe ich da generell was falsch aktiviert.
mfg
-
@kredar im der Konfiguration des NodeRed Adapters gibts eine Option dass alles in Strings konvertiert wird. Diesen Haken raus machen. Geh unter Instanzen und klick auf den Schraubenschlüssel Deiner NodeRed Instanz.
-
Gefunden, danke.
ioBroker-Werte in Zeichenkette Konvertieren meintest du. Ist nun deaktiviert.
Hab es unverändet getestet aber die Werte kommen immer noch nicht korrekt raus aus den get.Nodes (z.b.1687625887042) statt dem korrekten Watt Wert.
Und ich liebe ioBroker habe schon vieles umgesetzt im und rund um unser Haus. Aber einiges ist schwerer zu lösen für mich als andere Schaltungen. Wenn mehrfach Werte im Spiel sind wird das ganze komplizierter, als bei einem Wert der was auslösen soll.
mfg
-
@kredar wenn du das geändert hast muss der Adapter neu gestartet werden. Weiteres kann ich erst beantworten wenn ich daheim bin.
-
Habe den Node-Adapter neu gestaret, aber leider das selbe Ergebnis wie zuvor.
Fahre erstmal Heim, wie gesagt vielen Dank für deine Hilfe. Aber so brisant ist es nicht das du es von Unterwegs aus Lösen musst.
mfg
-
Was du immer siehst, ist ein UTC-Timestamp (payload des <Abfragetimers>), der wird durch die <iobroker get> durchgeschleust.
Ich denke mit den <iobroker input> sollte es klappen.Zum Thema: Mehrere Inputs an der function, schau dir das mal an: https://www.youtube.com/watch?v=7BxkS5iSE0Q
-
Habe es mal geändert, aber nun wertet der Functions.Node gar nicht mehr aus und es kommt immer "false" raus.
[ { "id": "08520bdff45a887a", "type": "ioBroker in", "z": "0b655b9b45bd5f79", "name": "Steckdose1", "topic": "PC1.ENERGY_Power", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "outFormat": "MQTT", "x": 270, "y": 520, "wires": [ [ "b0b91f3bb64ff1af", "a47a4c0635bb5010" ] ] } ]
Meintest du diesen Node? Mit dem klappt die Auswertung im Function.Node leider nicht.
mfg
-
@kredar So - ich würde es zwar nicht so machen - da Du mit Strings arbeitest - aber im Prinzip funktioniert Dein Flow.
Wenn eine Steckdose über 20 ist kommt true raus, sonst false.
-
Hmm, trotz der komischen Werte geht es, das wurdert mich. Wollte die großen Werte "Glattziehen" und die realen Werte nehmen. Aber das es momentan geht ist ja auch klar bei einem Wert von 1687639024058 pro Node.
Gibt es da einen Eleganteren Weg oder wieso würdest du es nicht so machen?
mfg
-
@kredar Gut also die Aufgabe ist, dass sobald eine Steckdose über 20 Watt braucht - soll die Klimaanlage eingeschaltet werde also true ausschmeißen, ansonsten false?
-
@kredar Weil ich es nicht gut finde - wenn man mit Zeit triggert - ich würde die Datenpunkte triggern lassen.
Ich arbeite soweit möglich ohne function Nodes.
Ich sammle alle Ergebnisse in einem Objekt, wobei jede Eigenschaft bereits true oder false hat, ob über 20 Watt oder nicht und dann verknüpfe ich alle Ergebnisse mit ODER.
Dann brauchst Du nicht mit fixen Zeiten arbeiten.
Wichtig ist wie gesagt dass die Konvertierung in Strings ausgeschlossen ist.
-
Die Stings sind im Adapter aus. Das habe ich vorhin deaktiviert.
Die Klimaanlage schalte ich ja Manuell an. Deshalb läuft das True ins "leere" auch es kann auch auf die Klimaanlage laufen. Egal sie muss an bleiben da einer im Raum ist.
Sobald alle PCs aus sind checkt das der ioBroker und schalter die Klimaanlage aus. Ähnlich habe ich es auch mit dem Licht im Haus. Wenn alle Geräte aus sind, dann geht das Licht mit einem kleinen Delay auch aus. Natürlich ist da auch ein Lichtsensor im Spiel, damit das Licht nicht angeht bevor eine gewisse Lichtsvhwelle unterschritten wird. Aber zuück zur Klima: Ich schau mir eben deinen Vorschlag mal an.mfg
-
@kredar Wie gesagt Du kannst das auch umdrehen, wenn es nur ausschalten soll. Der große Unterschied ist, dass ich nicht alle 15 Minuten (oder ein gewisse Zeitspanne abfrage), sonder die Datenpunkte triggern lasse. Ausserdem hast Du mit dem Objekt jederzeit einen Überblick über den Zustand jedes Datenpunktes.
-
Ja per MQTT kommt die Abfrage eh rein. Das ist in der Steckdose eh hinterlegt, alle 5min. wird per MQTT der Status an den ioBroker geschickt. Habe es quasi doppelt gemacht. Es klappt schaut echt "aufgeräumt" aus ohne "wirre" Zahlen. Super, ich danke dir. Schau ich mir genauer an und ändere es nach meinen Wünschen. Evtl. nutze ich es auch bei den anderen Schaltungen
mfg
-
@kredar Ich überwachse so alles - ob Fenster geöffnet sind, Batterie status, Licht status usw.
-
Diese Join-Schaltung habe ich auch schon hier im Forum gesehen, aber leider nie für meine Zwecke umsetzen können. Einige Nodes schicken ein "true" oder "false" raus, da kann ich evtl. das Node-Beispiel von dir auch einsetzen und somit das ganze erheblich verbessern ohne function-Node (habe ich oft im Einsatz, vergleichen usw...).
Was macht der OR?-Change Node bei deinem Beispiel? Bei mir ist das True oder False immer vor dem OR?-Change Node dahinter kommt nichts an.
mfg
-
@kredar sagte in Mehrere Steckdosen Werte vergleichen zum Schalten:
Was macht der OR?-Change Node bei deinem Beispiel? Bei mir ist das True oder False immer vor dem OR?-Change Node dahinter kommt nichts an.
es muss ein Objekt in die OR Node so wie du es in meiner Debug Node siehst.
Die OR Node prüft den Boolean jeder Eigenschaft des Objektes und verknüpft diese mit OR und gibt dann als Gesamtergebnis true oder false aus. In diesem Fall gibt die OR Node true aus, wenn nur eine Eigenschaft true ist.
Im Übrigen kannst du das auch als Switch Node haben, wenn Du nur bei bestimmten Zustand schalten willst.
Hier mal alle meine Booleschen Nodes mit dem ich Eigenschaften eines Objektes verknüpfen kann, entweder als Switch oder als Change Node:
Das Ganze habe ich mir in meiner lokalen Bibliothek gespeichert:
Wie gesagt der Trick ist, alle Objekte, die Du zusammen analysieren möchtest, in einem Objekte zu sammeln.
-
Okay ich habe die Node von dir unverändert gelassen und wie man sieht ein PC läuft und es kommt trotzdem hinten "false" raus obwohl dort "true" stehen sollte da ja nicht alle 3 PCs aus sind. Sobald einer läuft müsste "true" als Ergebis rauskommen.
Was ich nicht verstehen wieso einmal "true" drinnen steht. Checkt er die Eingänge links alle nacheinandner? Er müsste alle Checken und dann vergleichen ob ein PC an ist oder alle aus sind.
mfg
-
@kredar Das Problem ist dass alle 3 wohl das gleiche Topic haben.Lösch mal aus der Change Node die Regel, die das Topic extrahierst bzw. ändert.die Eingänge melden und es muss sich wie bei mir im Screenshot eine Objekt mit allen 3 Topics bilden. Das liegt daran, dass alle 3 Datenpunkte ENERGY_Power heißen. Wenn du mir den vollständigen Pfad aller 3 topics postest dann kann ich das ändern oder löschst einfach die Regel in der Change-node.
Alternativ kannst du das Topic auch selbst unterschiedlich setzen. So der Flow sollte in jedem Fall funktionieren:
Du musst nur noch die richtigen Datenpunkte vorne anschliessen:Alternativ, wie gesagt, einfach die 1. Regel aus der Change Node des ursprünglichen Flows löschen.
PS: Du kannst die topics auch PC Power1, 2 und 3 nennen - die topics müssen nur unterschiedlich sein.
Und nochmal zu deinem Verständnis. In diesem Fall checkt der Flow nicht die Datenpunkte, sondern die Datenpunkte triggern den Flow. In der JOIN Node werden die Status aller Datenpunkte in einem Objekt gespeichert und nur die Eigenschaft des Objektes aktualisiert, dass sich meldet. Da in der JOIN Node steht, dass bereits nach 1 Nachricht gesendet werden soll, baut sich das Objekt auf, bis sich alles gemeldet hat und bei jeder neuen Nachricht wird das ganze Objekt verschickt, dass dann von der OR Node analysiert wird.