So unterschiedlich tickt die Welt...Ich sehe bei 1,199 immer 1,19, die kleine Neun nehme ich kaum war. Mathematisch hast du aber recht, es sind, wenn man es auf 2 Nachkommastellen kürzt, 1,20.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Spritpreise per HTTP-Binding und JSON
Einklappen
X
-
Gast
Hallo, Danke für die Beschreibung wie man die Tankerkönig API in OpenHAB nutzen kann.
Leider bekomme ich es anscheinend nicht hin das SSL richtig zu installieren (richtiger Ausdruck).
Musss ich die Beschreibung von mitch77 von einem bestimmten User aus durchführen?
Muss ich in einem bestimmten Verzeichnis sein?
Auf meinem Raspi (Raspbian GNU/ Linux 8) finde ich kein Verzeichnis jre/lib/security. (Java Version ist "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode))
Kann mir da jemand helfen?
Sorry bin neu auf dem Raspi und damit unter Linux ein Anfänger!
Der Part mit der Tankerkönig läuft aber sicher (u.a. in meiner eigenen Android App)
Danke
Zuletzt geändert von Gast; 29.01.2016, 17:07.
Kommentar
-
Gast
Lösung gefunden (wozu hat man "Schwiegerkinder" ), es war die fehlende Definition von JAVA_HOME und dann noch die fehlenden Root-Rechte für die Kommandos "Wget" und "Keytool". Ergo letztere Kommandos mit "sudo" ausführen wenn es nicht klappt!
Danke
Kommentar
-
Hallo, kann mir jemand sagen, wie ich die Preise auf den KNX Bus bekomme? Meine Visu läuft auf einem EibPort. Eigentlich dachte ich, ich könnte es über einen Job HTTP-Request direkt auf dem Eibport lösen. Hier bin ich leider gescheitert. Mit Openhab hat es auf Anhieb funktioniert. Nur habe ich keine Ahnung, wie ich die Werte auf meinen KNX Bus bekomme. Kann mir jemand helfen?
Danke im Voraus.
Gruß Mirko
Kommentar
-
Hallo, danke für die schnelle Antwort.
Ich habe jetzt folgendes probiert:
Code:Number diesel "Diesel [%.3f Euro]" { http="<[https://creativecommons.tankerkoenig.de/json/detail.php?id=e1a15081-2534-9107-e040-0b0a3dfe563c&apikey=Mein_Key:900000:JS(diesel.js)]", knx="16.000:7/7/0" }
Ergänzung: In der Log steht: DPT 16.000 is not supported by the KNX binding.
Kommentar
-
Vielleicht muss es DPT16.001 sein, die Hauptgruppe 16 ist jedenfalls im Sourcecode gelistet. Ansonsten könntest Du noch versuchen, ob Du die Zahl als Float auf den Bus bekommst. Eine Umwandlung in was auch immer sollte per Rule kein Problem sein, einfach auf Item diesel changed triggern und im then-Teil den umgewandelten Wert mit diesel_knx.sendCommand(wert) an das Item diesel_knx schicken (was natürlich passend mit dem knx Binding angelegt sein muss)
Kommentar
-
Danke für die Bemühungen, aber ich steige hier aus. Du hattest recht, DPT 16.001 funktioniert. Leider versteht der EibPort nur DPT 16.000 (also ASCII EIS 15).
Ich werde mich jetzt noch kurz mit dem Thema Rule beschäftigen, aber ob ich da durchsteige... Ich melde mich auf jeden Fall, wenn ich eine Lösung finde.
Danke!
Kommentar
-
Hallo an alle,
hat einer von euch die Preise mit der "prices.php" hinbekommen? Ich habe vorher wie auch die detail.php benutzt allerdings bin ich aufgefordert worden umzustellen auf die prices.php. Ich bekomme nun keine Werte mehr angezeigt.
Hier mein Item
Code:Number BenzinRiedelbach "Riedelbach[%.3f Euro]" <ED> (Benzin) { http="<[https://creativecommons.tankerkoenig.de/json/prices.php?ids=5039c7a7-ffe3-480f-8dd0-92c1797edea3&apikey=xxxxx-xxxxx-xxx-xxxxxxx-xx:300000:JS(benzin.js)]" }
Code:JSON.parse(input).prices.e5;
Code:2016-08-03 19:42:52.832 [ERROR] [.o.b.http.internal.HttpBinding] - transformation throws exception [transformation=JS(benzin.js), response={"ok":true,"license":"CC BY 4.0 - http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"5039c7a7-ffe3-480f-8dd0-92c1797edea3":{"status":"open","e5":1.219,"e10":1.199,"dies$ org.openhab.core.transform.TransformationException: An error occured while executing script. at org.openhab.core.transform.internal.service.JavaScriptTransformationService.transform(JavaScriptTransformationService.java:86) ~[na:na] at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:182) ~[na:na] at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:156) [org.openhab.core_1.8.0.201601052309.jar:na] at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:173) [org.openhab.core_1.8.0.201601052309.jar:na] Caused by: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: missing ; before statement (<Unknown source>#1) in <Unknown source> at line number 1 at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:224) ~[na:1.7.0_79] at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249) ~[na:1.7.0_79] at org.openhab.core.transform.internal.service.JavaScriptTransformationService.transform(JavaScriptTransformationService.java:84) ~[na:na] ... 3 common frames omitted Caused by: sun.org.mozilla.javascript.internal.EvaluatorException: missing ; before statement (<Unknown source>#1) at sun.org.mozilla.javascript.internal.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.DefaultErrorReporter.error(DefaultErrorReporter.java:96) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.addError(Parser.java:232) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.addError(Parser.java:210) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:267) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:254) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.reportError(Parser.java:247) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.autoInsertSemicolon(Parser.java:1111) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.statementHelper(Parser.java:1088) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.statement(Parser.java:945) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.parse(Parser.java:570) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Parser.parse(Parser.java:532) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Context.compileImpl(Context.java:2438) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Context.compileReader(Context.java:1355) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Context.compileReader(Context.java:1327) ~[na:1.7.0_79] at sun.org.mozilla.javascript.internal.Context.evaluateReader(Context.java:1166) ~[na:1.7.0_79] at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214) ~[na:1.7.0_79] ... 5 common frames omitted
Code:{"ok":true,"license":"CC BY 4.0 - http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K", "prices":{"5039c7a7-ffe3-480f-8dd0-92c1797edea3":{"status":"open","e5":1.259,"e10":1.239,"diesel":1.009}}}
Code:{"ok":true,"license":"CC BY 4.0 - http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"5039c7a7-ffe3-480f-8dd0-92c1797edea3":{"status":"closed"}}}
Viele Grüße
Torsten
Kommentar
-
So jetzt aber. Ich habe die Abfrage der Preise jetzt komplett von Items getrennt. Da fehlt zwar noch eine Fehlerabfrage, aber ....
Items. Ich habe sechs Tankstellen in meiner Liste, entsprechend auch 6 String Items definiert.
/Code:/ Items to show fuel prices in sitemap. Prices are obtained from internet site www.Tankerkoenig.de String OhVl_FuelStation1_Value "Günstigste Tankstelle [%s]" <scene_gas_station> String OhVl_FuelStation2_Value "2. Tankstelle [%s]" <scene_gas_station> String OhVl_FuelStation3_Value "3. Tankstelle [%s]" <scene_gas_station> String OhVl_FuelStation4_Value "4. Tankstelle [%s]" <scene_gas_station> String OhVl_FuelStation5_Value "5. Tankstelle [%s]" <scene_gas_station> String OhVl_FuelStation6_Value "6. Tankstelle [%s]" <scene_gas_station>
Code:Text item=OhVl_FuelStation1_Value { Text item=OhVl_FuelStation1_Value Text item=OhVl_FuelStation2_Value Text item=OhVl_FuelStation3_Value Text item=OhVl_FuelStation4_Value Text item=OhVl_FuelStation5_Value Text item=OhVl_FuelStation6_Value }
Code:rule "Check and display fuel prices" when Time cron "0 0/6 * * * ?" then val String Station01_ID = "3d8c2dfb-4612-4aff-8ae7-96e3f88eafe6" //Nordoel Uetersen val String Station02_ID = "1ceea95b-d46e-4159-91f6-71f57d612bdb" // Nordoel Elmshorn val String Station03_ID = "e1a15081-24e2-9107-e040-0b0a3dfe563c" // HEM Elmshorn val String Station04_ID = "005056ba-7cb6-1ed2-bceb-bc577a5e6d4e" // Star Elmshorn val String Station05_ID = "e1a15081-254f-9107-e040-0b0a3dfe563c" // HEM Wedel val String Station06_ID = "65c348cf-5ce7-4820-a24a-da0dbf816204" // SB Wedel val String API_Key = "xxxxxxxx" var String URL var String json var ArrayList<StringItem> FuelPriceItems = new ArrayList<StringItem>() var Map <String, Double> FuelPricesMap = new HashMap<String, Double>() var i = 0 // First read the fuel prices for defines stations URL= "https://creativecommons.tankerkoenig.de/json/prices.php?ids=" + Station01_ID + "," + Station02_ID + "," + Station03_ID + "," + Station04_ID + "," + Station05_ID + "," + Station06_ID + "&apikey=" + API_Key json = sendHttpGetRequest(URL) // The check if response is OK if (transform("JSONPATH", "$.ok", json) == "true") { // 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) FuelPriceItems.add(5, OhVl_FuelStation6_Value) // Assign actual prices and station name to map FuelPricesMap.put("Nordoel (Uetersen)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station01_ID + ".diesel", json))) FuelPricesMap.put("Nordoel (Elmshorn)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station02_ID + ".diesel", json))) FuelPricesMap.put("HEM (Elmshorn)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station03_ID + ".diesel", json))) FuelPricesMap.put("Star (Elmshorn)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station04_ID + ".diesel", json))) FuelPricesMap.put("HEM (Wedel)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station05_ID + ".diesel", json))) FuelPricesMap.put("SB (Wedel)", Double.parseDouble(transform("JSONPATH", "$.prices." + Station06_ID + ".diesel", json))) // Sort map by price an assign values from display array for (PriceEntry : FuelPricesMap.entrySet.sortBy[value]) { FuelPriceItems.get(i).postUpdate(String::format("%s - %.3f €", PriceEntry.getKey(), PriceEntry.getValue())) i = i+1 } logInfo("rule.internet", "Fuel prices updated sucessfull") } end
Wenn es Verbesserungen gibt z.B. Closed Anzeige oder bin ich natürlich daran interessiert.
Viel Spaß damit
Thomas
Kommentar
-
Wow, Danke!!!
Das werde ich gleich heute Abend nachbauen. Vielen lieben Dank.
Viele Grüße
Torsten
Edit: Folgende imports habe ich jetzt gefundenimport java.util.List
import java.util.ArrayList
import org.openhab.core.library.items.StringItem
import org.openhab.core.library.types.DecimalType
import java.util.Map
import java.util.HashMap- Couldn't resolve reference to JvmIdentifiableElement 'Double'.
- Couldn't resolve reference to JvmIdentifiableElement 'parseDouble'.Zuletzt geändert von toto1975; 05.08.2016, 13:54.
Kommentar
Kommentar