NEWS
change node reicht anscheinend msg.payload durch
-
@fred-freund Du musst halt aufpassen, dass Du Deine Logik auch noch in mehreren Monaten verstehst und es ist immer etwas problematisch, wenn man verschiedene Logiken auf das gleiche Device anwendet.
Ich kenne das schedex nicht - hab mir mal kurz die Beschreibung angeschaut. Mit dem Toggle Befehl in dem schedex schaltest ja auch nicht die Lampe, sondern Deinen manual Zustand ein oder aus.
Ich nutze inzwischen 3 andere Scheduler - alle mit bestimmten Vor- und Nachteilen, Ich glaube der schedex ist fast identisch mit meinem eztimer. Du kannst Dir auch noch den light scheduler anschauen, den kann man zwar nicht von aussen konfigurieren, aber man kann sehr komfortabel wöchentliche AN AUS Intervalle eingeben und auch genial, der liefert Dir noch eine filter Node - die nichts direkt rausschickt, aber Deine Nachrichten zeitabhängig durchlässt.
Das heißt Du schaltest das Licht nicht über den Scheduler, sondern über den Bewegungsmelder, Lichtsteuerung und was auch immer. Mit der Filternode anschließend kannst Du dann zustätzlich über die Zeit steuern. Also eigentlich Bewegung - schalte Licht an - nein doch nicht, da ja 12 Uhr mittags.
Noch ein Wort zur Change Node.
If then Abfragen macht man eher mit der Switch Node.
Die Change Node ist bewußt kein if - then node, da Du viel mehr als Ändern machst. Du veränderst (wie in JSONATA), selektierst via RegEX, setzt Variablen usw. - Es ist eigentlich ein kleines Unterprogramm ohne dass Du eine Zeile schreiben musst.
-
@mickym Also den light scheduler hatte ich schon auf dem Radar...jedoch hab ich mich fuer die fuer mich einfachere Method entschieden...schedex
im Prinzip ist eine Funktion schreiben zu koennen super genuegend.
Benutze moementan viel die switch nur um True auszufilternda diese Druckschalter true/false immer liefern.
naechster Schritt ist jetzt mich ein mal fuer eine Visualisierung zu entscheiden ...Vis,.Material Vis oder Dashboard.
Vielen Danke fuer Deine Muehe und Zeit!!
-
@fred-freund Eine Meinung muss ich doch noch zum Besten geben. Vermeide "function" Nodes soweit wie möglich. Alles in Function Nodes zu verstecken und herkömmlich zu programmieren, macht den Sinn und die Vorteile die dieses einzigartige System bietet zu nichte. In einer Function Node ist es wesentlich schwerer zu debuggen.
Jedenfalls würde ich für solche Aktionen - die Du als Code implementiert hast , nie function Nodes benutzen.
Zu Deiner Visualisierung kann ich nur sagen, dass Du Dich nicht entscheiden musst, sondern man kann Beides nutzen.
Das Node-Red Dashboard ist superschnell um etwas zu steuern und schnell Ergebnisse zu erreichen. Vis hingegen ist für optisch anspruchsvolle Visualisierungen besser geeignet. Bei VIS gestaltest Du also zu erst und platzierst dann Deine Schalter - mit dem Dashboard möchtest Du möglichst schnell Deine Geräte steuern und legst nicht soviel Wert auf Optik.Ich habe 95% im Dashboard - aber habe mal angefangen so eine animierte Grundrisssteuerung im VIS realisiert.
Hier siehst Du meine Hauptseite im NodeRed Dashboard und eingebette mein animierter Grundriss in VIS.
Und hier mal die Hauptseite im Dashboard und ein weiteres Beispiel zur Heizungssteuerung.
-
@mickym
Bin fuer jede Zeile Erklaerung Dankbar!
echt liege ich so falsch mit der Benutzung der Funktion?
Muss mir das ansehen wie ich das anders machen koennte ...aber ich dachte das kuerzt den Code ab und wuerde den Flow verkuerzen welches sicher das Ziel ist ?? -
@fred-freund Hier mal das was Du mit Deiner Function Node machst als Flow:
Was ist übersichtlicher? - Wo kannst Du leichter sehen, wenn was falsch läuft? Nein in meinen Augen ist nicht das Ziel den Flow zu verkürzen, sondern ihn einfach und logisch darzustellen um auch schnell zu sehen, wie der Fluß der Nachrichten verläuft. Alles was in einer Function Node abläuft mit allen If und Thens und was weiß ich sind ja auch alles Flows, die in der function Node versteckt werden.
Machen allerdings viele. Wenn Du sowas verkürzen willst, weil Du sowas immer wieder brauchst, könntest Du obigen Flow auch in einen Subflow packen . und dann hast nur noch eine Node und kannst quasi immer alle Werte um 10 erhöhen bis max. 100!!
Hier kannst mal importieren - ist der Flow nur ohne Function Node:
Du kannst theoretisch nach einer IN -Node den ganzen Flow in eine function Node packen. Function Nodes machen oft Sinn wenn man zum Beispiel Zustände sichern muss ... aber selbst das ist nicht zwingend.
Ich habe diese Thematik hier schon mal aus meiner Sicht erläutert:
https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/21?_=1615326063144
Dort siehst Du das Gleiche einmal mit EINER Funcion Node oder als Flow implementiert.
Die Stärke von Node Red ist, Deine Logik grafisch zu veranschaulichen und das machst Du mit Programmcode alles wieder kaputt.
-
@mickym Ah ok, ich versehe , es ist also egal wie lange der Flow ist , es geht nicht darum ihn abzukuerzen.
Danke fuer deine ERklaerungen!
Also das Erhoehe um 10 ist super geloest...
-
@fred-freund Wie gesagt ich nutze auch function Nodes - aber je länger ich das System nutze, desto weniger brauche ich sie. Manchmal lasst es sich nicht vermeiden oder es wird unübersichtlich - gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.
-
@mickym ""gerade bei Schleifen oder Iterationen oder rekursiven Aufrufen.""
ja fuer diese Dinge fehlt mir noch die Vorstellungskraft einer Loesung...aber aller Anfang ist schwer.
Bin froh das man hier mit Triggern arbeiten kann...
-
@fred-freund Bin gerade dabei - eine wiederverwendbare function Node zu basteln, um einen laufenden Durchschnitt pro Zeiteinheit zu basteln. Es gibt zwar die aggregator Node - aber ich brauch etwas um zum Beispiel den Stromverbrauch der letzten Stunde zu ermitteln und die soll sich immer ändern.
Ich hab zum Beispiel im Node Red eine Tasterfunktion zu entwickeln, die im VIS einen Hardwaretaster abbildet.
- da habe ich dann auch eine function Node genutzt.
So sieht mein VIS Taster (mit Node Red) realisiert aus um wie ein Hardwaretaster für einen Dimmer zu funktionieren:
Tasterimplementierung Dimmer - vis - NodeRed.mp4
So hier gabs eine zentrale function Node - mit mehreren Ausgängen um einen langen Tastendruck von einem kurzen zu unterscheiden.
-
@mickym ah cool...ja Tastendruck mit timer abfragen ...?? damit du entscheiden kannst lange oder kurz...
hab das fuer einen Arduino mal programmiert...mit taster....