Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.0k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Skripten des E-Control Spritpreisrechners

Scheduled Pinned Locked Moved JavaScript
javascriptmonitoring
292 Posts 21 Posters 50.0k Views 17 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • metaxaM Offline
    metaxaM Offline
    metaxa
    wrote on last edited by
    #132

    erl. Siehe oben, hab frech meinen Beitrag editiert.
    Ich mach mal was ich zusammenbringe, dann stelle ich es hier ein. Bitte um Geduld, JS lernst ned in 48 Std., auch nicht am WIFI oder so, glaub ich.
    Ich melde mich.

    @Homoran: Danke dass du dich so viel hier einbringst!

    LG, mxa

    HomoranH 1 Reply Last reply
    0
    • metaxaM metaxa

      erl. Siehe oben, hab frech meinen Beitrag editiert.
      Ich mach mal was ich zusammenbringe, dann stelle ich es hier ein. Bitte um Geduld, JS lernst ned in 48 Std., auch nicht am WIFI oder so, glaub ich.
      Ich melde mich.

      @Homoran: Danke dass du dich so viel hier einbringst!

      LG, mxa

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #133

      @metaxa
      @Negalein

      Einfach so einen Kurznamen aus dem kompletten Namen extrahieren geht so einfach nicht, da jeder vollständige Name komplett anders aufgebaut ist.

      Im besten Fall muss man eine Übersetzungstabelle anlegen, was bei hunderten von verschiedenen tankstellennamen nicht vertretbar ist.

      Was zu häufige Abfragen angeht, ist das Skript schon die beste Lösung. Leider kann ich es auch nicht.
      Gerade heute ist ein regex block für Blockly dazugekommen dann schaffe ich es vielleicht doch.

      Die idee hinter dem skript ist es nur einmal das gesamte json über den parser abzurufen (obwohl das auch über das skript selbst gehen müsste) und anschließend dieses json offline zu zerlegen.

      Der parser adapter kann zwar auch aus einer datei parsen, aber imho nicht aus einem Datenpunkt.

      Natürlich ist der Tankerkönig adapter das Maß aller Dinge. Leider bietet die api nicht den datenumfang des tankerkönigs. Daher kann man auch nur das auswerten was angeboten wird.

      Auch geld als lockmittel ändert das nichts. Was nicht da ist kann man nicht herzaubern.

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      NegaleinN 1 Reply Last reply
      0
      • HomoranH Homoran

        @metaxa
        @Negalein

        Einfach so einen Kurznamen aus dem kompletten Namen extrahieren geht so einfach nicht, da jeder vollständige Name komplett anders aufgebaut ist.

        Im besten Fall muss man eine Übersetzungstabelle anlegen, was bei hunderten von verschiedenen tankstellennamen nicht vertretbar ist.

        Was zu häufige Abfragen angeht, ist das Skript schon die beste Lösung. Leider kann ich es auch nicht.
        Gerade heute ist ein regex block für Blockly dazugekommen dann schaffe ich es vielleicht doch.

        Die idee hinter dem skript ist es nur einmal das gesamte json über den parser abzurufen (obwohl das auch über das skript selbst gehen müsste) und anschließend dieses json offline zu zerlegen.

        Der parser adapter kann zwar auch aus einer datei parsen, aber imho nicht aus einem Datenpunkt.

        Natürlich ist der Tankerkönig adapter das Maß aller Dinge. Leider bietet die api nicht den datenumfang des tankerkönigs. Daher kann man auch nur das auswerten was angeboten wird.

        Auch geld als lockmittel ändert das nichts. Was nicht da ist kann man nicht herzaubern.

        NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        wrote on last edited by
        #134

        @Homoran sagte in Skripten des E-Control Spritpreisrechners:

        Auch geld als lockmittel ändert das nichts. Was nicht da ist kann man nicht herzaubern.

        Das hast du falsch verstanden!
        Soll kein Lockmittel sein.
        Aber gute Arbeit darf ruhig auch mal belohnt werden!

        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
        ° Node.js Fixer ---> iob nodejs-update
        ° Fixer ---> iob fix

        HomoranH 1 Reply Last reply
        0
        • G Offline
          G Offline
          Georgius
          wrote on last edited by
          #135

          Ich hab einen anderen Ansatz gewählt.
          Es ist bis jetzt nur ein Anfang um zu schauen ob es so geht.

          on({id: "parser.0.Tanken", change: 'any'}, function(obj)
           {
              
              var index = 0;
              /*var gasStation = JSON.parse('parser.0.Tanken');*/
              var gasStation = JSON.parse(obj.state.val);
               /*if (gasStation.length === 0) return;*/
           
               console.log((String('Durchlauf')));
               createState("javascript.0.Sprit.Tankstelle_Test.Index", false,{type: 'number',name: 'index', read: true,write: true});
               for (index = 0; index < gasStation.length; ++index) {
           
             
              createState("javascript.0.Sprit.Tankstelle_"+index+".Index", 0,{type: 'number',name: 'index', read: true,write: true});
              setState("javascript.0.Sprit.Tankstelle_"+index+".Index", gasStation[index].id);
          
              createState("javascript.0.Sprit.Tankstelle_"+index+".name", 0,{type: 'string',name: 'name', read: true,write: true});
              setState("javascript.0.Sprit.Tankstelle_"+index+".name", gasStation[index].name);
             
              }
           
          
           });
          

          Was nicht geht ist das man den Datenpunkt gleich nach dem erstellen füllen kann. Dann kommt ein "Warn" im Protokoll und die Punkte werden nicht gefüllt.

          Ist mein 1. JS-Programm. Bin also für Verbesserungen sehr dankbar.

          Warum ich die Datenpunkte in der Schleife definiere ist, dass wenn zB.12 Tankstellen den gleichen Preis haben werden 12 Tankstellen zurückgegeben.

          1 Reply Last reply
          0
          • NegaleinN Negalein

            @Homoran sagte in Skripten des E-Control Spritpreisrechners:

            Auch geld als lockmittel ändert das nichts. Was nicht da ist kann man nicht herzaubern.

            Das hast du falsch verstanden!
            Soll kein Lockmittel sein.
            Aber gute Arbeit darf ruhig auch mal belohnt werden!

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #136

            @Negalein
            Ich fürchte du verstehst es nicht!

            • Sieh dir mal ALLE Tankstellenbezeichnungen die von der api ausgegeben werden an.
            • überlege dir zu jedem eine dir genehme Kurzbezeichnung
            • dann nenne mir EINE allgemeingültige Formel diese Kurzbezeichnungen zu extrahieren.

            Ich bin auf diese Formel gespannt.

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            NegaleinN 1 Reply Last reply
            0
            • HomoranH Homoran

              @Negalein
              Ich fürchte du verstehst es nicht!

              • Sieh dir mal ALLE Tankstellenbezeichnungen die von der api ausgegeben werden an.
              • überlege dir zu jedem eine dir genehme Kurzbezeichnung
              • dann nenne mir EINE allgemeingültige Formel diese Kurzbezeichnungen zu extrahieren.

              Ich bin auf diese Formel gespannt.

              NegaleinN Offline
              NegaleinN Offline
              Negalein
              Global Moderator
              wrote on last edited by
              #137

              @Homoran sagte in Skripten des E-Control Spritpreisrechners:

              Ich fürchte du verstehst es nicht!

              Nein, ich fürchte du hast es falsch verstanden!

              Ich bezog mich einzig auf

              Auch geld als lockmittel ändert das nichts.

              Nicht mehr und nicht weniger!!

              Sollte auch im Verlauf ersichtlich sein!

              Namen kürzen wäre ein Wunsch. Aber wenns nicht geht, dann gehts halt nicht.
              C’est la vie

              So, und jetzt Schluß mit der i-Tüpferl Reiterei
              Ich kann kein JS und hab es auch nie behauptet.

              ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
              ° Node.js Fixer ---> iob nodejs-update
              ° Fixer ---> iob fix

              HomoranH 1 Reply Last reply
              0
              • NegaleinN Negalein

                @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                Ich fürchte du verstehst es nicht!

                Nein, ich fürchte du hast es falsch verstanden!

                Ich bezog mich einzig auf

                Auch geld als lockmittel ändert das nichts.

                Nicht mehr und nicht weniger!!

                Sollte auch im Verlauf ersichtlich sein!

                Namen kürzen wäre ein Wunsch. Aber wenns nicht geht, dann gehts halt nicht.
                C’est la vie

                So, und jetzt Schluß mit der i-Tüpferl Reiterei
                Ich kann kein JS und hab es auch nie behauptet.

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by
                #138

                @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                Ich bezog mich einzig auf

                Dieser Satz war aber in einem Zusammenhang genannt. Den habe ich versucht wieder herzustellen

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                NegaleinN 1 Reply Last reply
                0
                • HomoranH Homoran

                  @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                  Ich bezog mich einzig auf

                  Dieser Satz war aber in einem Zusammenhang genannt. Den habe ich versucht wieder herzustellen

                  NegaleinN Offline
                  NegaleinN Offline
                  Negalein
                  Global Moderator
                  wrote on last edited by
                  #139

                  @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                  Dieser Satz war aber in einem Zusammenhang genannt. Den habe ich versucht wieder herzustellen

                  Ja, da hab ich den unbewusst mitzitiert!

                  Egal, konzentrieren wir uns wieder auf die Funktion!

                  ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                  ° Node.js Fixer ---> iob nodejs-update
                  ° Fixer ---> iob fix

                  1 Reply Last reply
                  0
                  • metaxaM Offline
                    metaxaM Offline
                    metaxa
                    wrote on last edited by metaxa
                    #140

                    @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                    Egal, konzentrieren wir uns wieder auf die Funktion!

                    WIR haben uns konzentriert :thinking_face:

                    Rausgekommen ist Folgendes:

                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //  "Spritpreise_AT v.0.5"                                                                                                              //
                    //  e-control Spritpreise                                                                                                               //
                    //  ursprüngl. Script von steinejo_io vom                                                                                               //
                    //                                                                                                                                      //
                    //  Zwingend erforderlich sind der Parser Adapter und die URL aus der API. Links und Hilfe zum Erstellemn findet ihr im Folgenden Lnk:  //
                    //  https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners                                                    //
                    //  Das manuelle Anlegen von Daenpunkten ist nicht mehr notwendig. erledigt das Script beim ersten Aufruf.                              //
                    //  Auf das "E" Zeichen habe ich verzichtet, da es in VIS genz einfach an der jeweils gewünschten Stelle produzierbar ist.              //
                    //                                                                                                                                      //
                    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    
                    on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj)
                    {
                    log("Start Spritvergleich");
                    
                        var gasStation = JSON.parse(obj.state.val);
                        if (gasStation.length === 0) return;
                    
                        var i = 0;
                        for (var i = 1; i <= 5; i++) {
                            // console.log(i);
                            // console.log("scriptDatenPunkte.Sprit_AT.name_"+i);
                            createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Name_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                            createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Preis_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                            createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Strasse_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                            createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".PLZ_Ort_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                        }
                    
                        var index = 0;
                        //for (index = 0; index < gasStation.length; ++index) {
                        for (index = 0; index <= 4; ++index) {
                        setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Name_"+(index+1), gasStation[index].name);
                        setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Preis_"+(index+1), (gasStation[index].prices[0].amount).toString().replace(".",","));
                        setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Strasse_"+(index+1), (gasStation[index].location.address));
                        setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".PLZ_Ort_"+(index+1), (gasStation[index].location.postalCode) + " " + (gasStation[index].location.city));
                        }
                    
                    log("Ende Spritvergleich");
                    });
                    

                    Die Datenpunkte werden beim ersten Auslösen erstellt, jedoch erst beim ZWEITEN Auslösen befüllt. Helfen kann man sich, indem man im Parser den Feldtyp von JSON verstellt, speichert, und wieder auf JSON umstrellt und wieder speichert.
                    Leider bekomme ich bei den ersten beiden Auslösern im Log paar Fehlermeldungen, das Script tut aber trotzem. Ich habe schon alles versucht, ich krieg sie nicht weg. Im Regelbetrieb gibt es keine Fehlermeldungen (bei mir).

                    javascript.0	2019-04-04 19:01:43.905	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                    javascript.0	2019-04-04 19:01:43.905	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                    javascript.0	2019-04-04 19:01:43.905	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:228:12)
                    javascript.0	2019-04-04 19:01:43.905	error	at Socket.onevent (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:270:10)
                    javascript.0	2019-04-04 19:01:43.904	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                    javascript.0	2019-04-04 19:01:43.904	error	at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                    javascript.0	2019-04-04 19:01:43.904	error	at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3705:37)
                    javascript.0	2019-04-04 19:01:43.904	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:364:25)
                    javascript.0	2019-04-04 19:01:43.904	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:963:38)
                    javascript.0	2019-04-04 19:01:43.904	error	at Object.<anonymous> (script.js.010_Testen.Vorlage_Spritpreisrechner_best_five_mit_Strasse_separat:29:100)
                    javascript.0	2019-04-04 19:01:43.903	error	Error in callback: TypeError: Cannot read property 'name' of undefined
                    

                    Wenn jemand bitte einen Rat hat, unbedingt her damit.

                    LG, mxa

                    HomoranH sigi234S 2 Replies Last reply
                    1
                    • metaxaM metaxa

                      @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                      Egal, konzentrieren wir uns wieder auf die Funktion!

                      WIR haben uns konzentriert :thinking_face:

                      Rausgekommen ist Folgendes:

                      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                      //  "Spritpreise_AT v.0.5"                                                                                                              //
                      //  e-control Spritpreise                                                                                                               //
                      //  ursprüngl. Script von steinejo_io vom                                                                                               //
                      //                                                                                                                                      //
                      //  Zwingend erforderlich sind der Parser Adapter und die URL aus der API. Links und Hilfe zum Erstellemn findet ihr im Folgenden Lnk:  //
                      //  https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners                                                    //
                      //  Das manuelle Anlegen von Daenpunkten ist nicht mehr notwendig. erledigt das Script beim ersten Aufruf.                              //
                      //  Auf das "E" Zeichen habe ich verzichtet, da es in VIS genz einfach an der jeweils gewünschten Stelle produzierbar ist.              //
                      //                                                                                                                                      //
                      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                      
                      on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj)
                      {
                      log("Start Spritvergleich");
                      
                          var gasStation = JSON.parse(obj.state.val);
                          if (gasStation.length === 0) return;
                      
                          var i = 0;
                          for (var i = 1; i <= 5; i++) {
                              // console.log(i);
                              // console.log("scriptDatenPunkte.Sprit_AT.name_"+i);
                              createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Name_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                              createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Preis_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                              createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Strasse_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                              createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".PLZ_Ort_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                          }
                      
                          var index = 0;
                          //for (index = 0; index < gasStation.length; ++index) {
                          for (index = 0; index <= 4; ++index) {
                          setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Name_"+(index+1), gasStation[index].name);
                          setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Preis_"+(index+1), (gasStation[index].prices[0].amount).toString().replace(".",","));
                          setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Strasse_"+(index+1), (gasStation[index].location.address));
                          setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".PLZ_Ort_"+(index+1), (gasStation[index].location.postalCode) + " " + (gasStation[index].location.city));
                          }
                      
                      log("Ende Spritvergleich");
                      });
                      

                      Die Datenpunkte werden beim ersten Auslösen erstellt, jedoch erst beim ZWEITEN Auslösen befüllt. Helfen kann man sich, indem man im Parser den Feldtyp von JSON verstellt, speichert, und wieder auf JSON umstrellt und wieder speichert.
                      Leider bekomme ich bei den ersten beiden Auslösern im Log paar Fehlermeldungen, das Script tut aber trotzem. Ich habe schon alles versucht, ich krieg sie nicht weg. Im Regelbetrieb gibt es keine Fehlermeldungen (bei mir).

                      javascript.0	2019-04-04 19:01:43.905	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                      javascript.0	2019-04-04 19:01:43.905	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                      javascript.0	2019-04-04 19:01:43.905	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:228:12)
                      javascript.0	2019-04-04 19:01:43.905	error	at Socket.onevent (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:270:10)
                      javascript.0	2019-04-04 19:01:43.904	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                      javascript.0	2019-04-04 19:01:43.904	error	at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                      javascript.0	2019-04-04 19:01:43.904	error	at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3705:37)
                      javascript.0	2019-04-04 19:01:43.904	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:364:25)
                      javascript.0	2019-04-04 19:01:43.904	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:963:38)
                      javascript.0	2019-04-04 19:01:43.904	error	at Object.<anonymous> (script.js.010_Testen.Vorlage_Spritpreisrechner_best_five_mit_Strasse_separat:29:100)
                      javascript.0	2019-04-04 19:01:43.903	error	Error in callback: TypeError: Cannot read property 'name' of undefined
                      

                      Wenn jemand bitte einen Rat hat, unbedingt her damit.

                      LG, mxa

                      HomoranH Do not disturb
                      HomoranH Do not disturb
                      Homoran
                      Global Moderator Administrators
                      wrote on last edited by
                      #141

                      @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                      WIR haben uns konzentriert

                      :+1:

                      Mann muss doch mit einem Script das json jolen - in eine Variable schreiben - und diese dann zerlegen können, oder?

                      Habe leider keine Zeit mich in js einzuarbeiten und dann das zu probieren

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      P 1 Reply Last reply
                      0
                      • metaxaM metaxa

                        @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                        Egal, konzentrieren wir uns wieder auf die Funktion!

                        WIR haben uns konzentriert :thinking_face:

                        Rausgekommen ist Folgendes:

                        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        //  "Spritpreise_AT v.0.5"                                                                                                              //
                        //  e-control Spritpreise                                                                                                               //
                        //  ursprüngl. Script von steinejo_io vom                                                                                               //
                        //                                                                                                                                      //
                        //  Zwingend erforderlich sind der Parser Adapter und die URL aus der API. Links und Hilfe zum Erstellemn findet ihr im Folgenden Lnk:  //
                        //  https://forum.iobroker.net/topic/20314/skripten-des-e-control-spritpreisrechners                                                    //
                        //  Das manuelle Anlegen von Daenpunkten ist nicht mehr notwendig. erledigt das Script beim ersten Aufruf.                              //
                        //  Auf das "E" Zeichen habe ich verzichtet, da es in VIS genz einfach an der jeweils gewünschten Stelle produzierbar ist.              //
                        //                                                                                                                                      //
                        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        
                        on({id: "parser.0.Spritpreisrechner"/*Spritpreisrechner*/, change: 'any'}, function(obj)
                        {
                        log("Start Spritvergleich");
                        
                            var gasStation = JSON.parse(obj.state.val);
                            if (gasStation.length === 0) return;
                        
                            var i = 0;
                            for (var i = 1; i <= 5; i++) {
                                // console.log(i);
                                // console.log("scriptDatenPunkte.Sprit_AT.name_"+i);
                                createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Name_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                                createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Preis_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                                createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".Strasse_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                                createState("scriptDatenPunkte.Sprit_AT.Treffer_"+i+".PLZ_Ort_"+i, {type: "string", name: "Platz "+i, read: true, write: true});
                            }
                        
                            var index = 0;
                            //for (index = 0; index < gasStation.length; ++index) {
                            for (index = 0; index <= 4; ++index) {
                            setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Name_"+(index+1), gasStation[index].name);
                            setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Preis_"+(index+1), (gasStation[index].prices[0].amount).toString().replace(".",","));
                            setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".Strasse_"+(index+1), (gasStation[index].location.address));
                            setState("scriptDatenPunkte.Sprit_AT.Treffer_"+(index+1)+".PLZ_Ort_"+(index+1), (gasStation[index].location.postalCode) + " " + (gasStation[index].location.city));
                            }
                        
                        log("Ende Spritvergleich");
                        });
                        

                        Die Datenpunkte werden beim ersten Auslösen erstellt, jedoch erst beim ZWEITEN Auslösen befüllt. Helfen kann man sich, indem man im Parser den Feldtyp von JSON verstellt, speichert, und wieder auf JSON umstrellt und wieder speichert.
                        Leider bekomme ich bei den ersten beiden Auslösern im Log paar Fehlermeldungen, das Script tut aber trotzem. Ich habe schon alles versucht, ich krieg sie nicht weg. Im Regelbetrieb gibt es keine Fehlermeldungen (bei mir).

                        javascript.0	2019-04-04 19:01:43.905	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                        javascript.0	2019-04-04 19:01:43.905	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
                        javascript.0	2019-04-04 19:01:43.905	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:228:12)
                        javascript.0	2019-04-04 19:01:43.905	error	at Socket.onevent (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:270:10)
                        javascript.0	2019-04-04 19:01:43.904	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                        javascript.0	2019-04-04 19:01:43.904	error	at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                        javascript.0	2019-04-04 19:01:43.904	error	at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3705:37)
                        javascript.0	2019-04-04 19:01:43.904	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:364:25)
                        javascript.0	2019-04-04 19:01:43.904	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:963:38)
                        javascript.0	2019-04-04 19:01:43.904	error	at Object.<anonymous> (script.js.010_Testen.Vorlage_Spritpreisrechner_best_five_mit_Strasse_separat:29:100)
                        javascript.0	2019-04-04 19:01:43.903	error	Error in callback: TypeError: Cannot read property 'name' of undefined
                        

                        Wenn jemand bitte einen Rat hat, unbedingt her damit.

                        LG, mxa

                        sigi234S Online
                        sigi234S Online
                        sigi234
                        Forum Testing Most Active
                        wrote on last edited by sigi234
                        #142

                        @metaxa

                        Ich glaube da könnte uns Pix helfen?

                        Ich habe ihn mal ne PN gesendet..........

                        Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                        Immer Daten sichern!

                        HomoranH 1 Reply Last reply
                        0
                        • sigi234S sigi234

                          @metaxa

                          Ich glaube da könnte uns Pix helfen?

                          Ich habe ihn mal ne PN gesendet..........

                          HomoranH Do not disturb
                          HomoranH Do not disturb
                          Homoran
                          Global Moderator Administrators
                          wrote on last edited by
                          #143

                          @sigi234

                          Das Problem ist ja leider komplexer.

                          Da sich die Reihenfolge (und damit eventuell sogar as Vorhandensein von Preisen) dauernd ändert muss alles zusätzlich "übersetzt" werden.

                          Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          sigi234S metaxaM 2 Replies Last reply
                          0
                          • HomoranH Homoran

                            @sigi234

                            Das Problem ist ja leider komplexer.

                            Da sich die Reihenfolge (und damit eventuell sogar as Vorhandensein von Preisen) dauernd ändert muss alles zusätzlich "übersetzt" werden.

                            Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                            sigi234S Online
                            sigi234S Online
                            sigi234
                            Forum Testing Most Active
                            wrote on last edited by
                            #144

                            @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                            Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                            Genau, darum ist es für Vis so nicht Richtig bzw. schwierig darstellbar.......

                            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Immer Daten sichern!

                            HomoranH 1 Reply Last reply
                            0
                            • sigi234S sigi234

                              @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                              Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                              Genau, darum ist es für Vis so nicht Richtig bzw. schwierig darstellbar.......

                              HomoranH Do not disturb
                              HomoranH Do not disturb
                              Homoran
                              Global Moderator Administrators
                              wrote on last edited by
                              #145

                              @sigi234
                              Da müsste man vielleicht mit 2-4 Abfragen von unterschiedlichem geografischen Mittelpunkt arbeiten, in der Hoffnung, dass die Tanke dann in einem dieser 10er-Pakete unter den Top5 liegt.

                              Habe da zwar viele Ideen, aber mir mangelts am Handwerkszeug

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              1 Reply Last reply
                              0
                              • HomoranH Homoran

                                @sigi234

                                Das Problem ist ja leider komplexer.

                                Da sich die Reihenfolge (und damit eventuell sogar as Vorhandensein von Preisen) dauernd ändert muss alles zusätzlich "übersetzt" werden.

                                Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                                metaxaM Offline
                                metaxaM Offline
                                metaxa
                                wrote on last edited by
                                #146

                                @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                                @sigi234
                                Das Problem ist ja leider komplexer.
                                Da sich die Reihenfolge (und damit eventuell sogar as Vorhandensein von Preisen) dauernd ändert muss alles zusätzlich "übersetzt" werden.
                                Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                                Ja Rainer, da hast du durchaus recht. Deswegen hat der Kollege im Einstiegspost seine Lösung für seine Lieblingstankstelle gepostet. Funktioniert soweit einwandfrei, sofern die Tankstelle nicht geschlossen hat oder/und in der API die Option "geschlossene Tankstellen anzeigen: AN" gewählt wurde.
                                Nur was hilft es mir, wenn ich vielleicht sehe was der Sprit vor dem Schließen gekostet hat.

                                Ich für mich denke eher daran beide Lösungen zu kombinieren. Heißt ein eigenes Script, dass meine bevorzugte Tankstelle anzeigt und die "Top 5" ergänzend zur reinen Info. Ob ich die Info dann umsetze und eine andere Tankstelle praktisch verwende, kann ich dann immer noch entscheiden.

                                LG, mxa

                                HomoranH 1 Reply Last reply
                                0
                                • metaxaM Offline
                                  metaxaM Offline
                                  metaxa
                                  wrote on last edited by
                                  #147

                                  Und was mich jetzt grad am meisen interessiert: Hat es schon jemand ausprobiert?

                                  @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                                  Das wäre toll!

                                  Was wäre noch von Interesse?

                                  Am allerwichtigsten ist, dass alle Daten zueinander passen.
                                  Jetzt mit Parser und Regex ist es so, dass oft zB Ort 1 mit PLZ 3 und Preis 5 verheiratet sind.
                                  Funktionieren muss es mit der API, da auch alle anderen Apps (Android sowie das angebissene Äpfelchen) darauf zugreifen.

                                  LG, mxa

                                  HomoranH NegaleinN sigi234S 3 Replies Last reply
                                  0
                                  • metaxaM metaxa

                                    @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                                    @sigi234
                                    Das Problem ist ja leider komplexer.
                                    Da sich die Reihenfolge (und damit eventuell sogar as Vorhandensein von Preisen) dauernd ändert muss alles zusätzlich "übersetzt" werden.
                                    Es kann ja sogar passieren, dass die Lieblingstanke nicht unter den Top 5 landet, weil sie in dem Moment zu teuer ist

                                    Ja Rainer, da hast du durchaus recht. Deswegen hat der Kollege im Einstiegspost seine Lösung für seine Lieblingstankstelle gepostet. Funktioniert soweit einwandfrei, sofern die Tankstelle nicht geschlossen hat oder/und in der API die Option "geschlossene Tankstellen anzeigen: AN" gewählt wurde.
                                    Nur was hilft es mir, wenn ich vielleicht sehe was der Sprit vor dem Schließen gekostet hat.

                                    Ich für mich denke eher daran beide Lösungen zu kombinieren. Heißt ein eigenes Script, dass meine bevorzugte Tankstelle anzeigt und die "Top 5" ergänzend zur reinen Info. Ob ich die Info dann umsetze und eine andere Tankstelle praktisch verwende, kann ich dann immer noch entscheiden.

                                    LG, mxa

                                    HomoranH Do not disturb
                                    HomoranH Do not disturb
                                    Homoran
                                    Global Moderator Administrators
                                    wrote on last edited by
                                    #148

                                    @metaxa
                                    Ich muss zugeben, dass ich mir das Initialskript gar nicht angesehen habe :-(

                                    Wenn ich das inzwischen richtig verstehe kann man - wenn man genau SEINE Tanke mit kompletten Namen kennt, ein Skript schreiben, das dann wenigstens die Tanke unter den Top 10 (6-10) finden würde und dann eine Info geben mit Preis >xxx.
                                    Wobei das der höchste Preis der Top 5 wäre.

                                    Aber eine einfache Suche für mehrere UNBEKANNTE Tankstellen geht schon sehr schwer

                                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    1 Reply Last reply
                                    0
                                    • metaxaM metaxa

                                      Und was mich jetzt grad am meisen interessiert: Hat es schon jemand ausprobiert?

                                      @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                                      Das wäre toll!

                                      Was wäre noch von Interesse?

                                      Am allerwichtigsten ist, dass alle Daten zueinander passen.
                                      Jetzt mit Parser und Regex ist es so, dass oft zB Ort 1 mit PLZ 3 und Preis 5 verheiratet sind.
                                      Funktionieren muss es mit der API, da auch alle anderen Apps (Android sowie das angebissene Äpfelchen) darauf zugreifen.

                                      LG, mxa

                                      HomoranH Do not disturb
                                      HomoranH Do not disturb
                                      Homoran
                                      Global Moderator Administrators
                                      wrote on last edited by Homoran
                                      #149

                                      @metaxa
                                      Bist du am Wochenende in Kassel?

                                      Dann könnten wir (+weitere) uns mal zusammensetzen

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      metaxaM 1 Reply Last reply
                                      0
                                      • metaxaM metaxa

                                        Und was mich jetzt grad am meisen interessiert: Hat es schon jemand ausprobiert?

                                        @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                                        Das wäre toll!

                                        Was wäre noch von Interesse?

                                        Am allerwichtigsten ist, dass alle Daten zueinander passen.
                                        Jetzt mit Parser und Regex ist es so, dass oft zB Ort 1 mit PLZ 3 und Preis 5 verheiratet sind.
                                        Funktionieren muss es mit der API, da auch alle anderen Apps (Android sowie das angebissene Äpfelchen) darauf zugreifen.

                                        LG, mxa

                                        NegaleinN Offline
                                        NegaleinN Offline
                                        Negalein
                                        Global Moderator
                                        wrote on last edited by
                                        #150

                                        @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                                        Und was mich jetzt grad am meisen interessiert: Hat es schon jemand ausprobiert?

                                        Bin gerade erst heim gekommen.
                                        Werde es gleich testen.
                                        Dauert noch kurz.

                                        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                                        ° Node.js Fixer ---> iob nodejs-update
                                        ° Fixer ---> iob fix

                                        1 Reply Last reply
                                        0
                                        • HomoranH Homoran

                                          @metaxa
                                          Bist du am Wochenende in Kassel?

                                          Dann könnten wir (+weitere) uns mal zusammensetzen

                                          metaxaM Offline
                                          metaxaM Offline
                                          metaxa
                                          wrote on last edited by
                                          #151

                                          @Homoran
                                          Jetzt hast mir einen Floh ins Ohr gesetzt, den/das JSON im JS direkt reinzuladen. Tappe da noch völlig im Dunkeln. Wie gesagt, ich beschäftige mich mit programmieren und im Speziellen mit JS grad mal paar Stunden und heute :-)

                                          Nein bin nicht oben, die "AT" Fraktion ist durch Robert & Co eh sehr gut vertreten und mir wächst mein Garten um die Ohren :-(.

                                          LG, mxa

                                          HomoranH 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          523

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe