NEWS
Visualisierung mit Node Red erstellen
-
@mickym Okay, habe ich gemacht. So richtig?
Beim Debug kommt dann allerdings undefined
-
@damrak2022 In der Change Node musst du natürlich das $A gegen payload austauschen.
-
@mickym Ah okay, dann bekomme ich die Jahressumme angezeigt als Number
Was bewirkt das $A ? Das er alle Werte addiert? -
Der Reduktionsausdruck $A + payload wird also bei jeder eingehenden Nachricht ausgeführt.
Theoretisch kannst Du auch andere Operationen ausführen. Alles was Du mit JSONATA machen kannst.Richtig das ist die Summe, die sich ergibt.
Nehmen wir mal der Einfachheit an - nach der Split Node kommen 3 Nachrichten aus:
- payload = 10.06
- payload = 15.3
- payload = 72.55
dann schau Dir die JOIN Node an:
Was passiert - der Anfangswert ist 0: deshalb wird $A auf 0 gesetzt:
- Nachricht kommt:
der Reduktionsausdruck wird ausgeführt: $A + payload, also 0+10.06. Neues $A=10.06. - Nachricht kommt:
der Reduktionsausdruck wird ausgeführt: $A + payload, also 10.06+15.3. Neues $A=25.36. - Nachricht kommt:
der Reduktionsausdruck wird ausgeführt: $A + payload, also 25.36+72.55. Neues $A=97.91.
Durch die split Node bekommt die JOIN Nachricht mit, wenn sie alle Nachrichten bekommen hat - deswegen funktioniert das nur, wenn eine msg.parts Eigenschaft in der Nachricht enthalten ist.
In der msg.parts Eigenschaft siehst Du wenn Du Dir wieder die Hilfe der JOIN Node anschaust, dass diese folgenden Informationen enthält.
Deshalb weiß die JOIN Node wann die Summe entgültig ist und verschickt die payload als Summe.
Mach mal eine Debug NOde hinter die Split Node und schau Dir mal die VOLLSTÄNDIGEN NACHRICHTENOBJEKTE an.
Mach das mal und poste mal so ein vollständiges Nachrichtenobjekt.
-
@mickym Das sieht dann so aus:
-
@damrak2022 Tja und daraus erkennst Du aus dem msg.parts Objekt, dass das das 18. Element eines Arrays mit 25 Elementen ist, welches Du gepostet hast.
-
@mickym Ja okay hier sieht man es:
-
@damrak2022 Genau - wichtig ist, dass Du es verstehst und nun weißt was eine JOIN Node beim Sequenz reduzieren macht.
-
@mickym Okay $A wird auf 0 gesetzt und zählt dann nach und nach alle Payloads zusammen
-
@damrak2022 Ja so wie ich es unten beschrieben habe.
Wie müsste denn der Reduktionsausdruck aussehen, wenn ich 4 Nachrichten mit folgenden payloads habe:
- Nachricht: payload = "A"
- Nachricht: payload = "n"
- Nachricht: payload = "d"
- Nachricht: payload = "y"
Und alle payloads mit einander zu "Andy" kombinieren möchte. Darf ein Anfangswert gesetzt werden oder nicht?
-
@mickym Ich vermute so:
Es ist ja ein string und kein Number
-
@damrak2022 Warum Du den Anfangswert aus A setzt weiß ich nicht. Aber mit Zeichenketten kann man nicht rechnen.
Genau - wie Du sagst ist ein string und keine Zahl. Wie muss also der Reduktionsausdruck aussehen? Wie kombiniert mal also 2 Strings? - Haben wir schon oft gemacht.
-
@mickym Weiß ich gerade nicht
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Weiß ich gerade nicht
Tja - aber sowas muss im Kopf bleiben. Schau mal hier: https://forum.iobroker.net/post/886582
und schon mal einen Blick in die JSONATA Anleitung geworfen? https://docs.jsonata.org/other-operators
-
@mickym Wahrscheinlich trage ich es falsch ein, oder es fehlt ein Zeichen, weiß ich ehrlich gesagt nicht
-
@damrak2022 Genau
wie sieht also der Reduktionsausdruck aus?
-
@mickym Sobald ich das & Zeichen verwende wird das Feld rot. Also stimmt was nicht
-
@damrak2022 Bei mir nicht.
- Also was zählst Du denn zusammen?
-
@mickym Anscheinend stimmt irgendwas bei meiner Eingabe nicht
-
@damrak2022 Dann mach einen Screenshot - sonst sehe ich es ja nicht?