Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Spritpreise einlesen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

Spritpreise einlesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
29 Beiträge 12 Kommentatoren 8.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • derAugeD Offline
    derAugeD Offline
    derAuge
    schrieb am zuletzt editiert von
    #2

    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 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #3

      Hallo,

      Bitte mal die entsprechende JavaScript Instanz neu starten.

      Gibt manchmal Probleme beim Anlegen mit createState.

      Gruß

      Pix

      Gesendet von meinem iPhone mit Tapatalk

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • derAugeD Offline
        derAugeD Offline
        derAuge
        schrieb am zuletzt editiert von
        #4

        @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 Antwort Letzte Antwort
        0
        • C Offline
          C Offline
          ChristianF
          schrieb am zuletzt editiert von
          #5

          Sehr cool, erhöht den WAF ungemein :)

          Danke!!!

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            cybertron
            schrieb am zuletzt editiert von
            #6

            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 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #7

              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

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                RobS
                schrieb am zuletzt editiert von
                #8

                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 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #9

                  Eric? Kannst du dein Widget exportieren? Geht schneller :P

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Antwort Letzte Antwort
                  0
                  • eric2905E Offline
                    eric2905E Offline
                    eric2905
                    schrieb am zuletzt editiert von
                    #10

                    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

                    Roses are red, violets are blue,

                    if I listen to metal, my neighbours do too

                    1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      RobS
                      schrieb am zuletzt editiert von
                      #11

                      Das wär total Super :D

                      1 Antwort Letzte Antwort
                      0
                      • eric2905E Offline
                        eric2905E Offline
                        eric2905
                        schrieb am zuletzt editiert von
                        #12

                        Mach ich heute Abend, wenn ich zu Hause bin.

                        Gruß,

                        Eric

                        Roses are red, violets are blue,

                        if I listen to metal, my neighbours do too

                        1 Antwort Letzte Antwort
                        0
                        • eric2905E Offline
                          eric2905E Offline
                          eric2905
                          schrieb am zuletzt editiert von
                          #13

                          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

                          Roses are red, violets are blue,

                          if I listen to metal, my neighbours do too

                          1 Antwort Letzte Antwort
                          0
                          • N Offline
                            N Offline
                            nobob
                            schrieb am zuletzt editiert von
                            #14

                            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 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              Alexxx2005
                              schrieb am zuletzt editiert von
                              #15

                              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 Antwort Letzte Antwort
                              0
                              • eric2905E Offline
                                eric2905E Offline
                                eric2905
                                schrieb am zuletzt editiert von
                                #16

                                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

                                Roses are red, violets are blue,

                                if I listen to metal, my neighbours do too

                                1 Antwort Letzte Antwort
                                0
                                • M Offline
                                  M Offline
                                  michihorn
                                  schrieb am zuletzt editiert von
                                  #17

                                  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 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    pix
                                    schrieb am zuletzt editiert von
                                    #18

                                    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

                                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                    1 Antwort Letzte Antwort
                                    0
                                    • HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #19

                                      Wer macht denn daraus endlich einen Adapter?

                                      Ich will keinen zu sehr ansehen ;-)

                                      Gruß

                                      Rainer

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

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

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

                                      1 Antwort Letzte Antwort
                                      0
                                      • eric2905E Offline
                                        eric2905E Offline
                                        eric2905
                                        schrieb am zuletzt editiert von
                                        #20

                                        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

                                        Roses are red, violets are blue,

                                        if I listen to metal, my neighbours do too

                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          pix
                                          schrieb am zuletzt editiert von
                                          #21

                                          Das ist ja super.

                                          Nächste Woche kann ich ich darum mal kümmern. Die Daten reichen ja für die Ausgabe. :D

                                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          599

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe