NEWS
Tankerkönig - Extended Skript
-
Moin, bekomme seit heute Morgen diese Meldung bei einer Tanke
javascript.0 09:10:44.156 error [Tankerkoenig ERROR] Fehler bei Station 22f92a35-e428-4fca-a55a-24ea6e55e243: TypeError: Cannot read properties of undefined (reading 'replace')Beim Tankerkoenig-Adapter funktioniert es.
@Nashra vermutlich sind die Daten nicht korrekt, es feht vermutlich etwas. Ich habe das Skript modifiziert, was das abfangen soll. Ich hoffe, ich habe die richtige Stelle gefixt (bin davon Ausgegangen das dort die Ursache zu finden ist - Öffnungszeiten).
Ro75.
-
@Homoran mich hätte eigentlich nur interessiert, welche Schriftart das bei den rechten 3 Tankstellen ist, dass sieht ganz nett aus

-
@Dragon es gibt jetzt pro Station den Ordner "recommendation". Dort sind die 3 Datenpunkte zu finden. BITTE ERSTALLES **AB // ********** AB HIER NICHTS MEHR ÄNDERN !!! ********// KOPIEREN UND ERSETZEN.
Ro75.
-
@Nashra vermutlich sind die Daten nicht korrekt, es feht vermutlich etwas. Ich habe das Skript modifiziert, was das abfangen soll. Ich hoffe, ich habe die richtige Stelle gefixt (bin davon Ausgegangen das dort die Ursache zu finden ist - Öffnungszeiten).
Ro75.
@Ro75 sagte in Tankerkönig - Extended Skript:
@Nashra vermutlich sind die Daten nicht korrekt, es feht vermutlich etwas. Ich habe das Skript modifiziert, was das abfangen soll. Ich hoffe, ich habe die richtige Stelle gefixt (bin davon Ausgegangen das dort die Ursache zu finden ist - Öffnungszeiten).
Ro75.
Danke, Fehler weg und Daten kommen wieder rein.
Aber was mir noch aufgefallen ist, kann es sein dass das Skript beim Straßennamen
aus einem oe ein ö macht? Weil statt Venloer Str. steht im DP Venlör Str.
Ist zwar nicht schlimm, kann man ja im DP wieder ändern. -
Vielen Dank für das Skript.
Meine Location zuhause lese ich bei Bedarf aus dem System aus. So braucht man nicht aufpassen, dass man die Koordinaten verrät, falls man was teilt. Bei dem API-Key könnte man einen Datenpunkt nehmen.
Koordinaten:
-
@Ro75 sagte in Tankerkönig - Extended Skript:
@Nashra vermutlich sind die Daten nicht korrekt, es feht vermutlich etwas. Ich habe das Skript modifiziert, was das abfangen soll. Ich hoffe, ich habe die richtige Stelle gefixt (bin davon Ausgegangen das dort die Ursache zu finden ist - Öffnungszeiten).
Ro75.
Danke, Fehler weg und Daten kommen wieder rein.
Aber was mir noch aufgefallen ist, kann es sein dass das Skript beim Straßennamen
aus einem oe ein ö macht? Weil statt Venloer Str. steht im DP Venlör Str.
Ist zwar nicht schlimm, kann man ja im DP wieder ändern.@Nashra das ist korrekt was du schreibst. Tatsächlich gilt es eine Stelle, die Umlaute erzeugt. Das ist im Moment nur die halbe Lösung. Habe ich aber auf dem Schirm. Aber du hast es genau richtig gemacht. Genau dafür habe ich die Möglichkeit geschaffen bestimmte Daten zu ändern, ohne dass diese vom Skript wieder überschrieben werden.
Ro75.
-
Vielen Dank für das Skript.
Meine Location zuhause lese ich bei Bedarf aus dem System aus. So braucht man nicht aufpassen, dass man die Koordinaten verrät, falls man was teilt. Bei dem API-Key könnte man einen Datenpunkt nehmen.
Koordinaten:
@peterfido das ist eine sehr gute Idee. Werde ich mit aufnehmen. Nicht nur, dass man seine Position verraten könnte, nein auch weniger zu konfigurieren.
Ro75.
-
In den nächsten Tagen werde ich eine aktualiserte Version vom Script bereitstellen. Der Datenabruf und die Daten bleiben alle so wie im bisherigen Script auch. Es wird sich also an den bestehenden Datenpunkten NICHTS ändern.
Was ist neu. Ich mache sehr viel mit SVG. Also habe ich für die Visualisierung eine SVG erstellt. Diese gibt es dann in unterschiedlichen Theme.
Wahlweise mit allen Optionen, inklusive Kontrollkästchen (aber nur als Gerüst - Kontrollkästchen können darübergelegt werden), oder nur "minimal".



Es wird noch ein paar Stunden dauern. Führe gerade abschließende Tests durch.
Ro75.
-
Updatereihenfolge, sofern schon das Script in einer vorherigen Version (< 1.1.0) genutzt wurde:
WICHTIG: Reihenfolge beachten und sorffältig abarbeiten, dann ist der gesamte Vorgang in 2 bis 3 Minuten abgeschlossen.
- Folgende Werte müssen aus den bisherigen Script (was jetzt schön läuft) gesichert werden:
const apiKey = dein Schlüssel const base = dein Pfad const image_base = dein Pfad const myLocation = deine Daten const stations = deine Stationen;- Tausche das komplette Script wie in Beitrag #1 gepostet aus.
- Tausche in diesem Code nun die unter Punkt 1 gesicherten Informationen wieder aus. Damit sind alle Einstellungen wieder vorhanden.
- Das Script kann nun gestartet werden.
Im Objektbaum befindet sich nun bei jeder Tankstelle ein Datenpunkt "svg". Dieser kann, z.B. mit VIS 1, über ein "String (unescaped)" dargestellt werden.

Im Ordner "config" gibt es ein Datenpunkt namens "theme". Darüber wird das Thema gewählt und gesetzt. Wichtig ist, das Script muss laufen. Nur so wird die Änderung sofort sichtbar.
Konfiguration: Im unteren Teil vom Script ist folgendes zu finden.
const VisibleStatistik = true; // sichtbarkeit Statistik‑Badge inklusive Text const VisibleBorder = true; // Sichtbarkeit Rahmen / Border der SVG const minimalModeActiv = false; // Minimal‑Modus aktiv (ohne Kontrollkästchen, Statistik‑Badge) const useDotInsteadOfComma = true; // false = Komma | true = Punkt
Script in Post #1 aktualisiert.
Ro75.
-
Hallo,
habe gerade das Script ausgetauscht und natürlich an meine Daten angepasst leider bekomme ich folgenden fehler beim Script startjavascript.0 2026-06-21 20:53:49.306 error script.js.scripts.smarthome.Tanken.Tankerkoenig_extendet: [Tankerkoenig ERROR] Fehler beim Start: ReferenceError: formatDateTime is not defined javascript.0 2026-06-21 20:53:49.111 info script.js.scripts.smarthome.Tanken.Tankerkoenig_extendet: registered 7 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 2026-06-21 20:53:49.094 info script.js.scripts.smarthome.Tanken.Tankerkoenig_extendet: start JavaScript (Javascript/js) -
function formatDateTime(ts = null) { const d = ts ? new Date(ts) : new Date(); const t = String(d.getDate()).padStart(2, "0"); const m = String(d.getMonth() + 1).padStart(2, "0"); const y = d.getFullYear(); const h = String(d.getHours()).padStart(2, "0"); const mi = String(d.getMinutes()).padStart(2, "0"); const s = String(d.getSeconds()).padStart(2, "0"); return `${t}.${m}.${y} ${h}:${mi}:${s}`; }Füge das in das Script mit ein.
Ro75.
EDIT: Post #1 ist um die fehlende Funktion aktualisiert.
-
Hallo,
das Transparent-Theme hat einen kleinen Fehler. Dadurch ist nicht alles transparent.
Hier in wenigen Punkten zur Lösung.
- Suche die Zeile beginnend mit:
transparent:{widgetBgTop:"transparent",widgetBgBottom:...- Ersetze folgenden Werte:
headerTop:"#1E293B" headerBottom:"#0F172A" footerTop:"#1E293B" footerBottom:"#0F172A"- Durch diese Werte:
headerTop:"transparent" headerBottom:"transparent" footerTop:"transparent" footerBottom:"transparent"Das war es schon. Das Script in Post #1 wurde gefixt und trägt die Version 1.1.1
Ro75.
-
Moin, kann die Kontrollkästchen nicht aktivieren.
Darstellung versucht mit basic-string (unescaped) und basic-html -
Moin, kann die Kontrollkästchen nicht aktivieren.
Darstellung versucht mit basic-string (unescaped) und basic-html -
Die Kontrollkästchen habe ich über vis-materialdesign 0.5.94 (VIS 1) gelöst. Da gibt es

dieses Widget. Rand und Hintergrund kann man transparent machen, dann passt es sehr gut.
ODER alternativ dieses Widget

und bei "HTML bei 'true'" setzt ihr ✓ ein.Hier mal die drei Widget zum Importieren (materialdesign).
[{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.51d4b70e-a095-1aa0-e100-80009459e03a.enabled","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"12","colorCheckBox":"transparent","colorCheckBoxBorder":"transparent","colorCheckBoxHover":"#mdwTheme:vis-materialdesign.0.colors.checkbox.hover","labelColorFalse":"rgba(255,255,255,0.8)","labelColorTrue":"rgba(255,255,255,0.8)","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"valueOff":"false","valueOn":"true","labelFalse":"","labelTrue":"","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5","generateHtmlControl":"true","readOnly":false,"clickSoundPlay":true},"style":{"left":"193px","top":"413px","width":"76px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12px","transform":"scale(0.7)"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.51d4b70e-a095-1aa0-e100-80009459e03a.favorite","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"12","colorCheckBox":"transparent","colorCheckBoxBorder":"transparent","colorCheckBoxHover":"#mdwTheme:vis-materialdesign.0.colors.checkbox.hover","labelColorFalse":"rgba(255,255,255,0.8)","labelColorTrue":"rgba(255,255,255,0.8)","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"valueOff":"false","valueOn":"true","labelFalse":"","labelTrue":"","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5","generateHtmlControl":"true","readOnly":false,"clickSoundPlay":true},"style":{"left":"107px","top":"413px","width":"76px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12px","transform":"scale(0.7)"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.51d4b70e-a095-1aa0-e100-80009459e03a.dataonly","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"12","colorCheckBox":"transparent","colorCheckBoxBorder":"transparent","colorCheckBoxHover":"#mdwTheme:vis-materialdesign.0.colors.checkbox.hover","labelColorFalse":"rgba(255,255,255,0.8)","labelColorTrue":"rgba(255,255,255,0.8)","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"valueOff":"false","valueOn":"true","labelFalse":"","labelTrue":"","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5","generateHtmlControl":"true","clickSoundPlay":true,"readOnly":false},"style":{"left":"22px","top":"413px","width":"76px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12px","transform":"scale(0.7)"},"widgetSet":"materialdesign"}]Die Größe des Häkchen kann via "transform" und scale(0.7) definiert werden.
Hier mal das Widget zum Importieren (BOOL HTML)
[{"tpl":"tplValueBoolCtrl","data":{"oid":"0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-b72e2ef04d4a.dataonly","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_true":"✓"},"style":{"left":"289px","top":"234px","color":"#ffffff","width":"16px","height":"24px","z-index":"6","transform":""},"widgetSet":"basic"}]
Dann passt es auch wunderbar rein. Hinweis. Der Z-Index dieser Widget sollte immer höher sein als das vom Widget mit dem SVG-Datenpunkt.
Ro75.
-
Eine Bitte hätt ich noch, könntest du in die Kopfzeile noch den Ort mitaufnehmen?
Hintergrund, bei uns wird das "Hauptauto" mit einer Flottenkarte betankt, da geht hauptsächlich nur ARAL oder SHELL, demzufolge hab ich in der Liste mehrere ARAL und Shell Stationen und da wäre es gut wenn man hinter 'ARAL Tankstelle' auch den Ort sehen könnte
-
Eine Bitte hätt ich noch, könntest du in die Kopfzeile noch den Ort mitaufnehmen?
Hintergrund, bei uns wird das "Hauptauto" mit einer Flottenkarte betankt, da geht hauptsächlich nur ARAL oder SHELL, demzufolge hab ich in der Liste mehrere ARAL und Shell Stationen und da wäre es gut wenn man hinter 'ARAL Tankstelle' auch den Ort sehen könnte
@icebear suche im Script folgenden Bereich - ganz am Ende:
const svg = createTankstellenSVG({ stationName: getState(`${path}.name`)?.val, stationState: getState(`${path}.status`)?.val, distance: getState(`${path}.distance`)?.val + "Km", lastFetch: "Abruf: " + getState(`${path}.lastChecked`)?.val, lastUpdate: "Update: " + getState(`${path}.lastPriceUpdate`)?.val, openingHours: JSON.parse(getState(`${path}.openingTimes`)?.val), priceBenzin: getState(`${path}.benzin_str`)?.val, priceE10: getState(`${path}.e10_str`)?.val, priceDiesel: getState(`${path}.diesel_str`)?.val, logoUrl: getState(`${path}.image`)?.val, trendBenzin: getState(`${path}.aspects.benzin.trend_24h_proj`)?.val, trendE10: getState(`${path}.aspects.e10.trend_24h_proj`)?.val, trendDiesel: getState(`${path}.aspects.diesel.trend_24h_proj`)?.val, showStatistik: VisibleStatistik, showBorder: VisibleBorder, minimalMode: minimalModeActiv });Dort könntest du folgende Änderung selbst vornehmen. Ändere diese Zeile von
stationName: getState(`${path}.name`)?.val,in
stationName: getState(`${path}.name`)?.val + ' (' + getState(`${path}.place`)?.val + ')',ab. Damit wird der Ort in Klammer am Ende angefügt. Wäre das für dich brauchbar?
Alternativ kannst du den Inhalt vom Datenpunkt "name" auch manuell anpassen. Dieser wird nicht überschrieben. Nur wenn dieser "leer" ist.
Ro75.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden