Hallo.
ich versuche, mit Scrape eine Web-API von Wunderground auszulesen, weil die Integration in HA wohl nicht mehr unterstützt wird.
Das zurück gegebene JSOn sieht so aus:
{"observations":[{"stationID":"ILANDS105","obsTimeUtc":"2024-03-02T13:16:18Z","obsTimeLocal":"2024-03-02 14:16:18","neighborhood":"Achdorf","softwareType":null,"country":"DE","solarRadiation":null,"lon":12.153,"realtimeFrequency":null,"epoch":1709385378,"lat":48.523,"uv":null,"winddir":292,"humidity":85,"qcStatus":1,"metric":{"temp":10,"heatIndex":10,"dewpt":7,"windChill":10,"windSpeed":0,"windGust":0,"pressure":996.95,"precipRate":0.00,"precipTotal":1.02,"elev":450}}]}
Ich dazu nach Anleitung Scrape installiert und folgende Zeilen in configuration.yaml eingefügt.
sensor:
- platform: scrape
resource: https://api.weather.com/v2/pws/observations/current?stationId=ILANDS105&format=json&units=m&apiKey=XXXXX
select: "#\/observations\/0\/metric\/temp > td:nth-child(2) > span:nth-child(1) > span:nth-child(1)"
Den API-Key habe ich heraus genommen.
Nach der Video-Anleitung habe ich den CSS-Selector verwendet und den Wert in die select-Anweisung kopiert.
Leider bekomme ich als Wert nur “Unknown” zurück.
Ich habe den Code auch in das Template eingefügt.
Hat jemand einen Tipp für mich?
totow
2. März 2024 um 19:17
2
Guck dir mal die Dokumentation zu Scrape an, das ist anders aufgebaut.
scrape:
- resource: https://api.weather.com/v2/pws/observations/current?stationId=ILANDS105&format=json&units=m&apiKey=XXXXX
sensor:
- name: "Wetter"
select: "#\/observations\/0\/metric\/temp > td:nth-child(2) > span:nth-child(1) > span:nth-child(1)"
aber den JSON path musst du im value_template:
wählen.
value_template: "{{ value['observations'][0]['metric']['temp'] }}"
oder
value_template: "{{ value_json['observations'][0]['metric']['temp'] }}"
so oder so ähnlich müsste das aussehen.
LG
Tobi
Hallo Tobi.
Danke für Deine rasche Antwort.
Ich habe nun folgenden Code:
scrape:
- resource: https://api.weather.com/v2/pws/observations/current?stationId=ILANDS105&format=json&units=m&apiKey=XXX
sensor:
- name: "Aussen-Temperatur"
select: "#\/observations\/0\/metric\/temp > td:nth-child(2) > span:nth-child(1) > span:nth-child(1)"
value_template: "{{ value_json['observations'][0]['metric']['temp'] }}"
Das erzeugt beim Ausprobieren im Template einen Fehler: “UndefinedError: ‘value_json’ is undefined”
Und das bei beiden Varianten Deiner Lösung.
In den Entitäten taucht auch kein Wert auf.
totow
3. März 2024 um 20:17
4
Ich glaube Scrape ist dafür nicht das richtige, wenn ich da länger drüber nachdenke.
Scrape ist dazu da Sachen von einer Website zu holen, aber du hast da ja nur JSON Code?
Probiere mal REST
rest:
- scan_interval: 60
resource: https://api.weather.com/v2/pws/observations/current?stationId=ILANDS105&format=json&units=m&apiKey=XXX
sensor:
- name: "Aussen-Temperatur"
value_template: "{{ value_json['observations'][0]['metric']['temp'] }}"
- name: "Luftfeuchtigkeit"
value_template: "{{ value_json['observations'][0]['humidity'] }}"
Ich weiß nicht ob du ein Limit in den anfragen hast vielleicht musst du den scan_interval
anpassen
LG
Tobi
Hallo Tobi.
Voltreffer
Herzlichen Dank.
Damit kann ich weiter arbeiten.
LG und schönen Abend
Uli
1 „Gefällt mir“