NEWS
Skripten des E-Control Spritpreisrechners
-
Hi,
ich habe mich auch länger damit beschäftigt. Ich versuchs mal aufzuschreiben:- Hier fängst an: API mach auf und lasse es offen
- von Wo bist zu Hause? holst du dir die Latitude und die Longitude
- unter 1) dann eintragen, auch welchen Sprit und ob offen oder zu (dazu rechts auf den Knopf drücken)
- "Execute" anklicken
- dann findest du das:
Mach mal!
LG, mxa -
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Habe mich jetzt doch etliche Stunden mit der Materie JS befaßt und festgestellt, wir sind realtiv inkompatibel. Somit blieb mir nur eine gewisse Grundlogik gepaart mit try&error. Nach vielen Misserfolgen kam die Freude:
wo sollen die Preistreffer kommen?????
Ich habe parser installiert, und er läutf mit der API vom Spritpreisrechner
Habe im Skript den parser eingetragen
und dann? -
Ich hab auch das Problem wie @SmarthomeMF
Habe im Parser den Link eingetragen.
https://api.e-control.at/sprit/1.0/search/gas-stations/by-address?latitude=XX.XXXXXX&longitude=XX.XXXXXX&fuelType=DIE&includeClosed=false
Scheint unter Objekte auch auf.
Aber in den Objekter scheint javascript.0.spritpreisrechner nicht auf.
Hab ich was übersehen?
Das Script hab ich so angepasst.
on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj) { var pricehit_01 = "undefiniert"; var pricehit_02 = "undefiniert"; var pricehit_03 = "undefiniert"; var pricehit_04 = "undefiniert"; var pricehit_05 = "undefiniert"; var index = 0; var gasStation = JSON.parse(obj.state.val); if (gasStation.length === 0) return; for (index = 0; index < gasStation.length; ++index) { pricehit_01 = gasStation[0].name + " " + (gasStation[0].prices[0].amount).toString().replace(".",",") + " €"; pricehit_02 = gasStation[1].name + " " + (gasStation[1].prices[0].amount).toString().replace(".",",") + " €"; pricehit_03 = gasStation[2].name + " " + (gasStation[2].prices[0].amount).toString().replace(".",",") + " €"; pricehit_04 = gasStation[3].name + " " + (gasStation[3].prices[0].amount).toString().replace(".",",") + " €"; pricehit_05 = gasStation[4].name + " " + (gasStation[4].prices[0].amount).toString().replace(".",",") + " €"; } setState("javascript.0.Spritpreisrechner.Preistreffer_01"/*Aktueller Spritpreis*/, pricehit_01); setState("javascript.0.Spritpreisrechner.Preistreffer_02"/*Aktueller Spritpreis*/, pricehit_02); setState("javascript.0.Spritpreisrechner.Preistreffer_03"/*Aktueller Spritpreis*/, pricehit_03); setState("javascript.0.Spritpreisrechner.Preistreffer_04"/*Aktueller Spritpreis*/, pricehit_04); setState("javascript.0.Spritpreisrechner.Preistreffer_05"/*Aktueller Spritpreis*/, pricehit_05); });
-
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
Ich habe parser installiert, und er läutf mit der API vom Spritpreisrechner
Ist doch schon ein großer Schritt in die richtige Richtung! Nur, wenn du dir deinen Datenpunkt unter Objekte parser.0.Sprit ansiehst, wird da außer true oder false nix drinnen stehen. Bitte prüfe das!
Weil,
du unter Typ boolen nicht wie im 1. Beitrag geschrieben "JSON" ausgewählt hast.@steinejo_io sagte in Skripten des E-Control Spritpreisrechners:
Name hab ich Spritpreisrechner vergeben - Rolle default - TYP JSON - und auch "Letztes Wert" anhaken dann geht euch euer Skript nicht hops wenn die E-Control mal nicht da ist.
Wenn du in deinem Datenpunkt einen sehr langen String stehen hast, dann machen wir mit
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
wo sollen die Preistreffer kommen?????
weiter!
LG, mxa -
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Ich hab auch das Problem wie @SmarthomeMF
Siehe meinen Beitrag von soeben an "SmarthomeMF"
LG, mxa
-
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Siehe meinen Beitrag von soeben an "SmarthomeMF"
Danke, habs auf JSON geändert und jetzt kommt auch der seeeehr lange String.
Aber unter javascript.0 scheint nichts auf.
-
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Wenn du in deinem Datenpunkt einen sehr langen String stehen hast, dann machen wir mit
Hab ich
-
ok, perfekt (Ich der große ioBroker Klugscheisser, hahahaha)
"Mein" Script beschreibt die von mir händisch - in meiner Struktur - angelegten Datenpunkte. Wenn ihr noch keine eigene Struktur habt oder wollt, dann müsst ihr bitte diese Zeilen
setState("a_andreas.0.eigene_dp.Spritpreisrechner.Preistreffer_01"/*Aktueller Spritpreis*/, pricehit_01); setState("a_andreas.0.eigene_dp.Spritpreisrechner.Preistreffer_02"/*Aktueller Spritpreis*/, pricehit_02); setState("a_andreas.0.eigene_dp.Spritpreisrechner.Preistreffer_03"/*Aktueller Spritpreis*/, pricehit_03); setState("a_andreas.0.eigene_dp.Spritpreisrechner.Preistreffer_04"/*Aktueller Spritpreis*/, pricehit_04); setState("a_andreas.0.eigene_dp.Spritpreisrechner.Preistreffer_05"/*Aktueller Spritpreis*/, pricehit_05);
abändern. Jeweils der Logik folgend in
setState("javascript.0.Aktueller_Spritpreis_01"/*Aktueller Spritpreis*/, pricehit_01); setState("javascript.0.Aktueller_Spritpreis_02"/*Aktueller Spritpreis*/, pricehit_02); usw.......
Was ich jeztz nicht weiß, ob JS die Datenpunkte automatisch auch anlegt. Unter JS kann man Datenpunkte auto nur nur in der JS Struktur anlegen, nicht wo anders.
Versucht es mal!
LG, mxa -
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Was ich jeztz nicht weiß, ob JS die Datenpunkte automatisch auch anlegt. Unter JS kann man Datenpunkte auto nur nur in der JS Struktur anlegen, nicht wo anders.
Hat leider nicht funktioniert.
Habs geändert in
setState("javascript.0.Aktueller_Spritpreis_01"/*Aktueller Spritpreis*/, pricehit_01); setState("javascript.0.Aktueller_Spritpreis_02"/*Aktueller Spritpreis*/, pricehit_02); setState("javascript.0.Aktueller_Spritpreis_03"/*Aktueller Spritpreis*/, pricehit_03); setState("javascript.0.Aktueller_Spritpreis_04"/*Aktueller Spritpreis*/, pricehit_04); setState("javascript.0.Aktueller_Spritpreis_05"/*Aktueller Spritpreis*/, pricehit_05);
doch unter javascript.0 scheint es nicht auf
wie könnte ich händisch die DP anlegen?
-
läuft bei mir auch nicht
irgendwas machen wir falsch! -
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
läuft bei mir auch nicht
hast du die DP unter javascript.0 händisch angelegt?
Geht das über den Expertenmodus und dann auf das "+"?
Wenn ja, was gehört bei Datenpunkttyp ausgewählt?
-
-
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Danke
Was gehört bei Datenpunkttyp ausgewählt?
-
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
irgendwas machen wir falsch!
Glaube ich nicht, ich denke der ParserDP hat sich nicht geändert. Ihr müßt eine Änderung erzwingen!
-
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
ich denke der ParserDP hat sich nicht geändert. Ihr müßt eine Änderung erzwingen!
wie
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Was gehört bei Datenpunkttyp ausgewählt?
-
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
ich denke der ParserDP hat sich nicht geändert. Ihr müßt eine Änderung erzwingen!
wie
Die Profis werden mich erschlagen ..... ich habe immer den Datentyp auf boolen umgeändert (so wie du es urspünglich falsch hattest) speichern, dann wurde der DP geändert, der String wieder weg. Dann wieder richtig auf JSON geändert und gespeichert, dann aktualisert er wieder. Darauf sollte dein Script reagieren.
Hm?
LG -
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Die Profis werden mich erschlagen ..... ich habe immer den Datentyp auf boolen umgeändert (so wie du es urspünglich falsch hattest) speichern, dann wurde der DP geändert, der String wieder weg. Dann wieder richtig auf JSON geändert und gespeichert, dann aktualisert er wieder. Darauf sollte dein Script reagieren.
DANKE, es funktioniert
-
@metaxa sagte in Skripten des E-Control Spritpreisrechners:
Darauf sollte dein Script reagieren.
PS: bitte melde dich, wenn du es geschafft hast, die Adresse anzeigen zu lassen.
Leider gibt es bei mir zB 2 Tankstellen, die gleich heißen, aber doch 30km auseinander sind.
Da wäre die Adresse (zumindest der Ort) sehr vorteilhaft. -
@Negalein fein!
Dann tue noch dem Kollegen "steinejo_io" ein positives Voting geben, er hat den Megaanteil daran!
LG, mxa