FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Steffen@Home am 15 November 2023, 11:44:53

Titel: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 15 November 2023, 11:44:53
Hallo Zusammen,
ich würde gerne einen JSON-response mit HTTPMOD in FHEM als einzelne Readings bekommen aber ich bekomme keine Readings, was muss ich tun ? Danke!
defmod wetter_station HTTPMOD https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m 60

Habe die folgenden Attribute hinzugefügt:
getHeader1 Content-Type: application/json
   getHeader2 Accept: */*

Aber mit attr wetter_station extractAllJSONbekomme ich eine Fehlermeldung "attribute value is missing"
...Nachfolgend ein Beispiel.

{
    "observations": [
        {
            "stationID": "ISTRINDE5",
            "obsTimeUtc": "2023-11-15T10:27:41Z",
            "obsTimeLocal": "2023-11-15 11:27:41",
            "neighborhood": "Rindelbach",
            "softwareType": "EasyWeatherV1.2.2",
            "country": "DL",
            "solarRadiation": 162.2,
            "lon": 10.117672,
            "realtimeFrequency": null,
            "epoch": 1700044061,
            "lat": 48.983112,
            "uv": 1,
            "winddir": 278,
            "humidity": 64,
            "qcStatus": 1,
            "metric": {
                "temp": 9,
                "heatIndex": 9,
                "dewpt": 3,
                "windChill": 8,
                "windSpeed": 9,
                "windGust": 13,
                "pressure": 1018.29,
                "precipRate": 0,
                "precipTotal": 2.79,
                "elev": 462
            }
        }
    ]
}
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: MadMax-FHEM am 15 November 2023, 11:59:01
Schon mal in die Attribute von HTTPMOD geschaut?

-> extractAllJSON schon mal gesetzt?

EDIT: mit einem list des HTTPMOD-Devices statt "nur" deiner def-Zeile hätte man gesehen was du schon versucht hast usw. 8)
Siehe https://forum.fhem.de/index.php?topic=71806.0

Evtl. das hier interessant: https://forum.fhem.de/index.php/topic,122508.msg1170713.html#msg1170713

Gruß, Joachim
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 15 November 2023, 12:06:52
Oh ja stimmt sorry...

Internals:
   BUSY       0
   CFGFN     
   DEF        https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m 60
   FUUID      6554a5e8-f33f-1cf4-5272-67404436742e0d5b
   Interval   60
   MainURL    https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m
   ModuleVersion 4.1.16 - 4.4.2023
   NAME       wetter_station
   NOTIFYDEV  global
   NR         225
   NTFY_ORDER 50-wetter_station
   STATE      ???
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://api.weather.com:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m
     header     
     host       api.weather.com
     httpheader HTTP/1.0 200 OK
Content-Length: 498
Content-Type: application/json; charset=UTF-8
X-Region: eu-west-1
Strict-Transport-Security: max-age=86400
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none'
X-Trace-Token: 4f9fc8fe-8525-466b-9fc8-fe8525566bef
trace-name: v2includerouter-include-get
Access-Control-Allow-Origin: *
Surrogate-Control: ESI/1.0
Cache-Control: max-age=5
Date: Wed, 15 Nov 2023 11:06:12 GMT
Connection: close
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m
     protocol   https
     redirects  0
     timeout    2
     url        https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://api.weather.com/v2/pws/observations/current?apiKey=XXX&stationId=ISTRINDE5&format=json&units=m
Attributes:
   getHeader1 Content-Type: application/json
   getHeader2 Accept: */*
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 15 November 2023, 13:03:22
Ich habe nun Attribute angelegt und kann auf den Button "get wetter_station AllValues", aber es passiert nichts.  ::)

attr wetter_station get01JSON ExtractAllJSON
attr wetter_station get01Name AllValues
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 15 November 2023, 14:03:26
Mit den Attributen
attr wetter_station get01JSON observations
attr wetter_station get01Name observations
bekomme ich nun ein Ergebnis, aber so sollte das ja nicht aussehen  :))

Wie bekomme ich das besser sortiert oder nur einzelne Werte von mir aus und nicht den ganzen Inhalt der "observations" -Liste  ???

das geht leider nicht... vermutlich weil observations eine Liste ist  :o
attr wetter_station get01JSON observations_stationID.value
READINGS:
    2023-11-15 13:58:08  observations1-1 DL
    2023-11-15 13:58:08  observations1-10 2.79
    2023-11-15 13:58:08  observations1-11 1018.29
    2023-11-15 13:58:08  observations1-12 9
    2023-11-15 13:58:08  observations1-13 7
    2023-11-15 13:58:08  observations1-14 20
    2023-11-15 13:58:08  observations1-15 14
    2023-11-15 13:58:08  observations1-16 Rindelbach
    2023-11-15 13:58:08  observations1-17 2023-11-15 13:57:49
    2023-11-15 13:58:08  observations1-18 2023-11-15T12:57:49Z
    2023-11-15 13:58:08  observations1-19 1
    2023-11-15 13:58:08  observations1-2 1700053069
    2023-11-15 13:58:08  observations1-20 EasyWeatherV1.2.2
    2023-11-15 13:58:08  observations1-21 59
    2023-11-15 13:58:08  observations1-22 ISTRINDE5
    2023-11-15 13:58:08  observations1-23 0
    2023-11-15 13:58:08  observations1-24 219
    2023-11-15 13:58:08  observations1-3 64
    2023-11-15 13:58:08  observations1-4 48.983112
    2023-11-15 13:58:08  observations1-5 10.117672
    2023-11-15 13:58:08  observations1-6 3
    2023-11-15 13:58:08  observations1-7 462
    2023-11-15 13:58:08  observations1-8 9
    2023-11-15 13:58:08  observations1-9 0
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: MadMax-FHEM am 15 November 2023, 14:38:51
Noch mal:

-> extractAllJSON schon mal gesetzt?

Ich habe das mal auf 2 gesetzt und ein "reread" angestossen.
Dann erhalte ich Readings und die zugehörigen Attribute.

So wie ich das gelesen habe/verstehe, dann einfach mit den angelegten Attributen "spielen", bis es "gefällt".
(also löschen, Readings umbenennen usw.)

Gruß, Joachim
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 15 November 2023, 14:48:45
wie setzt man das ?

Alles was ich bisher versucht habe ging dann total in die Hose und es kommt gar nichts mehr.
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: MadMax-FHEM am 15 November 2023, 14:53:11
Zitat von: Steffen@Home am 15 November 2023, 14:48:45wie setzt man das ?
Hä, naja wie man eben ein Attribut setzt.

Entweder direkt in FHEMWEB-cmd Fenster:

attr wetter_station extractAllJSON 2

Oder in der Detailansicht "unter" dem Device in der "Attributauswahlliste" (DropDown) eben extractAllJSON wählen und dann dahinter aus der DropDown 2, vorne auf "attr" klicken (-> rotes Fragezeichen erscheint) und dann auf save, fertig...

Vorher halt alles löschen, also zumindest alle Attribute...

Oder mal ein neues Device anlegen (einfach deine defmod vom ersten Post -> Name des Devices ändern) und dort dann das Attribut setzen.
Dann beim Device (DropDown) set reread und warten (also Browser refresh), nicht wundern, da kommt dann (auch) das rote Fragezeichen, es werden ja autom. Attribute angelegt...

Gruß, Joachim
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: betateilchen am 15 November 2023, 16:28:44
Warum eigentlich HTTPMOD und nicht JsonMod, wenn die Daten eh in json kommen?

defmod jtest JsonMod https://api.weather.com/v2/pws/observations/current?apiKey=entfernt&stationId=ISTRINDE5&format=json&units=m
attr jtest readingList complete()
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: TomLee am 15 November 2023, 17:37:48
Zitat... oder nur einzelne Werte von mir aus und nicht den ganzen Inhalt der "observations" -Liste

Mit JsonMod hier ein Beispiel nur einen bestimmten Wert zu erhalten:

defmod jm_test JsonMod https://api.weather.com/v2/pws/observations/current?apiKey=xxx&stationId=ISTRINDE5&format=json&units=m
attr jm_test readingList single(jsonPath('$.observations.0.humidity'),'humidity','n/a')

setstate jm_test 2023-11-15 14:10:01 humidity 64
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: Steffen@Home am 16 November 2023, 08:26:38
Super! Mit JSONMOD hats geklappt danke! ;)
Titel: Aw: JSON Daten mit HTTPMOD in FHEM
Beitrag von: betateilchen am 16 November 2023, 12:45:47
Kaum macht man's richtig, schon klappts...

Nimm mal bitte Deine API keys aus Deinen Beiträgen.