Ankündigung

Einklappen
Keine Ankündigung bisher.

GeoJSON mit jsonread Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    GeoJSON mit jsonread Plugin

    Liebes Forum,

    ich versuche gerade folgendes JSON File mit dem jsonread Plugin einzulesen. Teilweise funktioniert da auch, aber es scheint als seine die [ Klammern ein Problem für das Plugin.

    plugin.yaml:
    Code:
    jsonread:
        plugin_name: jsonread
        url: https://dataset.api.hub.geosphere.at/v1/station/current/tawes-v1-10min?parameters=TL&parameters=SO&station_ids=11012&output_format=geojson
        cycle: 60​
    Ich hab testhalber mal 3 items angelegt:
    Code:
            version:
                type: str
                jsonread_filter: .version
                
            station:
                name: ZAMG station ID
                type: num
                jsonread_filter: .features.properties.station          
    
            temp:
                name: ZAMG temperature
                type: num
                jsonread_filter: .features.properties.parameters.TL.data​
    Das "version" item funktioniert, die beiden anderen Items bleiben aber immer auf 0

    In den Logs sehe ich folgendes:
    Code:
    2024-05-09  13:35:42 ERROR    plugins.jsonread    jq filter failed: Cannot index array with string "properties"'
    2024-05-09  13:36:43 ERROR    plugins.jsonread    jq filter failed: Cannot index array with string "properties"'
    2024-05-09  13:36:43 ERROR    plugins.jsonread    jq filter failed: Cannot index array with string "properties"'​
    Das webinterface von jsonread zeigt mir folgendes an:
    Code:
    .media_type => application/json
    .type => FeatureCollection
    .version => v1
    .timestamps.2024-05-09T11:30+00:00
    .features.type => Feature
    .features.geometry.type => Point
    .features.geometry.coordinates.14.131111111111112
    .features.geometry.coordinates.48.055
    .features.properties.parameters.TL.name => Lufttemperatur
    .features.properties.parameters.TL.unit => °C
    .features.properties.parameters.TL.data.16.4
    .features.properties.parameters.SO.name => Sonnenscheindauer
    .features.properties.parameters.SO.unit => sec
    .features.properties.parameters.SO.data.74.0
    .features.properties.station => 11012​
    Da fällt auch schon auf, das er bei den Werten mit den [] irgendwie Probleme hat.
    Properties ist ja auch in [] und das scheint auch irgendwie Probleme zu machen.

    Versuche ich hier ein ungültiges JSON Format einzulesen?

    Besten Dank
    Johannes

    #2
    Meines Wissens nutzt die Schnittstelle das jq-Tool oder dessen Library. Daher am besten jq installieren und die Abfragen (z.B. jq '.features.properties.parameters.TL.data​' <file>.json) per Hand auf Kommandozeile machen. Wenn das funktioniert und die richtigen Ergebnisse liefert dann weiter mit smarthome.

    Ralf

    Kommentar


      #3
      Mit '.features[].properties.parameters.TL' sollte es klappen

      Kommentar


        #4
        Danke, hat wunderbar geklappt. Sollte jemand eine Vorlage für die Wetterdaten der ZAMG in Österreich brauchen:
        Code:
        # weather.yaml
        %YAML 1.1
        ---
        
        weather:
            zamgaustria:
                pointoftime:
                    name: ZAMG time
                    type: str
                    jsonread_filter: .timestamps[]
                    enforce_updates: yes
        
                version:
                    type: str
                    jsonread_filter: .version
                    enforce_updates: yes
                    
                station:
                    name: ZAMG station ID
                    type: num
                    jsonread_filter: .features[].properties.station
                    enforce_updates: yes
        
                temp:
                    name: ZAMG temperature
                    type: num
                    jsonread_filter: .features[].properties.parameters.TL.data[]
                    knx_dpt: 9
                    knx_send: 0/0/97
                    enforce_updates: yes
        
                dewpoint:
                    name: ZAMG dew point
                    type: num
                    jsonread_filter: .features[].properties.parameters.TP.data[]
                    enforce_updates: yes
        
                humidity:
                    name: ZAMG humidity
                    type: num
                    jsonread_filter: .features[].properties.parameters.RF.data[]
                    enforce_updates: yes
        
                winddir:
                    name: ZAMG wind direction
                    type: num
                    jsonread_filter: .features[].properties.parameters.DD.data[]
                    enforce_updates: yes
        
                wind:
                    name: ZAMG wind
                    type: num
                    jsonread_filter: .features[].properties.parameters.FF.data[]
                    enforce_updates: yes
        
                windpeakdir:
                    name: ZAMG wind peak direction
                    type: num
                    jsonread_filter: .features[].properties.parameters.DDX.data[]
                    enforce_updates: yes
        
                windpeak:
                    name: ZAMG windpeak
                    type: num
                    jsonread_filter: .features[].properties.parameters.FFX.data[]
                    enforce_updates: yes
        
                rain:
                    name: ZAMG rain
                    type: num
                    jsonread_filter: .features[].properties.parameters.RR.data[]
                    enforce_updates: yes
        
                sun:
                    name: ZAMG sun
                    type: num
                    jsonread_filter: .features[].properties.parameters.SO.data[]
                    enforce_updates: yes
        
                pressurered:
                    name: ZAMG pressurered
                    type: num
                    jsonread_filter: .features[].properties.parameters.PRED.data[]
                    enforce_updates: yes
        
                pressurestat:
                    name: ZAMG pressurestat
                    type: num
                    jsonread_filter: .features[].properties.parameters.P.data[]
                    enforce_updates: yes
        ​

        Kommentar


          #5
          mayrjohannes sehr cool. Kurze Frage dazu. wo findet man die Station ID´s?
          Braucht es dafür einen Account?

          Kommentar


            #6
            Zitat von fuxl66 Beitrag anzeigen
            mayrjohannes sehr cool. Kurze Frage dazu. wo findet man die Station ID´s?
            Braucht es dafür einen Account?
            Zurest lesen dann posten.
            https://www.zamg.ac.at/cms/de/dokume...e_20240701.csv

            Kommentar

            Lädt...
            X