Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Skripten des E-Control Spritpreisrechners

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Skripten des E-Control Spritpreisrechners

    This topic has been deleted. Only users with topic management privileges can see it.
    • Schubi
      Schubi last edited by

      Viele Dank für die Info - ist genau das was ich gesucht habe 👌

      1 Reply Last reply Reply Quote 0
      • SmarthomeMF
        SmarthomeMF last edited by

        Hallo
        Nach einer solche Möglichkeit habe ich auch schon gesucht.
        Nur kenn ich mit dem javaskript überhaupt nicht aus.....
        kannst du mir helfen.
        Möchte 4 Tankstellen im Umkreis von Perg, die Preise haben für Benzin.
        Danke

        1 Reply Last reply Reply Quote 0
        • metaxa
          metaxa @steinejo_io last edited by 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

          metaxa 1 Reply Last reply Reply Quote 0
          • MyzerAT
            MyzerAT last edited by

            @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

            1 Reply Last reply Reply Quote 0
            • Negalein
              Negalein Global Moderator last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • metaxa
                metaxa @metaxa last edited by 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

                Negalein SmarthomeMF 2 Replies Last reply Reply Quote 1
                • Negalein
                  Negalein Global Moderator @metaxa last edited by

                  @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

                  metaxa 1 Reply Last reply Reply Quote 0
                  • SmarthomeMF
                    SmarthomeMF last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • metaxa
                      metaxa @Negalein last edited by 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

                      Negalein 1 Reply Last reply Reply Quote 0
                      • Negalein
                        Negalein Global Moderator @metaxa last edited by

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

                        1 Reply Last reply Reply Quote 0
                        • metaxa
                          metaxa last edited by metaxa

                          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 Reply Last reply Reply Quote 1
                          • SmarthomeMF
                            SmarthomeMF @metaxa last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator last edited by

                              @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);
                              });
                              
                              metaxa 1 Reply Last reply Reply Quote 0
                              • metaxa
                                metaxa last edited by metaxa

                                @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 Reply Last reply Reply Quote 0
                                • metaxa
                                  metaxa @Negalein last edited by

                                  @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

                                  Negalein 1 Reply Last reply Reply Quote 0
                                  • Negalein
                                    Negalein Global Moderator @metaxa last edited by

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

                                    1 Reply Last reply Reply Quote 0
                                    • SmarthomeMF
                                      SmarthomeMF last edited by

                                      @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

                                      1 Reply Last reply Reply Quote 0
                                      • metaxa
                                        metaxa last edited by 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

                                        Negalein 1 Reply Last reply Reply Quote 0
                                        • Negalein
                                          Negalein Global Moderator @metaxa last edited by Negalein

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

                                          1 Reply Last reply Reply Quote 1
                                          • SmarthomeMF
                                            SmarthomeMF last edited by

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

                                            Negalein metaxa 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            447
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring
                                            21
                                            292
                                            32408
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo