Probleme mit JsonMod

Begonnen von reisner, 05 Oktober 2023, 10:48:46

Vorheriges Thema - Nächstes Thema

reisner

Moin,
ich benötige mal wieder Hilfe aus der Community.
Ich versuche aus der Shelly-konformen Wetterstation von jbmedia die Daten auszulesen, die als jsonlist bereit gestellt werden.
Im Browser bekomme ich per http://<ip>/json.data folgendes Ergebnis:
{
"mac": "083a8dd08eb2",
"ssid": "FB6490",
"firmversion": "1.4",
"windspeed": "10",
"winddir": "270",
"rain": "88",
"rainh": "0.0",
"rain1": "0.0",
"rain10": "0.0",
"temperature1": "14.5",
"temperature2": "0.0",
"temperature3": "0.0",
"humidity1": "87",
"humidity2": "0",
"humidity3": "0",
"lowbat1": "0",
"lowbat2": "0",
"lowbat3": "0",
"id1": "10",
"id2": "00",
"id3": "00",
"target1": "http://192.168.0.95:8083/fhem?cmd=set20~windspeed~;set20~winddir~;set20~rainh~;set20~rain1~;set20~rain10~;set20~rain~;set20~temp1~;set20~hum1~;set20~lowbat1~",
"target2": "",
"target3": ""
}

Das JsonMod Device hat folgende definition:
define WS_Json JsonMod http://192.168.0.145/data.json
attr WS_Json readingList single(jsonPath('$.'), 'windspeed', '0');
Leider erhalte ich nur ein 'read from http://192.168.0.145:80 timed out'. Schein ja so, dass schon der HttpUtils-Aufruf des Moduls scheitert, hab ich einen Fehler im define?

Gruß von der Ostsee und danke!
Ralph

yersinia

Zitat von: reisner am 05 Oktober 2023, 10:48:46Im Browser bekomme ich per http://<ip>/json.data folgendes Ergebnis:
Zitat von: reisner am 05 Oktober 2023, 10:48:46define WS_Json JsonMod http://192.168.0.145/data.json
Vlt mal
define WS_Json JsonMod http://192.168.0.145/json.dataversuchen?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

reisner

OK, sorry das war mein Fehler. Ich habe ein Schreibfehler in meiner Fragepost, mein funktionierender Browser-Aufruf ist auch http://192.168.0.145/data.json, nicht json.data!

Danke

Marcy

Ich hänge mich hier mal dran, da ich exakt dasselbe Problem habe. Hat es denn bei Dir jetzt geklappt? In meiner Verzweiflung habe ich mittlerweile kein einzelnes Attribut mehr ausgelesen, sondern möchte mir direkt die komplette ReadingList auslesen. Laut Doku sollte das mit "complete()" funktionieren. Allerdings bekomme ich ebenfalls nur den von Dir "read from http://192.168.1.102:80 timed out".

Hier meine Raw-Definition:
defmod Shelly_Wetterstation JsonMod http://192.168.1.102/data.json
attr Shelly_Wetterstation interval * * * * *
attr Shelly_Wetterstation readingList complete()

Ich schäme mich bereits jetzt schon, weil das sicher wieder ein saudummer Fehler meinerseits ist...  :-[

yersinia

Zitat von: Marcy am 31 Dezember 2023, 14:58:23Allerdings bekomme ich ebenfalls nur den von Dir "read from http://192.168.1.102:80 timed out".
Klingt eher nach einem Verbindungsproblem, da kommt meines Verständnisses nach gar nichts an, was JsonMod verarbeiten könnte - es kann sein, dass JsonMod nicht richtig anfragt.
Bekommst du vom FHEM-Server eine Verbindung zu der Wetterstation? Gibt es eine Doku zu der api?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Marcy

Die Wetterstation ist relativ offen in meinem Netzwerk unter der IP *.*.*.102 erreichbar. Mein FHEM ist im selben Netzwerk unter *.*.*.180 erreichbar. Ich wüßte nicht, warum FHEM die Wetterstation nicht erreichen können sollte. Wie könnte ich das testen?

Die "Doku" der Wetterstation sagt eigentlich nur
ZitatZusätzliche stehen alle Daten unter der URL http://192.168.xxx.xxx/data.json zur Verfügung. Eine Auswertung ist z.B. mittels Javascript sehr einfach möglich.
. Ein Key oder ähnliches wird nicht benötigt.

Wenn ich entsprechende URL über den Browser aufrufe, bekomme ich diese Attribut-Liste hier:

{
"mac": "c8c9a30e1591",
"ssid": "MarWLS",
"bssid": "2c3afdf52ab0",
"ip": "192.168.1.102",
"firmversion": "1.7",
"dcftime": "15:12",
"dcfdate": "31.12.2023",
"windspeed": "3",
"winddir": "167",
"rain": "53",
"rainh": "0.0",
"rain1": "0.0",
"rain10": "0.0",
"raind": "0.0",
"rainw": "0.0",
"temperature1": "7.0",
"temperature2": "0.0",
"temperature3": "0.0",
"humidity1": "77",
"humidity2": "0",
"humidity3": "0",
"lowbat1": "0",
"lowbat2": "0",
"lowbat3": "0",
"id1": "38",
"id2": "00",
"id3": "00",
"targeturl": []
}

Also eigentlich würde ich erwarten, dass mit

defmod Shelly_Wetterstation JsonMod http://192.168.1.102/data.json
attr Shelly_Wetterstation readingList complete()

dann auch alle Readings entsprechend angelegt werden? Werden sie aber leider nicht.  :'(

TomLee

Hallo,

probier mal:

defmod Shelly_Wetterstation JsonMod system://curl http://192.168.1.102/data.json
attr Shelly_Wetterstation readingList complete()

Guten Rutsch

Thomas

Marcy

Megagut! Das wars es! Vielen, vielen Dank und ebenfalls einen guten Rutsch!