NEWS
goto in node red
-
@mickym sagte in goto in node red:
@asgothian sagte in goto in node red:
Die einfachste Methode ist direkt nach dem setzen der msg.payload das return zu setzen.
Oder meine switch case Lösung.
Kürzer ist sie.
Besser lesbar - na ja.
In der Logik aber eher schwierig - die meisten kennenswitch
-case
nur mit expliziten Werten, nicht mit>=
vergleichen.A.
Nachtrag - elegant ist die Lösung allerdings -
@asgothian Ich hab mein Post doch schon gelöscht.
-
@oliverio
Danke vielmals! Das Function Node Beispiel sieht erst mal gut aus.
Deinen Einwand zum 2. Beispiel verstehe ich nicht. Das funktioniert ja wie gewünscht. Wenn Werte >90 auftreten wird nur das erste if ausgeführt und damit ist die Abfrage beendet. Passt.Wenn ich Deiner Empfehlung folgen und die 85 nach oben nehmen würde, würden Werte >90 ja schon bei der ü85 Abfrage zutreffen und die Abfrage wäre beendet. >90 würde dann gar nicht mehr erreicht.
Mit dem dem Switch Node habe ich es auch schon versucht, bin da aber nicht weiter gekommen. Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen. Hab das dann verworfen...
Gruß,
Ronald -
@bynight sagte in goto in node red:
Mit dem dem Switch Node habe ich es auch schon versucht, bin da aber nicht weiter gekommen. Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen. Hab das dann verworfen...
Das ist ja Sinn der Sache - man führt dann ja den Flow wieder zusammen, siehst ja am Beispiel
-
@mickym
Danke vielmals!
Nein, möchte ich nicht. Da das alles neu ist will ich sehen was für mich übersichtlicher und auch im Nachhinein besser zu verstehen ist. Deshalb wollte ich gern eine Lösung für beide Möglichkeiten haben.
Break hatte ich auch schon erwogen aber da wäre ich ja vermutlich nur aus einer if Abfrage rausgekommen. Ich wollte aber alle verlassen. Die case Lösung scheint dafür perfekt! Gefällt mir sehr gut. Sowas habe ich gesucht.Danke auch für die grafische Lösung! Das werde ich mir dann auch anschauen...
Gruß,
Ronald -
@bynight Wie gesagt importiere einfach meinen Flow - dann hast Du beide Möglichkeiten. Du weißt wie Du importierst?
-
@bynight sagte in goto in node red:
Je mehr Abfragen ich anlege, desto mehr Ausgänge erhalte ich. Ich will ja aber verschiedene Werte an EINEM Ausgang bekommen.
du kannst durchaus die ganzen ausgänge auch nur mit einer nachfolge node verbinden.
dann hast du die Unterscheidung ja immer noch in den daten, anhand du dann danach entscheiden kannst was passiert -
@asgothian
Danke vielmals!
Ich bin auch kein goto Fan, aber mir fiel hier nichts anderes ein um ans Ende zu gelangen, da ich ich nicht wußte inwieweit in JAVASCRIPT do while for schleifen funktionieren, die man dann mit break verlassen kann. Bin auch kein Programmierer.Deine Lösung mit dem Return hatte ich auch erst erwogen, bin aber davon ausgegeangen daß dann bei einem Wert von 95 jedes if mitgenommen und ausgeführt wird.
Ist das nicht so? Bedeutet return msg daß an der Stelle die Bearbeitung des Scriptes abgebrochen wird??Ich meine mit Bausteinen die Nodes wie Switch z.B....
Gruß,
Ronald -
@mickym
Nein, weiß ich nicht. Importieren wäre natürlich genial...Gruß,
Ronald -
@bynight sagte in goto in node red:
Deine Lösung mit dem Return hatte ich auch erst erwogen, bin aber davon ausgegeangen daß dann bei einem Wert von 95 jedes if mitgenommen und ausgeführt wird.
Ist das nicht so? Bedeutet return msg daß an der Stelle die Bearbeitung des Scriptes abgebrochen wird??Ja. Intern (sprich in dem code der aus der grafischen Struktur gemacht wird) ist es eine Funktion, return beendet die Funktion und liefert den Wert zurück.
A.
-
@bynight sagte in goto in node red:
@mickym
Nein, weiß ich nicht. Importieren wäre natürlich genial...Gruß,
RonaldDu machst den Spoiler auf und kopierst den Inhalt
mit der Schaltfläche Copy to Clipboard in die Zwischenablage.
In Node-Red gehst du über das Hamburger Menü und wählst Import:
In das rosa Fenster kopierst Du den Inhalt der Zwischenablage
und klickst dann auf Import.
-
@oliverio
puh... das ist mir noch nicht so recht klar...
Also90 Ausgang 1
80 Ausgang 2
70 Ausgang 3
Dann alles wieder zusammen auf einen Nachfolgenode. Aber wie macht der dann daraus msg.payload 0, 20 und 40?Gruß,
Ronald -
@bynight Ich habs Dir doch gezeigt. Mündet doch alles in einer Debug Node.
-
@mickym
genial!!!
Nun sehe ich auch wie die Zusammenführung funktioniert :-)))))))))Gruß,
Ronald -
@mickym
Sorry, ich muß die Antworten aber auch bissel der Reihe nach beantworten... ;-)) -
Die Debug Ausgabe findest Du unter dem Bug - also der Wanze.
-
@mickym
ja, die Wanze habe ich schon verwendet.
Danke vielmals an alle für die schnelle und ausführliche Hilfe!
Nun habe ich erst mal etwas Stoff zum Probieren für die nächsten Tage! :-))))Gruß,
Ronald -
-
@bynight Ja dann viel Spaß- Ich kann Dir nur aus Erfahrung raten - vermeide Codieren in function Nodes soweit es geht. Es gibt nur wenige Fälle, wo es sinnvoll ist. Beschäftige Dich lieber mit Change Nodes und JSONATA.
https://docs.jsonata.org/overview -
@bynight sagte: in etwa so:
In "normalen" Programmiersprachen gibt es kein goto. Ich kenne es nur von Basic. Anstelle von
goto end;
schreibt man
return msg;