JsonMod: EKD Ampere.IQ / KIWIGRID per Json abfragen

Begonnen von fabian_niesen, 21 April 2024, 19:54:12

Vorheriges Thema - Nächstes Thema

fabian_niesen

Moin zusammen,
ja, ich habe in die CommandRef und den Newbee Guide gelesen, und komme trotzdem nicht weiter.
Ich versuche per Reading List den Namen und den Wert der einzelnen Werte per JsonMod zu bekommen. Wenn ich readinglist auf "complete()" stelle sieht die Readings so aus (Gekürzt):
0.editable 0
0.label Total Inverter Energy Out
0.link https://KIWIGRID/rest/items/sajhybrid_inverter_94_<Inverter SN>_inverter_energyOut
0.name sajhybrid_inverter_94_<Inverter SN>_inverter_energyOut
0.state 2020022755 Ws
0.stateDescription.pattern %.2f %unit%
0.stateDescription.readOnly 1
0.type Number:Energy
1.editable 0
1.label WorkConsumedFromProducers
1.link https://KIWIGRID/rest/items/kiwigrid_location_standard_b65d71dc1b42_harmonized_work_consumed_from_producers_total
1.name kiwigrid_location_standard_b65d71dc1b42_harmonized_work_consumed_from_producers_total
1.state NULL
1.stateDescription.pattern %s
1.stateDescription.readOnly 1
1.type String
10.editable 0
10.label Battery SoC
10.link https://KIWIGRID/rest/items/sajhybrid_battery_94_<Inverter SN>_battery_stateOfCharge
10.name sajhybrid_battery_94_<Inverter SN>_battery_stateOfCharge
10.state 99.00 %
10.stateDescription.pattern %.1f %unit%
10.stateDescription.readOnly 1
10.type Number:Dimensionless
Wobei <Inverter SN> der Seriennummer des Inverters entspricht. Das Ganze geht bis 98 so weiter. Manuell ist also Sub Optimal.

Was ich suche, ist ein ReadingList das mir immer das "label" als Namen des Reading mit "state" als Wert ausgibt. Bonus wäre wenn über das Feld "stateDescription.pattern" die Einheit bereinigt werden könnte.

Leider habe ich nichts mit der Suche gefunden und bin auch kein JSON erperte. Aber nach 3 Stunden Basteln dachte ich, ich frag mal.

Viele Grüße
Fabian

yersinia

Moin,
kannst du ein (anonymisiertes) Json, welches du erhältst, zur Verfügung stellen? Das könnte beim Testen helfen.
Mit multi() könnte es funktionieren.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

fabian_niesen

Moin,
kein Problem. Die IDs habe ich durch <Bezeichnung> ersetzt. die Datei liegt hier: EKD Jason (anonymisiert).
Vielen Dank. Ich hatte das mit Multi nicht hinbekommen, aber das war für mich Neuland und nach dem Lesen der Bespiele habe ich es nicht hinbekommen.

Viele Grüße
Fabian

yersinia

#3
Kannst du dies auch als txt file einfach anhängen hier? Oder, wenn es nicht zu lang ist, einfach als Code tags in den Text übernehmen.

Davon abgesehen bist du im falschen Unterforum, richtig ist Automatisierung - du solltest den Thread selber verschieben (Button müsste unten links sein), dann steigt auch die Chance, dass dir ua vom Maintainer geholfen werden kann.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

betateilchen

Zitat von: fabian_niesen am 21 April 2024, 19:54:12Was ich suche, ist ein ReadingList das mir immer das "label" als Namen des Reading mit "state" als Wert ausgibt.

Das ist doch die einfachste Anforderung an JsonMod überhaupt:

attr <deviceName> readingList multi(jsonPath('$.[*]'),property('label'), property('state'))


Zitat von: fabian_niesen am 21 April 2024, 19:54:12Bonus wäre wenn über das Feld "stateDescription.pattern" die Einheit bereinigt werden könnte.

Was genau meinst Du mit "die Einheit bereinigen"?

In "stateDescription.pattern" steht m.E. nix sinnvolles drin, mit dem man was anfangen könnte. Insbesondere die readings, in denen neben dem Wert auch noch ein timestamp steht, lassen sich damit nicht identifizieren und/oder auflösen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fabian_niesen

Danke für den Versuch. Ich bin Mittlerweile auf Home Automation umgestiegen, da war es einfacher lösbar. Und da ich mich in beiden einarbeiten muss, mache ich da weiter. Da gab es fertige Lösungen für den EKD Wechselrichter über Kiwigrid

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!