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.
    • Negalein
      Negalein Global Moderator @Homoran last edited by

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

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

        @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

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

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

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

            @Negalein sagte in Skripten des E-Control Spritpreisrechners:

            Egal, konzentrieren wir uns wieder auf die Funktion!

            WIR haben uns konzentriert 🤔

            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

            Homoran sigi234 2 Replies Last reply Reply Quote 1
            • Homoran
              Homoran Global Moderator Administrators @metaxa last edited by

              @metaxa sagte in Skripten des E-Control Spritpreisrechners:

              WIR haben uns konzentriert

              👍

              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

              P 1 Reply Last reply Reply Quote 0
              • sigi234
                sigi234 Forum Testing Most Active @metaxa last edited by sigi234

                @metaxa

                Ich glaube da könnte uns Pix helfen?

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

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @sigi234 last edited by

                  @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

                  sigi234 metaxa 2 Replies Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active @Homoran last edited by

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

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @sigi234 last edited by

                      @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

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

                        @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

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

                          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

                          Homoran Negalein sigi234 3 Replies Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @metaxa last edited by

                            @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

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

                              @metaxa
                              Bist du am Wochenende in Kassel?

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

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

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

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

                                  @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

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

                                    @metaxa

                                    @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                                    Wie gesagt, ich beschäftige mich mit programmieren und im Speziellen mit JS grad mal paar Stunden und heute

                                    Da kannst du mehr als ich 😉 Natives js habe ich noch nie versucht - traue mir das einfach nicht zu.
                                    Mit Blockly würde ich es angehen, da ist gestern der RegEx Block dazu gekommen, der das ganze ermöglichen müsste.

                                    Du kannst den URL doch auch in einem Browser eingeben und bekommst das json zurück.
                                    Das geht definitiv über js.

                                    Wenn das mit wget ginge (??) würde eine Datei mit dem json angelegt, die wiederum mit dem Parser-Adapter zerlegt werden könnte.

                                    Aber ich hätte gerne alles auf einem System, dann kann man mit den RegEx Schnipseln jonglieren und anschließend einen sinnvollen output generieren, der immer die gleiche Struktur (Datenpunkte) hat, egal in welcher Reihenfolge die Rohdaten im json vorliegen.

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

                                      @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                                      Das geht definitiv über js.

                                      Da bin ich mir sicher, nur ich hab keinen Tau davon. Die Syntax "$.getJSON()" ist für mich eine Ansammlung spanischer Dörfer. Wobei ich jetzt ehrlich gesagt, den Parser als geringstes Problem sehe. Eher - da sind wir uns ja einig - das sichere Auffinden "seiner" Tankstelle.

                                      Negalein 1 Reply Last reply Reply Quote 0
                                      • sigi234
                                        sigi234 Forum Testing Most Active @metaxa last edited by

                                        @metaxa

                                        Gerade getestet, schaut gut aus!

                                        Screenshot (2754)_LI.jpg

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

                                          @metaxa sagte in Skripten des E-Control Spritpreisrechners:
                                          Servus Metaxa!

                                          Also, DP wurden ordnungsgemäß angelegt.
                                          Befüllt wurden sie nach paarmaligem umstellen im Parser.

                                          Nur "Treffer 1" wird nicht befüllt.
                                          objects - ioBroker.png

                                          Fehlermeldung bekomm ich auch wie du.

                                          javascript.0	2019-04-04 20:38:23.944	info	script.js.common.Spritpreisrechner: Ende Spritvergleich
                                          javascript.0	2019-04-04 20:38:23.941	info	script.js.common.Spritpreisrechner: Start Spritvergleich
                                          javascript.0	2019-04-04 20:38:02.780	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Manager.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
                                          javascript.0	2019-04-04 20:38:02.780	error	at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3425:37)
                                          javascript.0	2019-04-04 20:38:02.779	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:358:25)
                                          javascript.0	2019-04-04 20:38:02.779	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:756:38)
                                          javascript.0	2019-04-04 20:38:02.779	error	at Object.<anonymous> (script.js.common.Spritpreisrechner:33:95)
                                          javascript.0	2019-04-04 20:38:02.779	error	Error in callback: TypeError: Cannot read property 'name' of undefined
                                          javascript.0	2019-04-04 20:38:02.775	info	script.js.common.Spritpreisrechner: Start Spritvergleich
                                          

                                          das sichere Auffinden "seiner" Tankstelle.

                                          mir persönlich würde reichen, wenn ich einfach nur die 5 günstigsten rund um meinen Koordinaten bekomme.

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

                                            @sigi234 Vergleichs mal bitte mit der e-control. Bei mir hats mehrfach gepaßt.

                                            Negalein 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            961
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring
                                            21
                                            292
                                            31972
                                            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