Ich habe von meinem Stromzähler über ein HTTPMOD-Device folgendes Rückgabeergebnis:
{ "version": "0.8.1", "generator": "vzlogger", "data": [ { "uuid": "dbc081e0-f188-11e2-8e30-3dd74b6c6043", "last": 1640822187728, "interval": -1, "protocol": "sml", "tuples": [ [ 1640822187728, 8765000 ] ] }, { "uuid": "a301d8d0-903b-1234-94bb-d943d061b6a8", "last": 1640822187728, "interval": -1, "protocol": "sml", "tuples": [ [ 1640822187728, 8350000 ] ] } ] }
Dieser Beinhaltet im Grunde nur zwei Zählerstände, welche ich gerne einzeln in jeweils einem Reading ausgegeben haben möchte. Leider bin ich über das JSON-Modul zu keinem brauchbaren Ergebnis gekommen, so dass ich mich nun über die 'regular expresions' bemühe. Leider scheitere ich daran, dass ich einfach nicht weiß, wie man in den 'regular expresions' den Ausdruck weiter "Verschachtel" kann. Bisher habe ich mit folgendem Code
define HaushaltsStrom HTTPMOD http://192.168.178.97:9673/? 30
attr HaushaltsStrom userattr reading1Name reading1Regex reading2Name reading2Regex
attr HaushaltsStrom reading1Name Einkauf
attr HaushaltsStrom reading1Regex { "uuid": "dbc081e0-f188-11e2-8e30-3dd74b6c6043", ([^}]+)
attr HaushaltsStrom reading2Name Verkauf
attr HaushaltsStrom reading2Regex { "uuid": "a301d8d0-903b-1234-94bb-d943d061b6a8", ([^}]+)
folgendes Rückgabeergebnis erreicht
ZitatEinkauf = "last": 1640822187728, "interval": -1, "protocol": "sml", "tuples": [ [ 1640822187728, 8765000 ] ]
Verkauf = "last": 1640822187728, "interval": -1, "protocol": "sml", "tuples": [ [ 1640822187728, 8350000 ] ]
Was Ich aber bräuchte, wäre:
ZitatEinkauf = 8765000
Verkauf = 8350000
Hat irgend jemand eine Idee, wie ich mein erstes Ergebnis weiter verfeinern könnte?
@BlackStingray
Eine von vielen Möglichkeiten für den Regex von Einkauf wäre:
"uuid":.".*-3dd74b6c6043",.[^\[]*\[.\[[^\]]*,.([^\]]*).\]
@OdfFhem
Herzlichsten Dank! So funktioniert es! Jetzt muss ich nur noch verstehen, was Deine Lösung nun genau macht, aber dafür gibt es ja die Tutorials...
Danke!