NEWS
[gelöst]Werte aus JSON [1,2,3,4,5]addieren?
-
Hallo, kann mir vielleicht nochmal jemand auf die Sprünge helfen?
Ich schreibe mehrere Werte in JSON-Array's um diese dann in einem Felxchart darzustellen, das funktioniert auch super. Die Werte werden mittels eines Script für jeden Tag an dem ich lade in die Arrays geschrieben, aufgegliedert nach gesamt, Netzanteil und PV-Anteil, an den Tagen wo nicht geladen wird, wird '0' eingetragen. das ganze sieht dann so aus:
die DP sehen so aus:
{ "common": { "name": "sessionEnergyNet", "desc": "Strom aus dem Netz", "type": "json", "role": "state", "unit": "KWh" }, "native": {}, "type": "state", "_id": "0_userdata.0.CarLoad.Monatstabellen.2025.Maerz.sessionEnergyNet", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1742219881144 }
und das JSON so:
[ 0,0,5.97,0,0,0,0,4.92,0,0,0,0,0,0,0,8.57,0,11.25,0,0,0,0,0,0,0,0,13.81,0,0,0]
Wie kann ich jetzt die Werte mit einem Script (js oder Blockly ist egal) addieren und in einen neuen DP (z.B. Gesamt) schreiben?
-
@icebear sagte: Werte mit einem Script (js oder Blockly ist egal) addieren und in einen neuen DP (z.B. Gesamt) schreiben?
Dafür gibt es einen Mathe-Block:
Eine Javascript-Version:
schedule('55 59 23 * * *', function() { const date = formatDate(new Date(), 'YYYY.OO', 'de'); const idJson = '0_userdata.0.CarLoad.Monatstabellen.' + date + '.sessionEnergyNet'; const idSum = '0_userdata.0.CarLoad.Monatstabellen.' + date + '.EnergyNet'; const arr = JSON.parse(getState(idJson).val); let sum = 0; for(let val of arr) { sum += val; } setState(idSum, sum, true); });
-
@icebear nimm einfach Jsonata und füge das Array in die $sum Funktion.
Also das Array in eine Variable, dann ist der Jsonata Ausdruck einfach
$sum($)
-