NEWS
Visualisierung mit Node Red erstellen
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
{"Datum":"09.01.21","Km-Stand":352849,"Teil-Km":127,"Spritmenge":"10,43","Kosten":"15,01","Währung":"EUR","Tankart":2,"Reifen":2,"Strecken":14,"Fahrweise":2,"Kraftstoff":9,"Bemerkung":"Viabuy","Verbrauch":"6,45","BC-Verbrauch":"8,4","BC-Spritmenge":0,"BC-Geschwindigkeit":32,"Tankstelle":"Esso"}
Wenn Du es noch in Code-Tags eingebunden hättest, wäre es perfekt - aber OK. Dann kann ich nämlich mit Select all das Objekt mit einem Schlag in die Zwischenablage kopieren. EDIT: Ich habe gesehen, hast es gerade gemacht.
{"Datum":"09.01.21","Km-Stand":352849,"Teil-Km":127,"Spritmenge":"10,43","Kosten":"15,01","Währung":"EUR","Tankart":2,"Reifen":2,"Strecken":14,"Fahrweise":2,"Kraftstoff":9,"Bemerkung":"Viabuy","Verbrauch":"6,45","BC-Verbrauch":"8,4","BC-Spritmenge":0,"BC-Geschwindigkeit":32,"Tankstelle":"Esso"}
-
@damrak2022 So hier ein Lösung mit möglichst geringem Codieraufwand.
Das hängst Du hinter Deine CSV Node - also wo Du das Array mit den Objekten hast. Dieser Flow zählt Dir alle Kosten zusammen:
-
@mickym Danke, das funktioniert. Aber das was Du in die join node geschrieben hast, finde ich schon sehr kompliziert. Da hätte ich ja ewig für gebraucht, wenn ich es überhaupt jemals hinbekommen hätte.
-
-
@damrak2022 Das habe ich nur formatiert, damit Du eine Euro Summe rausbekommst und die Zahl wieder in einen String mit einer Kommazahl rauskommt. Du weißt ja generell sind Zahlen in IT-Systemen mit . als Dezimalzeichen.
Das reine Summieren geht so.
-
@mickym Bezog sich auf den Eintrag davor
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Bezog sich auf den Eintrag davor
Ein Versehen.
-
@mickym Ich bekomme vom debug ein:
-
@mickym Ach, Moment das bezog ich ja auf die Tankkosten - Fehler von mir
-
@damrak2022 Ich hab es mit dem Objekt gemacht - das Du vorher geschickt hast. wenn andere Eigenschaften zusammenzählen willst, dann setze halt die payload in der 1. Change Node entsprechend. - Also da kann ich Dir dann nicht mehr helfen.
-
@mickym Nein alles gut - War ein Fehler von mir - SORRY
-
@damrak2022 Wie gesagt Du kannst die Change Node ja entsprechend selbst anpassen. Du solltest halt versuchen zu verstehen, was ich gemacht habe.
-
@mickym Werde ich tun und damit morgen etwas rumprobieren
-
@mickym Bin gerade überfordert, oder übermüdet.
Dieser Flow
gibt mir permanent folgenden Fehler aus:
Ich habe das Ganze jetzt zigmal auf Fehler überprüft, finde aber keinen. Also habe ich einen funktionierenden Flow kopiert und gegen den mit der Fehlermeldung ausgetauscht. Natürlich auch noch den Dateipfad angepasst. Hilft nur nichts.
Das ist der funktionierende Flow:
flows.jsonUnd das ist das Problemkind:
flows.json -
@damrak2022
Der Fehler wird doch im Klartext ausgegeben. Die Umwandlung von Stringwert in Zahlenwert verursacht einen Fehler. Stringwert ist ein Wort und kein Zahlenstring, vermute ich mal. Schau bitte mal nach was da umgewandelt werden soll. -
So, ich versuch Dir mal darzulegen was Du gemacht hast, damit Du siehst ob ich es ansatzweise verstanden habe:
Also in der ersten Change Node hast Du zuerst den Payload auf die gewünschte Eigenschaft gesetzt.
Im zweiten Feld hast Du das Komma aus dem Wert in einen Punkt geändert, da es sonst IT technisch nicht richtig interpretiert wird.
Im dritten Feld (muss ich ehrlich eingestehen, verstehe ich nicht ganz, da ich hierbei Addition der einzelnen Werte nicht so ganz begreife).
Bei der join Nod bin ich komplett raus, da mir dieser Code: $A+payload
garnichts sagt - genau wie der nächste:
$formatNumber($A, "0,00 €",{ 'decimal-separator':',', 'grouping-separator':'.' } )
Kleine Einschränkung: $formatNumber($A, "0,00 €" legt fest in welchem Format das ausgegeben wird. -
@damrak2022 Gut also die ersten beiden Regeln in der Change Node hast Du richtig verstanden. So damit werden die Zahlenstrings richtig umgewandelt, dass eine Zeichenkette "15.03" in eine Zahl konvertiert werden kann, also 15.03
Lies die Beschreibung zur Funktion $number in der Change Node nach. Man kann das Umwandeln einer Zeichenkette in eine Zahl auch nochmal hier nachlesen: https://docs.jsonata.org/numeric-functions
Du musst die in die richtigen Datentypen umwandeln. Du kannst keine Zeichenketten addieren, sondern eben nur Zahlen.
Die split Node wandelt alle Objekte in einzelne Nachrichten um, die JOIN Node fasst die wieder zusammen. Lass mal die Formatierung in der JOIN Node weg - im Prinzip kann man das auch mit einer Change Node dahinter formatieren. Wichtig ist wenn Du Dir die Hilfe zur Change Node anschaust.
Das heißt doch, das die payload jeder einzelnen Nachricht zu einer Variablen $A dazugezählt wird und am Ende aller Nachtrichten ausgegeben wird.
Wie gesagt lagere den Fixup Ausdruck in eine nachfolgende Change Node aus.
So und nun zu Deinem Problem. Das Problem ist doch nicht der Flow. Der Flow ist ja identisch, nur die Daten sind andere, so dass Du mit der Change node die payload nicht mehr auf die Eigenschaft setzt, die aufsummiert werden soll. Die Fehler sprechen doch für sich, wenn Du Dich mit der $number Funktion auseinandergesetzt hast.
Der JSONATA Befehl $number() kann die Zeichenkette "Steuer" nicht in eine Zahl umwandeln. Dann musst Du halt schauen, welche Objekte aus der Split Node rauskommen und ob Du die richtigen Eigenschaft, die aufsummiert werden soll in die payload schreibst. Vielleicht ist schon eine Zahl in dem Objekt und Du brauchst keine Umwandlung mehr usw. - das kann ich doch alles nicht riechen. ALSO: Das Problem ist doch nicht der arme Flow, er sagt Dir doch nur, hallo Du fütterst mich mit Daten, die ich nicht addieren kann. So und warum Du solche Daten in die arme Change Node gibst, dafür kann die Change Nodes nicht. Das Ausgeben von Fehlern sind Hilfeschreie und Du musst Dich darum kümmern, dass die Change Node ihren Job sauber erledigen kann.
- Ich hab Dir ja schon mal gesagt, Du solltest Dich mal in eine Nachricht hineinversetzen.
Hänge eine Debug Node in die Node davor und schaue Dir an was die Change Node tun soll. Schau, was aus der Change Node rauskommt. Lösche mal eine Regel und füge sie anschließend wieder hinzu, um zu sehen, was die Regeln tun. Du kannst auch die 3 Regeln in 3 einzelne Change Nodes auslagern. Du musst einfach lernen, Dinge zu analysieren. Wenn das Ergebnis nicht dem entspricht, das Du erwartest, dann frage Dich warum das so ist. Falls Du keine Erklärung findest, dann frage hier. Ich und andere beantworten Dir die Fragen gerne, wenn wir können und denke immer daran, es gibt soooooo viele Leute, denen Deine Fragen helfen. Die melden sich nicht, die lesen nur.Dieser Thread hat 1573 Posts, aber über 1800 Leser. Wenn Du also nicht jeden Post mehrfach liest, dann werden wohl noch ein paar andere mitlesen. Das erkennst Du ja auch daran, dass es hier - wie @Garf auch andere Leser gibt, die versuchen Dir zu helfen, in dem sie Dir versuchen zu helfen.
@garf sagte in Visualisierung mit Node Red erstellen:
@damrak2022
Der Fehler wird doch im Klartext ausgegeben. Die Umwandlung von Stringwert in Zahlenwert verursacht einen Fehler. Stringwert ist ein Wort und kein Zahlenstring, vermute ich mal. Schau bitte mal nach was da umgewandelt werden soll.Das ist nur anders formuliert, was ich oben gesagt habe und ich finde es toll, dass Du hier auch andere Leute hast, die Dir helfen wollen. Ich finde, dass das auch Anerkennung finden sollte.
- Also von meiner Seite
Also untersuche mal was Du bei dem Flow, in dem die Fehler auftreten mal zu analysieren, welche Nachrichtenobjekte Du in die Change Node einspeist.
-
@mickym Ich habe jetzt noch nicht versucht das auseinanderzunehmen und zu überprüfen.
Was mich aber so stutzig macht ist folgendes:Bei den Betankungen haben wir diesen Flow auf die Eigenschaft Kosten angewendet - funktioniert.
Bein den Kosten heißt die Eigenschaft "Gesamtkosten" anstatt "Kosten"
Alles andere ist doch komplett identisch. -
@damrak2022 Wie gesagt schau was aus der Split Node - für Objekte rauskommt und Deine Change Node und was aus dieser raus kommt.
-
@mickym Das ist der Debug der Split Node:
Den eingerahmten Wert soll er addierenAusgabe der Change Node:
Und mit eine Ausnahme bekomme ich ja auch die Werte