FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: LotharRappsilber am 25 November 2023, 13:09:46

Titel: HTTPMOD request
Beitrag von: LotharRappsilber am 25 November 2023, 13:09:46
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+)"
Titel: Aw: HTTPMOD request
Beitrag von: Aurel_B am 25 November 2023, 13:27:29
Geht

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

Für RegEx finde ich "The Regex Coach" (http://weitz.de/regex-coach/ (http://weitz.de/regex-coach/)) einen absoluten Segen!
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 25 November 2023, 13:40:41
Ich habe aber keine Anzeige der Werte.Temperatur.jpg
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 25 November 2023, 13:48:28
Warum nimmst Du für sowas HTTPMOD?
Um json Daten zu möglichst einfach zu verarbeiten, gibt es doch JsonMod.
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 25 November 2023, 13:51:07
Das wusste ich nicht. Wie muss ich das damit machen?
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 25 November 2023, 13:58:45
https://commandref.fhem.de/#JsonMod

Ansonsten kannst Du in Deinem HTTPMOD mal die regex

temp_c..([\d\.]+)
testen.
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 25 November 2023, 14:06:20
Funktioniert leider auch nicht!
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 25 November 2023, 17:45:04
Dann poste doch endlich mal ein vollständiges list Deines nicht funktionierenden device.

Nur zu jammern "es funktioniert nicht" ist nicht sonderlich hilfreich.
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 25 November 2023, 18:19:08
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}}}
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 25 November 2023, 20:11:38
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!
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 25 November 2023, 20:34:47
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!
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 26 November 2023, 11:08:20
Danke für den Tipp. Ist mir auch aufgefallen.
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 26 November 2023, 11:32:37
Dein api key steht oben zweimal im Beitrag, Du hast ihn aber nur einmal entfernt :)
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 26 November 2023, 12:16:27
Danke für den Hinweis!!!
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 26 November 2023, 12:36:30
Ist denn die Aufgabe mit den Wetterdaten jetzt gelöst?
Titel: Aw: HTTPMOD request
Beitrag von: LotharRappsilber am 26 November 2023, 12:41:14
Ja, ich hab es anders gemacht!
Titel: Aw: HTTPMOD request
Beitrag von: betateilchen am 26 November 2023, 13:14:47
Zeit für Popcorn...