Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Spritpreise einlesen

    NEWS

    • History/SQL/InfluxDB Major Updates (Stable)

    • Alexa2 BETA 3.14+ war Buggy->UNBEDINGT 3.17.4+ installieren!

    • Node.js 16.x neue Empfehlung für ioBroker

    Spritpreise einlesen

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

      Hallo zusammen,

      nachdem ich http://forum.iobroker.org/viewtopic.php?f=32&t=614&start=60#p10289 schon mein Skript für die Umkreissuche (billigste Tankstelle) gepostet habe, folgt hier nun - wie versprochen - das Skript für die Spritpreise gezielter Tankstellen. Ist ein wenig länger, wegen der vielen Felder.

      Um oberen Teil gibt man seine Tankerkoenig API ein. Darunter ist ein Array mit den gewünschten Tankstellen. Eigentlich ist dabei egal, wie viele es sind. Für jede Tankstelle wird tankerkoenig einmal abgefragt. Ich weiss jetzt nicht, wie oft man z.B. pro Stunde zugreifen darf, aber zu Sicherheit würde ich nur maximal 5 Tankstellen eintragen (reicht ja auch).

      Ihr bekommt den API Key bei https://creativecommons.tankerkoenig.de. Unter Dokumentation steht auch, wie man die ID einer Tankstelle erhält (eine Liste aufrufen und dann die ID rauskopieren). Alternativ könnt ihr auch mein oben genanntes http://forum.iobroker.org/viewtopic.php?f=32&t=614&start=60#p10289 nutzen und den Inhalt des Objekts javascript.[Nummer der Instanz, vermutlich 0].billigste_Tankstelle.json mal ansehen. Darin sind alle Tankstellen der Umkreissuche um die geografische Länge/Breite (in den javascript-Adaptereinstellungen eingestellt) im JSON Format auf gelistet. Einfach die gewünschten Tankstellen raussuchen und die ID kopieren.

      Die Liste mit den gewünschten Tankstellen enthält als zweiten Eintrag in jeder Zeile (Beschriftung) einen Kurznamen. Den könnt Ihr selbst vergeben. Damit kann man später in VIS einer Tankstelle ggf. treffender und kürzer beschriften (wenn zB zwei Stationen gleicher Marke an einer Straße gegenüber liegen) und ist nicht auf die Eingaben der Tankstellenbetreiber angewiesen.

      Ein kleinen Umstand gibt es noch. Wenn Ihr später mal das Array ändert (verkürzt), löscht vorher im Objekt-Reiter von ioBroker die alten Objekte. Das Skript prüft nicht, ob sich da was geändert hat. Das war mir zu aufwendig. :oops:

      Den großen Log kann man in der ersten Zeile mit logging = false ausschalten.

      Die Preise werden bei Skriptstart und alle 5 Minuten (schedule) eingelesen.

      Viel Spass

      /* Spritpreis einlesen (gezielte Stationen)
      Quelle: Tankerkoenig mit API
      
      Unter Verwendung von Skripten von Bluefox und ruhr70
      erstellt: 26.08.2015 von pix
      */
      
      var logging = true; // (true;false) Logausgabe zentral schalten, da 5minütlich ein Mehrzeiler geloggt wird.
      
      // Eigenen Tankerkoenig API Schlüssel festlegen
      var api = 'xxxxxxxTankerkönigAPIeintragenxxxxxxx';
      
      // Tankstellen festlegen  ##### weitere einfach unten anfügen (die Zahl in der Eckigen Klammer jeder Zeile um eins erhöhen. Später keine Zeilen aus dem Array rauslöschen)
      var Tankstelle = [];         // Tankerkönig ID                          Beschriftung   
          Tankstelle[0] =  new Array('51d4b6a9-a095-1aa0-e100-80009459e03a', 'JET BERLIN Mustertankstelle'); 
          // Tankstelle[1] =  new Array('48036597-cbb1-48cc-94b6-fc49f72027ea', 'Nesselwang Mustertankstelle'); 
          // Tankstelle[2] =  new Array('4fabf574-4cc0-4bf7-bbd5-eb6ff5d6875d', 'Kempten Mustertankstelle'); 
          // Tankstelle[3] =  new Array('92f703e8-0b3c-46da-9948-25cb1a6a1514', 'Stuttgart Hackstr Mustertankstelle'); 
          // usw.
      
      /* -----------------------------------------------
          Ab hier nix mehr ändern
          -----------------------------------------------*/
      
      // Objekte erstellen (mit Struktur)
      var working;
      function objekte_erstellen(nummer) {
          working = false;
          createState('Sprit.' + nummer + '.json', {name: 'Tankstelle ' + nummer + ' - JSON'});
          createState('Sprit.' + nummer + '.Name', {name: 'Tankstelle ' + nummer + ' - Name'});
          createState('Sprit.' + nummer + '.Kurzname', {name: 'Tankstelle ' + nummer + ' - Kurzname aus eigener Beschriftung'});
          createState('Sprit.' + nummer + '.Marke', {name: 'Tankstelle ' + nummer + ' - Marke'});
          createState('Sprit.' + nummer + '.ID', {name: 'Tankstelle ' + nummer + ' - ID'});
          createState('Sprit.' + nummer + '.geoeffnet', {name: 'Tankstelle ' + nummer + ' - z.Zt. geöffnet'});
          createState('Sprit.' + nummer + '.Adresse.Strasse', {name: 'Tankstelle ' + nummer + ' - Strasse'});
          createState('Sprit.' + nummer + '.Adresse.Hausnummer', {name: 'Tankstelle ' + nummer + ' - Hausnummer'});
          createState('Sprit.' + nummer + '.Adresse.PLZ', {name: 'Tankstelle ' + nummer + ' - PLZ'});
          createState('Sprit.' + nummer + '.Adresse.Ort', {name: 'Tankstelle ' + nummer + ' - Ort'});
          createState('Sprit.' + nummer + '.Adresse.Laenge', {name: 'Tankstelle ' + nummer + ' - geografische Laenge', unit: '°'});
          createState('Sprit.' + nummer + '.Adresse.Breite', {name: 'Tankstelle ' + nummer + ' - geografische Breite', unit: '°'});
          createState('Sprit.' + nummer + '.E5.Preis', {name: 'Tankstelle ' + nummer + ' - E5-Preis', unit: '€'});
          createState('Sprit.' + nummer + '.E5.Preis_kurz', {name: 'Tankstelle ' + nummer + ' - E5-Preis (gekürzt)', unit: '€'});
          createState('Sprit.' + nummer + '.E5.Preis_dritte_Stelle', {name: 'Tankstelle ' + nummer + ' - E5-Preis (dritte Dezimalstelle)'});
          createState('Sprit.' + nummer + '.E10.Preis', {name: 'Tankstelle ' + nummer + ' - E10-Preis', unit: '€'});
          createState('Sprit.' + nummer + '.E10.Preis_kurz', {name: 'Tankstelle ' + nummer + ' - E10-Preis (gekürzt)', unit: '€'});
          createState('Sprit.' + nummer + '.E10.Preis_dritte_Stelle', {name: 'Tankstelle ' + nummer + ' - E10l-Preis (dritte Dezimalstelle)'});
          createState('Sprit.' + nummer + '.Diesel.Preis', {name: 'Tankstelle ' + nummer + ' - Diesel-Preis', unit: '€'});
          createState('Sprit.' + nummer + '.Diesel.Preis_kurz', {name: 'Tankstelle ' + nummer + ' - Diesel-Preis (gekürzt)', unit: '€'});
          createState('Sprit.' + nummer + '.Diesel.Preis_dritte_Stelle', {name: 'Tankstelle ' + nummer + ' - Diesel-Preis (dritte Dezimalstelle)'});
          createState('Sprit.' + nummer + '.Diesel.Preis_dritte_Stelle', {name: 'Tankstelle ' + nummer + ' - Diesel-Preis (dritte Dezimalstelle)'});
          working = true;
      }
      
      // Tankstellen aus Array nacheinander durchgehen und ID an Funktion daten_einlesen übergeben
      function daten_einlesen() {
          for (var zaehler=0, 
                   zaehler_array=Tankstelle.length; 
                   zaehler<zaehler_array; 2/5/zaehler++)/{/createstate/für/diese/nummer/mit/allen/feldern/working="false;" objekte_erstellen(zaehler+1);/zähler/und/kurzname/übergeben/if/(working)/station_einlesen(zaehler+1,tankstelle[zaehler][0],tankstelle[zaehler][1]);/nummer,/id/der/aktuellen/tankstelle/setstate/}/tankstellen/einlesen/var/request="require('request');" daten/einer/station/function/station_einlesen(nummer,/station_id,/kurzname)/url="https://creativecommons.tankerkoenig.de/json/detail.php?id=" +/station_id/'&apikey=" + api + " &_="1415552056644';" request(url,/(error,/response,/body)/(!error/&&/response.statuscode="=" 200)/result;/try{/result="JSON.parse(body);" data="JSON.stringify(result," null,/2);/(logging)/log(data);/setstate('sprit.'/'.json',/data);/catch/(e)/log('spritpreise/(gezielte/station)/-/parse/fehler:/'/e);/(result)/log('----------------/spritpreise/(tankstelle/#'/')/--------------');/log('name:/result.station.name);/log('kurzname:/kurzname);/log('marke:/result.station.brand);/log('id:/result.station.id);/log('strasse:/result.station.street);/log('hausnummer:/result.station.housenumber);/log('plz:/result.station.postcode);/log('stadt:/result.station.place);/log('geöffnet:/result.station.isopen);/log('geografische/breite/result.station.lat/'°');/länge:/result.station.lng/log('preis/e5:/result.station.e5/€');/e5/(gekürzt):/preis_kuerzen(result.station.e5)/(3\./dezimalstelle):/0.'/preis_drittestelle(result.station.e5)/cent');/e10:/result.station.e10/e10/preis_kuerzen(result.station.e10)/preis_drittestelle(result.station.e10)/d:/result.station.diesel/d/preis_kuerzen(result.station.diesel)/preis_drittestelle(result.station.diesel)/log('-----------------------------------------------------------');/'.name',/'.kurzname',/'.marke',/'.id',/'.geoeffnet',/'.adresse.strasse',/'.adresse.hausnummer',/'.adresse.plz',/'.adresse.ort',/'.adresse.breite',/result.station.lat);/'.adresse.laenge',/result.station.lng);/'.e5.preis',/result.station.e5);/'.e5.preis_kurz',/preis_kuerzen(result.station.e5));/'.e5.preis_dritte_stelle',/preis_drittestelle(result.station.e5));/'.e10.preis',/result.station.e10);/'.e10.preis_kurz',/preis_kuerzen(result.station.e10));/'.e10.preis_dritte_stelle',/preis_drittestelle(result.station.e10));/'.diesel.preis',/result.station.diesel);/'.diesel.preis_kurz',/preis_kuerzen(result.station.diesel));/'.diesel.preis_dritte_stelle',/preis_drittestelle(result.station.diesel));/eingelesen/kein/fehler');/else/error);/});/ende/preis/kürzen/preis_kuerzen(preis)/rechenwert="preis" */100;/100facher/jetzt/nachkommastelle/rechenwert2="preis" 1000;/1000facher/ohne/(.x)/wird/abgeschnitten/es/bleiben/zwei/nachkommastellen/return/(rechenwert.tofixed(2));/ausgeben/(abgeschnitten)/dritte/einzeln/ermitteln/preis_drittestelle(preis)/(rechenwert2/(rechenwert/1000));/nachommastelle/ausführung/daten_einlesen();/bei/skriptstart/schedule("*/*",/daten_einlesen);/jede/minuten/<e=""></zaehler_array;>
      

      Grüße,

      Pix

      Edit 24.5.16 Hausnummer durch PLZ an entsprechender Stelle ersetzt

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

        Super Sache

        finde leider keine Zustände

        im LOG:

        javascript-0	2015-08-27 19:51:13	info	script.js.Tankerkoenig_mit_API: Spritpreise eingelesen (gezielte Station) - kein Fehler
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Diesel.Preis_dritte_Stelle" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Diesel.Preis_kurz" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Diesel.Preis" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E10.Preis_dritte_Stelle" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E10.Preis_kurz" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E10.Preis" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E5.Preis_dritte_Stelle" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E5.Preis_kurz" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.E5.Preis" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.Laenge" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.Breite" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.Ort" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.PLZ" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.Hausnummer" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Adresse.Strasse" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.geoeffnet" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.ID" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Marke" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Kurzname" not found
        javascript-0	2015-08-27 19:51:13	warn	State "Sprit.2.Name" not found
        javascript-0	2015-08-27 19:51:13	info	script.js.Tankerkoenig_mit_API: -----------------------------------------------------------
        
        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Hallo,

          Bitte mal die entsprechende JavaScript Instanz neu starten.

          Gibt manchmal Probleme beim Anlegen mit createState.

          Gruß

          Pix

          Gesendet von meinem iPhone mit Tapatalk

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

            @pix:

            Hallo,

            Bitte mal die entsprechende JavaScript Instanz neu starten.

            Gibt manchmal Probleme beim Anlegen mit createState.

            Gruß

            Pix

            Gesendet von meinem iPhone mit Tapatalk `

            Super

            das war es

            Instanz neu gestartet:

            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Spritpreise eingelesen (gezielte Station) - kein Fehler
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: -----------------------------------------------------------
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis D (3\. Dezimalstelle): 0.9 Cent
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis D (gekürzt): 1.05 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis D: 1.059 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e10 (3\. Dezimalstelle): 0.9 Cent
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e10 (gekürzt): 1.28 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e10: 1.289 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e5 (3\. Dezimalstelle): 0.9 Cent
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e5 (gekürzt): 1.30 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Preis e5: 1.309 €
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Geografische Länge: 6.875487°
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Geografische Breite 51.857345°
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: geöffnet: true
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Stadt: Borken
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: PLZ: 46325
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Hausnummer: 35
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Strasse: Otto-Hahn-Str.
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: ID: c08cad20-ea69-4a5a-1a0b-d84b7f109c7b
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Marke: Freie Tankstelle
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Kurzname: AVIA OttoHahn
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: Name: AVIA Service Station
            javascript-0	2015-08-28 16:48:27	info	script.js.Tankerkoenig_mit_API: ---------------- Spritpreise (Tankstelle #2) --------------
            
            
            1 Reply Last reply Reply Quote 0
            • C
              ChristianF last edited by

              Sehr cool, erhöht den WAF ungemein 🙂

              Danke!!!

              1 Reply Last reply Reply Quote 0
              • C
                cybertron last edited by

                Hallo Pix,

                als erstes mal ein fettes Danke für das Script.

                Ich hatte bisher das ganze testweise mal über Node-Red eingerichtet und dazu auch in vis das Widget von Ruhr70 verwendet.

                Das Widget hat jeweils noch Felder für den Öffungszeiten-Text und für die Öffnungszeit "geöffnet von", "geöffnet bis"

                Dies fand ich recht praktisch und wollte das in grober Anfängermanier in Dein Script mit unterbringen.

                Die Öffnungszeiten verstecken sich aber leider in einem Array, wo ich absolut keine Ahnung habe, wie ich das einbinde.

                
                openingTimes [3] 
                 0 {3} 
                 	text : Mo-Fr 
                 	start : 05:00:00 
                 	end : 00:00:00 
                 1 {3} 
                 	text : Samstag 
                	start : 06:00:00 
                 	end : 00:00:00 
                 2 {3} 
                 	text : Sonntag 
                	start : 08:00:00 
                 	end : 00:00:00 
                
                

                Vielleicht könnte man dies ja hier im Script auch wieder einbinden .

                Gruss

                Silvio

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  Hllo cybertron,

                  danke, es freut mich, dass dir das Skript gefällt.
                  @cybertron:

                  Die Öffnungszeiten verstecken sich aber leider in einem Array, wo ich absolut keine Ahnung habe, wie ich das einbinde. `
                  Die Tankstellenbetreiber füllen die Felder selbst aus. Es ist kompliziert, da einige nach Werktag, Samstag und Sonntag unterscheiden, einige schreiben "täglich, ausser Feiertags", einige schreiben gar nichts. Mir reichte die Info, ob die Tankstelle aktuell geöffnet ist oder nicht.

                  Wenn du das dennoch einbinden willst, brauchst du für das von dir genannte Array 9! weitere Variablen:

                   createState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Text', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Mo-Fr (Text)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Start', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Mo-Fr (Start)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Ende', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Mo-Fr (Ende)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Text', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Sa (Text)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Start', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Sa (Start)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Ende', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten Sa (Ende)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Text', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten So (Text)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Start', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten So (Start)'});
                      createState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Ende', {name: 'Tankstelle ' + nummer + ' - Öffnungszeiten So (Ende)'});
                  
                  

                  Dann kannst du weiter unten das Array auslesen (und auf Wunsch natürlich auch im Log ausgeben):

                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Text', (result.station.openingTimes[0].text));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Text', (result.station.openingTimes[0].start));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Werktag.Text', (result.station.openingTimes[0].end));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Text', (result.station.openingTimes[1].text));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Text', (result.station.openingTimes[1].start));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Samstag.Text', (result.station.openingTimes[1].end));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Text', (result.station.openingTimes[2].text));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Text', (result.station.openingTimes[2].start));
                  setState('Sprit.' + nummer + '.Oeffnungszeiten.Sonntag.Text', (result.station.openingTimes[2].end));
                  
                  

                  Wenn deine Tankstelle diese Daten liefert sollte das gehen. Wenn nicht, dann meckert das Skript bei Array[1] und Array[2]. Die Bennung der Variable (Werktag oder täglich) ist also eigentlich abhängig vom Inhalt. Man könnte noch eine Prüfung einbauen, ob nur ein Datensatz oder drei vorhanden sind, aber das führt zu weit.

                  Gruß,

                  Pix

                  1 Reply Last reply Reply Quote 0
                  • R
                    RobS last edited by

                    Hi zusammen,

                    schonmal vielen Dank Pix für ein weiteres geniales Script.

                    Würde die Daten nun auch gerne in Vis einbinden.

                    Kannst du mir einen Tipp geben, wie das am besten anzustellen ist?

                    Etwa so wie in diesem Beispiel bei Eric2905 stelle ich mir das vor:

                    http://forum.iobroker.org/download/file … &mode=view

                    Grüße, Robert

                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by

                      Eric? Kannst du dein Widget exportieren? Geht schneller 😛

                      Gruß

                      Pix

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

                        Mach ich doch glatt 🙂

                        Farbe des Tankstellennamens wechselt: Grün = geöffnet, rot = geschlossen.

                        Ich kann die Node-red-Flows auch gleich mit posten.

                        Es gibt einen zur Ermittlung der Tankstellen-ID (anhand von Koordinaten), welcher nur bei Änderungen benötigt wird, und einen, der die Preise, usw. ermittelt.

                        Gruß,

                        Eric

                        1 Reply Last reply Reply Quote 0
                        • R
                          RobS last edited by

                          Das wär total Super 😄

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

                            Mach ich heute Abend, wenn ich zu Hause bin.

                            Gruß,

                            Eric

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

                              Hallo zusammen,

                              hier als Widget-Export der Teil meiner View.

                              Ich habe alle Daten anonymisiert.

                              ! ````
                              [{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Schwelm_B7_Esso.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €"},"style":{"left":"572px","top":"194px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Wuppertal_Dahlerstrasse_Shell.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €"},"style":{"left":"572px","top":"219px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Wuppertal_ObereLicht_Shell.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €"},"style":{"left":"572px","top":"244px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Wuppertal_ObereLicht_Star.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €"},"style":{"left":"572px","top":"269px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplFrame","data":{"visibility-cond":"==","visibility-val":1,"title":"Dieselpreise","title_color":"black","title_top":"5","title_left":"15","header_height":"30","header_color":"#a0c0ca","title_back":""},"style":{"left":"287px","top":"149px","width":"377px","height":"219px","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"5"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Gevelsberg_B7_Jet.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €","oid-quality":"","class_true":"","class_false":""},"style":{"left":"572px","top":"294px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle1.offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 1","value1":"Tankstelle 1","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0","html_prepend":""},"style":{"left":"297px","top":"194px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle2.offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 2","value1":"Tankstelle 2","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0"},"style":{"left":"297px","top":"219px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle3offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 3","value1":"Tankstelle 3","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0"},"style":{"left":"297px","top":"244px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle4.offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 4","value1":"Tankstelle 4","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0"},"style":{"left":"297px","top":"269px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle5.offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 5","value1":"Tankstelle 5","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0"},"style":{"left":"297px","top":"294px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueListHtml8","data":{"oid":"node-red.0.Tankstelle6.offen","visibility-cond":"==","visibility-val":1,"count":"1","value0":"Tankstelle 6","value1":"Tankstelle 6","style1":"color: lightgreen","style0":"color: red","value2":"Offen","style2":"background-color: red; padding:4px;","test_list":"0"},"style":{"left":"297px","top":"319px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","width":"285px","height":"20px","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueFloat","data":{"oid":"node-red.0.Tankstelle_Ennepetal_Lohen_Oil.diesel.lang","visibility-cond":"==","visibility-val":1,"is_comma":"true","factor":"1","html_append_singular":" €","html_append_plural":" €","oid-quality":"","class_true":"","class_false":""},"style":{"left":"572px","top":"319px","width":"80px","height":"22px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","z-index":"20"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"node-red.0.Tankstelle.Statusuhrzeit","visibility-cond":"==","visibility-val":1,"html_prepend":"(Stand : ","html_append":")"},"style":{"left":"417px","top":"154px","color":"black","text-align":"left","width":"227px","height":"22px","z-index":"20","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-weight":"bold","font-size":"large"},"widgetSet":"basic"}]

                              
                              –--------------------------------------------------------------------------------
                              
                              Und hier der Node-Red-Flow zur Ermittlung der Tankstellen-ID bei Tankerkönig.de
                              
                              >! ````
                              [{"id":"9ef06917.610f98","type":"inject","name":"Click to start","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":162.5,"y":178,"z":"13871e97.ec78e1","wires":[["518cc61f.ae7338"]]},{"id":"542a49f.fabd5b8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":897.5,"y":177,"z":"13871e97.ec78e1","wires":[]},{"id":"518cc61f.ae7338","type":"function","name":"Daten_eintragen_!!!","func":"// Hier die Daten aus z.B. Google-Maps eintragen\n\nvar LONG = \"7.3846226\";\nvar LAT = \"51.305232\";\n\n\n// Hier die festen Angaben hinterlegen\nvar SPRIT = \"diesel\";\nvar APIKEY = \"xxxx\";\n\n\nvar Ausgabe = \"https://creativecommons.tankerkoenig.de/json/list.php?rad=1&sort=price&type=\" + SPRIT + \"&apikey=\" + APIKEY + \"&lat=\" + LAT + \"&lng=\" + LONG;\nmsg.url = Ausgabe;\n\nreturn msg;","outputs":1,"noerr":0,"x":432.5,"y":178,"z":"13871e97.ec78e1","wires":[["c499d888.3b6628"]]},{"id":"c499d888.3b6628","type":"http request","name":"Abfragen","method":"GET","ret":"txt","url":"","x":685.5,"y":178,"z":"13871e97.ec78e1","wires":[["542a49f.fabd5b8"]]}]
                              

                              Im Flow ist eine Funktion "Daten_eintragen_!!!" - dort bitte folgende Daten hinterlegen:

                              • APIKEY = Key von Tankerkönig (einmalig)

                              • SPRIT = Die gewünschte Spritsorte (einmalig)

                              • LONG = Angaben aus z.B. Google-Maps (für jede Tanke)

                              • LAT = Angaben aus z.B. Google-Maps (für jede Tanke)

                              Die Tankstellen-ID müsst ihr dann aus dem Rückgabewert (im seitlichen Debug-Bereich) Krauskopieren. Wer will, kann die Ausgabe noch umbauen / ausfiltern - war mir für die einmalige Benutzung dann doch zu aufwändig 🙂

                              355_ts_id.png

                              –--------------------------------------------------------------------------------

                              Hier der Flow, der die Preise, usw. dann abholt:

                              ! ````
                              [{"id":"91eb5f0.f6e14a","type":"subflow","name":"Nachkommastellen berechnen","in":[{"x":530.6428833007812,"y":296.33337783813477,"wires":[{"id":"da010554.25fef8"}]}],"out":[{"x":947.6428852081299,"y":267.76194953918457,"wires":[{"id":"da010554.25fef8","port":0}]},{"x":949.0714740753174,"y":324.9047842025757,"wires":[{"id":"da010554.25fef8","port":1}]}]},{"id":"da010554.25fef8","type":"function","name":"auf 2-Stellen, Nachkomma extra","func":"// Preis kürzen\n var rechenwert = msg.payload * 100; // 100facher Preis jetzt mit einer Nachkommastelle\n var rechenwert2 = msg.payload * 1000; // 1000facher Preis ohne Nachkommastelle\n rechenwert = Math.floor(rechenwert); // Nachkommastelle (.x) wird abgeschnitten\n rechenwert = rechenwert/100; // es bleiben zwei Nachkommastellen\n msg1 = {};\n msg1.payload = rechenwert.toFixed(2); // Preis mit 2 Nachkommastellen ausgeben (abgeschnitten)\n msg1.topic=msg.topic+".kurz";\n msg2 = {};\n msg2.topic=msg.topic+".nachkomma"\n msg2.payload = rechenwert2 - (rechenwert * 1000); // Dritte Nachommastelle einzeln ermitteln\n\nreturn [msg1,msg2];","outputs":"2","noerr":0,"x":739.1428833007812,"y":296.33337783813477,"z":"91eb5f0.f6e14a","wires":[[],[]]},{"id":"a05ff8a.f5fa008","type":"subflow","name":"Tankstellen Details","in":[{"x":44.071441650390625,"y":197,"wires":[{"id":"6c64edf3.939b14"}]}],"out":[{"x":1040.0000305175781,"y":116.58723831176758,"wires":[{"id":"b31f137f.4ce0f","port":0}]},{"x":1037.0714225769043,"y":165.19044876098633,"wires":[{"id":"4d64408.fb29bc","port":0}]},{"x":1037.0714225769043,"y":212.33330917358398,"wires":[{"id":"4d64408.fb29bc","port":1}]},{"x":1037.0396842956543,"y":260.33343410491943,"wires":[{"id":"2376a1cc.dc895e","port":0}]},{"x":1035.611078262329,"y":311.7619924545288,"wires":[{"id":"3a34d9c7.c5cb26","port":0}]},{"x":1036.8968200683594,"y":359.7619915008545,"wires":[{"id":"3a34d9c7.c5cb26","port":1}]},{"x":1035.4682216644287,"y":409.7620220184326,"wires":[{"id":"ffcd5ce6.0032a","port":0}]},{"x":1035.5714530944824,"y":455.68272399902344,"wires":[{"id":"a28e8ec.f5d717","port":0}]},{"x":1036.6429557800293,"y":502.2540683746338,"wires":[{"id":"a28e8ec.f5d717","port":1}]},{"x":1040.0000820159912,"y":551.3335075378418,"wires":[{"id":"13ae6157.ec519f","port":0}]},{"x":1040.2858142852783,"y":598.9050846099854,"wires":[{"id":"cb64b6b6.349b48","port":0}]},{"x":1039.8572425842285,"y":651.9050407409668,"wires":[{"id":"ec292522.13d6d8","port":0}]},{"x":1040.8571529388428,"y":707.4285230636597,"wires":[{"id":"46be6b09.b94194","port":0}]},{"x":1039.428524017334,"y":763.142822265625,"wires":[{"id":"d36330a7.2c9cd","port":0}]},{"x":1037.1428909301758,"y":821.4285793304443,"wires":[{"id":"bab59623.454a68","port":0}]},{"x":1035.7142372131348,"y":885.7143497467041,"wires":[{"id":"aea7e72e.515818","port":0}]}]},{"id":"dad29d29.252d6","type":"http request","name":"Details abfragen","method":"GET","ret":"obj","url":"","x":199.7142791748047,"y":491.1428451538086,"z":"a05ff8a.f5fa008","wires":[["4d7a3b23.b285c4","38ede8ee.c71218","1fa6bd4f.e05943","13ae6157.ec519f","cb64b6b6.349b48","ec292522.13d6d8","46be6b09.b94194","d36330a7.2c9cd","bab59623.454a68","aea7e72e.515818"]]},{"id":"4d7a3b23.b285c4","type":"function","name":"Diesel Preis extrahieren","func":"msg.payload = parseFloat(msg.payload.station.diesel);\nmsg.topic=msg.topic+".diesel";\nreturn msg;","outputs":"1","noerr":0,"x":542.7142944335938,"y":210.87295150756836,"z":"a05ff8a.f5fa008","wires":[["b31f137f.4ce0f","4d64408.fb29bc"]]},{"id":"38ede8ee.c71218","type":"function","name":"E10 extrahieren","func":"msg.payload = parseFloat(msg.payload.station.e10);\nmsg.topic=msg.topic+".e10";\n\nreturn msg;","outputs":"1","noerr":0,"x":504.4286117553711,"y":346.96847105026245,"z":"a05ff8a.f5fa008","wires":[["a28e8ec.f5d717","ffcd5ce6.0032a"]]},{"id":"1fa6bd4f.e05943","type":"function","name":"E5 extrahieren","func":"msg.payload = parseFloat(msg.payload.station.e5);\nmsg.topic=msg.topic+".e5";\nreturn msg;","outputs":"1","noerr":0,"x":510.4286117553711,"y":282.96847105026245,"z":"a05ff8a.f5fa008","wires":[["3a34d9c7.c5cb26","2376a1cc.dc895e"]]},{"id":"13ae6157.ec519f","type":"function","name":"ist auf","func":"msg.payload = msg.payload.station.isOpen;\nmsg.topic=msg.topic+".offen";\n\nreturn msg;","outputs":"1","noerr":0,"x":729.8571434020996,"y":549.9684228897095,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"cb64b6b6.349b48","type":"function","name":"ganztags auf","func":"msg.payload = msg.payload.station.wholeDay;\nmsg.topic=msg.topic+".ganztags";\nreturn msg;","outputs":"1","noerr":0,"x":742.4286499023438,"y":590.8255300521851,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"ec292522.13d6d8","type":"function","name":"Öffnungszeiten Text","func":"msg.payload = msg.payload.station.openingTimes[0].text;\nmsg.topic=msg.topic+".oeffnungszeiten.text";\nreturn msg;","outputs":"1","noerr":0,"x":759.0000534057617,"y":642.762035369873,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"46be6b09.b94194","type":"function","name":"Start","func":"msg.payload = msg.payload.station.openingTimes[0].start;\nmsg.topic=msg.topic+".oeffnungszeiten.start";\nreturn msg;","outputs":"1","noerr":0,"x":720.2857933044434,"y":700.3336553573608,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"d36330a7.2c9cd","type":"function","name":"End","func":"msg.payload = msg.payload.station.openingTimes[0].end;\nmsg.topic=msg.topic+".oeffnungszeiten.end";\nreturn msg;","outputs":"1","noerr":0,"x":717.0000686645508,"y":760.4764575958252,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"6c64edf3.939b14","type":"function","name":"Api Key setzen","func":"msg.config = msg.config || {};\nmsg.config.apiKey="888cf126-cd35-0724-f039-2878e09341e0";\nreturn msg;","outputs":1,"noerr":0,"x":212.57144165039062,"y":196.5713653564453,"z":"a05ff8a.f5fa008","wires":[["961574e7.69ea88"]]},{"id":"961574e7.69ea88","type":"function","name":"Request bauen","func":"msg.url="https://creativecommons.tankerkoenig.de/json/detail.php?id=" + msg.payload +"&apikey=" + msg.config.apiKey;\nreturn msg;","outputs":1,"noerr":0,"x":188.85711669921875,"y":319.99993324279785,"z":"a05ff8a.f5fa008","wires":[["dad29d29.252d6"]]},{"id":"b31f137f.4ce0f","type":"function","name":"Topic","func":"msg.topic=msg.topic+".lang"\nreturn msg;","outputs":1,"noerr":0,"x":770.8571128845215,"y":153.1427984237671,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"4d64408.fb29bc","type":"subflow:91eb5f0.f6e14a","name":"","x":804.2856979370117,"y":212.33329963684082,"z":"a05ff8a.f5fa008","wires":[[],[]]},{"id":"3a34d9c7.c5cb26","type":"subflow:91eb5f0.f6e14a","name":"","x":810.8571243286133,"y":318.85706329345703,"z":"a05ff8a.f5fa008","wires":[[],[]]},{"id":"a28e8ec.f5d717","type":"subflow:91eb5f0.f6e14a","name":"","x":803.7143249511719,"y":475.9999523162842,"z":"a05ff8a.f5fa008","wires":[[],[]]},{"id":"2376a1cc.dc895e","type":"function","name":"Topic","func":"msg.topic=msg.topic+".lang"\nreturn msg;","outputs":1,"noerr":0,"x":743.7142791748047,"y":260.2856674194336,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"ffcd5ce6.0032a","type":"function","name":"Topic","func":"msg.topic=msg.topic+".lang"\nreturn msg;","outputs":1,"noerr":0,"x":750.8571319580078,"y":411.71424865722656,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"bab59623.454a68","type":"function","name":"Marke","func":"msg.payload = msg.payload.station.brand.toLowerCase();\nmsg.topic=msg.topic+".brand";\nreturn msg;","outputs":"1","noerr":0,"x":717.1428833007812,"y":820,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"aea7e72e.515818","type":"function","name":"Name","func":"msg.payload = msg.payload.station.name;\nmsg.topic=msg.topic+".name";\nreturn msg;","outputs":"1","noerr":0,"x":720,"y":891.4285888671875,"z":"a05ff8a.f5fa008","wires":[[]]},{"id":"ae5ac24e.51a54","type":"inject","name":"Abfrage Spritpreise","topic":"","payload":"","payloadType":"date","repeat":"300","crontab":"","once":false,"x":170,"y":114,"z":"b04c3771.4fb3c8","wires":[["39e0f41c.c61f0c","ec57b3e7.13a85"]]},{"id":"37d5844f.c82a7c","type":"subflow:a05ff8a.f5fa008","name":"","x":871.7857055664062,"y":262.0239715576172,"z":"b04c3771.4fb3c8","wires":[["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"],["6e317b86.91ce84"]]},{"id":"31ab9219.ce546e","type":"ioBroker out","name":"","topic":"","ack":"false","autoCreate":"true","x":1372.2857284545898,"y":259.57141494750977,"z":"b04c3771.4fb3c8","wires":[]},{"id":"71211e08.8edee","type":"debug","name":"","active":true,"console":"false","complete":"false","x":1383.7142295837402,"y":209.57142162322998,"z":"b04c3771.4fb3c8","wires":[]},{"id":"6e317b86.91ce84","type":"function","name":"Join","func":"\nreturn msg;","outputs":1,"noerr":0,"x":1149.428565979004,"y":259.57143115997314,"z":"b04c3771.4fb3c8","wires":[["31ab9219.ce546e"]]},{"id":"39e0f41c.c61f0c","type":"function","name":"Tankstelle 1","func":"var TK_ID = "xxxxx";\nvar ZIEL = "node-red.0.Tankstelle_1";\n\nmsg.payload = TK_ID;\nmsg.topic = ZIEL;\nreturn msg;","outputs":1,"noerr":0,"x":491,"y":115,"z":"b04c3771.4fb3c8","wires":[["37d5844f.c82a7c"]]},{"id":"ec57b3e7.13a85","type":"function","name":"Ermittlungs_Zeitpunkt","func":"msg = {};\n\n\nfunction addZero(i) {\n if (i < 10) {\n i = "0" + i;\n }\n return i;\n}\n\n\nvar currentdate = new Date(); \nvar h = addZero(currentdate.getHours());\nvar m = addZero(currentdate.getMinutes());\nvar s = addZero(currentdate.getSeconds());\n\n\nvar datetime = h + ":" + m + ":" + s;\n\nmsg.payload = datetime;\nreturn msg;\n","outputs":1,"noerr":0,"x":480,"y":568,"z":"b04c3771.4fb3c8","wires":[["987b1a45.6784e8"]]},{"id":"987b1a45.6784e8","type":"ioBroker out","name":"","topic":"node-red.0.Tankstelle.Statusuhrzeit","ack":"false","autoCreate":"true","x":1364,"y":562,"z":"b04c3771.4fb3c8","wires":[]}]

                              
                              Der Flow wird alle 5 Minuten aufgerufen.
                              
                              In der Funktion "Tankstelle_1" müsst ihr die entsprechenden Daten anpassen (Tankstellen_ID und Datenpfad) - und natürlich für jede Tankstelle kopiere, Werte anpassen und die Verküpfungen erstellen (mehr Anpassungen sind nicht notwendig).
                              
                               ![355_sp_1.png](/assets/uploads/files/355_sp_1.png) 
                               ![355_sp_2.png](/assets/uploads/files/355_sp_2.png) 
                              
                              Der Flow ist übrigens NICHT auf meinem Mist gewachsen - ich habe in "geliehen" ;) und noch etwas angepasst / modifiziert.
                              
                              Viel Spaß damit. Ich hoffe, es klappt.
                              
                              Gruß,
                              
                              Eric
                              1 Reply Last reply Reply Quote 0
                              • N
                                nobob last edited by

                                Hallo Pix,

                                auch von meiner Seite aus einen besondern Dank für das Skript.

                                Echt eine feine Sache, was man mit dem ioBroker alles anstellen kann.

                                Habe das Skript bei mir erfolgreich am laufen.

                                <u>Ein kleiner Hinweis von meiner Seite aus:</u>

                                Mir ist aufgefallen das zwei gleiche Werte im Objekte-Reiter von ioBroker eingetragen werden. Die Hausnummer wird auch bei PLZ eingetragen.

                                In Zeile 117 und 118 hast Du zweimal *.houseNumber stehen.

                                Vielleicht kannst hier im Forum die Zeile 118 noch richtigstellen (*.postCode).

                                Anbei nochmals ein Lob für die Umsetzung von ioBroker und den zahlreichen Hilfestellungen / Ideen hier im Forum.

                                Viele Grüße und einen angenehmen Samstag-Nachmittag

                                nobob

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Alexxx2005 last edited by

                                  Hallo Pix und Eric,

                                  von mir ebenfalls ein großes Lob, Adapter funktionieren

                                  auf anhieb.

                                  habe mich für Eric's entschieden , was hier noch nicht ganz

                                  richtig angezeigt wird ist die Aktualisierungszeit da bin ich

                                  immer eine Stunde zurück obwohl mein Timeandweather Widget

                                  die richtige meldet, wenn da noch jemand eine Lösung hat , gerne

                                  Grüße Alex

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

                                    Hi,

                                    danke für die Blumen.

                                    Wie steht denn die Systemzeit bzw. die Timezone des Hostsystems?

                                    Time and weather holt sich die Daten, denke ich, aus dem Netz. Und Node-red vom jeweiligen Host, wo es läuft.

                                    Gruß,

                                    Eric

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

                                      Hallo

                                      habe mir das Script von Pix angeschaut, doch leider bin ich überfordert.

                                      Ich habe mir meinen Tankerkönig API besorgt und eingetragen und auch die Tankstellen-ID's .

                                      Wie gehe ich den nun weiter mit dem Script um? Wo läuft das dann?

                                      Gruß

                                      Michael

                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        pix last edited by

                                        Hallo michihorn,

                                        wenn du die API und die Tankstellen ID oben im Skript einträgst, dann ist eigentlich schon alles getan.

                                        Voraussetzung ist allerdings, dass du den Javascript Adapter installiert und aktiviert hast. Wenn ja, dann im Reiter Skripte ein neues Skript anlegen (Name zB spritpreise) und das Skript einfügen, speichern und links neben dem Skriptnamen auf den roten Knopf drücken und so das Skript starten. Evtl. daneben den Knopf Reload (Pfeile) nochmal drücken. Dann sind die Datenpunkte im Reiter Objekte vorhanden und du kannst sie in VIS verwenden.

                                        Gruß

                                        Pix

                                        1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Forum Testing Most Active Global Moderator Administrators last edited by

                                          Wer macht denn daraus endlich einen Adapter?

                                          Ich will keinen zu sehr ansehen 😉

                                          Gruß

                                          Rainer

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

                                            Bitte dran denken, das Tankerkönig eine neue Abfrage gebaut hat.

                                            Man kann nun mit einem einzigen Request zig Tankstellen auf einmal abfragen (Antwort als JSON) - die Rückgabe-Daten sind aber erheblich weniger als bei der Detailabfrage.

                                            Tankerkönig hatte mich angeschrieben und ich habe den neuen Request mal durchgetestet.

                                            Als Rückmeldung kommt bei diesem Request "nur":

                                            • Tankstellen-ID

                                            • Preis E5

                                            • Preis E10

                                            • Preis Diesel

                                            • Öffnungsstatus (offen / zu)

                                            Ich kann die neue Methode gerne als Node-Red-Flow bereitstellen. Kurze Info genügt.

                                            Gruß,

                                            Eric

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            23.9k
                                            Users

                                            56.7k
                                            Topics

                                            842.2k
                                            Posts

                                            12
                                            29
                                            6314
                                            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-2021
                                            logo