Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte aulesen aus xml ODER json

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

    Werte aulesen aus xml ODER json

    Hallo!
    Wir haben schon mehrere Wege beschritten, doch leider konnte ich noch keine Seite finden, die uns verlässliche Daten für die Wetterprogonosen geliefert hat.
    Nun stellt bei uns die öffentliche Hand relativ verlässliche Daten sowohl in JSON als auch in XML zur Verfügung:
    http://daten.buergernetz.bz.it/servi...t=json&lang=de
    http://daten.buergernetz.bz.it/servi...at=xml&lang=de

    Leider erschließt sich mir überhaupt nicht, wie ich aus dem ganzen Datenwald aus den einzelnen Angaben Werte einem Item zuordnen kann.
    Hätte gerne für "today", "tomorrow" und die restlichen drei Tage (unter "dayforecasts") die Werte für "title", "max", "min" (und noch ein paar mehr).
    Ich denke, wenn mir jemand das für ein Beispiel erklären würde, könnt ichs auch für den Rest schaffen?
    Habe eine Weile in den Weiten des Internets rumgesucht, aber keinen (für mich) Ansatz gefunden

    Gruß

    #2
    Da Du verschiedene Werte auslesen willst, bietet es sich an, das JSON (oder wahlweise auch XML, openHAB kann mit beidem umgehen) in einem Cache zu speichern.
    Das http Binding kann mit Cache konfiguriert werden.
    Die Auswertung bzw. die einzelnen Werte, die dann in den Items landen, werden aus dem Cache per JsonPath (oder wahlweise XPath) extrahiert.
    Du musst also das http Binding und eine der beiden Transformations installieren. Anschließend konfigurierst Du wie folgt:
    in <conffolder>/services/http.cfg:
    Code:
    wetter.url=http://daten.buergernetz.bz.it/services/weather/bulletin?format=json&lang=de
    wetter.updateInterval=600000
    # updateInterval = 600000 -> alle 600 Sekunden -> alle 10 Minuten
    Den Kommentar kannst Du natürlich weg lassen. Alle anderen Informationen in http.cfg sind optional und deshalb auch auskommentiert.
    Die Items sehen dann so aus:
    Code:
    String wetterTodayTitle "Schlagwort [%s]"       {http="<[wetter:60000:JSONPATH($.today.title)]"}
    Number wetterTodayMax "Schlagwort [%.0f°C]"     {http="<[wetter:60000:JSONPATH($.today.tMaxMax)]"}
    Number wetterTodayMin "Schlagwort [%.0f°C]"     {http="<[wetter:60000:JSONPATH($.today.tMinMin)]"}
    DateTime wetterForecast1Date "für [%1$ta]"      {http="<[wetter:60000:JSONPATH($.dayForecasts.1.date)]"}
    Number wetterForecast1Max "Schlagwort [%.0f°C]" {http="<[wetter:60000:JSONPATH($.dayForecasts.1.tempMax.max)]"}
    Number wetterForecast1Min "Schlagwort [%.0f°C]" {http="<[wetter:60000:JSONPATH($.dayForecasts.1.tempMin.min)]"}
    JsonPath hangelt sich also am Pfad entlang (wie der Name schon vermuten lässt). Mein Firefox zeigt mir JSON strukturiert an, ich bin mir gerade nicht sicher, ob ich dazu mal irgend ein Plugin eingerichtet habe... Auf jeden Fall gibt es Werkzeuge, um das JSON sinnvoll umgebrochen darzustellen, damit ergeben sich dann die notwendigen Parameter fast von selbst.
    Zuletzt geändert von udo1toni; 16.05.2018, 20:25.

    Kommentar


      #3
      Hallo!
      Danke für deinen Hinweis!
      Habe das http Binding aktiv und auch JSON Transformation.
      Die http.cfg habe ich um die von dir geposteten Zeilen erweitert, bei den Items habe ich die zweite Zeile versucht.

      Leider ohne Erfolg:, siehe Update unten!
      Code:
      2018-05-16 20:46:18.288 [ERROR] [el.item.internal.GenericItemProvider] - Binding configuration of type 'http' of item 'wetterTodayMax' could not be parsed correctly.org.eclipse.smarthome.model.item.BindingConfigParseException: bindingConfig 'wetter:60000:JSONPATH($.today.tMaxMax)' doesn't contain a valid binding configuration
      at org.openhab.core.binding.internal.BindingConfigReaderDelegate.processBindingConfiguration(BindingConfigReaderDelegate.java:51) [228:org.openhab.core.compat1x:2.2.0]
      at org.eclipse.smarthome.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:341) [138:org.eclipse.smarthome.model.item:0.10.0.b1]
      at org.eclipse.smarthome.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:310) [138:org.eclipse.smarthome.model.item:0.10.0.b1]
      at org.eclipse.smarthome.model.item.internal.GenericItemProvider.processBindingConfigsFromModel(GenericItemProvider.java:195) [138:org.eclipse.smarthome.model.item:0.10.0.b1]
      at org.eclipse.smarthome.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:377) [138:org.eclipse.smarthome.model.item:0.10.0.b1]
      at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:314) [137:org.eclipse.smarthome.model.core:0.10.0.b1]
      at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:143) [137:org.eclipse.smarthome.model.core:0.10.0.b1]
      at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:247) [137:org.eclipse.smarthome.model.core:0.10.0.b1]
      at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:311) [137:org.eclipse.smarthome.model.core:0.10.0.b1]
      at org.eclipse.smarthome.core.service.WatchQueueReader.run(WatchQueueReader.java:209) [112:org.eclipse.smarthome.core:0.10.0.b1]
      at java.lang.Thread.run(Thread.java:748) [?:?]
      ps: sehe auch beim mir im Firefox die JSON Daten in Reih und Glied!

      Update:

      Nach ein wenig Suchen habe ich gesehen, dass beim Binding die Item-Konfiguration ein wenig anders aussieht und habe die zweite Zeile wie folgt angepasst:
      Code:
      Number wetterTodayMax "Schlagwort [%.0f°C]"     {http="<[wetter:60000:JSONPATH($.today.tMaxMax)]"}
      Das klappt nun auch, yay! Funzt auch bei wetterTodayMin
      Aber auch mit dieser Anpassung, bekomme ich bei den meisten Zeilen Fehlermeldungen:
      Code:
      2018-05-16 21:25:11.130 [WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JSONPATH($.dayForecasts.1.date)' threw an exception. [response={"id":42166,"date":"2018-05-16T00:00:00","hour":"11:00","today":{"date":"2018-05-16T00:00:00","hour":"11:00","title":"Wechselhaft", "conditions":"Schwacher Hochdruckeinfluss sorgt zwar für eine Wetterbesserung, ganz stabil bleibt es aber nicht.","temperatures":"Die Höchstwerte steigen etwas an und reichen von 13° bis 23°.","stationData":[{"symbol":{"code":"c","description":"Wolkig","imag eUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":19.0,"min":5.0},{"symbol":{"cod e":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":21.0,"min":8.0},{"symbol":{"co de":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":22.0,"min":9.0},{"symbol":{"cod e":"f","description":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"max":16.0,"min":6.0},{"symbol":{"cod e":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":21.0,"min":8.0},{"symbol":{"co de":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":18.0,"min":7.0}],"imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/meteomap0/42166/de","weather":"Im Großteil des Landes ist es zeitweise sonnig. Am Nachmittag werden die Quellwolken größer und stellenweise gehen Regenschauer oder Gewitter nieder.","bulletinStatus":16,"type":"WEAT11","tMin Min":5.0,"tMinMax":9.0,"tMaxMin":16.0,"tMaxMax":22 .0,"reliability":70},"tomorrow":{"date":"2018-05-17T00:00:00","hour":"11:00","title":"Recht sonnig, nachmittags einzelne Regenschauer","conditions":"An der Großwetterlage ändert sich nicht viel. Südtirol verbleibt im Einfluss labil geschichteter Luftmassen.","temperatures":"Die Temperaturen steigen auf Höchstwerte von 15° bis 24°.","stationData":[{"symbol":{"code":"c","description":"Wolkig","imag eUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":21.0,"min":9.0},{"symbol":{"cod e":"f","description":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"max":22.0,"min":10.0},{"symbol":{"co de":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":24.0,"min":11.0},{"symbol":{"co de":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":17.0,"min":5.0},{"symbol":{"cod e":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":22.0,"min":9.0},{"symbol":{"co de":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":19.0,"min":7.0}],"imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/meteomap1/42166/de","weather":"Am Vormittag wird es recht sonnig. Ab Mittag entstehen größere Quellwolken und in der Folge sind daraus einzelne Regenschauer oder Gewitter möglich.","bulletinStatus":16,"type":"WEAT11","tMi nMin":5.0,"tMinMax":11.0,"tMaxMin":17.0,"tMaxMax": 24.0,"reliability":80},"mountainToday":{"date":"20 18-05-16T00:00:00","title":"Wechselhaft","weather":"Auf den Bergen stellt sich wechselnd bewölktes Wetter ein. Am Nachmittag sind wieder einige Regenschauer und Gewitter zu erwarten.","conditions":"Schwacher Hochdruckeinfluss sorgt zwar für eine Wetterbesserung, ganz stabil bleibt es aber nicht.","temp1000":14.0,"temp2000":4.0,"temp3000":-3.0,"temp4000":-10.0,"snowLimit":[2200.0],"zeroLimit":2600.0,"north":{"code":"f","descripti on":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"south":{"code":"u","description":"Wo lkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"wind":{"code":"G1","description":"s chwach aus West","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wind/wind_1_w.png"},"reliability":80,"moonRise":"06:42" ,"moonSet":"21:51","sunRise":"05:41","sunSet":"20: 43","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/mountainmap0/42166/de"},"mountainTomorrow":{"date":"2018-05-17T00:00:00","title":"Recht sonnig, nachmittags einzelne Schauer","weather":"Zunächst gibt es auf den Bergen recht gute Verhältnisse. Im Laufe des Nachmittags sind einzelne Schauer oder Gewitter möglich.","conditions":"An der Großwetterlage ändert sich nicht viel. Südtirol verbleibt im Einfluss labil geschichteter Luftmassen.","temp1000":16.0,"temp2000":6.0,"temp3 000":-2.0,"temp4000":-10.0,"snowLimit":[2500.0],"zeroLimit":2700.0,"north":{"code":"c","descripti on":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"south":{"code":"u","description":"Wo lkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"wind":{"code":"B2","description":"m äßig aus Nordost","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wind/wind_2_no.png"},"reliability":80,"moonRise":"07:28 ","moonSet":"23:00","sunRise":"05:40","sunSet":"20 :44","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/mountainmap1/42166/de"},"bulletinStatus":16,"type":"WEAT11","evolutio n":"Bis zum Wochenende geht es mit einer Mischung aus Sonne und Wolken weiter, jeweils an den Nachmittagen sind einzelne Regenschauer oder Gewitter möglich. Die Temperaturen steigen wieder auf durchschnittliche Werte für die Jahreszeit.","evolutionTitle":"Sonne, Wolken, Regenschauer","dayForecasts":[{"date":"2018-05-18T00:00:00","reliability":80,"symbol":{"code":"c" ,"description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":17.0,"max":25.0},"te mpMin":{"min":5.0,"max":12.0}},{"date":"2018-05-19T00:00:00","reliability":70,"symbol":{"code":"c" ,"description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":17.0,"max":25.0},"te mpMin":{"min":5.0,"max":12.0}},{"date":"2018-05-20T00:00:00","reliability":70,"symbol":{"code":"c" ,"description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":16.0,"max":24.0},"te mpMin":{"min":5.0,"max":12.0}},{"date":"2018-05-21T00:00:00","reliability":60,"symbol":{"code":"d" ,"description":"Stark bewölkt","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_4.png"},"tempMax":{"min":15.0,"max":23.0},"te mpMin":{"min":6.0,"max":13.0}}]}]
      Oder
      Code:
      org.openhab.core.transform.TransformationException: Invalid path '$.dayForecasts.1.tempMin.min' in '{"id":42166,"date":"2018-05-16T00:00:00","hour":"11:00","today":{"date":"2018-05-16T00:00:00","hour":"11:00","title":"Wechselhaft","conditions":"Schwacher Hochdruckeinfluss sorgt zwar für eine Wetterbesserung, ganz stabil bleibt es aber nicht.","temperatures":"Die Höchstwerte steigen etwas an und reichen von 13° bis 23°.","stationData":[{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":19.0,"min":5.0},{"symbol":{"code":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":21.0,"min":8.0},{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":22.0,"min":9.0},{"symbol":{"code":"f","description":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"max":16.0,"min":6.0},{"symbol":{"code":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":21.0,"min":8.0},{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":18.0,"min":7.0}],"imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/meteomap0/42166/de","weather":"Im Großteil des Landes ist es zeitweise sonnig. Am Nachmittag werden die Quellwolken größer und stellenweise gehen Regenschauer oder Gewitter nieder.","bulletinStatus":16,"type":"WEAT11","tMinMin":5.0,"tMinMax":9.0,"tMaxMin":16.0,"tMaxMax":22.0,"reliability":70},"tomorrow":{"date":"2018-05-17T00:00:00","hour":"11:00","title":"Recht sonnig, nachmittags einzelne Regenschauer","conditions":"An der Großwetterlage ändert sich nicht viel. Südtirol verbleibt im Einfluss labil geschichteter Luftmassen.","temperatures":"Die Temperaturen steigen auf Höchstwerte von 15° bis 24°.","stationData":[{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":21.0,"min":9.0},{"symbol":{"code":"f","description":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"max":22.0,"min":10.0},{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":24.0,"min":11.0},{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":17.0,"min":5.0},{"symbol":{"code":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"max":22.0,"min":9.0},{"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"max":19.0,"min":7.0}],"imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/meteomap1/42166/de","weather":"Am Vormittag wird es recht sonnig. Ab Mittag entstehen größere Quellwolken und in der Folge sind daraus einzelne Regenschauer oder Gewitter möglich.","bulletinStatus":16,"type":"WEAT11","tMinMin":5.0,"tMinMax":11.0,"tMaxMin":17.0,"tMaxMax":24.0,"reliability":80},"mountainToday":{"date":"2018-05-16T00:00:00","title":"Wechselhaft","weather":"Auf den Bergen stellt sich wechselnd bewölktes Wetter ein. Am Nachmittag sind wieder einige Regenschauer und Gewitter zu erwarten.","conditions":"Schwacher Hochdruckeinfluss sorgt zwar für eine Wetterbesserung, ganz stabil bleibt es aber nicht.","temp1000":14.0,"temp2000":4.0,"temp3000":-3.0,"temp4000":-10.0,"snowLimit":[2200.0],"zeroLimit":2600.0,"north":{"code":"f","description":"Wolkig, mäßiger Regen","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_6.png"},"south":{"code":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"wind":{"code":"G1","description":"schwach aus West","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wind/wind_1_w.png"},"reliability":80,"moonRise":"06:42","moonSet":"21:51","sunRise":"05:41","sunSet":"20:43","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/mountainmap0/42166/de"},"mountainTomorrow":{"date":"2018-05-17T00:00:00","title":"Recht sonnig, nachmittags einzelne Schauer","weather":"Zunächst gibt es auf den Bergen recht gute Verhältnisse. Im Laufe des Nachmittags sind einzelne Schauer oder Gewitter möglich.","conditions":"An der Großwetterlage ändert sich nicht viel. Südtirol verbleibt im Einfluss labil geschichteter Luftmassen.","temp1000":16.0,"temp2000":6.0,"temp3000":-2.0,"temp4000":-10.0,"snowLimit":[2500.0],"zeroLimit":2700.0,"north":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"south":{"code":"u","description":"Wolkig, Gewitter mit mäßigen Schauern","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_21.png"},"wind":{"code":"B2","description":"mäßig aus Nordost","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wind/wind_2_no.png"},"reliability":80,"moonRise":"07:28","moonSet":"23:00","sunRise":"05:40","sunSet":"20:44","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/maps/mountainmap1/42166/de"},"bulletinStatus":16,"type":"WEAT11","evolution":"Bis zum Wochenende geht es mit einer Mischung aus Sonne und Wolken weiter, jeweils an den Nachmittagen sind einzelne Regenschauer oder Gewitter möglich. Die Temperaturen steigen wieder auf durchschnittliche Werte für die Jahreszeit.","evolutionTitle":"Sonne, Wolken, Regenschauer","dayForecasts":[{"date":"2018-05-18T00:00:00","reliability":80,"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":17.0,"max":25.0},"tempMin":{"min":5.0,"max":12.0}},{"date":"2018-05-19T00:00:00","reliability":70,"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":17.0,"max":25.0},"tempMin":{"min":5.0,"max":12.0}},{"date":"2018-05-20T00:00:00","reliability":70,"symbol":{"code":"c","description":"Wolkig","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_3.png"},"tempMax":{"min":16.0,"max":24.0},"tempMin":{"min":5.0,"max":12.0}},{"date":"2018-05-21T00:00:00","reliability":60,"symbol":{"code":"d","description":"Stark bewölkt","imageUrl":"http://daten.buergernetz.bz.it/services/weather/graphics/icons/imgsource/wetter/icon_4.png"},"tempMax":{"min":15.0,"max":23.0},"tempMin":{"min":6.0,"max":13.0}}]}'
      Wenn ich die Syntax hier eingebe: http://jsonpath.com/ bekomme ich die richtigen Werte...
      Zuletzt geändert von narf; 16.05.2018, 20:30.

      Kommentar


        #4
        Ach, sorry, hab da die Richtung vergessen... da gehört noch ein <[] drumherum. Ich ändere das in meinem Originalposting!

        Kommentar


          #5
          Hab die Items genau so, aber hilft nur bei den Items wetterTodayMax und wetterTodayMin, bei den restlichen Fehlermeldung von oben!

          Kommentar


            #6
            Ah, ja, das kommt davon, wenn man nicht direkt den Code anschaut. Probiere mal ($.dayForecasts[1].tempMax.max) usw.

            Kommentar


              #7
              Super, das klappt auch, aber ganz blick ich noch nicht durch.
              Wie komme ich denn zum Wert von today > stationdata > 2 > max?
              so gehts schonmal nicht, vermutlich muss ich irgendwie angeben, dass die "2" erst in unter "stationdata" gesucht werden soll?
              Code:
              Number temp0max "Maximaltemperatur heute [%.0f°C]"     {http="<[wetter:60000:JSONPATH($.today[2].max)]"}

              Kommentar


                #8
                Code:
                Number temp0max "Maximaltemperatur heute [%.0f°C]" {http="<[wetter:60000:JSONPATH($.today[2].max)]"}
                Wo steht da stationdata?
                Code:
                Number temp0max "Maximaltemperatur heute [%.0f°C]" {http="<[wetter:60000:JSONPATH($.today.statiodata[2].max)]"}
                sollte funktionieren.

                Kommentar


                  #9
                  okay, hat geklappt!
                  wollte mich jetzt grad dran machen, um die benötigten Daten zu definieren und merk grad, dass es noch weitere Hindernisse gibt -.-
                  Die Daten werden um 7:00 publiziert und um 11:00 aktualisiert (Feiertage nur Veröffentlichung um 10:00 Uhr).

                  Leider werden die Daten nicht auf dieselbe Weise veröffentlicht :/
                  Um 7 Uhr wird "Today" veröffentlicht, der darauffolgende Tag ist hier unter "dayForecasts[0]" gelistet.
                  Um 11 Uhr wird "tomorrow" mit Daten gefüllt, "dayForecasts[0]" wird zu zum übernächsten Tag.
                  Sonn- und Feiertage muss ich erst abchecken -.-

                  Ich könnte beim Abrufen der Daten die Uhrzeit auslesen, damit ich weiß mit welcher Art von Daten grad vorliegen.
                  Aber weiter bin ich im Ansatz schon nicht mehr gekommen.

                  Hast du vlt. eine Idee, wie sich das elegant (einfach?) lösen lassen könnte?

                  Nachtrag: In "today", "tomorrow" (wenn mit Daten gefüllt) und den verschiedenen dayForecasts wird das Datum auch immer angegeben, aber wie bringe ich die Infos zusammen und dann noch für openHAB zu heute, morgen, heute + 2, heute +3?

                  Gruß und schönen Abend!
                  Zuletzt geändert von narf; 17.05.2018, 19:51.

                  Kommentar


                    #10
                    Tja, das ist schon etwas übel.

                    Letztlich müsstest Du für die entsprechenden Items nochmal ein Proxy Item vorhalten, in dem die Werte abgelegt werden.

                    Eine Alternative wäre aber, das über die Sichtbarkeit in der Sitemap zu definieren, also quasi ein Item, welches zwischen Ansicht 1 und Ansicht zwei umschaltet. Das bedeutet dann halt Mehraufwand in der Sitemap, da jedes Widget doppelt angelegt werden muss. eventuell mit angepassten Labeln.

                    Kommt halt auch drauf an, ob Du die Werte ausschließlich anzeigst, oder auch Berechnungen damit anstellt. Wenn Letzteres der Fall ist, musst Du ja dann in jeder Rule auch noch unterschieden, welches Item denn das richtige ist...

                    Kommentar


                      #11
                      Hatte auch schon an Proxy Items gedacht. Muss ich diese dann immer per Rule füllen oder wie gehts das?

                      in etwa so?
                      wenn hour = 07:30 dann temp1max = dayForecasts.1.tempMax.max
                      wennn hour = 11:00 dann temp1max = tomorrow.stationData[2].max

                      Kommentar


                        #12
                        Ja, so in etwa. Du kannst jsonpath auch direkt in einer Rule verwenden (die Syntax ist leicht anders, steht aber alles in der Doku) Du müsstest also nur ein Item definieren, in dem das JSON landet. Den Inhalt dieses Items verwendest Du dann in der Rule, um alle anderen Items zu befüllen. Die Rule triggerst Du dann auf Zeit, oder Du musst halt rausfinden, wie spät es ist:
                        Code:
                        ...
                        if (now.isBefore(now.withTimeAtStartOfDay.plusHours(11))) {
                            // wird vor 11 Uhr ausgeführt
                        } else {
                            // wird ab 11 Uhr ausgeführt
                        }
                        Alternativ kannst Du auch direkt die aktuelle Stunde auswerten:
                        Code:
                        ...
                        if (now.getHourOfDay < 11) {
                            // wird vor 11 Uhr ausgeführt
                        } else {
                            // wird ab 11 Uhr ausgeführt
                        }
                        Beide Varianten sind gleichwertig. Die erste Variante lässt sich halt leicht auch noch um Minuten (plusMinutes) und Sekunden (plusSeconds) erweitern, während das für die zweite Variante nicht so schön ist, entweder müsste man mehrere Abfragen zusammen setzen (&& getMinuteOfHour sowie && getSecondOfMinute) oder die entsprechende Summe abfragen (getSecondOfDay) um mit einer einfachen Abfrage hinzukommen, dann muss man halt wissen, warum man dort auf < 39600 testet.

                        Kommentar


                          #13
                          Zitat von udo1toni Beitrag anzeigen
                          Ja, so in etwa. Du kannst jsonpath auch direkt in einer Rule verwenden (die Syntax ist leicht anders, steht aber alles in der Doku) Du müsstest also nur ein Item definieren, in dem das JSON landet. Den Inhalt dieses Items verwendest Du dann in der Rule, um alle anderen Items zu befüllen.
                          https://docs.openhab.org/addons/tran....html#in-setup gibt zunächst ein Item an, in meinem Fall wird ja der Inhalt der Seite zwischengespeichert.

                          Hab versucht die Zeile wie folgt abzuändern:
                          Code:
                          val newValue = transform("JSONPATH", ".$.today.tMaxMax", wetter)
                          openHAB zeigt sich nicht kooperativ:
                          Code:
                          2018-05-18 21:01:38.398 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Test': The name 'wetter' cannot be resolved to an item or type; line 14, column 76, length 9
                          liegt wohl daran, dass "wetter" die zwischengespeicherte Seite ist und kein Item. Aber wo muss ich jetzt genau noch was ändern?
                          Zuletzt geändert von narf; 18.05.2018, 20:12.

                          Kommentar


                            #14
                            Ich bin mir nicht sicher, ob Du den http Cache aus der Rule heraus nutzen kannst. Der Einfachheit halber kannst Du aber ein String Item erzeugen, welches immer den Cache enthält. Aus dem Kopf:
                            Code:
                            String cacheWetter {http="<[wetter:60000:REGEX((.*))]"}
                            Außerdem hast Du im JSON-Path einen Punkt am Anfang, der da nicht hingehört.

                            Dann müsstest Du das neue Item im Aufruf verwenden:
                            Code:
                            val newValue = transform("JSONPATH", "$.today.tMaxMax", cacheWetter.state.toString)
                            Zuletzt geändert von udo1toni; 18.05.2018, 22:11.

                            Kommentar


                              #15
                              Vielen Dank! Bin wieder ziemlich weitergekommen
                              Möchte mit meiner Rule mehrere Daten auslesen. Hab nun bei jedem Datensatz mit "val newValue =" begonnen. Muss ich hier für jeden Datensatz eine eigene "val" nutzen?

                              Bei meiner Konstellation kommt dieser Fehler:
                              Code:
                              [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Test': An error occurred during the script execution: Cannot create a duplicate value 'newValue'.
                              Der erste Datensatz wird dann in das entsprechende Item geschrieben, aber weiter gehts net.

                              Kommentar

                              Lädt...
                              X