Klafs Sauna: Werte mit HTTPMOD auslesen

Begonnen von xasher, 14 April 2022, 11:33:50

Vorheriges Thema - Nächstes Thema

xasher

Hallo zusamman,

ich habe mal wieder eine Frage zu folgendem Problem. Ich würde gerne unsere Saunasteuerung auslesen, damit ich die Werte in FHEM weiterverwenden kann.
Was auf dem Raspi funktioniert ist folgendes:

1) curl -vL https://sauna-app.klafs.com/Account/Login -H "Content-Type: application/x-www-form-urlencoded" --data "UserName=USER&Password=PASSWD" --cookie-jar cookie.txt
2) curl -v --cookie cookie.txt https://sauna-app.klafs.com/Control/GetSaunaStatus -H "Content-Type: application/json" --data '{"saunaId":"ax0f002f-xx2x-1f01-0bas-abcd1234aaaa"}'


Als Antwort bekomme ich bei 1) ein cookie, das ungefähr so aussieht:
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_sauna-app.klafs.com   FALSE   /       FALSE   0       .ASPXAUTH       163472DAA70A3C01802xxxxxxxxxxxxxxxxxxx


Bei 2) bekomme ich die Anwort, die ich gerne in FHEM hätte:
{"saunaId":"ax0f002f-xx2x-1f01-0bas-abcd1234aaaa","saunaSelected":true,"sanariumSelected":false,"irSelected":false,"selectedSaunaTemperature":90,"selectedSanariumTemperature":65,"selectedIrTemperature":27,"selectedHumLevel":0,"selectedIrLevel":3,"selectedHour":11,"selectedMinute":20,"isConnected":true,"isPoweredOn":false,"isReadyForUse":false,"currentTemperature":141,"currentHumidity":0,"statusCode":0,"statusMessage":null,"showBathingHour":false,"bathingHours":0,"bathingMinutes":0,"currentHumidityStatus":0,"currentTemperatureStatus":0}

So, jetzt fängt das Halbwissen beim Code an:
Was ich mir aus Forenbeiträge zusammengesucht habe, aber nicht funktioniert ist::

defmod sauna HTTPMOD https://sauna-app.klafs.com/Control/GetSaunaStatus 60
attr sauna enableCookies 1
attr sauna reAuthRegex id=/*404*/
attr sauna reading01JSON currentTemperatureStatus
attr sauna reading01Name Temperatur
attr sauna sid01Data UserName=USER&Password=PASSWD
attr sauna sid01URL https://sauna-app.klafs.com/Account/Login
attr sauna sidHeader1 Content-Type: application/json
attr sauna room Test


Aber so richtig, weiß ich leider nicht was ich mache. Vielleicht kann mich jemand unterstützen und mich auf die richtige Spur bringen.

Vielen Dank und schon mal schöne Feiertage.
Grüße
Alex

Otto123

#1
Hallo Alex,

ich habe httpmod und jsonmod immer nur so verwendet, dass ich Beispiele per copy & paste verwendet habe. Aber ich habe auch so eine Saunasteuerung :)

Ganz Laienhaft sieht mir das eher nach jsonmod aus? https://fhem.de/commandref.html#JsonMod

Und man könnte die Frage besser ins andere Unterforum verschieben? Module: 98_JsonMod.pm Maintainer: herrmannj Forum: Automatisierung
Und Jörg hilft da bestimmt :)

Wobei hier vielleicht ein extractALLJSON helfen würde? https://wiki.fhem.de/wiki/HTTPMOD#Parsing_JSON

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

xasher

Hallo Otto,

vielen Dank schon mal für die Hinweise. Die schaue ich mir gleich mal an.
Vielleicht wäre das Thema dann im anderen Forum besser. Könnte das bitte jemand entsprechend verschieben?

Viele Grüße
Alex

Otto123

Zitat von: xasher am 14 April 2022, 12:02:25
Könnte das bitte jemand entsprechend verschieben?
Du selbst, ganz unten links gibt es einen Button
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

herrmannj

jsonmod macht das login und cookie vmtl nicht. Ist aber kein Problem, shellscript hast Du ja. Per "at" oder "notify" das shellscript laufen lassen, das file mit dem json auf disc speichern und ganz normal via Jsonmod lesen und die Infos rausholen welche Du brauchst

xasher

Hallo,

ja, das ist auch eine Idee...
Ich schau mir das mal an und komme bei Rückfragen gerne auf dich zurück.

Viele Grüße und besten Dank,
Alex

xasher

Hallo hermannj,

ich arbeite das erste Mal mit dem Modul jsonmod.
Wie lese ich denn von disk?

defmod sauna JsonMod ./klafs.txt
defmod sauna JsonMod /opt/fhem/FHEM/klafs.txt

Da kommt "wrong source definition"

Viele Grüße
Alex

Otto123

#7
Hallo Alex,

versuch mal

defmod sauna JsonMod file:/klafs.txt
attr sauna readingList complete()

oder
defmod sauna JsonMod file://opt/fhem/klafs.txt

Zitatdefines the device and set the source (file:/|http://|https://).

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

xasher

Hallo Otto,

super, das hat funktioniert. Vielen Dank.
Ich hatte lediglich im Wiki geschaut. Da waren nur http Beispiele. Danke für den Hinweis zum commandref!

Ich hatte auch schon eine Lösung, per telnet die Daten ins Reading zu schreiben. So scheint es mir aber eleganter zu sein.

Viele Grüße
Alex