NEWS
Skripten des E-Control Spritpreisrechners
-
@klaus88 sagte in Skripten des E-Control Spritpreisrechners:
View 610_Sprit1 ist anbei ist "nur" die Kartendarstellung der Adresse:
Hi Klaus!
Danke dir.
Allerdings wird mir nichts angezeigt im Editor.
EDIT: hab das Widget noch nicht installiert.
-
@Negalein Ja sorry vergessen - du brauchst den "vis map Widgets" Adapter und dort ist es das OpenStreetMap Widget
-
Mit den Logos will es nicht ganz klappen.
So ist mein Script:
So kommen die Daten rein:
Logo müsste eigentlich 9 sein, wird aber 6 eingetragen.
Hab ich im Script einen Fehler?
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
Mit den Logos will es nicht ganz klappen.
Kannst du die Logos bitte mal reinstellen, finde sie nicht mehr.
-
@sigi234 sagte in Skripten des E-Control Spritpreisrechners:
Kannst du die Logos bitte mal reinstellen, finde sie nicht mehr.
-
Hab ich im Script einen Fehler?
Hallo!
Oje du hast einen Fehler in meinem Script gefunden, den ich nicht habe: Lagerhaus Genol hat ein Leerzeichen --> dadurch erkennt er nur Lagerhaus. Bitte probier mal, dass du im Array nicht "Lagerhaus Genol" schreibst sonder nur "Lagerhaus".
Vielleicht geht es dann! -
@klaus88 sagte in Skripten des E-Control Spritpreisrechners:
Bitte probier mal, dass du im Array nicht "Lagerhaus Genol" schreibst sonder nur "Lagerhaus".
bleibt leider beim Fehler
-
-
Nun ja da hast du ein paar echte Schmankerl drinnen in deinem Link:
einmal BP groß geschrieben - einmal Bp mit kleinem p
einmal "SB-Tankstelle Zauner" hier würde mein Script auch nur "SB-Tankstelle" auslesen
einmal "Land lebt auf Suben Gmbh" hier würde mein Script nur "Land" auslesenDa ich hier in Wien wohne haben wir eigentlich "nur" die großen Tankstellen und hier funktioniert eigentlich alles,
Wahrscheinlich musst du im Javascript beivar arrname = gasStation[index].name.split(' '); if (arrname.length > 0) { var markenname = arrname[0]; } else { var markenname = gasStation[index].name; }
etwas herumbasteln bzw. natürlich dann beim Array:
var arrMarke = ['Aral', 'eni', 'Shell', 'OMV', 'avanti', 'bp', 'JET', 'Turmöl', 'Genol', 'AVIA', 'A1', 'DISKONT'];
-
@klaus88 sagte in Skripten des E-Control Spritpreisrechners:
Nun ja da hast du ein paar echte Schmankerl drinnen in deinem Link:
Ja leider.
Wahrscheinlich musst du im Javascript bei
var arrname = gasStation[index].name.split(' '); if (arrname.length > 0) { var markenname = arrname[0]; } else { var markenname = gasStation[index].name; }
etwas herumbasteln
Wie geht das als JS-DAU?
bzw. natürlich dann beim Array:
OK, das hier schaff ich noch!
-
@Negalein Bin jetzt auf einer Party und gönne mir ein paar Bierchen - schaue es mir morgen an wenn das Kopfweh wieder weg ist - ok?
-
@klaus88 sagte in Skripten des E-Control Spritpreisrechners:
ok?
Klaro
Wünsch dir einen guten Rutsch und einen nicht zu großen Brummschädl!
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
var arrMarke = ['Aral', 'eni', 'Shell', 'OMV', 'avanti', 'bp', 'JET', 'Turmöl', 'Genol', 'AVIA', 'A1', 'DISKONT' 'IQ'];
Hallo Negalein,
Gutes neues Jahr vorab !
bin grad am versuchen:- Bitte vor dem letzten Eintrag im Array hast du den Beistrich vergessen --> ,'IQ'];
Beispiel jetzt von mir schnell eingegeben:
var arrMarke = ['Aral', 'eni', 'Shell', 'OMV', 'avanti', 'bp', 'JET', 'Turmöl', 'Genol', 'AVIA', 'A1', 'DISKONT', 'IQ', 'Lagerhaus', 'SB-Tankstelle'];
Dann bekomme ich folgendes Ergebnis:
Wie du siehst, kommt für Lagerhaus --> Logo 14 und für SB-Tankstelle --> Logo 15
Müsste eigentlich passen - probiers mal aus und sag Bescheid!
lg
Klaus -
noch was : Ich habe beim Widget nur maximal 15 Tankstellen eingegeben, da es mit Sicherheit bei uns nicht mehr gibt. D.h. wenn du im Array mehr als 15 eingibst müsstest du im Widget wo das Logo drinnen ist noch zusätzliche eingeben.:
lg
Klaus -
-
@Negalein sagte in Skripten des E-Control Spritpreisrechners:
DANKE, es klappt perfekt!
SUPER - das freut mich !
-
Mein Script pausiert (gelbes Pausesymbol) immer wieder mal.
Kann man irgendwie herausfinden warum dies passiert?
-
@Negalein Also da bin ich auch überfragt, aber ich glaube, dass es daran liegt, dass dieses Script auf Änderungen im Parser wartet und sobald sich laut Parser Daten etwas ändert sich das Script dann aktiviert.
-
Hi!
Sorry, bin neu und hätte das auch gerne.
Ich habe Parser installiert, den Api eingetragen und das Skript eingetragen.
Es werden aber keine Datenpunkte erstellt.
Was mache ich falls? Und gibt es ein Widget für vis?
Vielen Dank für die Hilfe
Jürgen'*/5 * * * *' ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // "Spritpreise_AT v.0.5" // // e-control Spritpreise // // ursprüngl. Script von steinejo_io vom // // // // Zwingend erforderlich sind der Parser Adapter und die URL aus der API. Links und Hilfe zum Erstellemn findet ihr im Folgenden Lnk: // // https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners // // Das manuelle Anlegen von Daenpunkten ist nicht mehr notwendig. erledigt das Script beim ersten Aufruf. // // Auf das "E" Zeichen habe ich verzichtet, da es in VIS genz einfach an der jeweils gewünschten Stelle produzierbar ist. // // // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj) { log("Start Spritvergleich"); var gasStation = JSON.parse(obj.state.val); if (gasStation.length === 0) return; //Aral=1, eni=2, Shell=3, OMV=4, avanti=5, bp=6, JET=7, Turmöl=8, Lagerhaus=9, AVIA=10, A1=11, Diskont=12, IQ=13 var arrMarke = ['Aral', 'eni', 'Shell', 'OMV', 'avanti', 'bp', 'JET', 'Turmöl', 'Lagerhaus', 'AVIA', 'A1', 'Diskont', 'IQ']; var i = 0; for (var i = 1; i <= 5; i++) { // console.log(i); // console.log("javascript.0.Sprit_AT.name_"+i); createState("javascript.0.Sprit_AT.Treffer_"+i+".Name_"+i, {type: "string", name: "Platz "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".Preis_"+i, {type: "string", name: "Platz "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".PreisP_"+i, {type: "string", name: "Platz "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".Strasse_"+i, {type: "string", name: "Platz "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".PLZ_Ort_"+i, {type: "string", name: "Platz "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".Logo_"+i, {type: "number", name: "Logo "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".Latitude_"+i, {type: "number", name: "Latitude "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".Longitude_"+i, {type: "number", name: "Longitude "+i, read: true, write: true}); createState("javascript.0.Sprit_AT.Treffer_"+i+".offen_"+i, {type: "boolean", name: "offen "+i, read: true, write: true}); } var index = 0; //for (index = 0; index < gasStation.length; ++index) { for (index = 0; index <= 4; ++index) { var arrname = gasStation[index].name.split(' '); if (arrname.length > 0) { var markenname = arrname[0]; } else { var markenname = gasStation[index].name; } var station = gasStation[index].name; setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Name_"+(index+1), gasStation[index].name); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Preis_"+(index+1), (gasStation[index].prices[0].amount).toString().replace(".",",")); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".PreisP_"+(index+1), (gasStation[index].prices[0].amount).toString().replace(".",".")); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Strasse_"+(index+1), (gasStation[index].location.address)); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".PLZ_Ort_"+(index+1), (gasStation[index].location.postalCode) + " " + (gasStation[index].location.city)); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Latitude_"+(index+1), (gasStation[index].location.latitude)); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Longitude_"+(index+1), (gasStation[index].location.longitude)); setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".offen_"+(index+1), (gasStation[index].open)); //Aral=1, eni=2, Shell=3, OMV=4, avanti=5, bp=6, JET=7, Turmöl=8, Lagerhaus=9, AVIA=10, A1=11, Diskont=12, IQ=13 var markennameklein=markenname.toLowerCase(); var x= 0; for (x=0; x < arrMarke.length; x++) { var arrMklein=arrMarke[x].toLowerCase(); //console.log("x=" + x + "/ Markennameklein =" + markennameklein + "/ Array =" + arrMklein); if (arrMklein == markennameklein) { setState("javascript.0.Sprit_AT.Treffer_"+(index+1)+".Logo_"+(index+1), (x+1)); } } } log("Ende Spritvergleich"); });
-
@jwedenig
ok, ich bin schon auf etwas draufgekommen, bei Parser muss natürlich "Spritpreisrechner" stehen, sonst werden die Datenpunkte nicht erzeugt.
Diese sind aber jetzt leer?