Photovoltaik erweitert mit Stromspeicher von Solarwatt (My Reserve)
Fronius Sym 6.03 habe ich nun erweitert mit den Stromspeichern MyReserve von Solarwatt. Da nun der Batteriespeicher von den WR geschaltet wird, werden meine bisherigen Daten gerade bei der PV-Produktion verfälscht.
Möchte das ganze nun aus dem EnergyManager auslesen. Zusätzlich ist noch ein PDG (Raspi) per Bluetooth verbunden. Diese JSON Daten sind aber nicht ganz so aussagekräftig. Per IP-RASPI:8080 kann man diese auch abrufen.
Möchte allerdings von AC Sensor und dem EnergyManager diese Daten in FHEM per Readings bereitstellen.
Dazu dient die URL:
http://192.168.178.160/rest/kiwigrid/wizard/devices (IP vom EnergyManager)
Diese JSON Daten möchte ich nun gerne per Readings haben.
Hab das mal so probiert:
attr httpmod_MR_Solarwatt_Stromspeicher reading01Name MR_Batteriestand
attr httpmod_MR_Solarwatt_Stromspeicher reading01OMap null:0
attr httpmod_MR_Solarwatt_Stromspeicher reading01Regex "VoltageBatteryCellMean.value"[ : \t]+([-+]?[a-z\d\.]+)
Funktioniert nicht, habe gerade eine Blockade im Ansatz, kann mir da einer helfen?
Die JSON fängt immer mit "results" items an ...
Weiß daher nicht wie ich das umbauen kann.
{"result":{"items":[{"guid":"urn:solarwatt:myreserve:bcxxx","deviceModel":[{"deviceClass":"com.kiwigrid.lib.device.Device"},{"deviceClass":"com.kiwigrid.devices.inverter.Inverter"},{"deviceClass":"com.kiwigrid.devices.batteryconverter.BatteryConverter"},{"deviceClass":"com.kiwigrid.devices.solarwatt.MyReserve"}],"tagValues":{"IdFingerPrint":{"value":"urn:solarwatt:myreserve:bc:xxx","guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"IdFingerPrint"},"CountBatteryContactor":{"value":2,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"CountBatteryContactor"},"StateOfChargeReactivateDischarging":{"value":null,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"StateOfChargeReactivateDischarging"},"StateVisibleIsSet":{"value":true,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"StateVisibleIsSet"},"VoltageBatteryCellMean":{"value":3.503,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"VoltageBatteryCellMean"},"IdFirmwareGRM":{"value":null,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"IdFirmwareGRM"},"WorkCapacity":{"value":null,"guid":"urn:solarwatt:myreserve:bc:xxx","tagName":"WorkCapacity"},"StateOfChargeMinimum"::
Wie müsste die Definition zusammengesetzt werden?
Setze einmal extractAllJSON, und Du wirst sehen, was Du als readingXXJSON dann definieren kannst
Zitat von: amenomade am 25 Juni 2019, 22:38:48
Setze einmal extractAllJSON, und Du wirst sehen, was Du als readingXXJSON dann definieren kannst
Ok danke. Jetzt habe ich ne Liste ...
z.B.
setstate httpmod_MR_Solarwatt_Stromspeicher 2019-06-26 07:59:41 result_items_01_tagValues_WorkACOut_value 3840.20497881806
Wie würde ich das nun zusammensetzen?
reading01Name
MR_Batteriestand
reading01OMap
null:0
reading01Regex
"result_items_01_tagValues_WorkACOut_value":[ \t]+"([\d\.]+)"
So in etwa?
So hab selbst gelöst!
Es gibt da leider wenige Dokumentationen zu den JSON Url's. Aber es gibt noch diese hier:
http://IP-EnergyManager/rest/kiwigrid/eps/powerValues
Darüber lassen sich die wichtigsten Readings erzeugen.
Wer es gebrauchen kann hier die Defines:
defmod httpmod_MR_Solarwatt_Stromspeicher HTTPMOD http://192.168.178.160/rest/kiwigrid/eps/powerValues 10
attr httpmod_MR_Solarwatt_Stromspeicher userattr reading01Name reading01OMap reading01Regex reading02Name reading02OMap reading02Regex reading03Name reading03OMap reading03Regex reading04Name reading04OMap reading04Regex reading05Name reading05OMap reading05Regex
attr httpmod_MR_Solarwatt_Stromspeicher DbLogExclude .*
attr httpmod_MR_Solarwatt_Stromspeicher alias My Reserve - Solarwatt 4.8 kW
attr httpmod_MR_Solarwatt_Stromspeicher enableControlSet 1
attr httpmod_MR_Solarwatt_Stromspeicher enableCookies 1
attr httpmod_MR_Solarwatt_Stromspeicher event-on-change-reading .*
attr httpmod_MR_Solarwatt_Stromspeicher group PV Solaranlage FRONIUS
attr httpmod_MR_Solarwatt_Stromspeicher icon message_light_intensity
attr httpmod_MR_Solarwatt_Stromspeicher reading01Name PV_Produktion_Gesamt
attr httpmod_MR_Solarwatt_Stromspeicher reading01OMap null:0
attr httpmod_MR_Solarwatt_Stromspeicher reading01Regex "powerProduced"[ : \t]+([-+]?[a-z\d\.]+)
attr httpmod_MR_Solarwatt_Stromspeicher reading02Name Eigenverbrauch_Aktuell
attr httpmod_MR_Solarwatt_Stromspeicher reading02OMap null:0
attr httpmod_MR_Solarwatt_Stromspeicher reading02Regex "powerConsumed"[ : \t]+([-+]?[a-z\d\.]+)
attr httpmod_MR_Solarwatt_Stromspeicher reading03Name Netzeinspeisung_Aktuell
attr httpmod_MR_Solarwatt_Stromspeicher reading03OMap null:0
attr httpmod_MR_Solarwatt_Stromspeicher reading03Regex "powerOut"[ : \t]+([-+]?[a-z\d\.]+)
attr httpmod_MR_Solarwatt_Stromspeicher reading04Name Netzbezug_Aktuell
attr httpmod_MR_Solarwatt_Stromspeicher reading04OMap null:0
attr httpmod_MR_Solarwatt_Stromspeicher reading04Regex "powerIn"[ : \t]+([-+]?[a-z\d\.]+)
attr httpmod_MR_Solarwatt_Stromspeicher room 16-HW-Raum
attr httpmod_MR_Solarwatt_Stromspeicher userReadings Solar_Produktion { round( ReadingsVal($name,"PV_Produktion_Gesamt",0),0) }
Zitat von: topa_LE am 26 Juni 2019, 08:06:06
setstate httpmod_MR_Solarwatt_Stromspeicher 2019-06-26 07:59:41 result_items_01_tagValues_WorkACOut_value 3840.20497881806
Etwas wie
attr httpmod_MR_Solarwatt_Stromspeicher reading10Name WorkACOut
attr httpmod_MR_Solarwatt_Stromspeicher reading10JSON result_items_.*_tagValues_WorkACOut_value
@amenomade
Ja es gibt zwei URL's
http://192.168.178.160/rest/kiwigrid/eps/powerValues
Diese hier funktioniert wie oben erklärt, nur fehlen da sämtliche Dinge was den Batteriespeicher betrifft. (Ladung, Entladung etc.)
http://192.168.178.160/rest/kiwigrid/wizard/devices
Hier sind sehr viele andere Daten abgreifbar, nur die items aber immer wieder andere Nummer, Daher kann ich die allEXTRACTJason nicht nutzen.
Das wäre hier die Batterieladung
result_items_08_tagValues_PowerBufferedFromProducers_tagName PowerBufferedFromProducers
result_items_08_tagValues_PowerBufferedFromProducers_value 377.21
PowerBufferedFromProducers -> Tag
{"value":9.044,"guid":"urn:solarwatt:myreserve:bc:a30b000b2137","tagName":"CurrentBatteryIn"},"TemperatureBatteryMin":{"value":27,"guid":"urn:solarwatt:myreserve:bc:a30b000b2137","tagName":"TemperatureBatteryMin"},"TemperatureBatteryCellMin":
Wie kann man nun ohne JSONExtract aus den oben zwei Zeilen userreadings bauen , um den "value" als Reading zu lesen?
Zitat von: amenomade am 29 Juni 2019, 13:41:48
Etwas wie
attr httpmod_MR_Solarwatt_Stromspeicher reading10Name WorkACOut
attr httpmod_MR_Solarwatt_Stromspeicher reading10JSON result_items_.*_tagValues_WorkACOut_value
Ok, perfekt, ich teste das mal! ;)
Um eine andere URL abzurufen, machst Du ein zusätzliches get:
attr httpmod_MR_Solarwatt_Stromspeicher get50Name Block2
attr httpmod_MR_Solarwatt_Stromspeicher get50URL http://die-andere-URL
attr httpmod_MR_Solarwatt_Stromspeicher get50Poll 1
Das letzte, damit dieses get beim jedem Aufruf der HauptURL mit aufgerufen wird.
extractAllJSON ist i.d.R. nur am Anfang da, damit man die Struktur der benötigten readingXXJSON einfach sehen kann. Danach kann es weg.
Hab das jetzt erstmal zum Testen in ein separates Define gepackt.
defmod httpmod_MR_Stromspeicher_Devices HTTPMOD http://192.168.178.160/rest/kiwigrid/wizard/devices 15
attr httpmod_MR_Stromspeicher_Devices userattr reading10JSON reading10Name
attr httpmod_MR_Stromspeicher_Devices DbLogExclude .*
attr httpmod_MR_Stromspeicher_Devices enableControlSet 1
attr httpmod_MR_Stromspeicher_Devices enableCookies 1
attr httpmod_MR_Stromspeicher_Devices enforceGoodReadingNames 1
attr httpmod_MR_Stromspeicher_Devices handleRedirects 1
attr httpmod_MR_Stromspeicher_Devices reading10JSON result_items_.*_tagValues_WorkACOut_value
attr httpmod_MR_Stromspeicher_Devices reading10Name WorkACOut
So kommt das eine Reading für WorkACOUT auch nicht rein. Fehlt da noch irgendein Attribut?
Also.... zu welcher URL gehört WorkACOut?
Am besten poste immer ein "list" vom HTTPMOD statt eine Raw Definition, und setze verbose 5 auf dem httpmod und poste auch die Log
Gehört zu der URL, die eben nicht geht.
http://192.168.178.160/rest/kiwigrid/wizard/devices
Internals:
.getList
.setList interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
.updateReadingList 1
.updateRequestHash 1
BUSY 0
CFGFN
CHANGED
DEF http://192.168.178.160/rest/kiwigrid/wizard/devices 15
FUUID 5d174469-f33f-252b-8c98-858e80e8c22a8298
Interval 15
JSONEnabled 1
LASTSEND 1561809747.63541
MainURL http://192.168.178.160/rest/kiwigrid/wizard/devices
ModuleVersion 3.5.9 - 13.2.2019
NAME httpmod_MR_Stromspeicher_Devices
NOTIFYDEV global
NR 8059
NTFY_ORDER 50-MR
STATE ???
TRIGGERTIME 1561809762.63343
TRIGGERTIME_FMT 2019-06-29 14:02:42
TYPE HTTPMOD
addr http://192.168.178.160:80
auth 0
buf
code 200
compress 1
conn
data
displayurl http://192.168.178.160/rest/kiwigrid/wizard/devices
header Cookie: emsid="70e672e6-7614-4038-9177-aea67cf9af3d"
host 192.168.178.160
httpheader HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/json; charset=UTF-8
Content-Length: 95864
httpversion 1.0
hu_blocking 0
hu_filecount 188
hu_port 80
hu_portSfx
ignoreredirects 1
loglevel 4
path /rest/kiwigrid/wizard/devices
protocol http
redirects 0
timeout 2
url http://192.168.178.160/rest/kiwigrid/wizard/devices
value 0
.attreocr:
.*
.readingParseList:
QUEUE:
READINGS:
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.160/rest/kiwigrid/wizard/devices
value 0
sslargs:
Attributes:
DbLogExclude .*
enableControlSet 1
event-on-change-reading .*
reading10JSON result_items_.*_tagValues_WorkACOut_value
reading10Name WorkACOut
reading20JSON result_items_.*_tagValues_CurrentBatteryIn_value
reading20Name CurrentBatteryIn
reading30JSON result_items_.*_tagValues_PowerBufferedFromProducers_value
reading30Name Batterieladung
userattr reading10JSON reading10Name reading20JSON reading20Name reading30JSON reading30Name
verbose 5
Dies wäre hier der komplette Block, der zu WorkACOut gehört:
setstate httpmod_MR_Solarwatt_Stromspeicher 2019-06-26 07:59:41 result_items_01_tagValues_WorkACOut_guid urn:solarwatt:myreserve:bc:xxxxxxxxxx137
setstate httpmod_MR_Solarwatt_Stromspeicher 2019-06-26 07:59:41 result_items_01_tagValues_WorkACOut_tagName WorkACOut
setstate httpmod_MR_Solarwatt_Stromspeicher 2019-06-26 07:59:41 result_items_01_tagValues_WorkACOut_value 3840.20497881806
Vielleicht muss auch noch die guid übergeben werden?
Aus einem fremden Post (HowTo) bei OpenHab habe ich das hier gefunden:
//Rules-Datei für Energie
rule "Get Power Usage"
when
Time cron "0/15 * * * * ?"
then
var String json = sendHttpGetRequest("http://192.XXX.XXX.XXX/rest/kiwigrid/wizard/devices")
//Batteriestand
var String value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:solarwatt:myreserve:bc:xxxxxxxxxxx')].tagValues.StateOfCharge.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
var Number value2 = DecimalType.valueOf(value)
postUpdate(energieLadestand, value2)
//Einspeisung
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerOut.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieEinspeisung, value2)
//Batterieladung
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerBufferedFromProducers.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieBatterieladung, value2)
//Gesamterzeugung
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerProduced.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieGesamterzeugung, value2)
//Bezug
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerConsumedFromGrid.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieBezug, value2)
//Batterieentladung
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerConsumedFromStorage.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieBatterieentladung, value2)
//Gesamtverbrauch
value = transform("JSONPATH", "$.result.items[?(@.guid == 'urn:kiwigrid:location:XXXXX-XXXXXXXX:0')].tagValues.PowerConsumed.value", json)
value = value.stripStart("[")
value = value.stripEnd("]")
value2 = DecimalType.valueOf(value)
postUpdate(energieGesamtverbrauch, value2)
end
Dort wird ja auch GUID übergeben/ausgelesen.
Wie man das nun in FHEM umsetzt, ist mir bisher leider nicht klar.
Die Log bitte
Welche meinst Du? Im normalen LOG steht nix drin, trotz verbose 5.
Nach set start im Define kommt nur das im Log:
2019.06.29 15:50:00 5: httpmod_MR_Stromspeicher_Devices: set called with start
2019.06.29 15:50:00 4: httpmod_MR_Stromspeicher_Devices: update timer modified: will call GetUpdate in 15.0 seconds at 2019-06-29 15:50:15
So habe mal auf Attribute Updates gemacht, nun kommt was und auch die Readings ...
Zitat von: topa_LE am 29 Juni 2019, 15:48:22
Im normalen LOG steht nix drin, trotz verbose 5.
Das kann nicht sein. Siehe alle Threads über HTTPMOD hier im Forum. Die Log ist nw. sogar seeehr verbose.
Zitat von: topa_LE am 29 Juni 2019, 15:48:22
Nach set start im Define kommt nur das im Log:
2019.06.29 15:50:00 5: httpmod_MR_Stromspeicher_Devices: set called with start
2019.06.29 15:50:00 4: httpmod_MR_Stromspeicher_Devices: update timer modified: will call GetUpdate in 15.0 seconds at 2019-06-29 15:50:15
Und was passiert nach dem GetUpdate ? Und nach einem set httpmod_MR_Stromspeicher_Devices reread ?
Ahja... Du nutzt DbLog, richtig?
Mit Attributes:
DbLogExclude .*
kommt natürlich gar nix in DbLog
Ich weiss nicht, wie DbLog funktioniert, aber ich meine die Log wo tatsächlich die Log3 Befehle zu sehen sind.
Genau, die Readings die ich später loggen möchte, setze ich dann mit DBLogInclude separat.
Der log sich zu .... ;-)
Kann den Code leider nicht hier setzen: Sorry, irgendwie packt er das nicht hier in den CODE-BLOCK!
Code entfernt, da nicht im Block.
Habe nun die Readings, nur aktualisiert er nicht nach 15 Sekunden, sondern immer nur wenn ich set DEFINE reread mache.
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 Batterieladung 891.7074
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 CurrentBatteryIn 9.38
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 WorkACOut-1 19539.5206977367
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 WorkACOut-2 135137.757768876
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 WorkACOut-3 32805402
setstate httpmod_MR_Stromspeicher_Devices 2019-06-29 16:04:58 WorkACOut-4 135177.488441605
Ohne die Log werde ich nicht viel weiter helfen können.
Mit dem "list" wie Du oben kopiert hast, sollte er doch jede 15. Sek lesen. Hast Du irgendwas anderes gesetzt, oder set stop gemacht, o.ä ?
Ja hatte set stop gemacht, weil das log nicht mehr geladen wurde.
Leider passt das Log hier nicht in den Codeblock, sieht sehr komisch aus, sende dir es per PM.
Funktioniert jetzt, habe interval nochmal neu gesetzt.
Alles bestens. Werde das nun alles korrekt definieren, melde mich dann nochmal wenn es was gibt.
Vorerst großes Dankeschön an Dich!!!!
Hier noch abschließend das List: (Thread kann als gelöst gesetzt werden)
Internals:
.getList
.setList interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
.updateRequestHash 1
BUSY 0
CFGFN
DEF http://192.168.178.160/rest/kiwigrid/wizard/devices 15
FUUID 5d174469-f33f-252b-8c98-858e80e8c22a8298
Interval 15
JSONEnabled 1
LASTSEND 1561833435.51347
MainURL http://192.168.178.160/rest/kiwigrid/wizard/devices
ModuleVersion 3.5.9 - 13.2.2019
NAME httpmod_MR_Stromspeicher_Devices
NOTIFYDEV global
NR 8059
NTFY_ORDER 50-MR
STATE | Batterieentladung: <span style='color:#eba15d;'>1333.0 W</span> | Batteriestatus: <span style='color:#eba15d;'>39 %</span> | Batterieladung: <span style='color:#eba15d;'>0 kW</span> | Eigenverbrauch: <span style='color:#eba15d;'>0 kW</span>
TRIGGERTIME 1561833450.51142
TRIGGERTIME_FMT 2019-06-29 20:37:30
TYPE HTTPMOD
addr http://192.168.178.160:80
auth 0
buf
code 200
compress 1
conn
data
displayurl http://192.168.178.160/rest/kiwigrid/wizard/devices
header
host 192.168.178.160
httpheader HTTP/1.1 200 OK
Set-Cookie: emsid="c64d56f7-d92f-4441-989f-1803e15e03d0";$Path="/"
Cache-Control: no-cache
Content-Type: application/json; charset=UTF-8
Content-Length: 95875
httpversion 1.0
hu_blocking 0
hu_filecount 264
hu_port 80
hu_portSfx
ignoreredirects 0
loglevel 4
path /rest/kiwigrid/wizard/devices
protocol http
redirects 0
timeout 2
url http://192.168.178.160/rest/kiwigrid/wizard/devices
value 0
.attraggr:
.attreocr:
.*
.attreour:
.*
.attrminint:
.readingParseList:
10
20
30
40
50
55
60
70
80
85
86
87
88
89
.userReadings:
HASH(0x7b63390)
HASH(0x7f0fb18)
HASH(0x70c9c10)
HASH(0x7cbd510)
HASH(0x7e4d650)
OLDREADINGS:
QUEUE:
READINGS:
2019-06-29 20:37:15 Aktuelle_Batterieaufladung 0
2019-06-29 20:37:15 Batterieentladung 1333.024
2019-06-29 20:37:15 Batterieentladung_Round 1333
2019-06-29 20:37:15 Batterieladung 0
2019-06-29 20:37:15 Batterieladung_Round 0
2019-06-29 20:37:15 Batterielebenserwartung_in_Prozent 99.5
2019-06-29 20:37:15 Batteriestatus_in_Prozent 39
2019-06-29 20:37:15 CPU_Auslastung_Energymanager 0.024
2019-06-29 20:37:15 Eigenverbrauch 0
2019-06-29 20:37:15 Eigenverbrauch_Round 0
2019-06-29 20:37:15 Einspeisung-1 0
2019-06-29 20:37:15 Einspeisung-2 0
2019-06-29 20:37:15 Einspeisung_Round 0
2019-06-29 20:37:15 Energymanager_SW_Firmware-1 HW: 3 SW: 36 C: 24 PV: 33
2019-06-29 20:37:15 Energymanager_SW_Firmware-2 6.6.8.0
2019-06-29 20:37:15 Energymanager_SW_Firmware-3 0.3.23.0
2019-06-29 20:37:15 Gesamtproduktion 0
2019-06-29 20:37:15 Gesamtverbrauch 1608.024
2019-06-29 20:37:15 Status_My_Reserve-1 OK
2019-06-29 20:37:15 Status_My_Reserve-10 OK
2019-06-29 20:37:15 Status_My_Reserve-2 OK
2019-06-29 20:37:15 Status_My_Reserve-3 OK
2019-06-29 20:37:15 Status_My_Reserve-4 OK
2019-06-29 20:37:15 Status_My_Reserve-5 OK
2019-06-29 20:37:15 Status_My_Reserve-6 OK
2019-06-29 20:37:15 Status_My_Reserve-7 OK
2019-06-29 20:37:15 Status_My_Reserve-8 OK
2019-06-29 20:37:15 Status_My_Reserve-9 OK
2019-06-29 20:37:15 Strombezug 275
2019-06-29 20:37:15 Strombezug_Round 275
2019-06-29 20:37:15 WorkACOut-1 22132.7831603784
2019-06-29 20:37:15 WorkACOut-2 140363.231688473
2019-06-29 20:37:15 WorkACOut-3 32813102
2019-06-29 20:37:15 WorkACOut-4 140402.962361202
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://192.168.178.160/rest/kiwigrid/wizard/devices
value 0
defptr:
readingBase:
Aktuelle_Batterieaufladung reading
Batterieentladung reading
Batterieladung reading
Batterielebenserwartung reading
Batterielebenserwartung_in_Prozent reading
Batteriestatus reading
Batteriestatus_in_Prozent reading
CPU_Auslastung_Energymanager reading
CurrentBatteryIn reading
Eigenverbrauch reading
Einspeisung-1 reading
Einspeisung-2 reading
Energymanager_SW_Firmware-1 reading
Energymanager_SW_Firmware-2 reading
Energymanager_SW_Firmware-3 reading
Gesamtproduktion reading
Gesamtverbrauch reading
Status_My_Reserve-1 reading
Status_My_Reserve-10 reading
Status_My_Reserve-2 reading
Status_My_Reserve-3 reading
Status_My_Reserve-4 reading
Status_My_Reserve-5 reading
Status_My_Reserve-6 reading
Status_My_Reserve-7 reading
Status_My_Reserve-8 reading
Status_My_Reserve-9 reading
Strombezug reading
WorkACOut-1 reading
WorkACOut-2 reading
WorkACOut-3 reading
WorkACOut-4 reading
readingNum:
Aktuelle_Batterieaufladung 20
Batterieentladung 40
Batterieladung 30
Batterielebenserwartung 86
Batterielebenserwartung_in_Prozent 86
Batteriestatus 85
Batteriestatus_in_Prozent 85
CPU_Auslastung_Energymanager 87
CurrentBatteryIn 20
Eigenverbrauch 55
Einspeisung-1 80
Einspeisung-2 80
Energymanager_SW_Firmware-1 88
Energymanager_SW_Firmware-2 88
Energymanager_SW_Firmware-3 88
Gesamtproduktion 70
Gesamtverbrauch 50
Status_My_Reserve-1 89
Status_My_Reserve-10 89
Status_My_Reserve-2 89
Status_My_Reserve-3 89
Status_My_Reserve-4 89
Status_My_Reserve-5 89
Status_My_Reserve-6 89
Status_My_Reserve-7 89
Status_My_Reserve-8 89
Status_My_Reserve-9 89
Strombezug 60
WorkACOut-1 10
WorkACOut-2 10
WorkACOut-3 10
WorkACOut-4 10
readingOutdated:
readingSubNum:
Einspeisung-1 -1
Einspeisung-2 -2
Energymanager_SW_Firmware-1 -1
Energymanager_SW_Firmware-2 -2
Energymanager_SW_Firmware-3 -3
Status_My_Reserve-1 -1
Status_My_Reserve-10 -10
Status_My_Reserve-2 -2
Status_My_Reserve-3 -3
Status_My_Reserve-4 -4
Status_My_Reserve-5 -5
Status_My_Reserve-6 -6
Status_My_Reserve-7 -7
Status_My_Reserve-8 -8
Status_My_Reserve-9 -9
WorkACOut-1 -1
WorkACOut-2 -2
WorkACOut-3 -3
WorkACOut-4 -4
requestReadings:
update:
Aktuelle_Batterieaufladung reading 20
Batterieentladung reading 40
Batterieladung reading 30
Batterielebenserwartung reading 86
Batterielebenserwartung_in_Prozent reading 86
Batteriestatus reading 85
Batteriestatus_in_Prozent reading 85
CPU_Auslastung_Energymanager reading 87
CurrentBatteryIn reading 20
Eigenverbrauch reading 55
Einspeisung-1 reading 80-1
Einspeisung-2 reading 80-2
Energymanager_SW_Firmware-1 reading 88-1
Energymanager_SW_Firmware-2 reading 88-2
Energymanager_SW_Firmware-3 reading 88-3
Gesamtproduktion reading 70
Gesamtverbrauch reading 50
Status_My_Reserve-1 reading 89-1
Status_My_Reserve-10 reading 89-10
Status_My_Reserve-2 reading 89-2
Status_My_Reserve-3 reading 89-3
Status_My_Reserve-4 reading 89-4
Status_My_Reserve-5 reading 89-5
Status_My_Reserve-6 reading 89-6
Status_My_Reserve-7 reading 89-7
Status_My_Reserve-8 reading 89-8
Status_My_Reserve-9 reading 89-9
Strombezug reading 60
WorkACOut-1 reading 10-1
WorkACOut-2 reading 10-2
WorkACOut-3 reading 10-3
WorkACOut-4 reading 10-4
sslargs:
Attributes:
DbLogExclude .*
alias Stromspeicher MR - Statistik
enableControlSet 1
event-on-change-reading .*
event-on-update-reading .*
group My Reserve Stromspeicher - SOLARWATT
icon measure_battery_75
reading10JSON result_items_.*_tagValues_WorkACOut_value
reading10Name WorkACOut
reading20JSON result_items_.*_tagValues_CurrentBatteryIn_value
reading20Name Aktuelle_Batterieaufladung
reading30JSON result_items_.*_tagValues_PowerBufferedFromProducers_value
reading30Name Batterieladung
reading40JSON result_items_.*_tagValues_PowerConsumedFromStorage_value
reading40Name Batterieentladung
reading50JSON result_items_.*_tagValues_PowerConsumed_value
reading50Name Gesamtverbrauch
reading55JSON result_items_.*_tagValues_PowerConsumedFromProducers_value
reading55Name Eigenverbrauch
reading60JSON result_items_.*_tagValues_PowerConsumedFromGrid_value
reading60Name Strombezug
reading70JSON result_items_.*_tagValues_PowerProduced_value
reading70Name Gesamtproduktion
reading80JSON result_items_.*_tagValues_PowerOut_value
reading80Name Einspeisung
reading85JSON result_items_.*_tagValues_StateOfCharge_value
reading85Name Batteriestatus_in_Prozent
reading86JSON result_items_.*_tagValues_StateOfHealth_value
reading86Name Batterielebenserwartung_in_Prozent
reading87JSON result_items_.*_tagValues_FractionCPULoadKernel_value
reading87Name CPU_Auslastung_Energymanager
reading88JSON result_items_.*_tagValues_IdFirmware_value
reading88Name Energymanager_SW_Firmware
reading89JSON result_items_.*_tagValues_StateDevice_value
reading89Name Status_My_Reserve
room 16-HW-Raum
stateFormat {return "| Batterieentladung: <span style='color:#eba15d;'>".sprintf("%.1f",ReadingsVal($name,"Batterieentladung_Round",0))." W</span> | Batteriestatus: <span style='color:#eba15d;'>".sprintf("%.0f",ReadingsVal($name,"Batteriestatus_in_Prozent",0))." %</span> | Batterieladung: <span style='color:#eba15d;'>".sprintf("%.0f",ReadingsVal($name,"Batterieladung_Round",0))." kW</span> | Eigenverbrauch: <span style='color:#eba15d;'>".sprintf("%.0f",ReadingsVal($name,"Eigenverbrauch_Round",0))." kW</span> ";}
userReadings Batterieentladung_Round { round( ReadingsVal($name,"Batterieentladung",0),0) }, Batterieladung_Round { round( ReadingsVal($name,"Batterieladung",0),0) }, Eigenverbrauch_Round { round( ReadingsVal($name,"Eigenverbrauch",0),0) }, Einspeisung_Round { round( ReadingsVal($name,"Einspeisung-1",0),0) }, Strombezug_Round { round( ReadingsVal($name,"Strombezug",0),0) }
userattr reading10JSON reading10Name reading20JSON reading20Name reading30JSON reading30Name reading40JSON reading40Name reading50JSON reading50Name reading55JSON reading55Name reading60JSON reading60Name reading70JSON reading70Name reading80JSON reading80Name reading85JSON reading85Name reading86JSON reading86Name reading87JSON reading87Name reading88JSON reading88Name reading89JSON reading89Name
verbose 0
Hallo zusammen,
Solarwatt hat ein Update auf den Energie Manger ausgerollt und die http Adresse /rest/kiwigrid/eps/powerValues ist nicht mehr erreichbar. Offenbar läuft jetzt die Kommunikation über HTTPS. Weiter bin ich mit Wireshark an dieser Stelle noch nicht gekommen.
Ist euch die neue Adresse bekannt?
Zitat von: DO7RH am 14 November 2020, 13:04:25
Solarwatt hat ein Update auf den Energie Manger ausgerollt und die http Adresse /rest/kiwigrid/eps/powerValues ist nicht mehr erreichbar. Offenbar läuft jetzt die Kommunikation über HTTPS. Weiter bin ich mit Wireshark an dieser Stelle noch nicht gekommen.
Ist euch die neue Adresse bekannt?
Eher Kiwigrid, die für Solarwatt den EM softwaremäßig programmieren/verwalten. Ja ist bekannt, das die API-URL
http://IP-ENERGIEMANAGER/rest/kiwigrid/eps/powerValues
nicht mehr geht, bin aktuell mit Solarwatt/Kiwigrid in losem Kontakt um die neue URL in Erfahrung zu bringen. Ist gegenwärtig sehr zäh, da die ungern internas preisgeben wollen. Das Problem hatte ich damals schon!
Sehr merkwürdig der Laden! Sollten mal alle Endverbraucher von Speichermodulen den VPN Zugang auf ihren Energiemanager blocken, dann gibt es auch ihr Portal nicht mehr ... ;D
Wüsste aktuell auch nicht, wie ich selbst an die neue Schnittstelle komme.
Kann auch sein, das die Haupt-URL
http://IP-ENERGIEMANAGER/rest/kiwigrid/wizard/devices auch irgendwann nicht mehr geht. Den ist es anscheinend ein Dorn im Auge, wenn Nutzer andere Software zum Auslesen (FHEM) verwenden wollen. Anders kann ich es mir nicht erklären, weshalb es zur KiwiGrid API keinerlei Doku im Netz sich findet.
Moin,
hast Du was Neueres zu irgendeiner einfacherern Abfrage erfahren können?
142 KB für eine Handvoll interessanter Werte...
Habe jetzt den Thread gelegenen und muss sagen, das ich zu blöd bin es zu verstehen. Könntet ihr vielleicht ein komplettes define reinpassten ? Wäre euch dankbar.
Moin,
muss meinen Thread leider nochmal aktivieren. Durch ständige Softwareupdates von KiwiGrid für den EM, ist es nun so, das teilweise Readings mehrere ITEMS haben.
Beispiel:
attr MR_Solar reading80JSON result_items_.*_tagValues_PowerOut_value
attr MR_Solar reading80Name Einspeisung
S0_1_Strom47_kWh { ReadingsNum($NAME,"WorkIn-3",0) / 1000 },\
S0_2_Strom48_kWh { ReadingsNum($NAME,"WorkIn-2",0) / 1000 },\
Nutze httpmod seit einigen Jahren. Definiere ich nun wie oben das Reading WorkIn-3 und logge es in die DBlog. Nach einiger Zeit ändert sich das Reading in WorkIn-1 oder 4 z.B. (Langzeit-Log ist dann nicht mehr zu gebrauchen)
Ich muss dann ständig die userReadings anpassen.
RAW
defmod MR_Solar HTTPMOD http://192.168.178.160/rest/kiwigrid/wizard/devices 10
attr MR_Solar DbLogExclude .*
attr MR_Solar DbLogInclude Pr_Round,EV_Round,Strombezug_Round,B_Entladung_Round,B_Ladung_Round,Einspeisung_Round,GV,BS,BS_kW
attr MR_Solar alias MR 9.6 kW - Solarwatt ( 160 )
attr MR_Solar enableControlSet 1
attr MR_Solar enableCookies 1
attr MR_Solar group My Reserve Stromspeicher - SOLARWATT
attr MR_Solar icon message_light_intensity
attr MR_Solar reading10JSON result_items_.*_tagValues_WorkACOut_value
attr MR_Solar reading10Name WorkACOut
attr MR_Solar reading11JSON result_items_.*_tagValues_WorkIn_value
attr MR_Solar reading11Name WorkIn
attr MR_Solar reading12JSON result_items_.*_tagValues_PowerIn_value
attr MR_Solar reading12Name PowerIn
attr MR_Solar reading13JSON result_items_.*_tagValues_PriceWorkIn_value
attr MR_Solar reading13Name PriceWorkIn
attr MR_Solar reading14JSON result_items_.*_tagValues_WorkBufferedFromProducers_value
attr MR_Solar reading14Name WorkBufferedFromProducers
attr MR_Solar reading15JSON result_items_.*_tagValues_SettingsNetworkMap_value
attr MR_Solar reading15Name Network
attr MR_Solar reading16JSON result_items_.*_tagValues_WorkConsumedFromProducers_value
attr MR_Solar reading16Name WorkConsumedFromProducers
attr MR_Solar reading17JSON result_items_.*_tagValues_WorkConsumedFromGrid_value
attr MR_Solar reading17Name WorkConsumedFromGrid
attr MR_Solar reading18JSON result_items_.*_tagValues_WorkSelfConsumed_value
attr MR_Solar reading18Name WorkSelfConsumed
attr MR_Solar reading19JSON result_items_.*_tagValues_WorkOutFromStorage_value
attr MR_Solar reading19Name WorkOutFromStorage
attr MR_Solar reading20JSON result_items_.*_tagValues_CurrentBatteryIn_value
attr MR_Solar reading20Name Aktuelle_Batterieaufladung
attr MR_Solar reading21JSON result_items_.*_tagValues_WorkConsumed_value
attr MR_Solar reading21Name WorkConsumed
attr MR_Solar reading22JSON result_items_.*_tagValues_WorkBufferedFromGrid_value
attr MR_Solar reading22Name WorkBufferedFromGrid
attr MR_Solar reading23JSON result_items_.*_tagValues_PowerReleased_value
attr MR_Solar reading23Name PowerReleased
attr MR_Solar reading24JSON result_items_.*_tagValues_PowerSelfSupplied_value
attr MR_Solar reading24Name PowerSelfSupplied
attr MR_Solar reading25JSON result_items_.*_tagValues_PowerOutFromStorage_value
attr MR_Solar reading25Name PowerOutFromStorage
attr MR_Solar reading26JSON result_items_.*_tagValues_WorkOutFromProducers_value
attr MR_Solar reading26Name WorkOutFromProducers
attr MR_Solar reading27JSON result_items_.*_tagValues_WorkConsumedFromStorage_value
attr MR_Solar reading27Name WorkConsumedFromStorage
attr MR_Solar reading28JSON result_items_.*_tagValues_WorkProduced_value
attr MR_Solar reading28Name WorkProduced
attr MR_Solar reading29JSON result_items_.*_tagValues_WorkACIn_value
attr MR_Solar reading29Name WorkACIn
attr MR_Solar reading30JSON result_items_.*_tagValues_PowerBufferedFromProducers_value
attr MR_Solar reading30Name Batterieladung
attr MR_Solar reading31JSON result_items_.*_tagValues_CountBatteryModules_value
attr MR_Solar reading31Name Anzahl_Batterie_Module
attr MR_Solar reading32JSON result_items_.*_tagValues_TemperatureBattery_value
attr MR_Solar reading32Name Batterie_Temperatur
attr MR_Solar reading33JSON result_items_.*_tagValues_VoltageBatteryCellMean_value
attr MR_Solar reading33Name Batterie_Stand_Aktuell
attr MR_Solar reading34JSON result_items_.*_tagValues_PowerInstalledPeak_value
attr MR_Solar reading34Name Peak_Power_Solarmodule_Watt
attr MR_Solar reading35JSON result_items_.*_tagValues_PriceProfitFeedin_value
attr MR_Solar reading35Name Einspeiseverguetung_Cent
attr MR_Solar reading36JSON result_items_05_tagValues_PowerOut_value
attr MR_Solar reading36Name PV_Einspeisung_Watt
attr MR_Solar reading40JSON result_items_.*_tagValues_PowerConsumedFromStorage_value
attr MR_Solar reading40Name Batterieentladung
attr MR_Solar reading50JSON result_items_.*_tagValues_PowerConsumed_value
attr MR_Solar reading50Name Gesamtverbrauch
attr MR_Solar reading55JSON result_items_.*_tagValues_PowerConsumedFromProducers_value
attr MR_Solar reading55Name Eigenverbrauch
attr MR_Solar reading60JSON result_items_.*_tagValues_PowerConsumedFromGrid_value
attr MR_Solar reading60Name Strombezug
attr MR_Solar reading70JSON result_items_.*_tagValues_PowerProduced_value
attr MR_Solar reading70Name Gesamtproduktion
attr MR_Solar reading80JSON result_items_.*_tagValues_PowerOut_value
attr MR_Solar reading80Name Einspeisung
attr MR_Solar reading85JSON result_items_.*_tagValues_StateOfCharge_value
attr MR_Solar reading85Name Batteriestatus_in_Prozent
attr MR_Solar reading86JSON result_items_.*_tagValues_StateOfHealth_value
attr MR_Solar reading86Name Batterielebenserwartung_in_Prozent
attr MR_Solar reading87JSON result_items_.*_tagValues_FractionCPULoadKernel_value
attr MR_Solar reading87Name CPU_Auslastung_Energymanager
attr MR_Solar reading88JSON result_items_.*_tagValues_IdFirmware_value
attr MR_Solar reading88Name Energymanager_SW_Firmware
attr MR_Solar reading89JSON result_items_.*_tagValues_StateDevice_value
attr MR_Solar reading89Name Status_My_Reserve
attr MR_Solar room 16-HW-Raum
attr MR_Solar stateFormat | PV: <span style='color:#eba15d;;'>Pr_Round W</span> \
| VK: <span style='color:#eba15d;;'>Einspeisung_Round W</span> \
| EV: <span style='color:#eba15d;;'>EV_Round W</span> \
| Entladung: <span style='color:#eba15d;;'>B_Entladung_Round W</span> \
| Status: <span style='color:#eba15d;;'>Batteriestatus_in_Prozent %</span> \
| Ladung: <span style='color:#eba15d;;'>B_Ladung_Round W</span> \
| Netz: <span style='color:#eba15d;;'>Strombezug_Round W</span> |
attr MR_Solar userReadings B_Entladung_Round { round( ReadingsVal($NAME,"Batterieentladung",0),0) },\
B_Ladung_Round { round( ReadingsVal($NAME,"Batterieladung",0),0) }, \
EV_Round { round( ReadingsVal($NAME,"Eigenverbrauch",0),0) }, \
Einspeisung_Round { round( ReadingsVal($NAME,"Einspeisung-2",0),0) }, \
Strombezug_Round { round( ReadingsVal($NAME,"Strombezug",0),0) }, \
Pr_Round { round( ReadingsVal($NAME,"Gesamtproduktion",0),0) }, \
GV { round( ReadingsVal($NAME,"Gesamtverbrauch",0),0) }, \
BS { round( ReadingsVal($NAME,"Batteriestatus_in_Prozent",0),1) }, \
Stromverbrauch_Garage_Blockhaus { round( ReadingsVal($NAME,"PowerIn-3",0),1) }, \
Stromverbrauch_Pool_Fitness { round( ReadingsVal($NAME,"PowerIn-2",0),1) }, \
S0_1_Strom47_kWh { ReadingsNum($NAME,"WorkIn-3",0) / 1000 },\
S0_2_Strom48_kWh { ReadingsNum($NAME,"WorkIn-2",0) / 1000 },\
BS_kW { round( ReadingsVal($NAME,"Batterie_Stand_Aktuell",0),2) },\
Netzeinspeisung_Wh { round( ReadingsVal($NAME,"WorkOutFromProducers",0),6) },\
PV_Produktion_Wh { round( ReadingsVal($NAME,"WorkProduced",0),6) },\
Netzeinspeisung_kWh { ReadingsNum($NAME,"Netzeinspeisung_Wh",0) / 1000 },\
PV_Produktion_kWh { ReadingsNum($NAME,"PV_Produktion_Wh",0) / 1000 },\
Netzeinspeisung_kWh_Round { round( ReadingsVal($NAME,"Netzeinspeisung_kWh",0),1) },\
PV_Produktion_kWh_Round { round( ReadingsVal($NAME,"PV_Produktion_kWh",0),1) },\
PV_Eigenstromnutzung { ReadingsNum($NAME,"WorkConsumedFromProducers",0)},\
Bat_Eigenstromnutzung { ReadingsNum($NAME,"WorkConsumedFromStorage",0)},\
Selbstversorgung { ReadingsNum($NAME,"PowerSelfSupplied",0)},\
B_Temp { ReadingsNum($NAME,"Batterie_Temperatur",0)},\
B_Live { ReadingsNum($NAME,"Batterielebenserwartung_in_Prozent",0)}
attr MR_Solar verbose 0
Suche ich mit extractAllJSON 1 den Json-String und nutze dann z.B.
attr MR_Solarwatt reading23JSON result_items_10_tagValues_PowerInstalledPeak_value
attr MR_Solarwatt reading23Name Peak_Power_Solarmodule_Watt
nützt das Logging dann irgendwann auch nix mehr, da sich result_items_10_ eben auch in eine andere Zahl ändert, als 10.
Eventuell kann man das einzigartig als Reading definieren.
Aus der API wäre das im PowerInstalledPeak , hier werden automatisch z.B. 4 Readings generiert.
(Diese ändern sich eben ständig zwischen 1 bis 4, als das man hieraus ein userReading definieren könnte, um es zu loggen)
"PowerInstalledPeak": {
"tagName": "PowerInstalledPeak",
"guid": "8c569b53-477e-4648-91aa-0f8524178949",
"value": 5500
},
fhem-solarwatt-readings.png
Ebenso bei PowerIn und WorkIn. Alle andere Readings aus der API sind korrekt. Warum dies so ist, weiß ich nicht.
Hallo Torsten,
wenn es immer nur ein Reading ist, sich aber der "Pfad" zum Reading in einer Zahl ändert, dann könntest Du eventuell statt per JSON mit einer Regex versuchen, den Wert zu bekommen und dabei die Zahl variabel lassen.
Poste doch mal einen Auszug aus den gelieferten Daten, dann sieht man besser, was es noch für Optionen geben könnte.
Gruss
Stefan
Hallo Stefan,
danke für die Unterstützung.
Was meinst du genau damit "Auszug aus den gelieferten Daten" ?
Den JSON-String aus http://192.168.178.160/rest/kiwigrid/wizard/devices
oder ein List vom Device?
Korrekt ist deine Aussage, das es eigentlich immer nur ein Reading-Wert ist, sich aber dann der Pfad ändert von:
result_items_02_tagValues_PowerIn_value
zu zum Beispiel
result_items_06_tagValues_PowerIn_value
Somit dann in deinem Modul das Reading : PowerIn-2 zu PowerIn-3
Sagt mir bitte genau was du benötigst, vielen Dank
Ja, den JSON-String. Eventuell kann man den per Regex so parsen, dass die Position egal ist.
Gruß
Stefan
Zitat von: StefanStrobel am 04 August 2023, 16:26:08Poste doch mal einen Auszug aus den gelieferten Daten, dann sieht man besser, was es noch für Optionen geben könnte.
JSON
"PowerIn": {
"tagName": "PowerIn",
"guid": "di://powermeter@ERCXX-XXXXXXXXXX?input=0",
"value": 182.00202224469163
},
HTTP 1.1
"PowerIn":{"tagName":"PowerIn","guid":"di:\/\/powermeter@ERCXX-XXXXXXXXX?input=0","value":182.00202224469163},"
Das sind die Reading die sich ständig ändern:
"PowerInstalledPeak": {
"tagName": "PowerInstalledPeak",
"guid": "8c569b53-477e-4648-91aa-0f8524178949",
"value": 5500
},
"PowerIn": {
"tagName": "PowerIn",
"guid": "di://powermeter@ERCXX-XXXXXXXX?input=0",
"value": 152.2263097805404
},
"PowerIn": {
"tagName": "PowerIn",
"guid": "di://powermeter@ERCXX-XXXXXXXX?input=1",
"value": 474.934036939314
},
Die Input 0 und 1 sind die beiden S0 Zähler die verbaut sind.
"PowerIn": {
"tagName": "PowerIn",
"guid": "876fc3f7-f31e-4eb3-923c-5d43d3f72b26",
"value": 0
},
"PowerIn": {
"tagName": "PowerIn",
"guid": "49beb2c8-a79f-45c7-9e2e-001e03fb87df",
"value": 0
},
Die beiden hier sind immer gleich und bedeuten den aktuellen Netzbezug/Verbrauch.
Beim JSON String fehlte scheinbar noch etwas:
Beispiel komplett
{
"result": {
"items": [
{
"tagValues": {
"DegreeInclination": {
"tagName": "DegreeInclination",
"guid": "8c569b53-477e-4648-91aa-0f8524178949",
"value": 38
}
}
}
]
}
}
Gibt es hier keinen außer Stefan, der da unterstützen kann?
Mit einer Regex wie
input=0",\s*"value": ([\d. ]+)
bekommst Du z.B. den Wert, der auf Input=0 folgt. Ähnlich könntest Du auf die GUIDs matchen.
Gruß
Stefan
Danke Stefan,
So kommt aber kein Reading rein:
attr MR_Solarwatt reading24Name S0_garage_test
attr MR_Solarwatt reading24Regex input=0",\s*"value": ([\d.]+)
So auch nicht:
attr MR_Solarwatt reading24Name S0_garage_test
attr MR_Solarwatt reading24Regex input=0",\s*"value": ([\d. ]+)"
Irgendwas scheint noch nicht zu passen.
So habst gelöst ;D
So wäre die richtig zu matchen:
attr MR_Solarwatt reading10Name S0_1_Stromverbrauch_Garage_Schuppen
attr MR_Solarwatt reading10Regex (?s)PowerIn?.*input=0",\s*"value":([0-9]+\.[0-9]+)
Besten Dank an Dich Stefan für den Weg zum Ziel ...
Hallo Stefan,
hättest Du noch die korrekte Definition für eine GUID ?
Danke
Die konkreten GUIDs kenne ich leider nicht. Ich hoffe, dass die eindeutige sind. Dann kannst Du sie einfach aus dem JSON übernehmen.
Gruß
Stefan
Hallo Stefan,
Kenne mich mit regEx kaum aus und teste sehr viel bis es passt.
Bei WorkIn gibt es auch 4 verschiedene Werte und Möglichkeiten.
Daher komme ich mit nur "input 0 und 1" nicht eindeutig zum Ziel.
z.B. gibt mir das hier 4 verschiedene Readingwerte und nicht eindeutig, das was es soll.
WorkIn?.*?input=1","value":([\d.]+)
Also immer wieder andere der restlichen 3 Werte.
In diesem RegEx brauche ich eben zusätzlich noch die GUID mit drin:
"guid":"di:\/\/powermeter@ERC05-XXXX?input=0"
um das Reading 5691611 zu erhalten.
Komplett HTTP Response:
WorkIn":{"tagName":"WorkIn","guid":"di:\/\/powermeter@ERC05-XXXX?input=0","value":5691611}
Wie würde das denn jetzt komplett zusammengebaut auszusehen haben?
Wie gesagt bei PowerIn passt es , weil es hier eben nur input0 und 1 gibt.
Bei WorkIn reicht:
(?s)WorkIn?.*?input=0","value":([\d.]+)
nicht aus, da nicht eindeutig genug.
Die 4 GUID von WorkIn sind eben:
"guid":"di:\/\/powermeter@ERC05-XXXX?input=0"
"guid":"di:\/\/powermeter@ERC05-XXXX?input=1"
"guid": "876fc3f7-f31e-4eb3-923c-5d43d3f72b26"
"guid": "49beb2c8-a79f-45c7-9e2e-001e03fb87df"
Könnte man das so vollständig in RegEx definieren, hätte man die Eindeutigkeit erreicht und würde das exakte Reading erhalten. Voraussetzung ist natürlich, das im RegEx weiterhin WorkIn drin ist.
Danke, Stefan.
LG
Eigentlich musst du das nur zusammenbauen.
Z.B.
WorkIn","guid":"di:....powermeter@ERC05-XXXX.input=0","value":\s*([\d.]+)
Am besten mit https://regex101.com/ testen.
Mit .* wäre ich vorsichtig. Das macht eventuell zu viel und geht schon in den nächsten Abschnitt.
Gruß
Stefan
Danke Stefan,
werde ich testen.
Ja .* , hatte ich gemerkt ist zu viel teilweise. War nur froh das ich überhaupt paar Werte hatte.
Perfekt Stefan, passt nun alles. Großes Dankeschön.
Werde das nun mal alles zusammenstellen und das Endergebnis hier posten.
Vielleicht gibt es den ein oder anderen der Solarwatt nutzt ...
(hatte zwar hier die letzten Wochen nicht den Anschein aber na gut ;) )