Ankündigung

Einklappen
Keine Ankündigung bisher.

Spritpreise per HTTP-Binding und JSON

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

    #61
    bei mir hat die Anzeige vom Spritpreisen einwandfrei funktioniert
    jetzt hab ich Java und Openhab updatet damit my openhab wieder geht. und jetzt geht die Spritanzeige nicht mehr alles andere geht wie gehabt
    liegt es an Java oder mache ich was falsch

    item
    Code:
      Number Diesel "Dieselpreis Aral  [%.3f Euro]"   <info>(gT){ http="<[https://creativecommons.tankerkoenig.de/json/detail.php?id=65668300-e216-46cc-97d6-e9774bdacb47&apikey=******:100000:JS(diesel.js)]" }
    sitemap
    Code:
       Frame label="Tanken" { Text item=Diesel icon="chart"
      
       
         {Webview url="http://www.tankerkoenig.de/detail.php?id=65668300-e216-46cc-97d6-e9774bdacb47" height=20}  
           }
    diesel.js
    Code:
      JSON.parse(input).station.diesel;

    Kommentar


      #62
      Hallo Thomas

      leider bekomme ich im Designer eine Fehlermeldung. Bei der Zeile
      Code:
      var ArrayList<StringItem> FuelPriceItems =  new ArrayList<StringItem>()
      bekomme ich den Fehler
      Code:
      - Couldn't resolve reference to JvmType 'ArrayList'.
      - Couldn't resolve reference to JvmType 'StringItem'.
      - Couldn't resolve reference to JvmConstructor 'ArrayList'
      Auch bei
      Code:
      // Assign display items to array
              FuelPriceItems.add(0, OhVl_FuelStation1_Value)
              FuelPriceItems.add(1, OhVl_FuelStation2_Value)
              FuelPriceItems.add(2, OhVl_FuelStation3_Value)
              FuelPriceItems.add(3, OhVl_FuelStation4_Value)
              FuelPriceItems.add(4, OhVl_FuelStation5_Value)
      bekomme ich folgende Fehler:
      Code:
      Multiple markers at this line
      - This expression is not allowed in this context, since it doesn't
         cause any side effects.
      - Couldn't resolve reference to JvmIdentifiableElement 'add'.
      Das Log gibt mir folgenden Fehler:
      Code:
      2016-08-05 13:15:49.202 [INFO ] [c.internal.ModelRepositoryImpl] - Refreshing model 'tank.rules'
      2016-08-05 13:18:00.250 [ERROR] [.o.m.r.i.engine.ExecuteRuleJob] - Error during the execution of rule Check and display fuel prices
      java.lang.NullPointerException: null
              at org.eclipse.xtext.common.types.util.JavaReflectAccess.getRawType(JavaReflectAccess.java:107) ~[na:na]
              at org.eclipse.xtext.common.types.util.JavaReflectAccess.getConstructor(JavaReflectAccess.java:90) ~[na:na]
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateConstructorCall(XbaseInterpreter.java:511) ~[na:na]
              at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) ~[na:na]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
              at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
              at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateVariableDeclaration(XbaseInterpreter.java:601) ~[na:na]
              at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source) ~[na:na]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
              at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
              at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
              at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateBlockExpression(XbaseInterpreter.java:321) ~[na:na]
      Ich denke mir fehlen hier noch verschiedene imports. Ich habe nur die üblichen verdächtigen
      Code:
      import org.openhab.core.library.types.*
      import org.openhab.core.types.*
      import org.openhab.core.library.types.DecimalType
      import org.eclipse.xtext.xbase.lib.*
      Welcher Import fehlt mir hier noch?

      Danke und Gruß
      Torsten

      Kommentar


        #63
        Hallo @djuscha

        schau doch bitte mal ob dein API-Key gesperrt worden ist da du auch die detail.php in deinen Link nutzt.

        Zitat Tankerkönig
        mit Deinem API-Key werden per detail.php Preisupdates gemacht.

        Damit gibt es diese Probleme:
        1. unnötig viele Daten werden gesucht und übertragen
        2. Anstatt einem Aufruf für alle Stationen sind viele Einzelaufrufe nötig.

        Bei deinem Client kommt dazu, dass das detail.php-Skript für einige Tanken mehrfach aufgerufen wird.

        Es gibt seit einiger Zeit das neue Skript prices.php, mit dem diese Probleme gelöst werden.


        Prinzip:
        1. Der Client muss eine Liste der IDs vorhalten (das macht er ja schon)
        2. statt alle Tankstellen einzeln per detail.php abzufragen einfach per prices.php alle ids übergeben
        3. JSON-Antwort unseres Servers parsen.
        4. Preise anzeigen.

        Details der Tankstellen (Adresse, Name, Öffnungszeiten) einmal täglich und/oder bei Systemstart holen.
        Deswegen stelle ich auch um auf die Lösung von Thomas.

        Ruf einfach mal deine URL im Browser auf

        Gruß
        Torsten

        Kommentar


          #64
          es funktioniert über Browser. und es funktioniert mit meiner alter Installation. hab das neue auf der neuer sd karte gemacht
          so sieht das über Browser
          Code:
           
           {"status":"ok","ok":true,"license":"CC BY 4.0 -  http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","station":{"id":"65668300-e216-46cc-97d6-e9774bdacb47","name":"Aral Tankstelle","brand":"ARAL","street":"Leuschner Stra\u00dfe","houseNumber":"81","postCode":34134,"place":"Kassel","openingTimes":[{"text":"Mo-Fr","start":"05:00:00","end":"23:00:00"},{"text":"Samstag, Sonntag","start":"06:00:00","end":"23:00:00"}],"overrides":[],"wholeDay":false,"isOpen":true,"e5":1.329,"e10":1.309,"diesel":1.099,"lat":51.29127,"lng":9.45569,"state":null}}

          Kommentar


            #65
            Ich noch mal,

            leider komme ich hier nicht weiter... :-|

            Der Designer zeigt mir immer noch die Fehlermeldung
            Code:
            Couldn't resolve reference to JvmIdentifiableElement 'Double'
            bei den Zeilen
            Code:
            FuelPricesMap.put("Riedelbach",        Double.parseDouble(transform("JSONPATH",  "$.prices." + Station01_ID + ".diesel", json)))
                    FuelPricesMap.put("Brombach",        Double.parseDouble(transform("JSONPATH",  "$.prices." + Station02_ID + ".diesel", json)))
                    FuelPricesMap.put("Neu-Anspach",    Double.parseDouble(transform("JSONPATH",  "$.prices." + Station03_ID + ".diesel", json)))
                    FuelPricesMap.put("Emmershausen",   Double.parseDouble(transform("JSONPATH",  "$.prices." + Station04_ID + ".diesel", json)))
                    FuelPricesMap.put("Bad Camberg",    Double.parseDouble(transform("JSONPATH",  "$.prices." + Station05_ID + ".diesel", json)))
            Ich hab jetzt mal Openhab im Debug Modus gestartet und sehe dort im Log noch folgende Infos:
            Code:
            14:48:00.289 [DEBUG] [.JSonPathTransformationService:45   ] - transformation resulted in 'true'
            14:48:00.551 [ERROR] [.o.m.r.i.engine.ExecuteRuleJob:57   ] - Error during the execution of rule Check and display fuel prices
            java.lang.RuntimeException: The name 'Double' cannot be resolved to an item or type.
                    at org.openhab.model.script.interpreter.ScriptInterpreter.internalFeatureCallDispatch(ScriptInterpreter.java:67) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateAbstractFeatureCall(XbaseInterpreter.java:658) ~[na:na]
                    at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source) ~[na:na]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
                    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
                    at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateMemberFeatureCall(XbaseInterpreter.java:545) ~[na:na]
                    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source) ~[na:na]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
                    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
                    at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:751) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._featureCallOperation(XbaseInterpreter.java:712) ~[na:na]
                    at sun.reflect.GeneratedMethodAccessor45.invoke(Unknown Source) ~[na:na]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
                    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
                    at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
                    at org.openhab.model.script.interpreter.ScriptInterpreter.internalFeatureCallDispatch(ScriptInterpreter.java:69) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateMemberFeatureCall(XbaseInterpreter.java:549) ~[na:na]
                    at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source) ~[na:na]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
                    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
                    at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateBlockExpression(XbaseInterpreter.java:321) ~[na:na]
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_79]
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_79]
                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_79]
                    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_79]
                    at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:218) ~[na:na]
                    at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._evaluateIfExpression(XbaseInterpreter.java:329) ~[na:na]
                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_79]
                    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_79]
            Leider komme ich hier nicht weiter :-(

            @dibbler42
            Kannst du mir bitte noch sagen welche Imports du verwendet hast?

            Vielen Dank und Gruß
            Torsten

            Kommentar


              #66
              Moin Torsten,

              ich nutze OH2 und habe die folgenden Imports:

              import java.util.ArrayList
              import java.util.Map
              import java.util.HashMap

              Versuche mal den vollqualifizierten Zugriff java.lang.Double.parseDouble()

              Thomas


              Kommentar


                #67
                Hallo,

                leider kein Erfolg... ich werde es wohl über die alte Version und dem Cache lösen müssen

                Danke aber für die Hilfe

                Viele Grüße
                Torsten

                Kommentar


                  #68
                  und wenn Du mal versuchst import java.lang.Double einzubauen?

                  Kommentar


                    #69
                    @toto1975 das alte geht aber auch nicht mehr

                    Kommentar


                      #70
                      Hallo in die Runde,


                      ich habe es jetzt so gelöst mit der prices.php:

                      In die openhab.cfg für das HTTP Binding folgende einträge:
                      Code:
                      http:tankstellen.url=https://creativecommons.tankerkoenig.de/json/prices.php?ids=deine_ID_für_die_erste_TS,deine_ID_für_die_zweite_TS,usw&apikey=dein_APIKey
                      http:tankstellen.updateInterval=300000
                      Damit werden die Preise nur alle 5 Minuten von der Seite abgerufen und im Cache gespeichert

                      items
                      Code:
                      Number BenzinRiedelbach     "Riedelbach: [%.3f Euro]"             <ED>                (Benzin)            { http="<[tankstellen:180000:JSONPATH($.prices.5039c7a7-ffe3-480f-8dd0-92c1797edea3.e5)]" } //für e5
                      String BenzinRiedelbach_a    "Riedelbach: [%s]"                    <ED>                                    { http="<[tankstellen:180000:JSONPATH($.prices.5039c7a7-ffe3-480f-8dd0-92c1797edea3.status)]" } //status der Tankstelle (geöffnet oder geschlossen
                      Number BenzinRiedelbach_E10    "Riedelbach E10: [%.3f Euro]"         <ED>                (Benzin)            { http="<[tankstellen:180000:JSONPATH($.prices.5039c7a7-ffe3-480f-8dd0-92c1797edea3.e10)]" } //für e10
                      Number BenzinRiedelbach_D    "Riedelbach Diesel: [%.3f Euro]"     <ED>                (Benzin)            { http="<[tankstellen:180000:JSONPATH($.prices.5039c7a7-ffe3-480f-8dd0-92c1797edea3.diesel)]" } //für Diesel
                      Alle Abfragen werden nur über den Cache durchgeführt. Wichtig ist hier auf die korrekte Tankstellen ID zu achten also prices.TANKSTELLENID.SORTE


                      Sitemap
                      Code:
                      Frame label="Benzin Preise"{
                              Text item=BenzinRiedelbach visibility=[BenzinRiedelbach_a==open]{
                                  Text item=BenzinRiedelbach_E10 visibility=[BenzinRiedelbach_a==open]
                                  Text item=BenzinRiedelbach_D visibility=[BenzinRiedelbach_a==open]
                              }
                             Text item=BenzinRiedelbach_a visibility=[BenzinRiedelbach_a==closed]
                      }
                      Wenn die Tankstelle geöffnet hat wird mir als erstes der Preis für e5 angezeigt. Mit einen Klick bekomme ich auf einer neuen Seite die Preise für E10 und Diesel angezeigt.Ist die Tankstelle geschlossen sehe ich dies auch sofort.

                      Wenn ich die Preise abspeichern möchte ist es über die Gruppe Benzin auch möglich

                      Viele Grüße
                      Torsten

                      Kommentar


                        #71
                        toto1975 Danke so hab ich jetzt auch gemacht! klappt super , und hab meinen Fehler gefunden es lag am fehlenden Zertifikat Post 16

                        Kommentar


                          #72
                          Hallo,

                          ich bin mit meiner config auf eine VM umgezogen.
                          jetzt besteht das Problem das ich den Zertifikat Fehler bekomme.

                          Code:
                          2016-08-23 12:23:02.460 [ERROR] [g.openhab.io.net.http.HttpUtil] - Fatal transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                          2016-08-23 12:23:02.460 [ERROR] [.o.b.http.internal.HttpBinding] - No response received from 'tankstelle1Cache
                          Habe das Zertifikat auch installiert aber es funktioniert immer noch nicht.

                          Hat jemand vielleicht eine Idee was das Sein könnte.

                          Kommentar


                            #73
                            hast du den Zertifikat in den richtigen Ordner installiert? Java Ordner?

                            Kommentar


                              #74
                              An sich denke ich schon, bin mir da aber jetzt gerade nicht so sicher.
                              Denn der Befehl cd $JAVA_HOME funktioniert bei mir nicht.
                              Also habe ich so die Verzeichnis Struktur so gesucht. Und die Installation durchgeführt.
                              Aber ob ich da richtig war kann ich nicht sagen.
                              Es ist die aktuelle Ubuntu Version...

                              Kommentar


                                #75
                                cd $JAVA_HOME ging bei mir auch nicht hab auch selber java verzeichniss gesucht und so installiert .Ich hab Raspberry.

                                Kommentar

                                Lädt...
                                X