NEWS
[gelöst] Überwachung eingeschaltete Verbraucher
-
Ich hab hier was in Node Red versucht, was nicht wie gewünscht funktioniert.
"Überwachung Leuchten Garten" soll true werden, wenn eine von beiden oder beide Leuchten true sind.
Kann mir da vielleicht jemand auf die Sprünge helfen. In Blockly habe ich es gebaut und es funktioniert. Nun möchte ich es aber in Node Red realisieren. -
@tontechniker ich nutze dafür das node "boolean logic":
https://flows.nodered.org/node/node-red-contrib-boolean-logicAnstelle des AND wäre es bei dir natürlich OR-Gatter.
Grüße
-
@hc-yami
Hallo!
Wie installiere ich die zusätzliche Logic in Node Red? -
@tontechniker Es geht aber auch ohne zusätzliche Nodes - man kann diese zwar installieren - entweder über den Adapter oder über den Pallettenmanager.
Wenn Du es über den Adapter einträgst, wird es vom backitup Adapter dann wieder mitinstalliert, dafür siehst Du die Versionen nicht:oder über den Pallettenmanager in NodeRed -
das hat den Vorteil, dass Du direkt zusätzliche Nodes suchen kannst, um das System zu erweitern:
Ausserdem sieht man dort auch gleich, ob es eine neue Version von einzelnen Nodes gibt. Das ist vergleichbar mit Adaptern im iobroker!
Ich bin aber bei den logischen Verknüfungen bislang ohne zusätzliche Nodes ausgekommen.
In dem Fall habe ich mir 2 Function Nodes gebastelt
und in die Bibliothek übernommen.
ODER:var x; var obj = msg.payload; var bIsBoolean=false; for (x in obj) { bIsBoolean = bIsBoolean || obj[x]; } msg.payload=bIsBoolean; return msg;
UND:var x; var obj = msg.payload; var bIsBoolean=true; for (x in obj) { bIsBoolean = bIsBoolean && obj[x]; } msg.payload=bIsBoolean; return msg;
und nutze diese Methode - zur Überwachung.
Bei nur 2 kann man auch eine Kombi aus iobroker-IN und iobroker-GET nutzen und diese dann mit einer Change Node auswerten.
Wie gesagt die Methode, die ich nutze ist insofern einfach, da Du dann einfach ein neues Gerät dranhängst.
So hier mal zum Ausprobieren:
und hier der Flow:
Falls Du später einmal, dass Ergebnis Deiner Überwachung in einem anderen Flow brauchst, kannst Du so das ganze Objekt in einen JSON String umwandeln und in einem Datenpunkt abspeichern und später wieder holen. Sprich meine Geräte werden alle überwacht und in unterschiedliche Datenpunkte (z. Bsp. Batterieüberwachung, Schaltzustand wie bei Dir gerade, Online Status etc.) gespeichert. Ändert sich was triggert das einen ganz anderen Flow um mir einen Alarm zu signalisieren.
Hier mal ein Beispiel für die Online Überwachung - sprich Geräte sind im Netz ansprechbar.
Zusammen mit den Dir bestens bekannten Trigger-Nodes aus der Statusüberwachung kann man sich dann ein hervorragendes Überwachungssystem basteln.
So sieht dann der Inhalt des Datenpunktes aus dem Flow aus:
{"Thermometer Bad":true,"Präsenz Küche":true,"Präsenz Büro":true,"Würfel Wohnzimmer":true,"Präsenz Bad":true,"Präsenz Wohnzimmer Essbereich":true,"Präsenz Wohnzimmer":true,"Präsenz Diele":true,"Thermometer Küche":true,"Präsenz Flur":true,"Würfel Schlafzimmer":true,"Präsenz Schlafzimmer":true}
Um das Ganze wieder in einem ALARM Flow zu verarbeiten - einfach wieder den JSON String in ein Objekt umwandeln und mit den von mir vorgestellten Logik - Nodes verarbeiten. In diesem Fall soll es ja Alarm geben, wenn ein Gerät offline ist, deshalb hier im Gegensatz zu Deiner Anforderung die UND Node:
So kann man dann in seiner Visualisierung Gerätegruppen zum Verbindungsstatus überwachen:
-
Heute würde ich übrigens den Flow zur Überwachung noch etwas anders machen. Da nun die Wildcards funktionieren, ergeben sich neue Möglichkeiten
.
Aber das hat bei mir anfangs nicht funktioniert, deswegen das sind Flows - als ich noch mehr in den Kinderschuhen steckte.
Heute kann man den Flow ganz schnell vereinfachen:
In diesem Fall muss man also bei neuen Geräten - den Flow nicht mehr ändern, da diese nun automatisch über die Wildcards überwachst werden.
Das muss ich aber selbst alles noch implementieren.Jedenfalls wenn sich ein Zustand ändert dann aktualisiert sich das Objekt automatisch sobald sich der Datenpunkt ändert.
Noch ein kleiner Nebeneffekt - die iobroker get und iobroker in Nodes - geben nicht die vollständigen Objektinformationen.
Die iobroker - list Node aber schon!!!
Damit ist es möglich auch auf die Aufzählungsfunktionen, wie Räume und Funktionen des Objektes zuzugreifen und ggf. zu filtern!!!!
-
@mickym
Vielen Dank für Deine ausführlichen Antworten! Habe mir erst einmal die Logikmodule in Node Red istalliert und mache damit die ersten Versuche.
Gruß
Hans -
@mickym
Ein Problem habe ich noch bei dem Logik-Modul "ODER". Nach einem Neustart des Systems müssen alle Eingänge (bei mir bis zu 14 "ORs") einmal geschaltet werden (true, false). Wenn das nicht geschieht, funktioniert das "OR" nicht richtig. Dafür gibt es vermutlich keine Lösung!?
Gruß
Hans -
@tontechniker Wie gesagt ich nutze die Logik-Nodes nicht und kenne sie auch nicht in der Anwendung.
Meine ODER Node funktioniert ja anhand von der Objekteigenschaften eines Objektes. Sprich es werden nur die Eigenschaften miteinander verknüpft.
Wenn Du es über die JOIN Node machst kannst über die Anzahl der benötigten Nachrichten steuern, dass erst 14 Nachrichten (verschiedener Topics) eingegangen sein müssen, bevor eine Nachricht geschickt wird.
Ansonsten kannst Du ja mittels der iobroker IN Nodes wenn Du KEINE Wildcards verwendest, am Anfang den IST Zustand senden.
Du kannst auch ein Objekt als JSON Speichern, dass Du zur Initialisierung wieder ausliest
.... UND .. UND ... UND.
Da musst selbst kreativ werden - und wie gesagt diese LOGIK-Nodes, die Du ja verwendest benutze ich nicht und kenne sie auch nicht.
@Hc-Yami hat sie Dir doch diese Logic-Nodes empfohlen, vielleicht kann er ja weiterhelfen.
-
@mickym
Danke! Das war der entscheidende Hinweis für mich als Anfänger!
Im Node "ioBroker in", "Fire by start: send message at start (only without wildcards in ID)" auswählen.
Gruß
Hans