NEWS
Visualisierung mit Node Red erstellen
-
@damrak2022 Nein nicht in der Change Node - ein Wert bleibt nur in Ausnahmefällen in einer Node. Es gibt nur wenige Nodes die Werte speichern. Die meisten Nodes verarbeiten das Nachrichtenobjekt und geben es sofort an die nächste Node weiter. Mach doch mal debug Nodes hinter Deine Change Nodes.
Nein ich habe Dir doch unter den Flow gepostet wie er aussehen muss.
-
@mickym Ja ich bau den nachher nach und schaue mir das an, denn ich muss jetzt erstmal Abstand haben.
-
@mickym Hallo Micky,
so ich habe das jetzt erstmal so zusammengesetzt wie Du es empfohlen hast:
Und das sind die Einstellungen der einzelnen Nodes die ich noch nicht geändert habe.
Wenn ich eine debug hinter meine 3 Change Nodes setze bekomme ich diese Ausgabe:
Soweit ist das mir auch klar - der Mac ist an -also true
Ich will die Werte aus der Switch Node <10 oder >55 an die beiden Change Nodes weitergeben, wobei ich in der einen change node das so definieren muss:
msg payload
<10 = falseden anderen so:
msg payload
55 = true
Danach geht die beiden Change nodes aber doch in die dritte Change node (werden als zusammengeführt), wo die Einträge generell der Reihe nach abgearbeitet werden.
Und von da aus dann in den Switch.Ich bin etwas am verzweifeln, da ich die Logik irgendwie in meinem Kopf nicht hinbekomme.
-
@damrak2022 Na das mit dem Flow-Kontext setzen ist halt falsch;
Wir setzen doch die Change Node, die die Flow-Variable setzen soll hinter die anderen beiden Change Nodes, damit die Flow Variable, je nachdem welcher Ast aktiv ist true oder false ist.
Wir wollen ja das Ergebnis entweder aus der oberen oder aus der unteren Change Node, dann kannst Du doch nicht die flow-Variable auf einen fixen Wert einstellen, sondern wo steht das Ergebnis drin?
.... natürlich in einem Nachrichtenobjekt ... und dort in welcher Eigenschaft ....?
Also schau mal, was Du für Optionien hast, in einer Change Node einen Wert auf eine Eigenschaft eines Nachrichtenobjektes zu setzen.
Tipp: Schau Dir mal die ChangeNode an mit der Du die Flow Variable AppleTV setzt. Da setzt Du die Flow-Variable ja auch nicht auf einen fixen Wert, sondern auf den Wert den Du im Dashboard switch setzt.
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
Wenn ich eine debug hinter meine 3 Change Nodes setze bekomme ich diese Ausgabe:
Soweit ist das mir auch klar - der Mac ist an -also trueDas Gespamme kommt daher, dass der Shelly alle halb Minuten einen Verbrauchswert liefert - da wir aber nur true und falls brauchen, wirst Du dann vor den 3. Change Node noch eine filter Node setzen, so dass nur, wenn sich das von true auf false ändert eine Nachricht erzeugt wird.
-
@mickym Dann müsste die Change Node so aussehen.
Und je nachdem welcher Wert einkommt, wird dieser an die Switch Node weitergegeben.
-
@damrak2022 Hervorragend. Die payload wird weiter so wie sie rein gekommen ist an die switch Node weitergegeben. Wir verändern sie ja nicht in der Change Node. Wir setzen ja nur die Flow Kontext-Variable Imac auf den Wert der Eigenschaft payload des Nachrichtenobjektes. Da dies ja von den beiden vorherigen Change Nodes gesetzt wird, wird also unsere Flow-Kontext Variable immer den richtigen Wert enthalten.
-
@mickym Und jetzt noch eine Filter node vor die Switch Node?
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
Und je nachdem welcher Wert einkommt, wird dieser an die Switch Node weitergegeben.
Diese Aussage ist nicht ganz richtig - die payload wird immer an die Switch Node weitergegeben, wir verändern diese ja nicht.
-
@damrak2022 Den Filter machen wir vor die Change Node, in der Du die Flow Variable setzt - also im Prinzip sollen da die beiden Stränge zusammenlaufen.
-
Hast Du das denn auch so verstanden, dass Du es das nächste Mal alleine schaffst - ohne an der Logik zu verzweifeln.
-
@mickym Ich hoffe es
-
@mickym Das ist die Standardeinstellung der Filter node
Was bedeutet unten das msg topic?Payload = Nutzerdaten
topic = ? -
@damrak2022 Nun den Haken kannst Du in dem Fall rausmachen.
In einem Nachrichtenobjekt hast Du normalerweise mehrere Eigenschaften. Die payload enthält die Nutzdaten, wie du richtig feststellst und im topic steht normalerweise um was es sich für einen Wert handelt oder auch die Quelle - also woher dieser Wert stammt.
Nehmen wir mal an, in einem Nachricht wird der Wert 35 versendet und er kommt aus einem Sensor der sowohl die Luftfeuchtigkeit als auch Temperatur liefert. Woher willst Du dann wissen, ob das jetzt 35% Luftfeuchtigkeit sind oder 35°C. Deshalb gibt man im topic eben mit, um welchen Wert es sich handelt.
Das Nachrichtenobjekt schaut also standardmäßig so aus - und für das genannte Beispiel:
{ "topic": "Temperatur", "payload": 35 }
{ "topic": "Luftfeuchtigkeit", "payload": 35 }
In einer Inject-Node - wenn Du die frisch rausziehst siehst Du deshalb auch immer beide Eigenschaften zum Ausfüllen:
und so wird Dir das auch dann automatisch im Flow angezeigt:
Ich habe nun mal 2 Debug Nodes in den Flow gehängt - einmal, in dem Dir nur die payload angezeigt wird (das topic auch - aber in der Überschrift)
und einmal das komplette Nachrichtenobjekt:
Im 1. Fall siehst Du das topic nur in der Überschrift und den Wert der payload ausgegeben - im 2. Fall das ganze Nachricht und Du siehst da ist die Nachrichteigenschaft topic gesondert ausgewiesen:
Das topic ist blau markiert - die payload ist grün.
Du kannst auch weitere Eigenschaften dem Nachrichtenobjekt hinzufügen. Nehmen wir mal an Du hast mehrere Temperatursensoren, dann wäre es vielleicht noch sinnvoll zu wissen, von welchem Temperatursensor das ganze stammt - dann könnten wir zum Beispiel noch eine Eigenschaft Zimmer dem Nachrichtenobjekt hinzufügen.
Wie Du siehst - wird - wenn man nur die payload ausgibt diese Eigenschaft im Debug Fenster gar nicht ausgegeben - im kompletten Nachrichtenobjekt aber schon:
Wenn Du jetzt aber in der oberen Debug Node - nicht mehr die payload Eigenschaft des Nachrichtenobjektes ausgeben willst, sondern die Eigenschaft Zimmer und nicht das komplette Nachrichtenobjekt sehen willst, kannst Du die obige Debug Node auch ändern:
Du sagst also der Debug Node - mich interessiert nicht mehr die Eigenschaft payload des Nachrichtenobjektes, sondern die Eigenschaft zimmer:
Im Ausgabefenster der 1. Debug Node findest Du also nicht mehr die payload, sondern die Eigenschaft zimmer. Natürlich ist aber die payload Eigenschaft weiterhin im Nachrichtenobjekt enthalten.
Hier mal alles zum Importieren und Üben:
So und nun zu Deiner eigentlichen Frage:
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Das ist die Standardeinstellung der Filter node
Was bedeutet unten das msg topic?Payload = Nutzerdaten
topic = ?Das topic an sich habe ich ja nun ausführlich erklärt. In unserem Fall kannst Du den Haken raus machen. Was bedeutet er.
Nehmen wir mal an unser Flow erhält mehrere Eingangsnodes - zum Beispiel einer mit dem topic "Datenpunkt1" und einer mit dem "Datenpunkt2" und beide haben eine payload von true oder false. Wenn wir bei beiden Punkten nur Werteänderungen durchlassen wollen, dann bräuchten wir 2 Filternodes - einen für Datenpunkt1 und einen für Datenpunkt2. Mit der Option "Modus für jedes msg.topic separat anwenden" - kann das aber eine filter Node ganz alleine - sie speichert sich also nicht nur den vorhergehenden Wert ab, sondern auch das zugehörige topic. Ich hoffe es wurde damit klar. Wenn nicht weiter fragen.
-
@mickym Ja danke erstmal ist es klar, aber ich muss das noch öfters lesen, um es zu verinnerlichen.
Den Haken habe ich rausgenommen. -
@mickym Jetzt sieht der Flow bei mir so aus:
Ich bin nur neugierig wie Du das mit Sonnenaufgang und Untergang umsetzen willst
-
@damrak2022 Gut dann poste nochmal - bevor wir weitermachen den gesamten Kontext.
In den Flow Kontext sollten nun die beiden Status der beiden Geräte sowie global "an-und abwesend" drin stehen.
-
@mickym Bei mir sieht das nach dem aktualisieren der Kontextdateien momentan so aus:
-
@damrak2022 Und Apple-TV ?
-
@mickym Gute Frage, ich habe ihn mal im Dashboard geschaltet, aber das ändert nicht im Kontext nach dem aktualisieren.
Aber der ist ja auch nicht in ioBroker eingebunden, wie Du weißt.