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+)"
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!
Ich habe aber keine Anzeige der Werte.Temperatur.jpg
Warum nimmst Du für sowas HTTPMOD?
Um json Daten zu möglichst einfach zu verarbeiten, gibt es doch JsonMod.
Das wusste ich nicht. Wie muss ich das damit machen?
https://commandref.fhem.de/#JsonMod
Ansonsten kannst Du in Deinem HTTPMOD mal die regex
temp_c..([\d\.]+)
testen.
Funktioniert leider auch nicht!
Dann poste doch endlich mal ein vollständiges list Deines nicht funktionierenden device.
Nur zu jammern "es funktioniert nicht" ist nicht sonderlich hilfreich.
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}}}
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!
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!
Danke für den Tipp. Ist mir auch aufgefallen.
Dein api key steht oben zweimal im Beitrag, Du hast ihn aber nur einmal entfernt :)
Danke für den Hinweis!!!
Ist denn die Aufgabe mit den Wetterdaten jetzt gelöst?
Ja, ich hab es anders gemacht!
Zeit für Popcorn...