NEWS
Visualisierung mit Node Red erstellen
-
-
@damrak2022 Nein - Du sollst nichts sortieren - aber es kommen jetzt Objekte raus- aber Du solltest Aufgabe 2 und 3 kombinieren und nicht irgendwas machen.
So also Schritt für Schritt:
Wie filterst Du Dein Objekte nach einem bestimmten Preis?
-
@mickym Zum Beispiel so:
-
@damrak2022 Ja aber nicht in einem Array - Du hattest doch vorher schon nach dem günstigsten Preis gefiltert. Nimm das halt mal als Ausgangspunkt. Das war doch richtig.
Vor einer Stunde hattest Du doch das günstigste Objekt herausgefiltert: https://forum.iobroker.net/post/948105 - Also nimm das mal.
-
@mickym Du meinst so
-
@damrak2022 Ja das brauchen wir auch - es wird auch nicht gleich funktionieren - aber mach halt mal. Wie hast Du vorher das Objekt mit dem günstigsten Preis gefiltert. ich habs doch gerade verlinkt.
-
-
@damrak2022 Na also - und nun hast Du gerade gezeigt, wie Du die 139 ermittelt hast. Und das sollst Du nun kombinieren. Also setze einfach mal statt der 139 Deine Abfrage ein, mit der Du die 139 ermittelt hast. Es WIRD NICHT funktionieren - aber machs halt mal.
-
@mickym So
payload.Zimmer[Preis=$min]
-
@damrak2022 Na da steht doch bisschen mehr als $min in deiner Abfrage, wie Du die 139 ermittelt hast. Hast Du gerade vor 5 Minuten gepostet. Kannst Du das nicht einfach abschreiben und hinter das = setzen????
-
payload.Zimmer[Preis=$min(payload.Zimmer."Preis")]
-
@damrak2022 Gut und da die Zahl als erstes ausgerechnet werden muss, damit der Filter funktioniert, setzt Du bitte das was Du gerade eingesetzt hast in runde Klammern.
-
@mickym Sorry, verstehe ich nicht - das $min bis Preis steht doch schon in Klammern
payload.Zimmer[Preis=($min(payload.Zimmer."Preis")]
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Sorry, verstehe ich nicht - das $min bis Preis steht doch schon in Klammern
payload.Zimmer[Preis=($min(payload.Zimmer."Preis")]
Fast gut - aber soviel Klammern wie aufgemacht werden müssen auch wieder zugemacht werden. Also wo endet das was Du gerade eingefügt hast und machst noch eine Klammer dran. Du hast 2 runde Klammern aufgemacht, aber nur eine runde Klammer zu gemacht. Ich glaube das hab ich auch schon oft gesagt.
-
@mickym Ja, hast Du
payload.Zimmer[Preis=($min)(payload.Zimmer."Preis")]
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Ja, hast Du
payload.Zimmer[Preis=($min)(payload.Zimmer."Preis")]
Nein Du kannst doch nicht die Funktion auseinanderreißen.
Also am Anfang hast Du das gehabt:
in der Du manuell den niedrigsten Preis eingetragen hast, um das günstigste Zimmerobjekt zu erhalten:
payload.Zimmer[Preis=139]
Hier hast Du 139 ermittelt
$min(payload.Zimmer."Preis")
Dies ist also die Methode, um die 139 zu ersetzen:
payload.Zimmer[Preis=$min(payload.Zimmer."Preis")]
So nun habe ich gesagt, dass Du den Ausdruck den Du statt der 139 einsetzen solltest in Klammern setzen sollst, damit der zuerst ermittelt wird.
Den Ausdruck den Du eingesetzt hast, war:$min(payload.Zimmer."Preis")
den in Klammer zu setzen kann doch nicht so schwer sein:
($min(payload.Zimmer."Preis"))
und den setzt man nun anstelle der 139 ein:
payload.Zimmer[Preis=($min(payload.Zimmer."Preis"))]
ich verstehe wieder mal nicht, wieso Du nicht einfach genau das machst, was ich schreibe. Wenn Du soweit bist - dann wirst Du immer noch kein Ergebnis haben. Aber machs erst mal soweit.
-
payload.Zimmer[Preis=($min(payload.Zimmer."Preis"))]
Ih finde es irritierend, das zwei sich öffnende Klammern hintereinander kommen, bevor die erste geöffnete geschlossen wird. Das ist ja an anderen Stellen auch so. Bei einem Array im Array ist das klar, aber hier in diesem Fall verstehe ich es nicht, warum das so ist.
-
@damrak2022 Nun die innersten Klammern werden immer zuerst abgearbeitet. Die Funktion $min() hat ihre Parameter und wir wollen dass die gesamte $min() Funktion zuerst ausgeführt wird deswegen ($min()). $min() ist fix definiert und darf NIE auseinander gerissen werden. Das ist wie bei Taschenrechner oder in der Schule war das genauso.
4 * ((2 + 3) + ( 2 * (4 + 5)))
Das ist doch nichts Neues oder Ungewöhnliches. Das heißt Du rechnest erst die inneren Klammern aus und arbeitest Dich nach außen:
4 * ( 5 + ( 2 * 9))
4 * (5 + 18)
4 * 23 = 92
Also das ist doch nichts anderes mit den sich öffnenden und schließenden Klammern.
Nun zurück zum Ausdruck. Am Anfang hast Du Dich mit payload.Zimmer nach unten in dem Pfad bewegt und hinten in der runden Klammen musst Du wieder Dich auf das Hauptobjekt beziehen. Deshalb musst Du bei dem 2 payload nun wieder die $$ und Dich dann auf die payload beziehen.
-
@mickym So
-
@damrak2022 Na bist du begeistert und wie sich das zusammenfügt?
Da das grüne Zimmer gerade renoviert wird, müssen wir den Preis mind. halbieren. Das heißt Du änderst den Preis mal auf 89 und schaust, ob dann automatisch das neue Objekt gezeigt wird.