NEWS
Skripten des E-Control Spritpreisrechners
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
hast du im Parser wieder auf JSON retour gestellt?
ja
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Im Script hast du jeweils 5 Datenpunkte, aber angelegt hast du jeweils 9 Datenpunkte.
ja ich möchte 9 Tankstellen angezeigt bekommen.
aber ich bin schon den halben tag am Probieren......Ich hatte das Skript schon fertig für 9 Tankstellen.
nun habe ich das Skript gelöscht und noch mal mit von vorne begonnen.
Dafür habe ich im Skript nur 4 Werte eingetragen.......
Aber während dem ganzen probieren haben sich die 4 Werte nun doch eingetragen.....
also dachte ich perfekt dann kann ich weiter machen und habe noch zwei Datenpunkte im Skript ergänzt.
Wie schon vorhin werden die Daten nun wieder nicht mehr aktualisiert!!
Was mach ich FALSCH?
nochmal mein Skript//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // START SETUP: // finaler Inhalt der Datenpunkte: // 1 = name_preis | 2 = name_preis_plz_ort_strasse | 3 = (id_Preis_xx) name_preis & (id_Adresse_xx) PLZ_Ort_Strasse var InhaltDP = 3; // Datenpunktadressen vollständig eintragen (z.B."javascript.0.Aktueller_Spritpreis_01"), müssen manuell erstellt werden var id_Preis_01 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle1'/*Tankstelle1*/; var id_Preis_02 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle2'/*Tankstelle2*/; var id_Preis_03 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle3'/*Tankstelle3*/; var id_Preis_04 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle4'/*Tankstelle4*/; var id_Preis_05 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle5'/*Tankstelle5*/; var id_Preis_06 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle6'/*Tankstelle6*/; // Achtung, wurde oben bei "InhaltDP" 3 ausgewählt (Daten in 2 Felder gesplittet), dann müssen folgende Felder befüllt werden! // Datenpunktadressen vollständig eintragen (z.B."javascript.0.Aktueller_Spritpreis_Adresse_01"), müssen manuell erstellt werden var id_Adresse_01 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_1_Adresse_1'/*Tankstelle 1 Adresse 1*/; var id_Adresse_02 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_2_Adresse_2'/*Tankstelle 2 Adresse 2*/; var id_Adresse_03 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_3_Adresse_3'/*Tankstelle 3 Adresse 3*/; var id_Adresse_04 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_4_Adresse_4'/*Tankstelle 4 Adresse 4*/; var id_Adresse_05 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_5_Adresse_5'/*Tankstelle 5 Adresse 5*/; var id_Adresse_06 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle_6_Adresse_6'/*Tankstelle 6 Adresse 6*/; // Ende Setup ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////// // Eigentliches Script, ab hier nichts mehr ändern on({id: 'parser.0.Sprit'/*Sprit*/, change: 'any'}, function(obj) { // Variablen werden mit "" als objekt(string) deklariert, ohne "" als number: var pricehit_01 = "undefiniert"; var pricehit_address_01 = "undefiniert"; var pricehit_02 = "undefiniert"; var pricehit_address_02 = "undefiniert"; var pricehit_03 = "undefiniert"; var pricehit_address_03 = "undefiniert"; var pricehit_04 = "undefiniert"; var pricehit_address_04 = "undefiniert"; var pricehit_05 = "undefiniert"; var pricehit_address_05 = "undefiniert"; var pricehit_06 = "undefiniert"; var pricehit_address_06 = "undefiniert"; var index = 0; var gasStation = JSON.parse(obj.state.val); if (gasStation.length === 0) return; for (index = 0; index < gasStation.length; ++index) { // Variablen werden befüllt: pricehit_01 = gasStation[0].name + " € " + (gasStation[0].prices[0].amount).toString().replace(".",","); pricehit_address_01 = (gasStation[0].location.postalCode) + " " + (gasStation[0].location.city) + ", " + (gasStation[0].location.address); pricehit_02 = gasStation[1].name + " € " + (gasStation[1].prices[0].amount).toString().replace(".",","); pricehit_address_02 = (gasStation[1].location.postalCode) + " " + (gasStation[1].location.city) + ", " + (gasStation[1].location.address); pricehit_03 = gasStation[2].name + " € " + (gasStation[2].prices[0].amount).toString().replace(".",","); pricehit_address_03 = (gasStation[2].location.postalCode) + " " + (gasStation[2].location.city) + ", " + (gasStation[2].location.address); pricehit_04 = gasStation[3].name + " € " + (gasStation[3].prices[0].amount).toString().replace(".",","); pricehit_address_04 = (gasStation[3].location.postalCode) + " " + (gasStation[3].location.city) + ", " + (gasStation[3].location.address); pricehit_05 = gasStation[4].name + " € " + (gasStation[4].prices[0].amount).toString().replace(".",","); pricehit_address_05 = (gasStation[4].location.postalCode) + " " + (gasStation[4].location.city) + ", " + (gasStation[4].location.address); pricehit_06 = gasStation[5].name + " € " + (gasStation[5].prices[0].amount).toString().replace(".",","); pricehit_address_06 = (gasStation[5].location.postalCode) + " " + (gasStation[5].location.city) + ", " + (gasStation[5].location.address); } if (InhaltDP == 1) { //Name und Preis setState(id_Preis_01, pricehit_01); setState(id_Preis_02, pricehit_02); setState(id_Preis_03, pricehit_03); setState(id_Preis_04, pricehit_04); setState(id_Preis_05, pricehit_05); setState(id_Preis_06, pricehit_06); } if (InhaltDP == 2) { //Name, Preis und Adresse setState(id_Preis_01, pricehit_01 + " - " + pricehit_address_01); setState(id_Preis_02, pricehit_02 + " - " + pricehit_address_02); setState(id_Preis_03, pricehit_03 + " - " + pricehit_address_03); setState(id_Preis_04, pricehit_04 + " - " + pricehit_address_04); setState(id_Preis_05, pricehit_05 + " - " + pricehit_address_05); setState(id_Preis_06, pricehit_06 + " - " + pricehit_address_06); } if (InhaltDP == 3) { //1.Feld: Name, Preis 2.Feld: Adresse setState(id_Preis_01, pricehit_01); setState(id_Preis_02, pricehit_02); setState(id_Preis_03, pricehit_03); setState(id_Preis_04, pricehit_04); setState(id_Preis_05, pricehit_05); setState(id_Preis_06, pricehit_06); setState(id_Adresse_01, pricehit_address_01); setState(id_Adresse_02, pricehit_address_02); setState(id_Adresse_03, pricehit_address_03); setState(id_Adresse_04, pricehit_address_04); setState(id_Adresse_05, pricehit_address_05); setState(id_Adresse_06, pricehit_address_06); } log('Ende Spritvergleich'); });und im Log auch alles OK
javascript.0 2019-04-01 18:49:58.542 info script.js.common.Treibstoffpreise_1: registered 1 subscription and 0 schedules javascript.0 2019-04-01 18:49:58.537 info Start javascript script.js.common.Treibstoffpreise_1 javascript.0 2019-04-01 18:49:54.686 info Stop script script.js.common.Treibstoffpreise_1 javascript.0 2019-04-01 18:49:39.926 info Stop script script.js.common.Treibstoffpreise_1@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
Was mach ich FALSCH?
hat es beim 1. Versuch mit 9 Tankstellen funktioniert?
Eventuell liegt es an der API?
Auf spritpreisrechner.at werden auch nur die ersten 5 mit Preisen angezeigt.PS:
Eventuell liegt es an den Anführungszeichen.Bei mir sieht es so aus
var id_Preis_01 = "javascript.0.Sprit.Aktueller_Spritpreis_01";bei dir so
var id_Preis_01 = 'javascript.0.Treibstoffpreise.Benzin.Tankstelle1'Ich hab " und du hast '
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
hat es beim 1. Versuch mit 9 Tankstellen funktioniert?
nur beim ersten versuch mit 4...
dann haben sich die Werte nicht Aktualisiert! habe ich erst Später gemerkt
Danach habe ich auf 9 Tankstellen erweitert.....
ging nicht.die "" Zeichen habe ich auch schon geändert aber bringt nix....
werde aber noch mal probieren@Georgius sagte in Skripten des E-Control Spritpreisrechners:
Zeig mal die Einstellungen im Parseradapter

-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
hat es beim 1. Versuch mit 9 Tankstellen funktioniert?
nur beim ersten versuch mit 4...
dann haben sich die Werte nicht Aktualisiert! habe ich erst Später gemerkt
Danach habe ich auf 9 Tankstellen erweitert.....
ging nicht.die "" Zeichen habe ich auch schon geändert aber bringt nix....
werde aber noch mal probieren@Georgius sagte in Skripten des E-Control Spritpreisrechners:
Zeig mal die Einstellungen im Parseradapter

@SmarthomeMF
Ihr lieben,
ich habe diesen Thread nur eben quergelesen.
Wenn ich alles richtig verstanden habe sollte da doch vereinfachungspotential drin sein.Stimmt folgendes:
- Ihr holt euch bei der API einen URL
- wenn man diesen URL aufruft bekommt man "etwas" zurück
- dieses Etwas ist Info von 10 Tankstellen
und ihr wollt die Daten dazu in Datenpunkten haben?
Was genau ?Wenn das alles so stimmt:
kann mit jemand mal einen solchen URL geben -
@SmarthomeMF
Ihr lieben,
ich habe diesen Thread nur eben quergelesen.
Wenn ich alles richtig verstanden habe sollte da doch vereinfachungspotential drin sein.Stimmt folgendes:
- Ihr holt euch bei der API einen URL
- wenn man diesen URL aufruft bekommt man "etwas" zurück
- dieses Etwas ist Info von 10 Tankstellen
und ihr wollt die Daten dazu in Datenpunkten haben?
Was genau ?Wenn das alles so stimmt:
kann mit jemand mal einen solchen URL geben@Homoran sagte in Skripten des E-Control Spritpreisrechners:
kann mit jemand mal einen solchen URL geben
Ich schicks dir beim Chat
PS: bei mir funktioniert es mit Parser und Javascript.
Ich bekomme mit obigen Script 5 Tankstellen inkl. Adressen und Preisen. -
@Homoran sagte in Skripten des E-Control Spritpreisrechners:
kann mit jemand mal einen solchen URL geben
Ich schicks dir beim Chat
PS: bei mir funktioniert es mit Parser und Javascript.
Ich bekomme mit obigen Script 5 Tankstellen inkl. Adressen und Preisen.@Negalein
ich habe inzwischen einen URL erzeugt - weiß der Teufel wo das ist, ich bin keine Alpenländler.So ganz einfach wie ich es mir vorgestellt habe wird es fast nicht.
Ich hatte die Regionensuche bemüht und ein json zurückbekommen.
Das kann man wie ich es wollte schnell mit regex auseinandernehmen - ganz ohne javascript.Bedingung ist, die Reihenfolge in dem json bleibt unverändert, und man will nur wenige Stationen monitoren.
Dann kann mal alleine mit dem Parser mit wenigen Zeilen zu einem Ergebnis kommen.
-
@SmarthomeMF
Ich hab mir gerade die Ausgabe des Links in einem Editor angeschaut.Wie ich bereits vermutet habe, werden sowieso nur bei den ersten 5 billigsten Tankstellen die Preise angezeigt.
-
@Negalein
ich habe inzwischen einen URL erzeugt - weiß der Teufel wo das ist, ich bin keine Alpenländler.So ganz einfach wie ich es mir vorgestellt habe wird es fast nicht.
Ich hatte die Regionensuche bemüht und ein json zurückbekommen.
Das kann man wie ich es wollte schnell mit regex auseinandernehmen - ganz ohne javascript.Bedingung ist, die Reihenfolge in dem json bleibt unverändert, und man will nur wenige Stationen monitoren.
Dann kann mal alleine mit dem Parser mit wenigen Zeilen zu einem Ergebnis kommen.
Hier mal das Vorgehen:
Voraussetzung ist, dass sich die Reihenfolge bei den Abfragen NICHT ändert. sonst braucht es eine weitere Zeile je Tankstelle
URL und REGEX eingeben wie gehabt.

Name entspricht der Tankstelle
NUM ist die Position dieser Tankstelle im JSON (-1)fertig

-
@SmarthomeMF
Ich hab mir gerade die Ausgabe des Links in einem Editor angeschaut.Wie ich bereits vermutet habe, werden sowieso nur bei den ersten 5 billigsten Tankstellen die Preise angezeigt.
@Negalein
so ist es.
Heisst das , dass sich die Reihenfolge ändert?Dann muss jeweils eine weiter Zeile, gleicher URL, gleiche NUM mit Regex
me":"(\D+)","Typ Text
Der gibt dann den Namen der Tankstelle aus -
@SmarthomeMF
Ich hab mir gerade die Ausgabe des Links in einem Editor angeschaut.Wie ich bereits vermutet habe, werden sowieso nur bei den ersten 5 billigsten Tankstellen die Preise angezeigt.
Hallo, kann ich das auch haben? Wie bekomme ich die Url für meinen Ort heraus?
-
@Negalein
so ist es.
Heisst das , dass sich die Reihenfolge ändert?Dann muss jeweils eine weiter Zeile, gleicher URL, gleiche NUM mit Regex
me":"(\D+)","Typ Text
Der gibt dann den Namen der Tankstelle aus@Homoran sagte in Skripten des E-Control Spritpreisrechners:
Heisst das , dass sich die Reihenfolge ändert?
Ja!
Es werden 10 Tankstellen angezeigt, aber nur bei den 5 günstigsten scheint der Preis auf.
Siehe auch www.spritpreisrechner.at
Kannst ja mal meinen Ort (Schärding) eingeben. -
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Ja!
Es werden 10 Tankstellen angezeigt, aber nur bei den 5 günstigsten scheint der Preis auf.
Siehe auch www.spritpreisrechner.at
Kannst ja mal meinen Ort (Schärding) eingeben.ja ich brauche immer etwas länger....
habe es auch schon gemerkt.
Es sind 10 da aber nur 5 mit Preise.
Ich brauche aber mehr als die 5.
Aber mal schauen was da vom @Homoran noch kommt.
Ich bin froh für jede Lösung den ich kenne mich nicht aus.
Danke für die Tolle Arbeit! -
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Hallo, kann ich das auch haben? Wie bekomme ich die Url für meinen Ort heraus?
Dieser Link ist für meine Koordinaten. Und Treibstoff DIE (Diesel)!
https://api.e-control.at/sprit/1.0/search/gas-stations/by-address?latitude=XX.XXXXXX&longitude=XX.XXXXXX&fuelType=DIE&includeClosed=falseKoordinaten bekommst du hier raus.
Dann den erzeugten Link in Parser als JSON eintragen.
Datenpunkte unter javascript. erzeugen.
Script anpassen
fertig -
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Wie bekomme ich die Url für meinen Ort heraus?
wurde oben schon von den Kollegen genau beschrieben.
das habe sogar ich geschafft!
dann schaffst du das auch. -
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Ja!
Es werden 10 Tankstellen angezeigt, aber nur bei den 5 günstigsten scheint der Preis auf.
Siehe auch www.spritpreisrechner.at
Kannst ja mal meinen Ort (Schärding) eingeben.ja ich brauche immer etwas länger....
habe es auch schon gemerkt.
Es sind 10 da aber nur 5 mit Preise.
Ich brauche aber mehr als die 5.
Aber mal schauen was da vom @Homoran noch kommt.
Ich bin froh für jede Lösung den ich kenne mich nicht aus.
Danke für die Tolle Arbeit!@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
Ich brauche aber mehr als die 5.
Dann musst du mit 2 unterschiedlichen Gebieten/Links arbeiten.
Im Umkreis von deinen Koordinaten werden nur 5 mit Preisen angezeigt. -
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Wie bekomme ich die Url für meinen Ort heraus?
wurde oben schon von den Kollegen genau beschrieben.
das habe sogar ich geschafft!
dann schaffst du das auch.@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Wie bekomme ich die Url für meinen Ort heraus?
wurde oben schon von den Kollegen genau beschrieben.
das habe sogar ich geschafft!
dann schaffst du das auch.Ja, Danke überlesen........funktioniert schon, diese stehen ja eigentlich auch im Admin Adapter drinnen.
Welches ist jetzt das aktuelle Skript? -
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Ja!
Es werden 10 Tankstellen angezeigt, aber nur bei den 5 günstigsten scheint der Preis auf.
Siehe auch www.spritpreisrechner.at
Kannst ja mal meinen Ort (Schärding) eingeben.ja ich brauche immer etwas länger....
habe es auch schon gemerkt.
Es sind 10 da aber nur 5 mit Preise.
Ich brauche aber mehr als die 5.
Aber mal schauen was da vom @Homoran noch kommt.
Ich bin froh für jede Lösung den ich kenne mich nicht aus.
Danke für die Tolle Arbeit!@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
Aber mal schauen was da vom @Homoran noch kommt.
Ich kann auch nicht zaubern ;-)
Wenn da keine Preise verschickt werden, kann ich auch keine extrahieren.Mein Ansatz war nur alles ohne Javascript hinzubekommen.


-
@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Wie bekomme ich die Url für meinen Ort heraus?
wurde oben schon von den Kollegen genau beschrieben.
das habe sogar ich geschafft!
dann schaffst du das auch.Ja, Danke überlesen........funktioniert schon, diese stehen ja eigentlich auch im Admin Adapter drinnen.
Welches ist jetzt das aktuelle Skript?@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Welches ist jetzt das aktuelle Skript?
Das von @metaxa ist das aktuelle Script mit Preis, Name und Adresse.
-
@Homoran sagte in Skripten des E-Control Spritpreisrechners:
Ich kann auch nicht zaubern
wann dann doch du!!:grin:
ich bekomme nicht mal 5 aktualisiert! -
@Homoran sagte in Skripten des E-Control Spritpreisrechners:
Ich kann auch nicht zaubern
wann dann doch du!!:grin:
ich bekomme nicht mal 5 aktualisiert!@SmarthomeMF sagte in Skripten des E-Control Spritpreisrechners:
ich bekomme nicht mal 5 aktualisiert!
Dann versuch mal folgendes!
- stell im Parser wieder von JSON auf irgendwas anderes um
- lösch das Script
- lösch alle erstellten DP
- starte ioBroker neu
- erstell die DP
- erstell das Script
- stell im Parser wieder auf JSON um
-
@Homoran sagte in Skripten des E-Control Spritpreisrechners:
Ich kann auch nicht zaubern
wann dann doch du!!:grin:
ich bekomme nicht mal 5 aktualisiert!@SmarthomeMF
Ich kann halt auch nur rudimentär mit Blockly scripten.
Da wollte ich es mal nur mit dem Parser testen.mit C&P habe ich jetzt eine zweite Tankstelle in weniger als einer Minute angelegt.
Ich weiß nicht wie oft in A sich die Preise ändern, hier in D kann das schon im 10-Minutentakt passieren, aber laut Eröffnungspost habe ich das mal auf 3600000 Millisekunden (=1 Stunde) eingestellt.
Ob sich dann da etwas aktualisiert, aknn ich jetzt auch noch nicht sagen.