Hauptmenü

HTTPMOD request

Begonnen von LotharRappsilber, 25 November 2023, 13:09:46

Vorheriges Thema - Nächstes Thema

LotharRappsilber

Hallo zusammen,

ich komme leider nicht klar und brauche eure Hilfe. Ich möchte die aktuelle Temperatur auslesen.

{"location":{"name":"Campoverde","region":"Ucayali","country":"Peru","lat":-8.48,"lon":-74.81,"tz_id":"America/Lima","localtime_epoch":1700912654,"localtime":"2023-11-25 6:44"},"current":{"last_updated":"2023-11-25 06:30","temp_c":24.0,"is_day":1,"condition":{"text":"Partly cloudy","icon":"//cdn.weatherapi.com/weather/64x64/day/116.png","code":1003}}}

Die Temperatur befindet sich hinter temp_c. Dazu habe ich folgenden String, der leider nicht funktioniert.
reading01Regex "temp_c":"(\d+\.\d+)"
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

Aurel_B

Geht

"temp_c":(\d+.\d+)
?

Für RegEx finde ich "The Regex Coach" (http://weitz.de/regex-coach/) einen absoluten Segen!

LotharRappsilber

Ich habe aber keine Anzeige der Werte.Du darfst diesen Dateianhang nicht ansehen.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Warum nimmst Du für sowas HTTPMOD?
Um json Daten zu möglichst einfach zu verarbeiten, gibt es doch JsonMod.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Das wusste ich nicht. Wie muss ich das damit machen?
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

https://commandref.fhem.de/#JsonMod

Ansonsten kannst Du in Deinem HTTPMOD mal die regex

temp_c..([\d\.]+)
testen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Funktioniert leider auch nicht!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Dann poste doch endlich mal ein vollständiges list Deines nicht funktionierenden device.

Nur zu jammern "es funktioniert nicht" ist nicht sonderlich hilfreich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

#8
Hoffe das hilft!

Internals:
   DEF        http://api.weatherapi.com/v1/current.json?Pinar de Campoverde&aqi=no 60
   FUUID      6561d6f4-f33f-9284-ab86-c3388a943127ee6f
   Interval   0
   MainURL    http://api.weatherapi.com/v1/current.json?key=???&q=Pinar
   ModuleVersion 4.1.16 - 4.4.2023
   NAME       Spanien
   NOTIFYDEV  global
   NR         411
   NTFY_ORDER 50-Spanien
   STATE      ???
   TYPE       HTTPMOD
   CompiledRegexes:
Attributes:
   alias      Temperatur
   reading01Name Temperatur
   reading01Regex "temp_c":"(\d+\.\d+)"
   reading02Name Wettersymbol
   reading02Regex "text":"([A-Za-z]+)"
   room       Wettervorhersage

Vielleicht hilft das. Das folgende bekomme ich als Rückgabewert im Browser:

{"location":{"name":"Campoverde","region":"Ucayali","country":"Peru","lat":-8.48,"lon":-74.81,"tz_id":"America/Lima","localtime_epoch":1700912654,"localtime":"2023-11-25 6:44"},"current":{"last_updated":"2023-11-25 06:30","temp_c":24.0,"is_day":1,"condition":{"text":"Partly cloudy","icon":"//cdn.weatherapi.com/weather/64x64/day/116.png","code":1003}}}
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

#9
Was Du im Browser bekommst, ist nicht zwingend das gleiche wie das, was in HTTPMOD ankommt.

Ich behaupte, dass Dein HTTPMOD überhaupt nicht funktioniert, was an den Leerzeichen in der Ortsangabe im define liegt. Wenn Du die URL im DEF damit vergleichst, was im Internal MainURL steht, wirst Du sehen, dass die Ortsangabe abgeschnitten wird. Ausserdem steht in den Internals das Interval auf 0. Vielleicht hast Du sogar Fehlermeldungen im Log.

Hier mal ein funktionierendes Beispiel mit JsonMod:

defmod jsonTest JsonMod http://api.weatherapi.com/v1/current.json&key=<entfernt>&q=Pinar%20de%20Campoverde&aqi=no
attr jsonTest readingList complete()

Nach einem "set jsonTest reread" stehen alle Daten in einzelnen readings:

current.condition.code 1063
current.condition.icon //cdn.weatherapi.com/weather/64x64/day/176.png
current.condition.text Patchy rain possible
current.is_day 1
current.last_updated 2023-11-25 14:00
current.temp_c 34.3
location.country Peru
location.lat -8.48
location.localtime 2023-11-25 14:03
location.localtime_epoch 1700938981
location.lon -74.81
location.name Campoverde
location.region Ucayali
location.tz_id America/Lima

Dass Deine Abfrage Werte aus Peru (nicht aus Spanien!) liefert, war Dir aber hoffentlich aufgefallen?

Bitte entferne Deinen api key aus Deinem vorherigen Beitrag!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 25 November 2023, 20:11:38Dass Deine Abfrage Werte aus Peru (nicht aus Spanien!) liefert, war Dir aber hoffentlich aufgefallen?

Falls Du Werte aus Spanien suchst, musst Du halt die richtige Station abfragen.

http://api.weatherapi.com/v1/current.json?key=<entfernt>&q=Estacion%20De%20Pinar&aqi=no

Bitte entferne Deinen api key aus Deinem vorherigen Beitrag!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Danke für den Tipp. Ist mir auch aufgefallen.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Dein api key steht oben zweimal im Beitrag, Du hast ihn aber nur einmal entfernt :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Danke für den Hinweis!!!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Ist denn die Aufgabe mit den Wetterdaten jetzt gelöst?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!