Hallo zusammen,
ich habe das Modul httpmod mit folgenden Parameter im Einsatz:
# 1wireTest
define test2 HTTPMOD http://IP:8088/rest/sensor/28FF449D711604A1/value 60
attr test2 userattr readingsName readingsRegex stateFormat verbose
attr test2 readingsName Temperatur
attr test2 readingsRegex ([\d\.]+)
attr test2 room Pool
attr test2 stateFormat {sprintf ReadingsVal($name,"Temperatur","n.V.")}
attr test2 verbose 5
Im Log sieht der Empfang des Parameters value erst einmal gut aus.
2017.07.22 18:53:25 4: HttpUtils url=http://IP:8088/rest/sensor/28FF449D711604A1/value
2017.07.22 18:53:25 4: http://IP:8088/rest/sensor/28FF449D711604A1/value: HTTP response code 200
2017.07.22 18:53:25 4: HttpUtils http://IP:8088/rest/sensor/28FF449D711604A1/value: Got data, length: 15
2017.07.22 18:53:25 5: test2: Read Callback: Request type was Update,
header: HTTP/1.1 200 OK
Date: Sat, 22 Jul 2017 16:53:25 GMT
Content-Length: 15
Etag: "def8cffd06996055374f3a54360cf4b123c9facd"
Content-Type: text/html; charset=UTF-8
Server: TornadoServer/4.5.1,
buffer: {"value": 21.3}
2017.07.22 18:53:25 5: test2: Read starts extracting all Readings from HTTP Response to Update
2017.07.22 18:53:25 5: test2: ExtractReading Temperatur with regex /([\d\.]+)/...
2017.07.22 18:53:25 5: test2: ExtractReading sets Temperatur to 1.1
2017.07.22 18:53:25 3: test2: Read response to Update matched Reading(s) Temperatur
2017.07.22 18:53:25 5: test2: HandleSendQueue called, qlen = 0
Die Contentlänge mit 15 Zeichen passt, jedoch ist es mir nicht möglich ein korrektes regex aufzubauen.
Als Ergebnis erhalte ich jedoch:
Readings:
2017-07-22 19:11:42 Temperatur 1.1
Kann mir da jemand weiterhelfen??
Bin für jeden Tip dankbar.
vielen dank im voraus
spaci76
In der Antwort :
Zitatheader: HTTP/1.1 200 OK
Deswegen das 1.1
Kannst entweder mit:
attr test2 readingsRegex value.*([\d\.]+)
Oder mit attr readingsJSON value
Vielen Dank @amenomande
für deine Antwort. Wenn ich deinen Vorschlag einbaue:
Zitat von: amenomade am 22 Juli 2017, 19:56:19
attr test2 readingsRegex value.*([\d\.]+)
erhalte ich:
.....
buffer: {"value": 21.3}
2017.07.22 20:14:13 5: test2: Read starts extracting all Readings from HTTP Response to Update
2017.07.22 20:14:13 5: test2: ExtractReading Temperatur with regex /value.*([\d\.]+)/...
2017.07.22 20:14:13 5: test2: ExtractReading sets Temperatur to 3
.....
Dein weiterer Vorschlag mit JSON :
Sollte das eventuell
attr [b]test2[/b] readingsJSON value
lauten?
Vielen Dank im voraus
cu spaci76
value.*?([\d.]+)
vielen Dank ;D