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

      @metaxa

      Naja, so richtig habe ich auch keine Ahnung, habe vor 20 Jahren mal Datenbanken programmiert in einer basic-artigen Sprache. Auch irgendwas mit einem dynarray().
      Da ging es auch (für mich) "einfacher" indem ich mit locate() in einer Tabelle gesucht hatte. Das wäre hier entsprechend mit den States.
      Leider bräuchte man wahrscheinlich wegen der rotierenden Reihenfolge dann genauso viele "Hilfsstates" wie eigentliche States.

      Das schlimme ist ich habe soooo viele Ideen, bin aber durch mein NichtKönnen an der Lösung gehindert.

      Dein Endziel entspricht in weiten Teilen meinem, evtl. schieße ich da noch drüber hinaus:

      • kein Parser(Adapter) notwendig - KLAR!
      • zum Einstellen
        ** Längen und Breitengrad - nöö, das steht doch im js-Adapter
        *** Und da würde ich gerne noch einen draufsetzen wenn die Tanke nicht unter den ersten 5 ist, eine bis 4 weitere Abfragen mit Verschiebung des Zentrums um den halben Radius in 4 Himmelsrichtungen

      @metaxa sagte in Skripten des E-Control Spritpreisrechners:

      alleine komme ich nicht mehr weiter, bzw. ist es auf die Dauer sehr zeitraubend.

      und deswegen reizt es mich so, obwohl ich "nichts davon habe".

      Leider falle ich die nächste Zeit aus, so dass ich erst mal nicht weitermachen kann.
      Vielleicht kommt morgen abend beim Gespräch in Kassel was raus.

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

        Hat wer eine Idee wie man den Fehler abfangen kann wenn kein Preis vorhanden ist?

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

          @Georgius sagte in Skripten des E-Control Spritpreisrechners:

          wie man den Fehler abfangen kann wenn kein Preis vorhanden ist?

          Mehrere - was wäre denn sinnvoll?

          1.) einen Wert angeben mit >1.217 wenn der teuerste unter den Top5 1.217 wäre und die gewünschte Tanke nunter Top 6-10 liegt und somit teurer sein muss.
          2.) einen anderen Weg finden doch noch den Preis herauszubekommen
          3.) "geschlossen" angeben weil sie zu ist?

          1 Reply Last reply Reply Quote 0
          • G
            Georgius last edited by

            Da reden wir von unterschiedlichen Sachen. Tankstelle 6 kann auch einen Preis haben, wenn mehrere Tankstellen den selben Preis haben.

            Wenn kein Preis vorhanden ist bekomme ich einen error und das Programm bricht ab.

            if ((gasStation[index].prices[0].amount)!=null){
            

            Noch eine Frage:

            setState("javascript.0.Sprit.Tankstelle_"+index+".adresse", gasStation[index].location.address + "\n" +gasStation[index].location.postalCode + " "+ gasStation[index].location.city);
                }
            

            Bekomme ich keinen Zeilenumbruch in den Datenpunkt und auch nicht im Vis (getestet mit Basic/Strings)

            Homoran G 2 Replies Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Georgius last edited by

              @Georgius sagte in Skripten des E-Control Spritpreisrechners:

              Da reden wir von unterschiedlichen Sachen.

              Nein!

              @Georgius sagte in Skripten des E-Control Spritpreisrechners:

              Tankstelle 6 kann auch einen Preis haben, wenn mehrere Tankstellen den selben Preis haben.

              Genau, kann, muss aber nicht. Das ist ein Sonderfall

              1 Reply Last reply Reply Quote 0
              • G
                Georgius @Georgius last edited by

                @Georgius
                Frage 1 gelöst:

                if ((gasStation[index].prices[0])!=undefined){
                

                führt die nächsten Zeilen nur aus wenn ein Preis vorhanden ist.

                Langsam macht die ganze Sache und JS Spaß

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

                  Hallo,

                  Wie kann man den Preis als Punkt statt Komma bekommen?
                  Kann ich das wo umstellen?
                  1,169 / 1.169

                  Warum das? Weil einige Widget das Komma nicht erkennen............

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

                    @sigi234

                    Das

                    .toString().replace(".",",")
                    

                    in Zeile 11 des Startbeitrag weglassen.

                    Nicht vergessen dass dann der Datenpunkt "number" und nicht "string" sein darf.

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

                      @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                      und deswegen reizt es mich so, obwohl ich "nichts davon habe".

                      Lieber Rainer, du hast den schier unerschöpflich, ewigen Dank, deiner unmittelbaren Nachbarn, den Ösis 🙂 + 🙂

                      Aber eine praktische Feststellung, wie ich es sehe und seit Jahren handhabe:

                      1. Wenn ich unterwegs tanken muss, dann muss ich sehr demnächst tanken. Ist es sehr, sehr dringend, dan nehme ich die nächste Diskontstelle

                      2. Bin ich zu Hause und sollte am nächsten Tag tanken dann fahre ich bis jetzt immer zu meinem Lieblingsdiskonter auf dem Weg ins Büro. Sicher mache ich keinen Umweg wegen einer 2. oder 3. Kommastelle. Die ich auch vorab nicht wusste.

                      3. Ich werde die Preisinfos künftig dafür verwenden, festzustellen wie weit vorne oder wie weit hinten im Ranking mein Diskonter auf dem Weg ins Büro ist. Sollte es eklatant sein, kann ich später, morgen oder wo anders hinfahren. In der Praxis - seit Jahren beobachtet - ist mein Diskonter meist ganz vorne, also passte es für mich. Wenn diese Tankstelle geschlossen hat und ich ganz dringend wegmüssen, dann ist meist der Preis auch sekundär.

                      Deswegen werde ich MEINE Tankstelle auf Grund von Koordinaten hoffentlich unter den Top 10 "offenen" oder den Top 10 "mit geschlossenen" finden und darstellen. Die Top 5 werden mir nur als Info dienen.

                      justmy2cents
                      LG, mxa

                      Homoran sigi234 2 Replies Last reply Reply Quote 0
                      • G
                        Georgius @metaxa last edited by

                        @metaxa Wo finde ich den Baustein result?

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

                          Blocklybaustein? Unter Variablen anlegen!

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

                            @metaxa

                            Ja, nur unter welcher Rubrik

                            metaxa Homoran 2 Replies Last reply Reply Quote 0
                            • metaxa
                              metaxa @Georgius last edited by

                              @Georgius sorry, siehe oben. Variable --> erstellen

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

                                @Georgius variable

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

                                  @metaxa
                                  sehe ich auch wie du.
                                  Als ich eure "Preisunterschiede" im Zehntelcentbereich gesehen hatte musste ich fast lachen.

                                  Bei uns gab es Unterschiede von bis zu 30 CT im Umkreis von 2 km.

                                  Da war es sinnvoll sich zu informieren.

                                  ein Jahr nach Einführung der Transparenzstelle war es dann nur noch 10ct.

                                  1 Reply Last reply Reply Quote 0
                                  • G
                                    Georgius last edited by

                                    Also so schaut mal meine Lösung aus:

                                    on({id: 'javascript.0.Sprit.Sprit_JSON'/*Sprit JSON*/, 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);
                                    
                                        createState("javascript.0.Sprit.Tankstelle_"+index+".prices", 0,{type: 'string',name: 'Preis ges', read: true,write: true});
                                        if ((gasStation[index].prices[0])!=undefined){
                                            setState("javascript.0.Sprit.Tankstelle_"+index+".prices", (gasStation[index].prices[0].amount).toString().replace(".",","));
                                            };
                                    
                                        createState("javascript.0.Sprit.Tankstelle_"+index+".adresse", 0,{type: 'string',name: 'name', read: true,write: true});
                                        setState("javascript.0.Sprit.Tankstelle_"+index+".adresse", gasStation[index].location.address);
                                    
                                        createState("javascript.0.Sprit.Tankstelle_"+index+".adresse2", 0,{type: 'string',name: 'name', read: true,write: true});
                                        setState("javascript.0.Sprit.Tankstelle_"+index+".adresse2", gasStation[index].location.postalCode + " "+ gasStation[index].location.city);
                                        }
                                     });
                                    

                                    Sortiert nur nach billigst zu teuer.

                                    metaxa 1 Reply Last reply Reply Quote 2
                                    • metaxa
                                      metaxa @Georgius last edited by

                                      @Georgius Hm, ich krieg nur "0"
                                      4b81ac34-6fad-4413-80d4-7d9fa751bcb8-grafik.png
                                      Bei dir hagelts aber einmal keine Fehlermeldungen .....

                                      1 Reply Last reply Reply Quote 0
                                      • G
                                        Georgius last edited by

                                        Beim 2. Durchlauf sollte es dann funktionieren.

                                        Ich verwende das Blocky zum einlesen des JSON

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

                                          @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                                          Lieber Rainer, du hast den schier unerschöpflich, ewigen Dank, deiner unmittelbaren Nachbarn, den Ösis +

                                          Auch von mir ein Danke..............ein Ösi....☺

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

                                            @Georgius

                                            Danke, erledigt, arbeite schon daran mit Vis.
                                            Da ist noch Feintuning angesagt....
                                            Was habe ich noch vor, tja wenn es geht möchte ich noch folgendes einblenden:

                                            • Öffnungszeiten

                                            • Geöffnet/Geschlossen

                                            • Kilometer zur Tankstelle

                                            • Logo der Tankstelle (geht sicher mit Sichtbarkeit)

                                            Screenshot (2775).png

                                            metaxa 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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