NEWS
Anfängerfrage zu Toggle
-
Nachdem mein System mit Scripts und Blocklys stabil läuft will ich mich jetzt ein wenig in Node Red einarbeiten.
Habe mit einfachen Dingen angefangen (Mit Injekt eine Lampe schalten, Fenstersensor der True/False liefert für Lampe). Das funktioniert ja für den Anfang gut.
Woran ich jetzt schon scheitere:
Habe einen Aquara-Taster genommen, der bei drücken True und dann gleich wieder False liefert. Es ist klar, das das Licht dann kurz an und wieder ausgeht.
Wenn ich nur True weiterleite bekomme ich das ganze nicht wieder aus.
Habe mir den Toggle-Node installiert. Mit dem komme ich aber auch nicht klar. Sollte ich hier schon scheitern? Habe mir schon zig Videos angeschaut, komme aber leider nicht weiter. Ist sicherlich ganz einfach. Weiß jemand Rat?PS.: Habe jetzt schon Bauchweh wenn ich an meine nächsten Tests denke bei denen ich Bedingungen (Zeit, Sensorzustände usw.) beim schalten von Aktoren testen will.
-
@mickym its your turn
-
@DocGame Warum installierst Du denn ein Toogle Node? - Für solche Dinge langen die Boardmittel aus. Tja und wenn Du sowas schon installierst - dann ist es halt kaum hilfreich, wenn dann da steht - komme nicht klar. Mit was kommst Du nicht klar, was hast Du versucht. Hast Du debug Nodes genutzt was kommt raus, wenn Du was machst=
Hast Du die Adaptereinstellungen schon umgestellt, dass nicht nur Strings rauskommen? Was willst Du konkret machen?
....
....
...Solche Nodes sind vielleicht zur Bequemlichkeit gut - aber auch unnütz - aber dass ist nur meine Meinung. Du meinst wahrscheinlich diese Node: https://flows.nodered.org/node/node-red-contrib-toggle
Wie gesagt sowas macht man mit ChangeNodes und nicht mit sowas. Es gibt noch genügend Zusatznodes die Sinn machen - aber erst sollte man sich mal mit den vorhandenen Möglichkeiten vertraut machen.
Und mit Bauchweh an die Dinge zu gehen, ist eigentlich noch nie gut gewesen. Neue Welten entdeckt man gesund und mit frischem Mut.
In Deinem Fall ist es ja Richtig, dass Du nur True weiterleitest. Dann musst Du aber den aktuellen Status Deiner Lampe auslesen, um dann das Gegenteil zu schalten, das übernimmt nicht so eine Node für Dich. Dazu hängst Du an Denen Switch der nur True druchlässt eine Get Node und schaltest dann das Gegenteil.
Woher soll bitte eine Toggle Node den Zustand Deiner Lampe kennen?
-
@mickym
Nach 2 Tagen versuchen sind mir solche Dinge mittlerweile bekannt das nur Bool mit Bool und String mit Sting zusammen können.
Was ich testen will hab ich ja geschrieben:Habe einen Aquara-Taster genommen, der bei drücken True und dann gleich wieder False liefert. Es ist klar, das das Licht dann kurz an und wieder ausgeht. Wenn ich nur True weiterleite bekomme ich das ganze nicht wieder aus.
Ich werde weiter versuchen und Beispiele und Videos anschauen, da ich mit " Dann musst Du aber den aktuellen Status Deiner Lampe auslesen, um dann das Gegenteil zu schalten, das übernimmt nicht so eine Node für Dich. Dazu hängst Du an Denen Switch der nur True druchlässt eine Get Node und schaltest dann das Gegenteil." noch nichts anfangen kann und für eine simple Frage nicht gerne "heruntergebuttert" werde.
Wenn mann noch nicht genau weiß wie die Parameter der einzelnen Nodes wirken und man kein Ergebnis bekommt wünscht man sich einen umsetzbaren Tip und kein "Wie kann man nur".
In Blockly musste ich mich vor langer Zeit auch reindenken und setze jetzt im Schlaf das meiste um. Ich meine , das jeder einmal angefangen hat und eine Hürde hatte vor der er einfach blind war.
Deshalf habe ich im Titel ja auch Anfängerfrage geschrieben. -
@docgame Ich will Dir ja gerne helfen. Dein Ansatz war ja gut. Nur lass das mit der Toogle Node weg. Mach mal einen Screenshot und exportiere Deinen Flow - dann kann ich Dir ja auch helfen.
Also Du triggerst - läßt mit Deinem Switch true durch - holst Dir den aktuellen Zustand und sendest das Gegenteil an Deine Lampe.
und den Anfang hast Du nicht verstanden:
Mach diesen Haken raus sonst ist Bool nicht gleich Bool, sonder Bool gleich String. Ich glaube ich drücke mich anscheinend nicht verständlich aus.
-
@mickym
Den Haken hatte ich schon gestern rausgenommen (nachdem ich den Tip in einem anderen Post von dir gelesen habe).
Mein Problem ist, das immer True rauskommt. Ich dencke ich habe in change-node einen Fehler, komme aber nicht drauf.
-
@docgame Die Change Node hat deswegen einen Fehler, weil es Du im 1. Schritt true in false wandelst und im nächsten Schritt false in true. Im 2. Fall trifft bei false nur die 2. Regel zu. Deshalb kann immer nur true rauskommen.
Sprich die Regeln werden immer nacheinander abgearbeitet. Also trifft die 1. Regel zu ( also true wird in false gewandelt, dann wandelst Du anschließend mit der 2. Regel wieder in true um.
In dem Fall ist es geschicketer wenn Du die Negation über JSONata nimmst.
Du kannst auch ohne JSONata arbeiten - dann musst aber zwischenspeichern.
Das sieht dann so aus - zum Beispiel als String.
-
@mickym
Egal was ich mache die Lampe geht nur an und nicht aus.
bei JSONata kommt beim debug:
Bei der anderen Lösung kommt nur True an der Lampe an:
Muss für heute allerdings schluss machen (der Wecker morgen früh ist Gnadenlos)
-
@docgame Also Bei dem JSONAta hast Du auf String und nicht auf JSONATA gestellt.
Bei der 2. scheint es das die Node intern doch konvertiert und den String false als Boolean in dem Fall interpretiert. Deswegen muss man wohl erst in der letzten Regel konverieren.
So funktioniert es - hier der Flow zum importieren:
-
@mickym Danke für deine Anschubhilfe.
Mit Blockly hätte ich das in 2 Min. zusammengetackert. Ich denke, wenn ich etwas tiefer drin bin kann das was werden. Der "not" Befehl in JSONAta ist ja noch klar. Wenn ich das ganze weiter vertiefe werden sicherlich noch einige Stolpersteine kommen und mach eingeschlagener Weg wird sich als Falsch erweisen. Aber Spaß macht es wenn es klappt.
Bei dieser einfachen Aufgabe hab ich noch nee weitere Komponente reingenommen und alles klappt.
Werde langsam den Schwierigkeitsgrad steigern.