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 goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Skripten des E-Control Spritpreisrechners

    This topic has been deleted. Only users with topic management privileges can see it.
    • sigi234
      sigi234 Forum Testing Most Active @Negalein last edited by sigi234

      @Negalein

      Hallo, habe mal das Skript aktiviert , bekomme keine Daten?

      Screenshot (2729).png

      Screenshot (2735).png

      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       
      //  START SETUP:
      //  finaler Inhalt der Datenpunkte:
      //  1 = name_preis | 2 = name_preis_plz_ort_strasse | 3 = (id_Preis_xx) name_preis & (id_Adresse_xx) PLZ_Ort_Strasse
          var InhaltDP = 2;
       
      //  Datenpunktadressen vollständig eintragen (z.B."javascript.0.Aktueller_Spritpreis_01"), müssen manuell erstellt werden
          var id_Preis_01 = "javascript.0.Aktueller_Spritpreis_01"/*Aktueller Spritpreis 01*/;
          var id_Preis_02 = "javascript.0.Aktueller_Spritpreis_02"/*Aktueller Spritpreis 02*/;
          var id_Preis_03 = "javascript.0.Aktueller_Spritpreis_03"/*Aktueller Spritpreis 03*/;
          var id_Preis_04 = "javascript.0.Aktueller_Spritpreis_04"/*Aktueller Spritpreis 04*/;
          var id_Preis_05 = "javascript.0.Aktueller_Spritpreis_05"/*Aktueller Spritpreis 05*/;
       
      //  Achtung, wurde oben bei "InhaltDP" 3 ausgewählt (Daten in 2 Felder gesplittet), dann müssen folgende Felder befüllt werden!
      //  Datenpunktadressen vollständig eintragen (z.B."javascript.0.Aktueller_Spritpreis_Adresse_01"), müssen manuell erstellt werden
          var id_Adresse_01 = "";
          var id_Adresse_02 = "";
          var id_Adresse_03 = "";
          var id_Adresse_04 = "";
          var id_Adresse_05 = "";
       
      // Ende Setup
      //////////////////////////////////////////////////////////////////////////////////////////////
      
      

      Screenshot (2732).png

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

        @sigi234 sagte in Skripten des E-Control Spritpreisrechners:

        Hallo, habe mal das Skript aktiviert , bekomme keine Daten?

        Hast du im Parser JSON ausgewählt?

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

          @Negalein
          JA

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

            @sigi234 sagte in Skripten des E-Control Spritpreisrechners:

            @Negalein
            JA

            Ändere im DP von Logikwert zu Zeichenkette

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

              @Negalein sagte in Skripten des E-Control Spritpreisrechners:

              @sigi234 sagte in Skripten des E-Control Spritpreisrechners:

              @Negalein
              JA

              Ändere im DP von Logikwert zu Zeichenkette

              Erledigt, kommt noch nichts, was gehört eigentlich in die RegEx rein? Ohne dem geht ja nichts..........

              Funktioniert!

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

                @sigi234 sagte in Skripten des E-Control Spritpreisrechners:

                Erledigt, kommt noch nichts, was gehört eigentlich in die RegEx rein? Ohne dem geht ja nichts..........

                Funktioniert!

                Ich werde auch vorerst wieder auf das Script umsteigen und beobachten ob da die Daten zusammenpassen.

                Nur mit Parser und Regex funktioniert es leider nicht wie erhofft.

                Vielleicht findet @metaxa noch eine Lösung wie man die Namen kürzt und die Strasse wegbekommt.
                Dafür würd ich sogar bezahlen wenns funktioniert. 😀

                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:

                  Vielleicht findet @metaxa noch eine Lösung wie man die Namen kürzt und die Strasse wegbekommt.
                  Dafür würd ich sogar bezahlen wenns funktioniert.

                  Ich glaube due verstehst die Funktion eines RegEx noch nicht ganz

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

                    @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                    Ich glaube due verstehst die Funktion eines RegEx noch nicht ganz

                    Da geb ich dir zu 100% Recht! 😂
                    Bis vor 2 Tagen hatte ich noch nie davon gehört. 😎

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

                      @Homoran sagte in Skripten des E-Control Spritpreisrechners:

                      Ich glaube due verstehst die Funktion eines RegEx noch nicht ganz

                      Hallo Rainer,
                      ja und nein, die Kollegen haben einfach immer den für DE möglichen Tankerkönigadapter als das Ziel gesehen. Das geht leider so nicht. RegEx ist eine super Geschichte, nur machte ich mir im Verlauf dieses Threads schon meine Gedanken darüber was passiert, wenn dann alle paar Minuten 30 Serverabfragen zum gleichen Zeitpunkt von x Usern kommen.

                      Ich bin dran, das Script (Ursprung vom Eingangspost) weiter zu entwickeln. Leider habe ich keine JS Kenntnisse oder Erfahrung und bin grad dabei mühsam zusammenzutragen und verstehen, wie was funktioniert.

                      @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                      Dafür würd ich sogar bezahlen wenns funktioniert.

                      Darüber läßt sich reden ☺ ✌ ☺ ✌ ✌ ☺ 😂 😎
                      Im Ernst, gib mir noch paar Tage, ich bin am Lernen und Schauen wie ich es rasch und verständlich umsetzen kann. Die einzelnen DP anlegen lassen, dass kann das Bastelscript schon, Ich weiß, brauchst nicht. Aber eventuell jemand Anderer.

                      Tankstellennamen einkürzen, bringe ich sicher nicht zusammen. Da gibt es zuviele kreative Auswüchse.

                      • Name separat, ok

                      • Preis seperat, ok

                      • PLZ und Ort separat, ok

                      • Strasse separat optional, ok

                      Was wäre noch von Interesse?

                      LG und bitte um etwas Geduld, mxa

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

                        @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                        • Name separat, ok

                        • Preis seperat, ok

                        • PLZ und Ort separat, ok

                        • Strasse separat optional, ok

                        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.

                        Darüber läßt sich reden ☺ ✌ ☺ ✌ ✌ ☺ 😂 😎

                        melde dich einfach, dann machen wir was

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

                          @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                          melde dich einfach, dann machen wir was

                          Vergiss es, ich habe dich erst beim 2. mal Lesen verstanden.

                          @Negalein sagte in Skripten des E-Control Spritpreisrechners:

                          Am allerwichtigsten ist, dass alle Daten zueinander passen.

                          Tun sie jetzt auch im Script das du einsetzt, da die Quelle ein und der selbe String (JSON) sind. Was eventuell die API durcheinander bringt kann niemand abfangen.

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

                            @metaxa sagte in Skripten des E-Control Spritpreisrechners:

                            Was wäre dein Part von wir? 🙂

                            Ich zitiere mich mal selber 😹 😹

                            Dafür würd ich sogar bezahlen wenns funktioniert. 😀

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

                              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

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

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

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

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

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

                                    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 Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @Negalein last edited by

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

                                      Negalein 1 Reply Last reply Reply Quote 0
                                      • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            600
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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