Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Skripten des E-Control Spritpreisrechners

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

Skripten des E-Control Spritpreisrechners

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptmonitoring
292 Beiträge 21 Kommentatoren 45.7k Aufrufe 16 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S steinejo_io

    Hallo die Community,

    habe mir ein wenig die Schnittstelle der e-control für den Spritpreisrechner in Österreich angesehen.
    In der Praxis kann die Plattform nicht wahnsinnig viel aber umso einfacher könnte man die Sachen für VIS oder Alexa2 Sprachausgabe parsen.

    Auf der API Seite der E-Control kann man sich "seine" eigene URL ohne viel Mühe zusammenbasteln.
    https://api.e-control.at/sprit/1.0/doc/index.html?url=https://api.e-control.at/sprit/1.0/api-docs%3Fgroup%3Dpublic-api

    Eigentlich muss man nur noch Längen und Breitengrad recherchieren bspw. auf https://www.latlong.net/ und kann mit Try it Out die URL erstellen.

    Die URL dann einfach in den Parseradapter eintragen - sinnvoller Aktualisierungswert liegt bei ein oder zwei Stunden am Wochenende sogar ein halber Tag! (NICHT BEI 5 Sekunden! ;))

    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.

    Dann kann man per Skript bei Änderung durch die Daten durchgehen und die Werte dann wegschreiben.
    Ich habe hier Testweise nach meiner "Stammtankstelle" gesucht und mir einfach einen State mit dem Preis angelegt.

    on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj)
    {
        var price = "undefiniert"
        var gasStation = JSON.parse(obj.state.val);
        if (gasStation.length === 0) return;
        
        for (index = 0; index < gasStation.length; ++index) {
    
       if (gasStation[index].name == "avanti - Wien Neuhaufenstraße 148") {
            
        price = (gasStation[index].prices[0].amount).toString().replace(".",",");
       
        }
    
        
        }
       setState("javascript.0.Aktueller_Spritpreis"/*Aktueller Spritpreis*/, price);
    });
    

    Die günstigste Tankstelle könnte man sich mit folgender Zeile darstellen

    gasStation[0].name + " " + (gasStation[0].prices[0].amount).toString().replace(".",",") + " €"
    
    

    Ja das Script ist ausbaufähig - aber "It compiles so lets sell it ;)"

    Hoffe man kann meinen Input weiterverwenden

    metaxaM Offline
    metaxaM Offline
    metaxa
    schrieb am zuletzt editiert von metaxa
    #4

    Hallo!
    Zuerst: lieben Dank für deine Arbeit, hatte ich auch schon lange gesucht und nicht den geringsten Ansatz:

    Meinem Vorschreiber möchte ich mich anschließen. Ich habe deine Scriptzeilen studiert, ich denke teilweise behirnt, bin aber unfähig irgendwas funktionales anzupassen. Dafür hab mich mal an das Zerlegen der JSON gemacht und folgendes festgestellt:

    • Die Daten kommen schon vorsortiert von 1 -10 (Datenpunkt "position"), hießt man bräuchte "nur" auslesen und in Datenpunkte wegschreiben.

    Das Blöde ist nur, der Datenpunkt "position" ist erst kurz vor "amount" und der Namen, sowie die Adresse der Tankstelle einige Datenpunkte davor.

    Mich würden z.B. auch nur die ersten 5 Treffer interessieren. Ich habe nur 0 Ahnung wie man im Javascript um paar Werte nach vone springt?

    if (gasStation[index].position== "1") {
     *jetzt hüpfe zurück auf das nächste Feld "name" und liefere mir den namen und die Adresse, dann geh weiter runter und liefere mir:*
     price = (gasStation[index].prices[0].amount).toString().replace(".",",");
    }
    

    Als Ergebnis würde ich mir zu füllende Datenpunkte wünschen wie

    setState("javascript.0.Aktueller_Spritpreis_Hit_01"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
    setState("javascript.0.Aktueller_Spritpreis_Hit_02"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
    setState("javascript.0.Aktueller_Spritpreis_Hit_03"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
    *...... bis 05*
    

    Die JSON Ausgabe sieht bei mir so aus:

    [{"id":4308,"name":"Diskont Tankstelle","location":{"address":"Breitenfurter Strasse 261 (\"Hofer-Parkplatz\")","postalCode":"1230","city":"Wien","latitude":48.1506803,"longitude":16.3016662},"contact":{"telephone":"43800202055","mail":"office@fe-trading.at","website":"http://www.diskonttanken.at/"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":true},"paymentMethods":{"cash":false,"debitCard":true,"creditCard":true,"others":"DKV-Card"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":1,"open":true,"distance":3.5753605966901376,"prices":[{"fuelType":"DIE","amount":1.156,"label":"Diesel"}]},{"id":33381,"name":"A1 Tankstelle Wien-Endresstraße","location":{"address":"Endresstraße 69","postalCode":"1230","city":"Wien","latitude":48.1486138,"longitude":16.2777595},"contact":{"telephone":"4318860846","fax":"4318860913","mail":"zentrale@a1-tankstellen.at","website":"http://www.a1-tankstellen.at"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"07:00","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"07:00","to":"21:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":2,"open":true,"distance":1.9218480976993273,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":1354794,"name":"JET TANKSTELLE","location":{"address":"KETZERGASSE 208","postalCode":"1230","city":"WIEN","latitude":48.130709,"longitude":16.289516},"contact":{"telephone":"018650713"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"05:30","to":"23:30"},{"day":"DI","label":"Dienstag","order":2,"from":"05:30","to":"23:30"},{"day":"MI","label":"Mittwoch","order":3,"from":"05:30","to":"23:30"},{"day":"DO","label":"Donnerstag","order":4,"from":"05:30","to":"23:30"},{"day":"FR","label":"Freitag","order":5,"from":"05:30","to":"23:30"},{"day":"SA","label":"Samstag","order":6,"from":"05:30","to":"23:30"},{"day":"SO","label":"Sonntag","order":7,"from":"05:30","to":"23:30"},{"day":"FE","label":"Feiertag","order":8,"from":"05:30","to":"23:30"}],"offerInformation":{"service":false,"selfService":true,"unattended":true},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true},"paymentArrangements":{"cooperative":false,"clubCard":false},"otherServiceOffers":"Autowäsche, Billa shop & shop, Backshop, Vignetten-Verkauf","position":3,"open":true,"distance":2.5037988374142626,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":33395,"name":"A1 Tankstelle Perchtoldsdorf","location":{"address":"Ketzergasse 191a","postalCode":"2380","city":"Perchtoldsdorf","latitude":48.1301731,"longitude":16.2919418},"contact":{"telephone":"4318674570","fax":"4318674804","mail":"zentrale@a1-tankstellen.at","website":"http://www.a1-tankstellen.at/"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"07:00","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"07:00","to":"21:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA, DKV"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":4,"open":true,"distance":2.693645361693586,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":1038190,"name":"Turmöl","location":{"address":"Breitenfurterstrasse 473","postalCode":"1230","city":"Wien","latitude":48.1378231,"longitude":16.257528},"contact":{"telephone":"4318860647","website":"http://www.doppler.at"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":5,"open":true,"distance":0.0019099423292094483,"prices":[{"fuelType":"DIE","amount":1.163,"label":"Diesel"}]},{"id":1354893,"name":"OMV - Wien Speisinger Straße 228","location":{"address":"Speisinger Strasse 228","postalCode":"1232","city":"Wien","latitude":48.15489,"longitude":16.2711},"contact":{"telephone":"18887229","fax":"1888722913","mail":"retail.at.7505@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:30","to":"21:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:30","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:30","to":"21:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"OMV STATIONSKARTE, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":6,"open":true,"distance":2.1487569498351693,"prices":[]},{"id":247975,"name":"eni","location":{"address":"Breitenfurter Str. 325-327","postalCode":"1230","city":"Wien","latitude":48.14312,"longitude":16.29248},"contact":{"telephone":"018690303","fax":"018657360"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"AMEX,Maestro,Diners Club,DKV,GUTS,MasterCard,Routex,UTA,VISA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":7,"open":true,"distance":2.6607127321589514,"prices":[]},{"id":1354920,"name":"OMV - Wien Brunner Straße 77-79","location":{"address":"Brunner Strasse 77-79","postalCode":"1230","city":"Wien","latitude":48.13342,"longitude":16.29849},"contact":{"telephone":"18695856","fax":"1869585613","mail":"retail.at.7554@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"00:00","to":"24:00"},{"day":"DI","label":"Dienstag","order":2,"from":"00:00","to":"24:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"00:00","to":"24:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"00:00","to":"24:00"},{"day":"FR","label":"Freitag","order":5,"from":"00:00","to":"24:00"},{"day":"SA","label":"Samstag","order":6,"from":"00:00","to":"24:00"},{"day":"SO","label":"Sonntag","order":7,"from":"00:00","to":"24:00"},{"day":"FE","label":"Feiertag","order":8,"from":"00:00","to":"24:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX, OMV STATIONSKARTE"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":8,"open":true,"distance":3.080965956484636,"prices":[]},{"id":247819,"name":"eni","location":{"address":"Feldstraße 44","postalCode":"2345","city":"Brunn/Geb.","latitude":48.122997,"longitude":16.293216},"contact":{"telephone":"02236378873","fax":"0223637887313"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"00:00","to":"24:00"},{"day":"DI","label":"Dienstag","order":2,"from":"00:00","to":"24:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"00:00","to":"24:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"00:00","to":"24:00"},{"day":"FR","label":"Freitag","order":5,"from":"00:00","to":"24:00"},{"day":"SA","label":"Samstag","order":6,"from":"00:00","to":"24:00"},{"day":"SO","label":"Sonntag","order":7,"from":"00:00","to":"24:00"},{"day":"FE","label":"Feiertag","order":8,"from":"00:00","to":"24:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"AMEX,Maestro,Diners Club,DKV,GUTS,MasterCard,Routex,UTA,VISA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":9,"open":true,"distance":3.1223737662403592,"prices":[]},{"id":423,"name":"OMV - Perchtoldsdorf Brunner Gasse 48","location":{"address":"Brunner Gasse 48","postalCode":"2380","city":"Perchtoldsdorf","latitude":48.11554,"longitude":16.27169},"contact":{"telephone":"18691300","fax":"1869130013","mail":"retail.at.8536@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"07:00","to":"20:00"},{"day":"SO","label":"Sonntag","order":7,"from":"08:00","to":"20:00"},{"day":"FE","label":"Feiertag","order":8,"from":"08:00","to":"20:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"OMV STATIONSKARTE, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":10,"open":true,"distance":2.6945233440437857,"prices":[]}]
    

    Kann mir da bitte jemand weiterhlefen?
    LG und Danke im Voraus, mxa

    metaxaM 1 Antwort Letzte Antwort
    0
    • MyzerATM Offline
      MyzerATM Offline
      MyzerAT
      schrieb am zuletzt editiert von
      #5

      @steinejo_io sagte in Skripten des E-Control Spritpreisrechners:

      on({id: "parser.0.Spritpreisrechner"/Spritpreisrechner/, change: 'any'}, function(obj)

      das wäre echt toll, wenn man für uns össis auch so was wie spritpreise üeber den iobroker erfahren könnte

      lg Rudi

      Master Debian 12 (Wien)
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

      Slave Debian 12. (TULLN) --> OpenVPN to Vienna
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

      Node 20.19.0
      Nodejs 20.19.0
      npm 10.8.2
      js-controller 7.0.6

      1 Antwort Letzte Antwort
      0
      • NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        schrieb am zuletzt editiert von
        #6

        @steinejo_io

        Hallo

        Super dass du ein Script dazu zur Verfügung stellst.
        Hab ich schon sehnlichst gehofft, dass es jemand umsetzt.
        Danke

        Leider ist Javascript für mich nur copy/paste.

        Wäre toll, wenn du es etwas erklären könntest, wo wir was an deinem Script anpassen müssen,
        um die billigsten 5 Tankstellen darstellen zu können.

        Danke

        ° Node.js: 20.17.0 NPM: 10.8.2
        ° Proxmox, Ubuntu 22.04.3 LTS
        ° Fixer ---> iob fix

        1 Antwort Letzte Antwort
        0
        • metaxaM metaxa

          Hallo!
          Zuerst: lieben Dank für deine Arbeit, hatte ich auch schon lange gesucht und nicht den geringsten Ansatz:

          Meinem Vorschreiber möchte ich mich anschließen. Ich habe deine Scriptzeilen studiert, ich denke teilweise behirnt, bin aber unfähig irgendwas funktionales anzupassen. Dafür hab mich mal an das Zerlegen der JSON gemacht und folgendes festgestellt:

          • Die Daten kommen schon vorsortiert von 1 -10 (Datenpunkt "position"), hießt man bräuchte "nur" auslesen und in Datenpunkte wegschreiben.

          Das Blöde ist nur, der Datenpunkt "position" ist erst kurz vor "amount" und der Namen, sowie die Adresse der Tankstelle einige Datenpunkte davor.

          Mich würden z.B. auch nur die ersten 5 Treffer interessieren. Ich habe nur 0 Ahnung wie man im Javascript um paar Werte nach vone springt?

          if (gasStation[index].position== "1") {
           *jetzt hüpfe zurück auf das nächste Feld "name" und liefere mir den namen und die Adresse, dann geh weiter runter und liefere mir:*
           price = (gasStation[index].prices[0].amount).toString().replace(".",",");
          }
          

          Als Ergebnis würde ich mir zu füllende Datenpunkte wünschen wie

          setState("javascript.0.Aktueller_Spritpreis_Hit_01"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
          setState("javascript.0.Aktueller_Spritpreis_Hit_02"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
          setState("javascript.0.Aktueller_Spritpreis_Hit_03"/*Aktueller Spritpreis*/, open, name, location/adress, amount,);
          *...... bis 05*
          

          Die JSON Ausgabe sieht bei mir so aus:

          [{"id":4308,"name":"Diskont Tankstelle","location":{"address":"Breitenfurter Strasse 261 (\"Hofer-Parkplatz\")","postalCode":"1230","city":"Wien","latitude":48.1506803,"longitude":16.3016662},"contact":{"telephone":"43800202055","mail":"office@fe-trading.at","website":"http://www.diskonttanken.at/"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":true},"paymentMethods":{"cash":false,"debitCard":true,"creditCard":true,"others":"DKV-Card"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":1,"open":true,"distance":3.5753605966901376,"prices":[{"fuelType":"DIE","amount":1.156,"label":"Diesel"}]},{"id":33381,"name":"A1 Tankstelle Wien-Endresstraße","location":{"address":"Endresstraße 69","postalCode":"1230","city":"Wien","latitude":48.1486138,"longitude":16.2777595},"contact":{"telephone":"4318860846","fax":"4318860913","mail":"zentrale@a1-tankstellen.at","website":"http://www.a1-tankstellen.at"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"07:00","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"07:00","to":"21:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":2,"open":true,"distance":1.9218480976993273,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":1354794,"name":"JET TANKSTELLE","location":{"address":"KETZERGASSE 208","postalCode":"1230","city":"WIEN","latitude":48.130709,"longitude":16.289516},"contact":{"telephone":"018650713"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"05:30","to":"23:30"},{"day":"DI","label":"Dienstag","order":2,"from":"05:30","to":"23:30"},{"day":"MI","label":"Mittwoch","order":3,"from":"05:30","to":"23:30"},{"day":"DO","label":"Donnerstag","order":4,"from":"05:30","to":"23:30"},{"day":"FR","label":"Freitag","order":5,"from":"05:30","to":"23:30"},{"day":"SA","label":"Samstag","order":6,"from":"05:30","to":"23:30"},{"day":"SO","label":"Sonntag","order":7,"from":"05:30","to":"23:30"},{"day":"FE","label":"Feiertag","order":8,"from":"05:30","to":"23:30"}],"offerInformation":{"service":false,"selfService":true,"unattended":true},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true},"paymentArrangements":{"cooperative":false,"clubCard":false},"otherServiceOffers":"Autowäsche, Billa shop & shop, Backshop, Vignetten-Verkauf","position":3,"open":true,"distance":2.5037988374142626,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":33395,"name":"A1 Tankstelle Perchtoldsdorf","location":{"address":"Ketzergasse 191a","postalCode":"2380","city":"Perchtoldsdorf","latitude":48.1301731,"longitude":16.2919418},"contact":{"telephone":"4318674570","fax":"4318674804","mail":"zentrale@a1-tankstellen.at","website":"http://www.a1-tankstellen.at/"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"07:00","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"07:00","to":"21:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA, DKV"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":4,"open":true,"distance":2.693645361693586,"prices":[{"fuelType":"DIE","amount":1.161,"label":"Diesel"}]},{"id":1038190,"name":"Turmöl","location":{"address":"Breitenfurterstrasse 473","postalCode":"1230","city":"Wien","latitude":48.1378231,"longitude":16.257528},"contact":{"telephone":"4318860647","website":"http://www.doppler.at"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":5,"open":true,"distance":0.0019099423292094483,"prices":[{"fuelType":"DIE","amount":1.163,"label":"Diesel"}]},{"id":1354893,"name":"OMV - Wien Speisinger Straße 228","location":{"address":"Speisinger Strasse 228","postalCode":"1232","city":"Wien","latitude":48.15489,"longitude":16.2711},"contact":{"telephone":"18887229","fax":"1888722913","mail":"retail.at.7505@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:30","to":"21:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:30","to":"21:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:30","to":"21:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"OMV STATIONSKARTE, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":6,"open":true,"distance":2.1487569498351693,"prices":[]},{"id":247975,"name":"eni","location":{"address":"Breitenfurter Str. 325-327","postalCode":"1230","city":"Wien","latitude":48.14312,"longitude":16.29248},"contact":{"telephone":"018690303","fax":"018657360"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"06:00","to":"22:00"},{"day":"SO","label":"Sonntag","order":7,"from":"06:00","to":"22:00"},{"day":"FE","label":"Feiertag","order":8,"from":"06:00","to":"22:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"AMEX,Maestro,Diners Club,DKV,GUTS,MasterCard,Routex,UTA,VISA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":7,"open":true,"distance":2.6607127321589514,"prices":[]},{"id":1354920,"name":"OMV - Wien Brunner Straße 77-79","location":{"address":"Brunner Strasse 77-79","postalCode":"1230","city":"Wien","latitude":48.13342,"longitude":16.29849},"contact":{"telephone":"18695856","fax":"1869585613","mail":"retail.at.7554@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"00:00","to":"24:00"},{"day":"DI","label":"Dienstag","order":2,"from":"00:00","to":"24:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"00:00","to":"24:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"00:00","to":"24:00"},{"day":"FR","label":"Freitag","order":5,"from":"00:00","to":"24:00"},{"day":"SA","label":"Samstag","order":6,"from":"00:00","to":"24:00"},{"day":"SO","label":"Sonntag","order":7,"from":"00:00","to":"24:00"},{"day":"FE","label":"Feiertag","order":8,"from":"00:00","to":"24:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"UTA, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX, OMV STATIONSKARTE"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":8,"open":true,"distance":3.080965956484636,"prices":[]},{"id":247819,"name":"eni","location":{"address":"Feldstraße 44","postalCode":"2345","city":"Brunn/Geb.","latitude":48.122997,"longitude":16.293216},"contact":{"telephone":"02236378873","fax":"0223637887313"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"00:00","to":"24:00"},{"day":"DI","label":"Dienstag","order":2,"from":"00:00","to":"24:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"00:00","to":"24:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"00:00","to":"24:00"},{"day":"FR","label":"Freitag","order":5,"from":"00:00","to":"24:00"},{"day":"SA","label":"Samstag","order":6,"from":"00:00","to":"24:00"},{"day":"SO","label":"Sonntag","order":7,"from":"00:00","to":"24:00"},{"day":"FE","label":"Feiertag","order":8,"from":"00:00","to":"24:00"}],"offerInformation":{"service":false,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"AMEX,Maestro,Diners Club,DKV,GUTS,MasterCard,Routex,UTA,VISA"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":9,"open":true,"distance":3.1223737662403592,"prices":[]},{"id":423,"name":"OMV - Perchtoldsdorf Brunner Gasse 48","location":{"address":"Brunner Gasse 48","postalCode":"2380","city":"Perchtoldsdorf","latitude":48.11554,"longitude":16.27169},"contact":{"telephone":"18691300","fax":"1869130013","mail":"retail.at.8536@omv.com","website":"www.omv.com"},"openingHours":[{"day":"MO","label":"Montag","order":1,"from":"06:00","to":"22:00"},{"day":"DI","label":"Dienstag","order":2,"from":"06:00","to":"22:00"},{"day":"MI","label":"Mittwoch","order":3,"from":"06:00","to":"22:00"},{"day":"DO","label":"Donnerstag","order":4,"from":"06:00","to":"22:00"},{"day":"FR","label":"Freitag","order":5,"from":"06:00","to":"22:00"},{"day":"SA","label":"Samstag","order":6,"from":"07:00","to":"20:00"},{"day":"SO","label":"Sonntag","order":7,"from":"08:00","to":"20:00"},{"day":"FE","label":"Feiertag","order":8,"from":"08:00","to":"20:00"}],"offerInformation":{"service":true,"selfService":true,"unattended":false},"paymentMethods":{"cash":true,"debitCard":true,"creditCard":true,"others":"OMV STATIONSKARTE, ENI Routex Card, OMV ROUTEX, STATOIL card, BP card, MASTERCARD, MAESTRO, DINERS, VISA, AMEX"},"paymentArrangements":{"cooperative":false,"clubCard":false},"position":10,"open":true,"distance":2.6945233440437857,"prices":[]}]
          

          Kann mir da bitte jemand weiterhlefen?
          LG und Danke im Voraus, mxa

          metaxaM Offline
          metaxaM Offline
          metaxa
          schrieb am zuletzt editiert von metaxa
          #7

          Ich zitiere mich mal selbst :-)

          @metaxa sagte in Skripten des E-Control Spritpreisrechners:

          Mich würden z.B. auch nur die ersten 5 Treffer interessieren.

          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:

          443152c5-10a1-42da-a243-fe2dba009e9f-grafik.png

          Auf Grund der Vorlage von "steinejo_io" habe ich folgendes daraus gebastelt:

          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("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);
          });
          

          Bei mir funkt es. Datenpunkte nach der jeweils eigenen Struktur bitte anpassen! Die genauere Adresse will ich noch dazubauen.
          Ich hatte einfach ein glückliches Händchen :-) Gerne nehme ich für mich nachvollziehbare Verbesserungsvorschläge entgegen, ich hab von JS noch immer keine Ahnung.

          Wenns wer brauchen kann, bitte gerne!
          LG, mxa

          NegaleinN SmarthomeMFS 2 Antworten Letzte Antwort
          1
          • metaxaM metaxa

            Ich zitiere mich mal selbst :-)

            @metaxa sagte in Skripten des E-Control Spritpreisrechners:

            Mich würden z.B. auch nur die ersten 5 Treffer interessieren.

            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:

            443152c5-10a1-42da-a243-fe2dba009e9f-grafik.png

            Auf Grund der Vorlage von "steinejo_io" habe ich folgendes daraus gebastelt:

            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("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);
            });
            

            Bei mir funkt es. Datenpunkte nach der jeweils eigenen Struktur bitte anpassen! Die genauere Adresse will ich noch dazubauen.
            Ich hatte einfach ein glückliches Händchen :-) Gerne nehme ich für mich nachvollziehbare Verbesserungsvorschläge entgegen, ich hab von JS noch immer keine Ahnung.

            Wenns wer brauchen kann, bitte gerne!
            LG, mxa

            NegaleinN Offline
            NegaleinN Offline
            Negalein
            Global Moderator
            schrieb am zuletzt editiert von
            #8

            @metaxa sagte in Skripten des E-Control Spritpreisrechners:

            Wenns wer brauchen kann, bitte gerne!

            Hi Max!

            Danke dafür!

            Hab aber noch Fragen.

            • Ich benötige dazu noch den Parser-Adapter?
            • Wenn ja, was muss dort eingetragen werden?
            • Wo geb ich meinen Standort ein?
            • Dein Code ist Javascript?
            • Sollte da nicht dann statt a_andreas.0., javascript.0. stehen?

            Danke

            ° Node.js: 20.17.0 NPM: 10.8.2
            ° Proxmox, Ubuntu 22.04.3 LTS
            ° Fixer ---> iob fix

            metaxaM 1 Antwort Letzte Antwort
            0
            • SmarthomeMFS Offline
              SmarthomeMFS Offline
              SmarthomeMF
              schrieb am zuletzt editiert von
              #9

              Hallo
              Danke für die Arbeit.
              Ich hänge mich da gleich an die Fragen vom Negalein an.
              Hoffe wir können das lösen.

              Max

              ioBroker auf einem NUC ,16GB RAM, 120GB SSD) mit Proxmox
              Cloud Pro, iot, Alexa, Sonos, sonoff, Fronius, Harmony, Doorbird, Shelly, Hue, Loxone, Mihome, …

              1 Antwort Letzte Antwort
              0
              • NegaleinN Negalein

                @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                Wenns wer brauchen kann, bitte gerne!

                Hi Max!

                Danke dafür!

                Hab aber noch Fragen.

                • Ich benötige dazu noch den Parser-Adapter?
                • Wenn ja, was muss dort eingetragen werden?
                • Wo geb ich meinen Standort ein?
                • Dein Code ist Javascript?
                • Sollte da nicht dann statt a_andreas.0., javascript.0. stehen?

                Danke

                metaxaM Offline
                metaxaM Offline
                metaxa
                schrieb am zuletzt editiert von metaxa
                #10

                Guten Abend!
                Den Einstiegsbeitrag von "steinejo_io" habe ich 1:1 umgesetzt, ich habe lediglich das Script dahinter verunstaltet.

                @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                Ich benötige dazu noch den Parser-Adapter?

                Ja, zwingend.

                Wenn ja, was muss dort eingetragen werden?

                Deine für deine Gegend angepaßte URL der API.

                Wo geb ich meinen Standort ein?

                Im ersten Beitrag sind dankenswerterweise 2 Links drinnen. Mit den beiden tools hast du dann die URL für den Parseradapter beeinander. Ich mußte auch ein bisserl herumprobieren, war aber dann schnell klar.

                Dein Code ist Javascript?

                Also ich hoffe es!!! Zumindest läuft es im JS-Adapter.

                Sollte da nicht dann statt a_andreas.0., javascript.0. stehen?

                Ich habe meine eigene Struktur, die für mich logisch ist. Deswegen schreibe ich die ausgelesenen States in meine Struktur. Du kannst/sollst ja eher unbedingt deine Struktur verwenden, spricht überhaupt nichts dagegen es unter javascript.0. zu schreiben.

                Am Besten ganz oben den 1. Beitrag (reicht auch ohne Script erstellen) und die passende URL basteln und mit dem Parser abfragen und in einen Datenpunkt eintragen.

                LG, mxa

                NegaleinN 1 Antwort Letzte Antwort
                0
                • metaxaM metaxa

                  Guten Abend!
                  Den Einstiegsbeitrag von "steinejo_io" habe ich 1:1 umgesetzt, ich habe lediglich das Script dahinter verunstaltet.

                  @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                  Ich benötige dazu noch den Parser-Adapter?

                  Ja, zwingend.

                  Wenn ja, was muss dort eingetragen werden?

                  Deine für deine Gegend angepaßte URL der API.

                  Wo geb ich meinen Standort ein?

                  Im ersten Beitrag sind dankenswerterweise 2 Links drinnen. Mit den beiden tools hast du dann die URL für den Parseradapter beeinander. Ich mußte auch ein bisserl herumprobieren, war aber dann schnell klar.

                  Dein Code ist Javascript?

                  Also ich hoffe es!!! Zumindest läuft es im JS-Adapter.

                  Sollte da nicht dann statt a_andreas.0., javascript.0. stehen?

                  Ich habe meine eigene Struktur, die für mich logisch ist. Deswegen schreibe ich die ausgelesenen States in meine Struktur. Du kannst/sollst ja eher unbedingt deine Struktur verwenden, spricht überhaupt nichts dagegen es unter javascript.0. zu schreiben.

                  Am Besten ganz oben den 1. Beitrag (reicht auch ohne Script erstellen) und die passende URL basteln und mit dem Parser abfragen und in einen Datenpunkt eintragen.

                  LG, mxa

                  NegaleinN Offline
                  NegaleinN Offline
                  Negalein
                  Global Moderator
                  schrieb am zuletzt editiert von
                  #11

                  @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                  Am Besten ganz oben den 1. Beitrag (reicht auch ohne Script erstellen) und die passende URL basteln und mit dem Parser abfragen und in einen Datenpunkt eintragen.

                  Danke

                  Den Link vom 1. Beitrag hab ich mir schon angesehen. Leider ist das für mich alles nur ein riesengroßer Bahnhof. :(

                  ° Node.js: 20.17.0 NPM: 10.8.2
                  ° Proxmox, Ubuntu 22.04.3 LTS
                  ° Fixer ---> iob fix

                  1 Antwort Letzte Antwort
                  0
                  • metaxaM Offline
                    metaxaM Offline
                    metaxa
                    schrieb am zuletzt editiert von metaxa
                    #12

                    Hi,
                    ich habe mich auch länger damit beschäftigt. Ich versuchs mal aufzuschreiben:

                    1. Hier fängst an: API mach auf und lasse es offen
                    2. von Wo bist zu Hause? holst du dir die Latitude und die Longitude
                    3. unter 1) dann eintragen, auch welchen Sprit und ob offen oder zu (dazu rechts auf den Knopf drücken)
                      e546204b-b290-4bde-add8-2d51d09c6d88-grafik.png
                      e0f35e9b-d2be-47ac-b069-62ddb7615fa8-grafik.png
                    4. "Execute" anklicken
                    5. dann findest du das:
                      69ea5e6e-354b-45ec-862b-3fc842e6ef7e-grafik.png

                    Mach mal!
                    LG, mxa

                    1 Antwort Letzte Antwort
                    1
                    • metaxaM metaxa

                      Ich zitiere mich mal selbst :-)

                      @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                      Mich würden z.B. auch nur die ersten 5 Treffer interessieren.

                      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:

                      443152c5-10a1-42da-a243-fe2dba009e9f-grafik.png

                      Auf Grund der Vorlage von "steinejo_io" habe ich folgendes daraus gebastelt:

                      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("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);
                      });
                      

                      Bei mir funkt es. Datenpunkte nach der jeweils eigenen Struktur bitte anpassen! Die genauere Adresse will ich noch dazubauen.
                      Ich hatte einfach ein glückliches Händchen :-) Gerne nehme ich für mich nachvollziehbare Verbesserungsvorschläge entgegen, ich hab von JS noch immer keine Ahnung.

                      Wenns wer brauchen kann, bitte gerne!
                      LG, mxa

                      SmarthomeMFS Offline
                      SmarthomeMFS Offline
                      SmarthomeMF
                      schrieb am zuletzt editiert von
                      #13

                      @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
                      110.PNG
                      Habe im Skript den parser eingetragen
                      111.PNG
                      und dann?

                      Max

                      ioBroker auf einem NUC ,16GB RAM, 120GB SSD) mit Proxmox
                      Cloud Pro, iot, Alexa, Sonos, sonoff, Fronius, Harmony, Doorbird, Shelly, Hue, Loxone, Mihome, …

                      1 Antwort Letzte Antwort
                      0
                      • NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        schrieb am zuletzt editiert von
                        #14

                        @metaxa

                        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
                        instances - ioBroker.png

                        Scheint unter Objekte auch auf.
                        objects - ioBroker (1).png

                        Aber in den Objekter scheint javascript.0.spritpreisrechner nicht auf.
                        objects - ioBroker.png

                        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);
                        });
                        

                        ° Node.js: 20.17.0 NPM: 10.8.2
                        ° Proxmox, Ubuntu 22.04.3 LTS
                        ° Fixer ---> iob fix

                        metaxaM 1 Antwort Letzte Antwort
                        0
                        • metaxaM Offline
                          metaxaM Offline
                          metaxa
                          schrieb am zuletzt editiert von metaxa
                          #15

                          @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,
                          b29bbd32-e480-420b-99cf-b7a23b50cbef-grafik.png 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

                          1 Antwort Letzte Antwort
                          0
                          • NegaleinN Negalein

                            @metaxa

                            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
                            instances - ioBroker.png

                            Scheint unter Objekte auch auf.
                            objects - ioBroker (1).png

                            Aber in den Objekter scheint javascript.0.spritpreisrechner nicht auf.
                            objects - ioBroker.png

                            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);
                            });
                            
                            metaxaM Offline
                            metaxaM Offline
                            metaxa
                            schrieb am zuletzt editiert von
                            #16

                            @Negalein

                            @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                            Ich hab auch das Problem wie @SmarthomeMF

                            Siehe meinen Beitrag von soeben an "SmarthomeMF"

                            LG, mxa

                            NegaleinN 1 Antwort Letzte Antwort
                            0
                            • metaxaM metaxa

                              @Negalein

                              @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                              Ich hab auch das Problem wie @SmarthomeMF

                              Siehe meinen Beitrag von soeben an "SmarthomeMF"

                              LG, mxa

                              NegaleinN Offline
                              NegaleinN Offline
                              Negalein
                              Global Moderator
                              schrieb am zuletzt editiert von
                              #17

                              @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.

                              ° Node.js: 20.17.0 NPM: 10.8.2
                              ° Proxmox, Ubuntu 22.04.3 LTS
                              ° Fixer ---> iob fix

                              1 Antwort Letzte Antwort
                              0
                              • SmarthomeMFS Offline
                                SmarthomeMFS Offline
                                SmarthomeMF
                                schrieb am zuletzt editiert von
                                #18

                                @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
                                001.PNG

                                Max

                                ioBroker auf einem NUC ,16GB RAM, 120GB SSD) mit Proxmox
                                Cloud Pro, iot, Alexa, Sonos, sonoff, Fronius, Harmony, Doorbird, Shelly, Hue, Loxone, Mihome, …

                                1 Antwort Letzte Antwort
                                0
                                • metaxaM Offline
                                  metaxaM Offline
                                  metaxa
                                  schrieb am zuletzt editiert von metaxa
                                  #19

                                  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

                                  NegaleinN 1 Antwort Letzte Antwort
                                  0
                                  • metaxaM metaxa

                                    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

                                    NegaleinN Offline
                                    NegaleinN Offline
                                    Negalein
                                    Global Moderator
                                    schrieb am zuletzt editiert von Negalein
                                    #20

                                    @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?

                                    ° Node.js: 20.17.0 NPM: 10.8.2
                                    ° Proxmox, Ubuntu 22.04.3 LTS
                                    ° Fixer ---> iob fix

                                    1 Antwort Letzte Antwort
                                    1
                                    • SmarthomeMFS Offline
                                      SmarthomeMFS Offline
                                      SmarthomeMF
                                      schrieb am zuletzt editiert von
                                      #21

                                      läuft bei mir auch nicht
                                      01.PNG
                                      02.PNG
                                      irgendwas machen wir falsch!

                                      Max

                                      ioBroker auf einem NUC ,16GB RAM, 120GB SSD) mit Proxmox
                                      Cloud Pro, iot, Alexa, Sonos, sonoff, Fronius, Harmony, Doorbird, Shelly, Hue, Loxone, Mihome, …

                                      NegaleinN metaxaM 2 Antworten Letzte Antwort
                                      0
                                      • SmarthomeMFS SmarthomeMF

                                        läuft bei mir auch nicht
                                        01.PNG
                                        02.PNG
                                        irgendwas machen wir falsch!

                                        NegaleinN Offline
                                        NegaleinN Offline
                                        Negalein
                                        Global Moderator
                                        schrieb am zuletzt editiert von
                                        #22

                                        @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?

                                        ° Node.js: 20.17.0 NPM: 10.8.2
                                        ° Proxmox, Ubuntu 22.04.3 LTS
                                        ° Fixer ---> iob fix

                                        metaxaM 1 Antwort Letzte Antwort
                                        0
                                        • NegaleinN Negalein

                                          @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?

                                          metaxaM Offline
                                          metaxaM Offline
                                          metaxa
                                          schrieb am zuletzt editiert von
                                          #23

                                          @Negalein bc54c0b0-a96c-4c30-b40f-29b2f776757a-grafik.png

                                          NegaleinN 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          458

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe