NEWS
json datei für Chart aus vorhandenen DP's erstellen
-
@dos1973 Eigentlich
-00, -01, etc. - aber ich wandle es nun in Zahlen um. Dauert halt bissi. -
brauche ich wirklich ein Blockly mit cronjob,
dass meinen DP triggert, damit das nodeRed zb alle 10min läuft
suche noch ein 10min Trigger -
@dos1973 Einfach die Injectnode triggern lassen - da brauchst kein blockly
-
So damit sollte es nun gehen:
payload.{"axisLabels": [_id~>/(Datum-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "date":val}, "data" : [_id~>/(Verbrauch-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "val":val}}{"axisLabels":axisLabels,"data":data} ~>|$|{"axisLabels":$sort(axisLabels,function($l,$r){$l.id > $r.id}),"data":$sort(data,function($l,$r){$l.id > $r.id})}| ~>|$|{"axisLabels": axisLabels.date,"data":data.val}|
-
fast
von links nach rechts aufsteigend.
manchmal kann ich ja code "interpretieren" aber hier sehe ich nur Bahnhof.
-
@dos1973 Dann dreh einfach mal das größer Zeichen um - keine Ahnung - warum das so ist.
payload.{"axisLabels": [_id~>/(Datum-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "date":val}, "data" : [_id~>/(Verbrauch-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "val":val}}{"axisLabels":axisLabels,"data":data} ~>|$|{"axisLabels":$sort(axisLabels,function($l,$r){$l.id < $r.id}),"data":$sort(data,function($l,$r){$l.id < $r.id})}| ~>|$|{"axisLabels": axisLabels.date,"data":data.val}|
-
@mickym welches?
-
@dos1973 Ich hab den Code nochmal gepostet
payload.{"axisLabels": [_id~>/(Datum-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "date":val}, "data" : [_id~>/(Verbrauch-(\d|10)$)/] ? {"id": $number((_id~>/(\d|10)$/).match), "val":val}}{"axisLabels":axisLabels,"data":data} ~>|$|{"axisLabels":$sort(axisLabels,function($l,$r){$l.id < $r.id}),"data":$sort(data,function($l,$r){$l.id < $r.id})}| ~>|$|{"axisLabels": axisLabels.date,"data":data.val}|
-
-
@dos1973 Ok dann sag nochmal woher Du den holst und wie sieht der vom value her aus.
sourceanalytix.0.0_userdata__0__mqtt__shellies__Pro3_EM__events__rpc__params__em:0__total_act_power.currentYear.consumed.01_currentDay
Bzw. muss ich eigentlich nicht wissen - Du holst einfach einen Zahlenwert irgendwoher?
-
sourceanalytix.0.0_userdata__0__mqtt__shellies__Pro3_EM__events__rpc__params__em:0__total_act_power.currentYear.consumed.01_currentDay
einfach der heutige Verbrauch als Inhalt.
5,922
-
Ok bin fertig:
Einfach diese 3 Nodes noch einfügen.
In der get-Node "Verbrauch heute" halt noch den richtigen Pfad zum Datenpunkt einfügen.
Und zum Schluß kann ich immer nur wieder sagen, lernt JSONATA mit diesem Tool - so erstelle ich ja meine Ausdrücke auch, in dem ich diese Stück für Stück zusammensetze. Hier kannst Du ausprobieren, welche Teile welche Auswirkungen haben: https://try.jsonata.org/Dcmx04fzH
-
-
Ok - verstehe zwar wieder nicht warum aber dann tausch einfach in der letzten Change Node (Ergänze Graph) die beiden Parameter in der append Funktion.
$.payload~>|$|{"axisLabels":$append(axisLabels,$$.date)}| ~>|$.graphs|{"data":$append(data,$$.val_today)}|
Also in der letzten Node.
-
Ich denke, wenn Du es mir kurz bestätigst, dass ich dann alles wieder löschen kann?
-
-
das große Problem war nicht das json, sonder die Art wie ich die Daten aufgebaut habe, richtig?
-
@dos1973 sagte in json datei für Chart aus vorhandenen DP's erstellen:
Perfekt!
Super
@dos1973 sagte in json datei für Chart aus vorhandenen DP's erstellen:
das große Problem war nicht das json, sonder die Art wie ich die Daten aufgebaut habe, richtig?
Auch - das hat einiges zusätzliches Kopfzerbrechen gekostet, und mir ist auch trotzdem nicht klar wieso der letzte Punkt nun da oder dort ist. Aber egal.
Und doch mit Blockly hast du ein Problem - da sind ja mit den schwarzen Balken die Formatierung verschütt gegangen. Und das liegt daran, dass Du nicht mit Objekten arbeitest, sondern mit Strings versuchst Objekte zu basteln.Ich kann davon nur abraten. Trotzdem Du den Code nicht jetzt verstehst - kannst es ja mal versuchen
- ist das 10 mal praktischer als Objekte mit Strings zu erstellen:
Da dreht sich mir nur der Magen um - und Blockly kann das einfach nicht. Dann musst halt mit Javascript programmieren - brauchst aber 10 mal soviel Code wie mit JSONATA und NodeRed.
-
Aber nochmal - darf ich nun wieder löschen???
-
das ist mir ja voher nicht bekannt - und ich starte und kämpf nicht durch. Ich bin eben kein Enwickler.
Dir ein Riesen Dankeschön, für deine Mühe.
Ja, hau weg die Daten ...