[gelöst] Zu doof zum auslesen von JSON via FHEM

Begonnen von eckonator, 04 April 2020, 11:18:36

Vorheriges Thema - Nächstes Thema

eckonator

Hi zusammen,
ich bin scheinbar zu doof ein JSON auszulesen und weis nicht was ich falsch mache.

Mein JSON:

{"Temp":"37","Set_Temp":"37","Time":"12:00","Priming":"False","Heating_Mode":"Ready","Temp_Scale":"Celcius","Time_Scale":"12 Hr","Heating":"False","Temp Range":"High","Pump1":"Off","Pump2":"Off","Light":"0"}


Mein FHEM Device:

# Whirlpool
define Whirlpool HTTPMOD http://192.168.178.86/spa/index.php 300
attr Whirlpool enableControlSet 1
attr Whirlpool enableCookies 1
attr Whirlpool enforceGoodReadingNames 1
attr Whirlpool handleRedirects 1
attr Whirlpool requestHeader Content-Type: application/json
attr Whirlpool reading1Name Temperatur
attr Whirlpool reading1Regex Temp':([\d\.]+)
attr Whirlpool verbose 5
attr Whirlpool room 20_EG_Aussenbereich


Mein Logilfe:

2020.04.04 11:09:07 5: Whirlpool: GetUpdate called (update)
2020.04.04 11:09:07 5: Whirlpool: update timer modified: will call GetUpdate in 300.0 seconds at 2020-04-04 11:14:07
2020.04.04 11:09:07 5: Whirlpool: AddToQueue adds type update to URL http://192.168.178.86/spa/index.php, no data, header Content-Type: application/json, retry 0, initial queue len: 0
2020.04.04 11:09:07 5: Whirlpool: HandleSendQueue called, qlen = 1
2020.04.04 11:09:07 4: Whirlpool: HandleSendQueue sends update with timeout 2 to http://192.168.178.86/spa/index.php, No Data,
header: Content-Type: application/json
2020.04.04 11:09:07 5: HttpUtils url=http://192.168.178.86/spa/index.php
2020.04.04 11:09:07 4: IP: 192.168.178.86 -> 192.168.178.86
2020.04.04 11:09:07 5: HttpUtils request header:
GET /spa/index.php HTTP/1.0
Host: 192.168.178.86
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Type: application/json

2020.04.04 11:09:10 3: Whirlpool: Read callback: Error: write to http://192.168.178.86:80 timed out
2020.04.04 11:09:10 4: Whirlpool: Read callback: request type was update retry 0, no headers, no body
2020.04.04 11:09:10 5: Whirlpool: Read callback: body empty
2020.04.04 11:09:10 4: Whirlpool: Read found no charset header (bodyDecode was set to auto)
2020.04.04 11:09:10 5: Whirlpool: GetCookies is looking for Cookies
2020.04.04 11:09:10 5: Whirlpool: ExtractSid called, context reading, num
2020.04.04 11:09:10 4: Whirlpool: no header to look for redirects
2020.04.04 11:09:10 5: Whirlpool: CheckAuth decided no authentication required
2020.04.04 11:09:19 5: Whirlpool: UpdateHintList called
2020.04.04 11:09:19 5: Whirlpool: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2020.04.04 11:09:19 5: Whirlpool: UpdateHintList: getlist =


Ich schaffe es einfache nicht, die paar Daten in FHEM meinem Device Whirlpool anzuhängen. Kann mir jemand helfen?
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

amenomade

#1
Statt reading1Regex, nimm doch reading1JSON
attr Whirlpool reading1JSON Temp 

Deine Regex funktioniert vermutlich nicht, weil double quote ist nicht das gleiche wie single quote, und es gibt noch ein double quote vor der Temperatur
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Du hast wahrscheinlich ein anderes Problem: man sieht diese JSON nicht in der Log... Rufst Du die richtige Seite auf?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

herrmannj

Evtl ist JsonMod hier besser geeignet.

eckonator

IP ist richtig, ich habe sie im Device in meinem Sicherheitswahsinn (warum auch immer) geändert aber im Logfile vergessen. Habe ich nun korrigiert. Am liebsten will ich eigentlich einfach nur alle Infos von der Json auslesen, aber auch das klappt nicht mit dem dafür vorgesehenen Attribut extractAllJSON 1.
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

eckonator

Zitat von: eckonator am 04 April 2020, 12:07:50
IP ist richtig, ich habe sie im Device in meinem Sicherheitswahsinn (warum auch immer) geändert aber im Logfile vergessen. Habe ich nun korrigiert. Am liebsten will ich eigentlich einfach nur alle Infos von der Json auslesen, aber auch das klappt nicht mit dem dafür vorgesehenen Attribut extractAllJSON 1.

Hast du dazu ein Beispiel, finde dazu nix im Wiki?
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

Wernieman

Zitat2020.04.04 11:09:07 4: Whirlpool: HandleSendQueue sends update with timeout 2 to http://192.168.178.86/spa/index.php, No Data,
Bist Du Dir sicher, das Daten übrhaupt ankommen?
Stichwort s.o. "No Data"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

eckonator

Also wenn ich die URL im Browser öffne, sehe ich halt das oben dokumentierte Json-Array.
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

amenomade

No Data ist meiner Meinung nach hier normal: man sendet ein "get" und damit keine Data.
Was aber nicht normal ist, ist:
2020.04.04 11:09:10 3: Whirlpool: Read callback: Error: write to http://192.168.178.86:80 timed out
2020.04.04 11:09:10 4: Whirlpool: Read callback: request type was update retry 0, no headers, no body
2020.04.04 11:09:10 5: Whirlpool: Read callback: body empty

und wie schon erwähnt, dass man (deswegen..?) die JSON String gar nicht in der Log sieht
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Zitat von: eckonator am 04 April 2020, 12:16:02
Also wenn ich die URL im Browser öffne, sehe ich halt das oben dokumentierte Json-Array.

Und die URL ist genau die, die Du benutzt?
Dann erhöhe das Timeout.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

eckonator

FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen

amenomade

Zitat von: CommandRef- timeout
time in seconds to wait for an answer. Default value is 2
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Wernieman

gehe doch mal in die Konsole Deines FHEM-Rechners. Dort mal per wget oder curl die URL aufrufen und nachsehen, ob dort wirklich was ankommt.
Zitatwget -v http://192.168.178.86/spa/index.php
Alternativ geht auch curl
Zitatcurl -v http://192.168.178.86/spa/index.php

Ich kenne mich mit JSON Verarbeitung in FHEM nicht aus, habe aber hier das Gefühl, das das JSON gar nicht zu FHEM reinkommt ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

eckonator

Danke Freunde, Problem gelöst - es lag tatsächlich am Timeout, der wohl zu niedrig war. Hier nun mein funktionierendes Device:


# Whirlpool
define Whirlpool HTTPMOD http://192.168.178.86/spa/index.php 300
attr Whirlpool timeout 10
attr Whirlpool enforceGoodReadingNames 1
attr Whirlpool requestHeader Content-Type: application/json
attr Whirlpool extractAllJSON 1
#attr Whirlpool reading1Name Temperatur
#attr Whirlpool reading1JSON Temp
#attr Whirlpool verbose 5
attr Whirlpool room 20_EG_Aussenbereich
FHEM 6.2 | PiHole | MagicMirror2 | Fritz!Box 7590 (Basis) + 3x Fritz!Box 4040 (IP-Client) | Amazon DOT | HomeBridge | Max!Cube (geflasht) + Max Komponenten | Harmony Hub | YeeLight Bulbs | G-Homa und Fritz!DECT Steckdosen