[Gelöst]httpmod funktioniert & regex ermittelt jedoch falschen Wert

Begonnen von spaci76, 22 Juli 2017, 19:15:03

Vorheriges Thema - Nächstes Thema

spaci76

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

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

spaci76

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

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus