Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Tankerkönig - Extended Skript

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    9
    1
    700

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    3.1k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    3.1k

Tankerkönig - Extended Skript

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptmonitoring
54 Beiträge 13 Kommentatoren 3.7k Aufrufe 21 Beobachtet
  • Ä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.
  • Ro75R Online
    Ro75R Online
    Ro75
    schrieb am zuletzt editiert von Ro75
    #1

    Einleitung

    Mir ist bewusst, dass es bereits den offiziellen ioBroker Tankerkönig Adapter (v3.4.0) gibt, der zuverlässig die aktuellen Spritpreise liefert. Mit meinem Extended-Skript möchte ich die Leistung des Adapters keinesfalls schmälern – im Gegenteil: Das Skript versteht sich als Ergänzung, die zusätzliche Funktionen wie Trends, Prognosen und Empfehlungen bereitstellt und die Daten für Visualisierungen und Automatisierungen im Smart Home noch aussagekräftiger macht. Das Skript setzt nicht auf die Daten des Adapters auf. Das Skript ist eine eigenständige Lösung.

    tk_anonymized.png

    Funktionelle Beschreibung
    Das Skript bietet neben der Standard-Preisabfrage eine Vielzahl an Features:

    Preisabfrage & Speicherung für Benzin, E10 und Diesel

    Historie & Trendberechnung über 48h, 14 Tage und 90 Tage

    24h-Prognose mit Richtungspfeilen und projiziertem Preis

    Durchschnitts- & Differenzwerte aller offenen Stationen

    Top-3 Ranking nach Preis → Favorit → Entfernung

    Handlungsempfehlungen („JETZT TANKEN“, „ABWARTEN“, „NICHT TANKEN“)

    Konfigurierbare Schwellenwerte für Preisvorteile und Trends

    Unicode-Hochzahlen für typografisch saubere Preisdarstellung

    Geodaten & Distanzberechnung: Entfernung zur eigenen Position wird berechnet und in die Logik einbezogen

    Favoriten: Stationen können als Favorit markiert werden, was bei Gleichstand den Ausschlag gibt

    Stationen aktivieren/deaktivieren: Jede Station lässt sich einzeln steuern, auch „nur Daten abrufen“ ohne Auswertung ist möglich

    Öffnungszeiten: Offene/geschlossene Stationen werden berücksichtigt, inkl. Feiertagslogik und Overrides

    Reiner Datenabruf: Für Nutzer, die nur Rohdaten wollen, lässt sich die Auswertung pro Station abschalten

    Vergleich: Adapter vs. Extended-Skript

    Merkmal Tankerkönig Adapter 3.4.0 Extended-Skript
    Basisfunktion: Preise abrufen ✔️ ✔️
    Stationen frei definierbar ✔️ ✔️
    Historie ❌ ✔️ (48h, 14d, 90d)
    Trendberechnung ❌ ✔️
    24h-Prognose ❌ ✔️
    Durchschnittspreise ❌ ✔️
    Preis-Differenzen ❌ ✔️
    Top-3 Ranking ❌ ✔️
    Empfehlungen (JETZT/ NICHT TANKEN) ❌ ✔️
    Konfigurierbare Schwellenwerte ❌ ✔️
    Unicode-Hochzahlen für Preise ❌ ✔️
    Visuelle JSON-Ausgaben für VIS ❌ ✔️
    Geodaten / Distanzberechnung ❌ ✔️
    Favoriten-Logik ❌ ✔️
    Stationen aktivieren/deaktivieren ❌ ✔️
    Reiner Datenabruf ohne Auswertung ❌ ✔️
    Öffnungszeiten inkl. Feiertage ❌ ✔️
    Fehler- und Info-Logging Basis Erweiterte Steuerung

    Besonderheiten
    Geodaten: Entfernung zur Tankstelle wird berechnet und in Rankings berücksichtigt.

    Favoriten: Markierte Stationen haben Vorrang bei gleichen Preisen.

    Stationen steuerbar: Jede Station kann einzeln aktiviert, deaktiviert oder auf „nur Daten“ gesetzt werden.

    Öffnungszeiten: Berücksichtigung von Öffnungsstatus, Feiertagen und Overrides.

    Reiner Datenabruf: Wer nur Rohdaten will, kann die Auswertung pro Station abschalten.

    Visuelle JSON-Ausgaben: Alle Ergebnisse (Top-3, Durchschnitt, Empfehlungen) stehen als JSON für VIS oder andere Frontends bereit.

    Praxisnähe: Handlungsempfehlungen und Trends sind direkt nutzbar für Automatisierungen.

    Typografie: Preise mit Hochzahlen wirken sauberer und sind sofort unterscheidbar.

    Manuelle Änderung der Stationsdaten: Nach dem ersten Datenabruf können die Stationsdaten manuell überschrieben, OHNE das diese beim Folgeabruf wieder überschieben werden. Das betrifft Name und Adressdaten.

    Datenstruktur:

    0_userdata.0.tankerkoenig
    ├── <stationId>
    │   ├── benzin (number, €)
    │   ├── e10 (number, €)
    │   ├── diesel (number, €)
    │   ├── benzin_str (string)
    │   ├── e10_str (string)
    │   ├── diesel_str (string)
    │   ├── name (string)
    │   ├── brand (string)
    │   ├── street (string)
    │   ├── postCode (string)
    │   ├── place (string)
    │   ├── isOpen (boolean)
    │   ├── isWholeDay (boolean)
    │   ├── openingTimes (string JSON)
    │   ├── overrides (string JSON)
    │   ├── distance (number, km)
    │   ├── lastPriceUpdate (string, Datum/Uhrzeit)
    │   ├── lastChecked (string, Datum/Uhrzeit)
    │   ├── prices (string JSON)
    │   ├── image (string, Pfad)
    │   ├── enabled (boolean)
    │   ├── dataonly (boolean)
    │   ├── status (string)
    │   ├── favorite (boolean)
    │   ├── svg (string)
    │   └── aspects
    │       ├── benzin
    │       │   ├── trend_48h / trend_48h_icon
    │       │   ├── trend_14d / trend_14d_icon
    │       │   ├── trend_90d / trend_90d_icon
    │       │   ├── trend_24h_proj / trend_24h_proj_icon
    │       │   ├── trend_24h_proj_price (number, €)
    │       │   ├── history (string JSON)
    │       │   └── json (string JSON)
    │       ├── e10 (analog zu benzin)
    │       ├── diesel (analog zu benzin)
    │       └── reset_history (boolean)
    │
    ├── cheapest
    │   ├── benzin_price / benzin_price_str
    │   ├── benzin_station / benzin_station_name / benzin_image
    │   ├── benzin_top3_json
    │   ├── e10_price / e10_price_str
    │   ├── e10_station / e10_station_name / e10_image
    │   ├── e10_top3_json
    │   ├── diesel_price / diesel_price_str
    │   ├── diesel_station / diesel_station_name / diesel_image
    │   ├── diesel_top3_json
    │   └── cheapest_json (alle zusammen)
    │
    ├── average
    │   ├── benzin / benzin_str
    │   ├── e10 / e10_str
    │   ├── diesel / diesel_str
    │   └── average_json
    │
    ├── difference
    │   ├── benzin / e10 / diesel (Preisunterschiede)
    │   └── prices (JSON mit billigster/teuerster Station)
    │
    ├── recommendation_json (Handlungsempfehlungen)
    ├── all_stations_full_info (JSON)
    ├── reset_all_trends (boolean)
    │
    └── config
        ├── threshold_tanken (€/L unter Durchschnitt)
        ├── threshold_nicht_tanken (€/L über Durchschnitt)
        ├── trend_threshold_percent (% vom Durchschnitt)
        ├── use_superscript (boolean)
        ├── theme (string)
        ├── show_trend_symbols (boolean)
        ├── keep_last_price_if_closed (boolean)
    
    

    Fazit
    Der Adapter ist ideal für den schnellen Einstieg. Das Extended-Skript richtet sich an alle, die mehr Kontext, mehr Intelligenz und mehr Kontrolle wollen. Es macht die Tankerkönig-Daten nicht nur sichtbar, sondern wirklich nutzbar – für Visualisierungen, Automatisierungen und smarte Entscheidungen im Alltag.

    Voraussetzungen

    API‑Key: Den API‑Key bekommst du kostenlos auf der offiziellen Tankerkönig‑Seite.
    Gehe auf tankerkoenig.de → oben rechts „API‑Key“ auswählen. Formular ausfüllen (Name, E‑Mail). Du erhältst per Mail deinen persönlichen Schlüssel.

    Der Key ist notwendig, um die API nutzen zu können. Ohne ihn gibt es keine Datenabfragen. Einschränkungen: Die API ist für private Projekte gedacht, nicht für Massendatenabfragen. Empfohlen sind maximal 10 Tankstellen und ein Abfrageintervall von mindestens 5 Minuten. Das Skript ruft bei mir aller 10 Minuten (bitte keine glatten Minuten nehmen) 12 Stationen ab.

    Tankstellen‑UUIDs: Jede Tankstelle hat eine eindeutige UUID (Universally Unique Identifier). Über die Tankerkönig‑Webseite: Dort kannst du nach Tankstellen suchen (PLZ oder Ort eingeben). Diese UUIDs trägst du dann im Skrip ein, um genau die gewünschten Stationen abzufragen.

    NPM-Modul: Damit die API‑Abfragen zuverlässig funktionieren, muss im JavaScript‑Adapter ein zusätzliches npm‑Modul eingetragen werden, das die HTTP‑Requests mit einem gültigen User‑Agent ausführt. Hintergrund: Die Tankerkönig‑API erwartet, dass jede Anfrage einen User‑Agent‑Header mitliefert. Ohne diesen kann es zu Ablehnungen oder Fehlern kommen.

    Vorgehen: Den JavaScript‑Adapter öffnen. Unter „Zusätzliche npm‑Module“ das Modul user-agents eintragen.
    npm.png

    Grafiken: Ich habe bereits einige Grafiken von Tankstellen und zusätzliche Grafiken für Auswertungen und Darstellung in VIS beigefügt. Es sind aber nicht alle Tankstellen dabei - da müsst ihr selber aktiv werden.
    tanken.zip

    HINWEIS: Wenn ihr das Skript testen wollt, bitte Adapter und Skript nicht zur selben Zeit laufen lassen! Es besteht die Gefahr den Fehler 503 zu bekommen, ihr kommt sonst in das Ratelimit! Es ist zwar möglich mehr als 10 Stationen einzutragen, allerdings sollte es nicht übertrieben werden. Je mehr Stationen um so größer das Abrufinterval! Bei mir getestet und ohne Probleme 12 Stationen, aller 10 Miinuten.

    WAS IST ZU MACHEN?

    1. API-Key besorgen
    2. UUIDs der Stationen besorgen
    3. Code einkopieren und anpassen
    const apiKey = ""; // Tankerkoenig API-Schlüssel
    const base = "0_userdata.0.tankerkoenig"; // kann auch so belassen werden
    const image_base = "/vis.0/tanken/"; //hier wird der Standort für die Bilder eingetragen
    const myLocation = { lat: 51.18869225498527, lon: 14.44717724792715 };   // hier eure Geodaten
    const stations = [
        { id: "51d4b70e-a095-1aa0-e100-80009459e03a", image: image_base+"jet.png" },
        { id: "9bbf6e47-eafe-4072-a7b1-9bf7fee2ba44", image: image_base+"sb-tank.png" },
        { id: "2c0a9194-7b4b-4590-bbae-8db8760598c4", image: image_base+"total.png" },
        { id: "0cc33bda-3773-4b47-94d2-41142e9a97ad", image: image_base+"agip.png" },
        { id: "0868c839-f0cd-4ceb-a53c-4a6de271b606", image: image_base+"marktkauf.png" },
        { id: "53ad9d77-a259-40fc-b868-b79cb77086d8", image: image_base+"aral.png" },
        { id: "1b008ee6-78ea-4485-ab1d-7212a393b471", image: image_base+"aral.png" },
        { id: "4a92a231-3d68-4928-9155-5d3534583c57", image: image_base+"aral.png" },
        { id: "c21f9238-c5e6-4a5b-985e-89d406166b2d", image: image_base+"esso.png" },
        { id: "86f037d7-d8f8-4fad-9aac-f256857725f6", image: image_base+"sprint.png" },
        { id: "28989f56-fe4c-4785-925d-cc0ee4e574e8", image: image_base+"greenline.png" },
        { id: "005056ba-7cb6-1ed2-bceb-b72e2ef04d4a", image: image_base+"star.png" }
    ]; // hier eure Stationen
    

    Hier jetzt der Code:

    // === Tankerkoenig Extended-Script ===
     
    //Erst-Version 1.0.0 - 14.12.2025
    //Version 1.1.1 - 22.06.2026
    //Ersteller Ro75.
     
    //Voraussetzungen (Version 1.1.1 getestet mit)
    //NodeJS: 22.x
    //Javascript-Adapter: 9.0.18
    //Admin-Adapter: 7.8.23
    //JS-Controller: 7.2.2
    
    // === Einstellungen & Konfiguration ===
    const apiKey     = '';          										// Tankerkönig API-Schlüssel
    const base       = "0_userdata.0.tankerkoenig";                     	// Basis-Pfad für alle States
    const image_base = "/vis.0/tanken/";       								// Pfad zu lokalen Bildern
    const myLocation = { lat: 51.18869225498527, lon: 14.44717724792715 };  // Eigener Standort für Distanzberechnung
    
    const ENABLE_LOG = false;                                           // Allgemeine Logs ein/aus
    const ENABLE_ERROR_LOG = true;                                      // Fehlerlogs ein/aus
    
    // === Tankstellenliste ===
    const stations = [
        { id: "51d4b70e-a095-1aa0-e100-80009459e03a", image: image_base+"jet.png" },
        { id: "9bbf6e47-eafe-4072-a7b1-9bf7fee2ba44", image: image_base+"sb-tank.png" },
        { id: "2c0a9194-7b4b-4590-bbae-8db8760598c4", image: image_base+"total.png" },
        { id: "0868c839-f0cd-4ceb-a53c-4a6de271b606", image: image_base+"marktkauf.png" },
        { id: "53ad9d77-a259-40fc-b868-b79cb77086d8", image: image_base+"aral.png" },
        { id: "1b008ee6-78ea-4485-ab1d-7212a393b471", image: image_base+"aral.png" },
        { id: "4a92a231-3d68-4928-9155-5d3534583c57", image: image_base+"aral.png" },
        { id: "c21f9238-c5e6-4a5b-985e-89d406166b2d", image: image_base+"esso.png" },
        { id: "86f037d7-d8f8-4fad-9aac-f256857725f6", image: image_base+"sprint.png" },
        { id: "28989f56-fe4c-4785-925d-cc0ee4e574e8", image: image_base+"greenline.png" },
        { id: "005056ba-7cb6-1ed2-bceb-b72e2ef04d4a", image: image_base+"star.png" }
    ];
    
    // ********** AB HIER NICHTS MEHR ÄNDERN !!! **********//
    const TANKSTELLEN_THEME_DP = `${base}.config.theme`;                
    
    const UserAgent = require('user-agents');
    
    async function smartCreateState(id, value, options = {}) {
        if (existsState(id)) return;
        await createState(id, value, options);
    }
    
    function setIfEmpty(id, value) {
        const current = getState(id)?.val;
        if (!current || current === "") {
            setStateIfChanged(id, value);
        }
    }
    
    function setStateIfChanged(id, value) {
        const state = getState(id);
        if (!state) return;
    
        const old = state.val;
        const isObject = v => v !== null && typeof v === "object";
    
        if (isObject(value)) {
            const newStr = JSON.stringify(value);
            let oldStr = null;
    
            if (typeof old === "string") oldStr = old;
            else if (isObject(old)) oldStr = JSON.stringify(old);
    
            if (newStr === oldStr) return;
            return setState(id, newStr, true);
        }
    
        if (old === value) return;
        setState(id, value, true);
    }
    
    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}`;
    }
    
    function sleepMs(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    
    function logInfo(msg) {
        if (ENABLE_LOG) log(`[Tankerkoenig] ${msg}`,"info");
    }
    
    function logError(msg) {
        if (ENABLE_ERROR_LOG) log(`[Tankerkoenig ERROR] ${msg}`,"error");
    }
    
    function getDistance(lat1, lon1, lat2, lon2) {
        const R = 6371;
        const dLat = (lat2 - lat1) * Math.PI / 180;
        const dLon = (lon2 - lon1) * Math.PI / 180;
        const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
        return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    }
    
    function formatOpeningEntries(list, WEEKDAY_MAP) {
        return list.map(o => {
            let rawText = (typeof o.text === "string" && o.text.trim() !== "") ? o.text : "keine Angabe";
    
            let text = rawText
                .replace(/\btäglich ausser Sonn- und Feiertagen\b/gi, "Mo-Sa")
                .replace(
                    /\b(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag|Feiertag)\b/g,
                    m => WEEKDAY_MAP[m] || m   // Fallback: wenn Map-Eintrag fehlt, Original behalten
                );
    
            const hours =
                (o.start && o.end)
                    ? `${o.start.split(':')[0]}-${o.end.split(':')[0]}`
                    : "";
    
            return { text, hours };
        });
    }
    
    async function initStates() {
        stations.forEach((s) => {
            const path = `${base}.${s.id}`;
    
            ["benzin","e10","diesel"].forEach(fuel => {
                ["48h","14d","90d"].forEach(win => {
                    smartCreateState(`${path}.aspects.${fuel}.trend_${win}`, "", { name: `Trend ${fuel} ${win}`, type: "string", read: true, write: true });
                    smartCreateState(`${path}.aspects.${fuel}.trend_${win}_icon`, "", { name: `Trend Icon ${fuel} ${win}`, type: "string", read: true, write: true });
                });
    
                smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj`, "", { name: `Trend ${fuel} 24h Prognose`, type: "string", read: true, write: true });
                smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "", { name: `Trend Icon ${fuel} 24h Prognose`, type: "string", read: true, write: true });
                smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0, { name: `Trend ${fuel} 24h prognostizierter Preis`, type: "number", read: true, write: true, unit: "€" });
    
                smartCreateState(`${path}.aspects.${fuel}.history`, "[]", { name: `Historie ${fuel}`, type: 'string', read: true, write: true }); //dient nur der Datenhaltung für Auswertung
                smartCreateState(`${path}.aspects.${fuel}.json`, "[]", { name: `JSON ${fuel}`, type: 'string', read: true, write: true });
            });
    
            smartCreateState(`${path}.image`, s.image, { name: 'Image', type: 'string', read: true, write: true });
            smartCreateState(`${path}.enabled`, true, { name: 'Aktiv', type: 'boolean', read: true, write: true });
            smartCreateState(`${path}.dataonly`, false, { name: 'Nur Daten abrufen, nicht auswerten', type: 'boolean', read: true, write: true });
            smartCreateState(`${path}.status`, '', { name: 'Status', type: 'string', read: true, write: true });
            smartCreateState(`${path}.benzin`, 0, { name: 'Benzin', type: 'number', read: true, write: true, unit: '€' });
            smartCreateState(`${path}.e10`, 0, { name: 'E10', type: 'number', read: true, write: true, unit: '€' });
            smartCreateState(`${path}.diesel`, 0, { name: 'Diesel', type: 'number', read: true, write: true, unit: '€' });
            smartCreateState(`${path}.benzin_str`, '', { name: 'Benzin (String)', type: 'string', read: true, write: true });
            smartCreateState(`${path}.e10_str`, '', { name: 'E10 (String)', type: 'string', read: true, write: true });
            smartCreateState(`${path}.diesel_str`, '', { name: 'Diesel (String)', type: 'string', read: true, write: true });
            smartCreateState(`${path}.name`, '', { name: 'Name', type: 'string', read: true, write: true });
            smartCreateState(`${path}.brand`, '', { name: 'Marke', type: 'string', read: true, write: true });
            smartCreateState(`${path}.street`, '', { name: 'Straße', type: 'string', read: true, write: true });
            smartCreateState(`${path}.postCode`, '', { name: 'Postleitzahl', type: 'string', read: true, write: true });
            smartCreateState(`${path}.place`, '', { name: 'Ort', type: 'string', read: true, write: true });
            smartCreateState(`${path}.isOpen`, false, { name: 'Ist Offen', type: 'boolean', read: true, write: true });
            smartCreateState(`${path}.isWholeDay`, false, { name: 'ganztägig', type: 'boolean', read: true, write: true });
            smartCreateState(`${path}.openingTimes`, "[]", { name: 'Öffnungszeiten', type: 'string', read: true, write: true });
            smartCreateState(`${path}.overrides`, "[]", { name: 'geänderte Öffnungszeiten', type: 'string', read: true, write: true });
            smartCreateState(`${path}.distance`, 0, { name: 'Entfernung', type: 'number', read: true, write: true });
            smartCreateState(`${path}.lastPriceUpdate`, formatDateTime(), { name: 'letzte Preisaktualisierung', type: 'string', read: true, write: true });
            smartCreateState(`${path}.lastChecked`, formatDateTime(), { name: 'letzter Abruf', type: 'string', read: true, write: true });
            smartCreateState(`${path}.prices`, "[]", { name: 'Preis JSON', type: 'string', read: true, write: true });
            smartCreateState(`${path}.favorite`, false, { name: 'Favorit', type: 'boolean', read: true, write: true });
            smartCreateState(`${path}.svg`, '', { name: 'SVG Image', type: 'string', read: true, write: true });
    
            smartCreateState(`${path}.aspects.reset_history`, false, { name: "History & Trends zurücksetzen", type: "boolean", read: true, write: true });
        });
        
        ["benzin", "e10", "diesel"].forEach(fuel => {
            smartCreateState(`${base}.cheapest.${fuel}_price`, 0, { type: 'number', read: true, write: true, unit: '€' });
            smartCreateState(`${base}.cheapest.${fuel}_price_str`, "", { type: 'string', read: true, write: true });
            smartCreateState(`${base}.cheapest.${fuel}_station`, '', { type: 'string', read: true, write: true });
            smartCreateState(`${base}.cheapest.${fuel}_station_name`, '', { type: 'string', read: true, write: true });
            smartCreateState(`${base}.cheapest.${fuel}_image`, '', { type: 'string', read: true, write: true });
            smartCreateState(`${base}.cheapest.${fuel}_top3_json`, "[]", { name: `Top 3 ${fuel}`, type: 'string', read: true, write: true });
    
            smartCreateState(`${base}.average.${fuel}`, 0, { name: `${fuel}`, type: 'number', read: true, write: true, unit: '€' });
            smartCreateState(`${base}.average.${fuel}_str`, "", { type: 'string', read: true, write: true });
    
            smartCreateState(`${base}.difference.${fuel}`, 0, { name: `${fuel}`, type: 'number', read: true, write: true, unit: '€' });
        });
    
        smartCreateState(`${base}.recommendation.benzin_tanken_empfohlen`, false, { name: "Tanken empfohlen Benzin", type: "boolean", read: true, write: true });
        smartCreateState(`${base}.recommendation.e10_tanken_empfohlen`, false, { name: "Tanken empfohlen E10", type: "boolean", read: true, write: true });
        smartCreateState(`${base}.recommendation.diesel_tanken_empfohlen`, false, { name: "Tanken empfohlen Diesel", type: "boolean", read: true, write: true });
    
        smartCreateState(`${base}.difference.prices`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
        smartCreateState(`${base}.cheapest.cheapest_json`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
        smartCreateState(`${base}.average.average_json`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
    
        smartCreateState(`${base}.recommendation_json`, "[]", { name: 'Empfehlungen JSON', type: 'string', read: true, write: true });
    
        smartCreateState(`${base}.all_stations_full_info`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
        smartCreateState(`${base}.reset_all_trends`, false, { name: "ALLE Trends & Historien zurücksetzen", type: "boolean", read: true, write: true });
    
        smartCreateState(`${base}.config.threshold_tanken`, 0.05, { name: "Schwelle JETZT_TANKEN (€/L unter Durchschnitt)", type: "number", read: true, write: true, unit: "€" });
        smartCreateState(`${base}.config.threshold_nicht_tanken`, -0.05, { name: "Schwelle NICHT_TANKEN (€/L über Durchschnitt)", type: "number", read: true, write: true, unit: "€" });
        smartCreateState(`${base}.config.trend_threshold_percent`, 0.2, { name: "Trend-Schwelle (% vom Durchschnitt)", type: "number", read: true, write: true, unit: "%" });
        smartCreateState(`${base}.config.use_superscript`, true, { name: "Preise mit Hochzahl darstellen", type: "boolean", read: true, write: true });
        smartCreateState(`${base}.config.show_trend_symbols`, false, { name: "Trend-/Forecast-Symbole im JSON anzeigen", type: "boolean", read: true, write: true });
        smartCreateState(`${base}.config.keep_last_price_if_closed`, true, { name: "Letzten Preis bei geschlossenen Stationen behalten", type: "boolean", read: true, write: true });
    
        smartCreateState(TANKSTELLEN_THEME_DP, "midnightBlue", {
            type: "mixed",
            read: true,
            write: true,
            name: "Tankstellen Theme",
            states: {
                "darkNeon": "Dark Neon",
                "flatModern": "Flat Modern",
                "floatingGlass": "Floating Glass",
                "graphiteGrid": "Graphite Grid",
                "liquidChrome": "Liquid Chrome",
                "materialDesign": "Material Design",
                "midnightBlue": "Midnight Blue",
                "midnightPanel": "Midnight Panel",
                "neonMesh": "Neon Mesh",
                "nightHorizon": "Night Horizon",
                "obsidianFluid": "Obsidian Fluid",
                "obsidianGold": "Obsidian Gold",
                "silverChrome": "Silver Chrome",
                "spotlightDark": "Spotlight Dark",
                "titanCore": "Titan Core",
                "transparent": "Transparent"
            }
        });
    
        logInfo("States initialisiert.");
    }
    
    function httpGetAsync(url, options) {
        return new Promise((resolve, reject) => {
            httpGet(url, options, (error, response) => {
                if (error) reject(error);
                else resolve(response);
            });
        });
    }
    
    function calculateAveragePrices() {
        const fuels = ["benzin", "e10", "diesel"];
        const averages = {};
    
        fuels.forEach(fuel => {
            let sum = 0;
            let count = 0;
    
            stations
                .filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.dataonly`)?.val !== true)
                .forEach(s => {
                    const path = `${base}.${s.id}`;
                    const isOpen = getState(`${path}.isOpen`)?.val;
                    const price = getState(`${path}.${fuel}`)?.val;
    
                    if (isOpen && typeof price === "number" && price > 0) {
                        sum += price;
                        count++;
                    }
                });
    
            averages[fuel] = count > 0 ? parseFloat((sum / count).toFixed(3)) : 0;
        });
    
        fuels.forEach(fuel => {
            setStateIfChanged(`${base}.average.${fuel}`, averages[fuel]);
            setStateIfChanged(`${base}.average.${fuel}_str`, formatPriceUnicode(averages[fuel]));
        });
        logInfo("Durchschnittspreise aktualisiert.");
    }
    
    function calculateFutureTrend(history, futureHours = 24) {
        const data = history.filter(h => typeof h.price === "number").sort((a,b) => a.ts - b.ts);
        if (data.length < 2) return { text: "kein Trend", icon: TREND_ICONS.none, projectedPrice: null };
    
        const first = data[0];
        const last  = data[data.length - 1];
    
        const hoursDiff = (last.ts - first.ts) / (1000 * 3600); 
        if (hoursDiff === 0) return { text: "stabil", icon: TREND_ICONS.flat, projectedPrice: last.price };
    
        const ratePerHour = (last.price - first.price) / hoursDiff;
        const projectedPrice = last.price + ratePerHour * futureHours;
    
        const avg = data.reduce((sum, d) => sum + d.price, 0) / data.length;
        const TH = avg * 0.002;
    
        const diff = projectedPrice - last.price;
        if (diff > TH) return { text: "steigend", icon: TREND_ICONS.up, projectedPrice };
        if (diff < -TH) return { text: "fallend", icon: TREND_ICONS.down, projectedPrice };
        return { text: "stabil", icon: TREND_ICONS.flat, projectedPrice };
    }
    
    function updateAspectsJSON(stationId) {
        const path = `${base}.${stationId}`;
        ["benzin","e10","diesel"].forEach(fuel => {
            const trends = {
                trend_48h: getState(`${path}.aspects.${fuel}.trend_48h`)?.val || "",
                trend_14d: getState(`${path}.aspects.${fuel}.trend_14d`)?.val || "",
                trend_90d: getState(`${path}.aspects.${fuel}.trend_90d`)?.val || "",
                trend_24h_proj: getState(`${path}.aspects.${fuel}.trend_24h_proj`)?.val || "",
                trend_24h_proj_price: getState(`${path}.aspects.${fuel}.trend_24h_proj_price`)?.val || 0,
                trend_48h_icon: getState(`${path}.aspects.${fuel}.trend_48h_icon`)?.val || "",
                trend_14d_icon: getState(`${path}.aspects.${fuel}.trend_14d_icon`)?.val || "",
                trend_90d_icon: getState(`${path}.aspects.${fuel}.trend_90d_icon`)?.val || "",
                trend_24h_proj_icon: getState(`${path}.aspects.${fuel}.trend_24h_proj_icon`)?.val || ""
            };
            setStateIfChanged(`${path}.aspects.${fuel}.json`, JSON.stringify(trends));
        });
    }
    
    const TREND_ICONS = { up: "↑", down: "↓", flat: "→", none: "–" };
    const TREND_SYMBOLS = { up: "↑", down: "↓", flat: "→" };
    const FORECAST_SYMBOLS = { up: "↗", down: "↘", flat: "→" };
    const SUPERSCRIPT = ['⁰','¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹'];
    
    function formatPriceUnicode(price) {
        if (price === null || price === undefined || isNaN(price)) return null;
    
        const p = Number(price).toFixed(3);
        const main = p.slice(0, -1).replace('.', ',');
        const lastDigit = p.slice(-1);
        const useSuperscript = getState(`${base}.config.use_superscript`)?.val ?? true;
    
        if (useSuperscript) {
            return main + SUPERSCRIPT[Number(lastDigit)];
        } else {
            return (Number(price).toFixed(2)).replace('.', ',');
        }
    }
    
    function calculateDifferencesStates() {
        const fuels = [
            { key: "benzin", label: "Benzin" },
            { key: "e10", label: "E10" },
            { key: "diesel", label: "Diesel" }
        ];
    
        const openStations = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.isOpen`)?.val === true && getState(`${base}.${s.id}.dataonly`)?.val !== true);
    
        const priceDiffArray = fuels.map(fuel => {
            const prices = openStations
                .map(s => {
                    const price = getState(`${base}.${s.id}.${fuel.key}`)?.val;
                    return (typeof price === "number" && price > 0)
                        ? {
                            name: getState(`${base}.${s.id}.name`)?.val || "",
                            price,
                            image: getState(`${base}.${s.id}.image`)?.val || ""
                        }
                        : null;
                })
                .filter(Boolean);
    
            let diff = 0;
            let cheapestName = "---";
            let teuersteName = "---";
            let billigste_image = "";
            let teuerste_image = "";
    
            if (prices.length > 0) {
                const cheapest = prices.reduce((a, b) => a.price < b.price ? a : b);
                const expensive = prices.reduce((a, b) => a.price > b.price ? a : b);
    
                diff = parseFloat((expensive.price - cheapest.price).toFixed(2));
    
                billigste_image = cheapest.image;
                teuerste_image = expensive.image;
    
                cheapestName = cheapest.name + " (" + cheapest.price.toFixed(2) + " €)";
                teuersteName = expensive.name + " (" + expensive.price.toFixed(2) + " €)";
            }
            setStateIfChanged(`${base}.difference.${fuel.key}`, diff);
    
            return {text: fuel.label, billigste_image, billigste: cheapestName, teuerste_image, teuerste: teuersteName, differenz: diff.toFixed(2)};
        });
    
        setStateIfChanged(`${base}.difference.prices`, JSON.stringify(priceDiffArray));
        logInfo("Differenzen und Preise als JSON unter `${base}.difference` aktualisiert.");
    }
    
    function saveCheapestJSON() {
        const fuels = [
            { key: "benzin", label: "Benzin", img: image_base+"blue.png" },
            { key: "e10", label: "E10", img: image_base+"green.png" },
            { key: "diesel", label: "Diesel", img: image_base+"red.png" }
        ];
    
        const json = fuels.map(fuel => {
            const stationId = getState(`${base}.cheapest.${fuel.key}_station`)?.val;
            if (!stationId) {
                return {col_1: fuel.img, col_2: fuel.label, col_3: "", col_4: "---", col_5: "---"};
            }
    
            const img = getState(`${base}.${stationId}.image`)?.val || "";
            const isFav = getState(`${base}.${stationId}.favorite`)?.val === true;
            const brand = (getState(`${base}.${stationId}.name`)?.val || "") + (isFav ? " ★" : "");
            const price = getState(`${base}.${stationId}.${fuel.key}`)?.val ?? null;
    
            return {col_1: fuel.img, col_2: fuel.label, col_3: img, col_4: brand.trim(), col_5: formatPriceUnicode(price)};
        });
        setStateIfChanged(`${base}.cheapest.cheapest_json`, JSON.stringify(json));
    }
    
    function saveTop3JSON() {
        const fuels = ["benzin","e10","diesel"];
    
        fuels.forEach(fuel => {
            const stationsWithPrices = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.isOpen`)?.val === true && getState(`${base}.${s.id}.dataonly`)?.val !== true)
                .map(s => {
                    const isFav = getState(`${base}.${s.id}.favorite`)?.val === true;
                    return {
                        name: getState(`${base}.${s.id}.name`)?.val || "",
                        favorite: isFav,
                        price: getState(`${base}.${s.id}.${fuel}`)?.val || 0,
                        image: getState(`${base}.${s.id}.image`)?.val || "",
                        distance: getState(`${base}.${s.id}.distance`)?.val || 0
                    };
                })
                .filter(s => typeof s.price === "number" && s.price > 0);
    
            stationsWithPrices.sort((a, b) => {
                if (a.price !== b.price) return a.price - b.price;
                if (a.favorite !== b.favorite) return a.favorite ? -1 : 1;
                return a.distance - b.distance;
            });
    
            const top3 = stationsWithPrices.slice(0,3).map((s, index) => ({
                rank: index + 1,
                image: s.image,
                name: s.name + (s.favorite ? " ★" : ""),
                price: formatPriceUnicode(s.price),  // <-- hier Hochzahlen verwenden
                distance: parseFloat(s.distance.toFixed(2))
            }));
            setStateIfChanged(`${base}.cheapest.${fuel}_top3_json`, JSON.stringify(top3));
        });
    }
    
    function saveAverageJSON() {
        const fuels = ["benzin","e10","diesel"];
        const json = fuels.map(fuel => {
            const avg = getState(`${base}.average.${fuel}`)?.val ?? 0;
            return {fuel: fuel, price: formatPriceUnicode(avg)};
        });
        setStateIfChanged(`${base}.average.average_json`, JSON.stringify(json));
    }
    
    function appendHistory(path, fuel, price) {
        if (typeof price !== "number" || price <= 0) return;
    
        const now = Date.now();
        const cutoff90d = now - 90 * 24 * 3600 * 1000;  // 90 Tage
        const cutoff48h = now - 48 * 3600 * 1000;       // 48 Stunden
    
        const historyStr = getState(`${path}.aspects.${fuel}.history`)?.val || "[]";
        let history = [];
        try { history = JSON.parse(historyStr); } catch {}
    
        history.push({ ts: now, price });
        history = history.filter(h => h.ts >= cutoff90d);
    
        const shortTerm = history.filter(h => h.ts >= cutoff48h);
        const longTerm = history
            .filter(h => h.ts < cutoff48h)
            .reduce((acc, cur) => {
                const hour = Math.floor(cur.ts / (3600*1000)); // Stunde als Bucket
                if (!acc[hour]) acc[hour] = { ts: cur.ts, price: cur.price, count: 1 };
                else {
                    acc[hour].price = (acc[hour].price * acc[hour].count + cur.price) / (acc[hour].count + 1);
                    acc[hour].count++;
                    acc[hour].ts = cur.ts; // letzte Zeit der Stunde
                }
                return acc;
            }, {});
    
        const longTermArray = Object.values(longTerm).map(h => ({ ts: h.ts, price: parseFloat(h.price.toFixed(3)) }));
        const newHistory = [...longTermArray, ...shortTerm];
        setStateIfChanged(`${path}.aspects.${fuel}.history`, JSON.stringify(newHistory));
    }
    
    function calculateTrend(history, hours) {
        const cutoff = Date.now() - (hours * 3600 * 1000);
        const data = history.filter(h => h.ts >= cutoff).sort((a,b) => a.ts - b.ts);
    
        if (data.length < 2) return { text: "kein Trend", icon: TREND_ICONS.none };
    
        const first = data[0].price;
        const last  = data[data.length - 1].price;
        const diff  = last - first;
    
        const avg = data.reduce((sum,d) => sum+d.price,0) / data.length;
        const thresholdPercent = getState(`${base}.config.trend_threshold_percent`)?.val ?? 0.2;
        const TH = avg * (thresholdPercent / 100);
    
        if (diff > TH) return { text: "steigend", icon: TREND_ICONS.up };
        if (diff < -TH) return { text: "fallend", icon: TREND_ICONS.down };
        return { text: "stabil", icon: TREND_ICONS.flat };
    }
    
    async function updateRecommendations() {
        const fuels = [
            { key: "benzin", label: "BENZIN" },
            { key: "e10",    label: "E10" },
            { key: "diesel", label: "DIESEL" }
        ];
    
        const recommendations = [];
        const thresholdTanken = getState(`${base}.config.threshold_tanken`)?.val ?? 0.05;
        const thresholdNichtTanken = getState(`${base}.config.threshold_nicht_tanken`)?.val ?? -0.05;
    
        fuels.forEach(fuel => {
            const avg       = getState(`${base}.average.${fuel.key}`)?.val;
            const cheapest  = getState(`${base}.cheapest.${fuel.key}_price`)?.val;
            const stationId = getState(`${base}.cheapest.${fuel.key}_station`)?.val;
            const stationNm = getState(`${base}.cheapest.${fuel.key}_station_name`)?.val;
    
            if (typeof avg !== "number" || typeof cheapest !== "number" || !stationId) {
                return;
            }
    
            const diff = parseFloat((avg - cheapest).toFixed(2));
    
            let action = "ABWARTEN";
            let reason = "Kein Preisvorteil";
    
            if (diff >= thresholdTanken) {
                action = "JETZT_TANKEN";
                reason = `${diff.toFixed(2).replace('.', ',')} € unter Durchschnitt`;
            } else if (diff <= thresholdNichtTanken) {
                action = "NICHT_TANKEN";
                reason = `${Math.abs(diff).toFixed(2).replace('.', ',')} € über Durchschnitt`;
            }
    
            const tanken_empfohlen = (action === "JETZT_TANKEN");
    
            setStateIfChanged(`${base}.recommendation.${fuel.key}_tanken_empfohlen`, tanken_empfohlen);
    
            const trend48h = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_48h_icon`)?.val || "–";
            const trend14d = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_14d_icon`)?.val || "–";
            const trend90d = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_90d_icon`)?.val || "–";
    
            const projDir   = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_24h_proj_icon`)?.val || "–";
            const projPrice = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_24h_proj_price`)?.val || 0;
    
            recommendations.push({
                fuel: fuel.label,
                action,
                reason,
                trend_48h: trend48h,
                trend_14d: trend14d,
                trend_90d: trend90d,
                forecast_dir: projDir,
                forecast_price: projPrice > 0 ? parseFloat(projPrice.toFixed(2)) : null,
                best_station_name: stationNm || "",
                best_station_price: formatPriceUnicode(cheapest)
            });
        });
        setStateIfChanged(`${base}.recommendation_json`, JSON.stringify(recommendations));
    }
    
    async function loadData() {
        logInfo("Starte Datenabfrage ...");
    
        function considerCheapest(cheapest, fuelKey, newPrice, dist, stationId, image, isFav) {
            if (typeof newPrice !== 'number') return;
    
            const current = cheapest[fuelKey];
            if (!current) {
                cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                return;
            }
            if (newPrice < current.price) {
                cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                return;
            }
            if (newPrice === current.price) {
                const currentFav = !!current.favorite;
                if (isFav && !currentFav) {
                    cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                    return;
                }
                if ((isFav === currentFav) && dist < current.distance) {
                    cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                    return;
                }
            }
        }
    
        const listCleaner = (entry = '') =>
            entry
                .toLowerCase()
                .split(' ')
                .map(word =>
                    word.replace(/oe/g, 'ö')
                        .replace(/ae/g, 'ä')
                        .replace(/ue/g, 'ü')
                        .replace(/ss/g, 'ß')
                )
                .map(word => word.charAt(0).toUpperCase() + word.slice(1))
                .join(' ');
    
        const cheapest = { benzin: null, e10: null, diesel: null };
    
        const tasks = stations
            .filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false)
            .map(async (s) => {
    
                const url = `https://creativecommons.tankerkoenig.de/json/detail.php?id=${s.id}&apikey=${apiKey}`;
                try {
                    const dynamicUA = new UserAgent().toString();
    
                    logInfo(`Abruf für Station ${s.id}`);
    
                    const response = await httpGetAsync(url, {timeout: 15000, headers: { "User-Agent": dynamicUA }});
    
                    if (!response || response.statusCode !== 200) {
                        logError(`HTTP Error Station ${s.id}: ${response?.statusCode}`);
                        return;
                    }
    
                    const body = typeof response.data === "string" ? JSON.parse(response.data) : response.data;
                    if (!body || !body.station) return;
    
                    const p = body.station;
                    const path = `${base}.${s.id}`;
    
                    setStateIfChanged(`${path}.status`, p.isOpen ? "geöffnet" : "geschlossen");
                    setStateIfChanged(`${path}.image`, s.image);
    
                    setIfEmpty(`${path}.name`, p.name);
                    setIfEmpty(`${path}.brand`, p.brand);
    
                    const streetWithHouse = p.houseNumber && p.houseNumber.trim() !== "" ? `${p.street} ${p.houseNumber}` : p.street;
    
                    setIfEmpty(`${path}.street`, listCleaner(streetWithHouse));
                    setIfEmpty(`${path}.place`, listCleaner(p.place));
                    setIfEmpty(`${path}.postCode`, p.postCode ? p.postCode.toString().padStart(5, "0") : "");
    
                    setStateIfChanged(`${path}.isOpen`, p.isOpen);
                    setStateIfChanged(`${path}.isWholeDay`, p.wholeDay);
    
                    const WEEKDAY_MAP = { "Montag": "Mo", "Dienstag": "Di", "Mittwoch": "Mi", "Donnerstag": "Do", "Freitag": "Fr", "Samstag": "Sa", "Sonntag": "So", "Feiertag": "Ft" };
    
                    let rawOpeningTimes;
                    if (p.wholeDay) {
                        rawOpeningTimes = [{ text: "Mo-So", start: "00:00:00", end: "24:00:00" }];
                    } else {
                        if (Array.isArray(p.openingTimes)) {
                            rawOpeningTimes = p.openingTimes;
                        } else if (typeof p.openingTimes === "string") {
                            try {
                                rawOpeningTimes = JSON.parse(p.openingTimes);
                            } catch {
                                rawOpeningTimes = [];
                            }
                        } else {
                            rawOpeningTimes = [];
                        }
                    }
    
                    const formattedOpening = formatOpeningEntries(rawOpeningTimes, WEEKDAY_MAP);
                    setStateIfChanged(`${path}.openingTimes`, JSON.stringify(formattedOpening));
    
                    let rawOverrides;
                    if (Array.isArray(p.overrides)) {
                        rawOverrides = p.overrides;
                    } else if (typeof p.overrides === "string") {
                        try { rawOverrides = JSON.parse(p.overrides); } catch { rawOverrides = []; }
                    } else {
                        rawOverrides = [];
                    }
    
                    const formattedOverrides = formatOpeningEntries(rawOverrides, WEEKDAY_MAP);
                    setStateIfChanged(`${path}.overrides`, JSON.stringify(formattedOverrides));
    
                    if (p.lat && p.lng) {
                        const distance = getDistance(myLocation.lat, myLocation.lon, p.lat, p.lng);
                        setStateIfChanged(`${path}.distance`, parseFloat(distance.toFixed(2)));
                    }
    
                    let priceChanged = false;
    
                    const fuels = [
                        { api: "e5", dp: "benzin" },
                        { api: "e10", dp: "e10" },
                        { api: "diesel", dp: "diesel" }
                    ];
    
                    const keepLastPriceIfClosed = getState(`${base}.config.keep_last_price_if_closed`)?.val ?? true;
                    if (p.isOpen) {
                        if (getState(`${path}.benzin`)?.val !== p.e5) {
                            appendHistory(path, "benzin", p.e5);
                        }
                        if (getState(`${path}.e10`)?.val !== p.e10) {
                            appendHistory(path, "e10", p.e10);
                        }
                        if (getState(`${path}.diesel`)?.val !== p.diesel) {
                            appendHistory(path, "diesel", p.diesel);
                        }
    
                        fuels.forEach(f => {
                            if (typeof p[f.api] === "number") {
                                const oldVal = getState(`${path}.${f.dp}`)?.val;
                                if (oldVal !== p[f.api]) priceChanged = true;
                                setStateIfChanged(`${path}.${f.dp}`, p[f.api]);
                            }
                        });
    
                        if (priceChanged) {
                            setStateIfChanged(`${path}.lastPriceUpdate`, formatDateTime());
                        }
    
                        setStateIfChanged(`${path}.benzin_str`, formatPriceUnicode(getState(`${path}.benzin`)?.val));
                        setStateIfChanged(`${path}.e10_str`, formatPriceUnicode(getState(`${path}.e10`)?.val));
                        setStateIfChanged(`${path}.diesel_str`, formatPriceUnicode(getState(`${path}.diesel`)?.val));
    
                    } else if (!keepLastPriceIfClosed) {
                        setStateIfChanged(`${path}.benzin`, 0.0);
                        setStateIfChanged(`${path}.e10`, 0.0);
                        setStateIfChanged(`${path}.diesel`, 0.0);
                        setStateIfChanged(`${path}.benzin_str`, "");
                        setStateIfChanged(`${path}.e10_str`, "");
                        setStateIfChanged(`${path}.diesel_str`, "");
                    }
    
                    ["benzin","e10","diesel"].forEach(fuel => {
                        const historyStr = getState(`${path}.aspects.${fuel}.history`)?.val || "[]";
                        let history = [];
                        try { history = JSON.parse(historyStr); } catch {}
    
                    const trends = {
                        "48h": calculateTrend(history, 48),
                        "14d": calculateTrend(history, 24 * 14),
                        "90d": calculateTrend(history, 24 * 90)
                    };
    
                    Object.entries(trends).forEach(([win, result]) => {
                        setStateIfChanged(`${path}.aspects.${fuel}.trend_${win}`, result.text);
                        setStateIfChanged(`${path}.aspects.${fuel}.trend_${win}_icon`, result.icon);
                    });
    
                    const futureTrend = calculateFutureTrend(history, 24);
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, futureTrend.text);
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, futureTrend.icon);
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, futureTrend.projectedPrice ? parseFloat(futureTrend.projectedPrice.toFixed(3)) : 0);                });
    
                    function buildPriceEntry(fuelKey, label, image) {
                        let priceStr = formatPriceUnicode(getState(`${path}.${fuelKey}`)?.val ?? null) || "";
    
                        const showTrendSymbols = getState(`${base}.config.show_trend_symbols`)?.val ?? false;
                        if (showTrendSymbols && priceStr) {
                            const trendIcon = getState(`${path}.aspects.${fuelKey}.trend_48h_icon`)?.val || TREND_SYMBOLS.flat;
                            const forecastIcon = getState(`${path}.aspects.${fuelKey}.trend_24h_proj_icon`)?.val || FORECAST_SYMBOLS.flat;
                            priceStr = `${priceStr} ${trendIcon} ${forecastIcon}`;
                        }
    
                        return { image, text: label, price: priceStr };
                    }
    
                    const pricesJSON = [
                        buildPriceEntry("benzin", "Benzin", image_base + "blue.png"),
                        buildPriceEntry("e10",    "E10",    image_base + "green.png"),
                        buildPriceEntry("diesel", "Diesel", image_base + "red.png")
                    ];
    
                    setStateIfChanged(`${path}.prices`, JSON.stringify(pricesJSON));
                    setStateIfChanged(`${path}.lastChecked`, formatDateTime());
    
                    const dist = getState(`${path}.distance`)?.val || 0;
                    const isFav = getState(`${path}.favorite`)?.val === true;
                    if (p.isOpen && getState(`${base}.${s.id}.dataonly`)?.val !== true) {
                        considerCheapest(cheapest, 'benzin', p.e5, dist, s.id, s.image, isFav);
                        considerCheapest(cheapest, 'e10', p.e10, dist, s.id, s.image, isFav);
                        considerCheapest(cheapest, 'diesel', p.diesel, dist, s.id, s.image, isFav);
                    }
                    updateAspectsJSON(s.id);
                } catch (error) {
                    logError(`Fehler bei Station ${s.id}: ${error}`);
                }
            });
    
        await Promise.allSettled(tasks);
        logInfo("Auswertung abgeschlossen.");
    
        ["benzin", "e10", "diesel"].forEach(fuel => {
            if (cheapest[fuel]) {
                const stationId = cheapest[fuel].station;
                const stationName = getState(`${base}.${stationId}.name`)?.val || "";
    
                setStateIfChanged(`${base}.cheapest.${fuel}_price`, cheapest[fuel].price);
                setStateIfChanged(`${base}.cheapest.${fuel}_price_str`, formatPriceUnicode(cheapest[fuel].price));
                setStateIfChanged(`${base}.cheapest.${fuel}_station`, stationId); // ID bleibt für Pfad-Operationen
                setStateIfChanged(`${base}.cheapest.${fuel}_station_name`, stationName);
                setStateIfChanged(`${base}.cheapest.${fuel}_image`, cheapest[fuel].image);
            } else {
                setStateIfChanged(`${base}.cheapest.${fuel}_price`, 0);
                setStateIfChanged(`${base}.cheapest.${fuel}_price_str`, "");
                setStateIfChanged(`${base}.cheapest.${fuel}_station`, "");
                setStateIfChanged(`${base}.cheapest.${fuel}_station_name`, "");
                setStateIfChanged(`${base}.cheapest.${fuel}_image`, "");
            }
        });
    
        saveCheapestJSON();
        saveTop3JSON();
        calculateAveragePrices();
        calculateDifferencesStates();
        saveAverageJSON();
    
        const fullInfo = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false)
            .map(s => {
                const path = `${base}.${s.id}`;
                return {
                    name: getState(`${path}.name`)?.val || "",
                    brand: getState(`${path}.brand`)?.val || "",
                    street: getState(`${path}.street`)?.val || "",
                    postCode: getState(`${path}.postCode`)?.val || "",
                    place: getState(`${path}.place`)?.val || "",
                    distance: getState(`${path}.distance`)?.val || "",
                    image: getState(`${path}.image`)?.val || "",
                    benzin: getState(`${path}.benzin`)?.val ?? null,
                    e10: getState(`${path}.e10`)?.val ?? null,
                    diesel: getState(`${path}.diesel`)?.val ?? null,
                    isOpen: getState(`${path}.isOpen`)?.val ?? false,
                    lastPriceUpdate: getState(`${path}.lastPriceUpdate`)?.val || "",
                    lastChecked: getState(`${path}.lastChecked`)?.val || ""
                };
            });
    
        setStateIfChanged(`${base}.all_stations_full_info`, JSON.stringify(fullInfo));
        updateRecommendations();
    
        TankRenderer();
    }
    
    (async () => {
        try {
            if (await internetUndTankerkoenigOK()) {
                await initStates();
                await sleepMs(5000);
                await loadData();
            }
        } catch (err) {
            logError("Fehler beim Start: " + err);
        }
    })();
    
    schedule('35 7,17,27,37,47,57 * * * *', async() => {
        try {
            if (await internetUndTankerkoenigOK()) {
                await initStates();
                await sleepMs(5000);
                await loadData();
            }
        } catch (err) {
            logError("Fehler beim Cron-Start: " + err);
        }
    });
    
    async function internetUndTankerkoenigOK() {
        try {
            const net = await httpGetAsync("https://www.google.com/generate_204", { timeout: 5000 });
            if (!net || net.statusCode !== 204) return false;
    
            const tk = await httpGetAsync("https://creativecommons.tankerkoenig.de/", { timeout: 5000 });
            return (tk && tk.statusCode === 200);
    
        } catch {
            return false;
        }
    }
    
    stations.forEach(s => {
        const resetId = `${base}.${s.id}.aspects.reset_history`;
    
        on({ id: resetId, change: "ne" }, obj => {
            if (obj.state.val === true) {
                const path = `${base}.${s.id}`;
    
                ["benzin","e10","diesel"].forEach(fuel => {
                    setStateIfChanged(`${path}.aspects.${fuel}.history`, "[]");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_48h`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_14d`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_90d`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0);
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_48h_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_14d_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_90d_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "");
                });
                setStateIfChanged(resetId, false);
            }
        });
    });
    
    on({ id: `${base}.reset_all_trends`, change: "ne" }, obj => {
        if (obj.state.val === true) {
                stations.forEach(s => {
                const path = `${base}.${s.id}`;
                ["benzin","e10","diesel"].forEach(fuel => {
                    setStateIfChanged(`${path}.aspects.${fuel}.history`, "[]");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_48h`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_14d`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_90d`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0);
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_48h_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_14d_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_90d_icon`, "");
                    setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "");
                });
            });
            setStateIfChanged(`${base}.reset_all_trends`, false);
        }
    });
    
    
    // **** AB HIER DER SVG RENDERER MIT THEMEN-KONFIG ****
    
    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
    
    
    const TANKSTELLEN_THEMES = {
    // widgetBgTop        = Farbe Widget-Hintergrund oben       widgetBgBottom      = Farbe Widget-Hintergrund unten       headerTop          = Farbe Header oben
    // headerBottom       = Farbe Header unten                  footerTop           = Farbe Footer oben                    footerBottom       = Farbe Footer unten
    // footerStroke       = Farbe Footer-Rahmen                 borderGradStart     = Farbe Rahmenverlauf Start            borderGradMid      = Farbe Rahmenverlauf Mitte
    // borderGradEnd      = Farbe Rahmenverlauf Ende            lineSeparator       = Farbe horizontale Trennlinie         lineVertical       = Farbe vertikale Trennlinie
    
    // textDefault        = Farbe Standard-Text                 textName            = Farbe Tankstellenname                textStatus         = Farbe Status-Text
    // textTime           = Farbe Zeitangaben                   textFuel            = Farbe Kraftstoff-Label               textPrice          = Farbe Preis-Text
    // textControl        = Farbe Control-Text                  textStatistik       = Farbe Statistik-Text                 textOpenTitle      = Farbe Öffnungszeiten-Titel
    // textOpenTime       = Farbe Öffnungszeiten-Zeiten         statusOpenFill      = Farbe Hintergrund geöffnet           statusOpenStroke   = Farbe Rahmen geöffnet
    
    // statusOpenText     = Farbe Text geöffnet                 statusClosedFill    = Farbe Hintergrund geschlossen        statusClosedStroke = Farbe Rahmen geschlossen
    // statusClosedText   = Farbe Text geschlossen              statistikFill       = Farbe Statistik-Hintergrund          statistikStroke    = Farbe Statistik-Rahmen
    // statistikText      = Farbe Statistik-Text                fuelBenzinStart     = Farbe Benzin-Verlauf Start           fuelBenzinEnd      = Farbe Benzin-Verlauf Ende
    // fuelE10Start       = Farbe E10-Verlauf Start             fuelE10End          = Farbe E10-Verlauf Ende               fuelDieselStart    = Farbe Diesel-Verlauf Start
    
    // fuelDieselEnd      = Farbe Diesel-Verlauf Ende           fuelBenzinBorder    = Farbe Benzin-Rahmen                  fuelE10Border      = Farbe E10-Rahmen
    // fuelDieselBorder   = Farbe Diesel-Rahmen                 trendUp             = Farbe Trend ↑                        trendDown          = Farbe Trend ↓
    // trendStable        = Farbe Trend →                       controlBoxFill      = Farbe Control-Box Hintergrund        controlBoxStroke   = Farbe Control-Box Rahmen
    // controlBoxText     = Farbe Control-Box Text
    
    
        midnightBlue:{widgetBgTop:"#0F172A",widgetBgBottom:"#020617",headerTop:"#1E293B",headerBottom:"#0F172A",footerTop:"#1E293B",footerBottom:"#0F172A",footerStroke:"#1E293B",borderGradStart:"#3B82F6",borderGradMid:"#1E293B",borderGradEnd:"#3B82F6",lineSeparator:"#334155",lineVertical:"#1E293B",textDefault:"#E2E8F0",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#E2E8F0",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#E2E8F0",textOpenTime:"#E2E8F0",statusOpenFill:"rgba(5,150,105,0.2)",statusOpenStroke:"#10B981",statusOpenText:"#34D399",statusClosedFill:"rgba(220,38,38,0.2)",statusClosedStroke:"#DC2626",statusClosedText:"#EF4444",statistikFill:"rgba(148,163,184,0.20)",statistikStroke:"#94A3B8",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#0F172A",fuelE10Start:"#0A2A22",fuelE10End:"#0F172A",fuelDieselStart:"#3F1515",fuelDieselEnd:"#0F172A",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#475569",controlBoxText:"#FFFFFF"},
        silverChrome:{widgetBgTop:"#F8FAFC",widgetBgBottom:"#E2E8F0",headerTop:"#CBD5E1",headerBottom:"#94A3B8",footerTop:"#CBD5E1",footerBottom:"#94A3B8",footerStroke:"#64748B",borderGradStart:"#FFFFFF",borderGradMid:"#CBD5E1",borderGradEnd:"#FFFFFF",lineSeparator:"#94A3B8",lineVertical:"#94A3B8",textDefault:"#1E293B",textName:"#0F172A",textStatus:"#FFFFFF",textTime:"#334155",textFuel:"#0F172A",textPrice:"#0F172A",textControl:"#0F172A",textStatistik:"#0F172A",textOpenTitle:"#1E293B",textOpenTime:"#1E293B",statusOpenFill:"rgba(6,95,70,0.25)",statusOpenStroke:"#065F46",statusOpenText:"#065F46",statusClosedFill:"rgba(185,28,28,0.25)",statusClosedStroke:"#991B1B",statusClosedText:"#991B1B",statistikFill:"rgba(255,255,255,0.5)",statistikStroke:"#94A3B8",statistikText:"#1E293B",fuelBenzinStart:"#D9DEE5",fuelBenzinEnd:"#B8C0C9",fuelE10Start:"#D9DEE5",fuelE10End:"#B8C0C9",fuelDieselStart:"#D9DEE5",fuelDieselEnd:"#B8C0C9",fuelBenzinBorder:"#94A3B8",fuelE10Border:"#94A3B8",fuelDieselBorder:"#94A3B8",trendUp:"#B91C1C",trendDown:"#1D4ED8",trendStable:"#065F46",controlBoxFill:"#E5E7EB",controlBoxStroke:"#94A3B8",controlBoxText:"#1E293B"},
        transparent:{widgetBgTop:"transparent",widgetBgBottom:"transparent",headerTop:"transparent",headerBottom:"transparent",footerTop:"transparent",footerBottom:"transparent",footerStroke:"#1E293B",borderGradStart:"#3B82F6",borderGradMid:"#1E293B",borderGradEnd:"#3B82F6",lineSeparator:"#334155",lineVertical:"#1E293B",textDefault:"#E2E8F0",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#E2E8F0",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#E2E8F0",textOpenTime:"#E2E8F0",statusOpenFill:"rgba(5,150,105,0.2)",statusOpenStroke:"#10B981",statusOpenText:"#34D399",statusClosedFill:"rgba(220,38,38,0.2)",statusClosedStroke:"#DC2626",statusClosedText:"#EF4444",statistikFill:"rgba(148,163,184,0.20)",statistikStroke:"#94A3B8",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#0F172A",fuelE10Start:"#0A2A22",fuelE10End:"#0F172A",fuelDieselStart:"#3F1515",fuelDieselEnd:"#0F172A",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#475569",controlBoxText:"#FFFFFF"},
        flatModern:{widgetBgTop:"#FFFFFF",widgetBgBottom:"#F1F5F9",headerTop:"#E2E8F0",headerBottom:"#CBD5E1",footerTop:"#F1F5F9",footerBottom:"#E2E8F0",footerStroke:"#CBD5E1",borderGradStart:"#CBD5E1",borderGradMid:"#E2E8F0",borderGradEnd:"#CBD5E1",lineSeparator:"#CBD5E1",lineVertical:"#CBD5E1",textDefault:"#1E293B",textName:"#0F172A",textStatus:"#1E293B",textTime:"#475569",textFuel:"#1E293B",textPrice:"#0F172A",textControl:"#1E293B",textStatistik:"#1E293B",textOpenTitle:"#475569",textOpenTime:"#1E293B",statusOpenFill:"#DCFCE7",statusOpenStroke:"#22C55E",statusOpenText:"#166534",statusClosedFill:"#FEE2E2",statusClosedStroke:"#EF4444",statusClosedText:"#991B1B",statistikFill:"#F1F5F9",statistikStroke:"#CBD5E1",statistikText:"#1E293B",fuelBenzinStart:"#EFF6FF",fuelBenzinEnd:"#EFF6FF",fuelBenzinBorder:"#BFDBFE",fuelE10Start:"#F0FDF4",fuelE10End:"#F0FDF4",fuelE10Border:"#BBF7D0",fuelDieselStart:"#FEF2F2",fuelDieselEnd:"#FEF2F2",fuelDieselBorder:"#FECACA",trendUp:"#DC2626",trendDown:"#2563EB",trendStable:"#16A34A",controlBoxFill:"#F8FAFC",controlBoxStroke:"#CBD5E1",controlBoxText:"#1E293B"},
        darkNeon:{widgetBgTop:"#0A0A0A",widgetBgBottom:"#171717",headerTop:"#171717",headerBottom:"#0A0A0A",footerTop:"#171717",footerBottom:"#0A0A0A",footerStroke:"#262626", borderGradStart:"#06B6D4",borderGradMid:"#000000",borderGradEnd:"#D946EF",lineSeparator:"#262626",lineVertical:"#262626",textDefault:"#A3A3A3",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#737373",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#A3A3A3",textStatistik:"#FFFFFF",textOpenTitle:"#A3A3A3",textOpenTime:"#FFFFFF",statusOpenFill:"rgba(34,197,94,0.1)",statusOpenStroke:"#22C55E",statusOpenText:"#4ADE80",statusClosedFill:"rgba(239,68,68,0.1)",statusClosedStroke:"#EF4444",statusClosedText:"#F87171",statistikFill:"#171717",statistikStroke:"#404040",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#000000",fuelE10Start:"#0A2A22",fuelE10End:"#000000",fuelDieselStart:"#3F1515",fuelDieselEnd:"#000000",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#F43F5E",trendDown:"#38BDF8",trendStable:"#4ADE80",controlBoxFill:"#000000",controlBoxStroke:"#525252",controlBoxText:"#FFFFFF"},
        materialDesign:{widgetBgTop:"#F5F5F5",widgetBgBottom:"#E0E0E0",headerTop:"#EEEEEE",headerBottom:"#E0E0E0",footerTop:"#EEEEEE",footerBottom:"#E0E0E0",footerStroke:"#BDBDBD",borderGradStart:"#E0E0E0",borderGradMid:"#9E9E9E",borderGradEnd:"#E0E0E0",lineSeparator:"#BDBDBD",lineVertical:"#BDBDBD",textDefault:"#424242",textName:"#212121",textStatus:"#212121",textTime:"#616161",textFuel:"#212121",textPrice:"#212121",textControl:"#424242",textStatistik:"#212121",textOpenTitle:"#616161",textOpenTime:"#212121",statusOpenFill:"#C8E6C9",statusOpenStroke:"#4CAF50",statusOpenText:"#2E7D32",statusClosedFill:"#FFCDD2",statusClosedStroke:"#F44336",statusClosedText:"#C62828",statistikFill:"#E0E0E0",statistikStroke:"#9E9E9E",statistikText:"#212121",fuelBenzinStart:"#E3F2FD",fuelBenzinEnd:"#E3F2FD",fuelBenzinBorder:"#2196F3",fuelE10Start:"#E8F5E9",fuelE10End:"#E8F5E9",fuelE10Border:"#4CAF50",fuelDieselStart:"#FFEBEE",fuelDieselEnd:"#FFEBEE",fuelDieselBorder:"#F44336",trendUp:"#D32F2F",trendDown:"#1976D2",trendStable:"#388E3C",controlBoxFill:"#F5F5F5",controlBoxStroke:"#9E9E9E",controlBoxText:"#212121"},
        nightHorizon:{widgetBgTop:"#4C1D95",widgetBgBottom:"#991B1B",headerTop:"#2E1065",headerBottom:"#4C1D95",footerTop:"#7F1D1D",footerBottom:"#4C1D95",footerStroke:"#4C1D95",borderGradStart:"#F59E0B",borderGradMid:"#2E1065",borderGradEnd:"#F59E0B",lineSeparator:"rgba(255,255,255,0.2)",lineVertical:"rgba(255,255,255,0.2)",textDefault:"#FEE2E2",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#FDBA74",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#FDBA74",textOpenTime:"#FEE2E2",statusOpenFill:"rgba(34,197,94,0.3)",statusOpenStroke:"#22C55E",statusOpenText:"#86EFAC",statusClosedFill:"rgba(185,28,28,0.3)",statusClosedStroke:"#B91C1C",statusClosedText:"#FCA5A5",statistikFill:"rgba(255,255,255,0.1)",statistikStroke:"#FDBA74",statistikText:"#FFFFFF",fuelBenzinStart:"#312E81",fuelBenzinEnd:"#1E3A8A",fuelBenzinBorder:"#60A5FA",fuelE10Start:"#064E3B",fuelE10End:"#065F46",fuelE10Border:"#34D399",fuelDieselStart:"#7F1D1D",fuelDieselEnd:"#991B1B",fuelDieselBorder:"#F87171",trendUp:"#F87171",trendDown:"#60A5FA",trendStable:"#34D399",controlBoxFill:"#4C1D95",controlBoxStroke:"#FDBA74",controlBoxText:"#FFFFFF"},
        obsidianGold:{widgetBgTop:"#171717",widgetBgBottom:"#0A0A0A",headerTop:"#262626",headerBottom:"#171717",footerTop:"#262626",footerBottom:"#171717",footerStroke:"#404040",borderGradStart:"#D4AF37",borderGradMid:"#171717",borderGradEnd:"#D4AF37",lineSeparator:"#404040",lineVertical:"#404040",textDefault:"#E5E5E5",textName:"#F5F5F5",textStatus:"#D4AF37",textTime:"#A3A3A3",textFuel:"#FFFFFF",textPrice:"#D4AF37",textControl:"#E5E5E5",textStatistik:"#D4AF37",textOpenTitle:"#A3A3A3",textOpenTime:"#E5E5E5",statusOpenFill:"rgba(212,175,55,0.15)",statusOpenStroke:"#D4AF37",statusOpenText:"#D4AF37",statusClosedFill:"rgba(64,64,64,0.3)",statusClosedStroke:"#525252",statusClosedText:"#A3A3A3",statistikFill:"rgba(212,175,55,0.1)",statistikStroke:"#D4AF37",statistikText:"#D4AF37",fuelBenzinStart:"#262626",fuelBenzinEnd:"#171717",fuelBenzinBorder:"#D4AF37",fuelE10Start:"#262626",fuelE10End:"#171717",fuelE10Border:"#D4AF37",fuelDieselStart:"#262626",fuelDieselEnd:"#171717",fuelDieselBorder:"#D4AF37",trendUp:"#D4AF37",trendDown:"#D4AF37",trendStable:"#D4AF37",controlBoxFill:"#171717",controlBoxStroke:"#404040",controlBoxText:"#D4AF37"},
        spotlightDark: {widgetBgTop:"#020617", widgetBgBottom:"#020617",headerTop:"#020617", headerBottom:"#020617",footerTop:"#020617", footerBottom:"#020617",borderGradStart:"transparent", borderGradMid:"transparent", borderGradEnd:"transparent",lineSeparator:"#1e293b", lineVertical:"#1e293b",textDefault:"#e2e8f0", textName:"#ffffff", textStatus:"#ffffff",textTime:"#64748b", textFuel:"#94a3b8", textPrice:"#ffffff",textControl:"#64748b", textStatistik:"#64748b",textOpenTitle:"#94a3b8", textOpenTime:"#e2e8f0",statusOpenFill:"rgba(5,150,105,0.2)", statusOpenStroke:"#10b981", statusOpenText:"#34d399",statusClosedFill:"rgba(220,38,38,0.2)", statusClosedStroke:"#dc2626", statusClosedText:"#ef4444",statistikFill:"rgba(255,255,255,0.05)", statistikStroke:"#334155", statistikText:"#e2e8f0",fuelBenzinStart:"#1e293b", fuelBenzinEnd:"#020617",fuelE10Start:"#1e293b", fuelE10End:"#020617",fuelDieselStart:"#1e293b", fuelDieselEnd:"#020617",trendUp:"#ef4444", trendDown:"#3b82f6", trendStable:"#10b981",controlBoxFill:"#020617", controlBoxStroke:"#334155", controlBoxText:"#94a3b8"},
        midnightPanel: {widgetBgTop:"#0F172A", widgetBgBottom:"#020617",headerTop:"#0F172A", headerBottom:"#0F172A",footerTop:"#020617", footerBottom:"#020617",borderGradStart:"#1E293B", borderGradMid:"#1E293B", borderGradEnd:"#1E293B",lineSeparator:"#1E293B", lineVertical:"#1E293B",textDefault:"#E2E8F0", textName:"#E2E8F0", textStatus:"#FEE2E2",textTime:"#64748B", textFuel:"#94A3B8", textPrice:"#FFFFFF",textControl:"#475569", textStatistik:"#64748B",textOpenTitle:"#64748B", textOpenTime:"#E2E8F0",statusOpenFill:"#065F46", statusOpenStroke:"#065F46", statusOpenText:"#D1FAE5",statusClosedFill:"#7F1D1D", statusClosedStroke:"#991B1B", statusClosedText:"#FEE2E2",statistikFill:"#020617", statistikStroke:"#1E293B", statistikText:"#64748B",fuelBenzinStart:"#0F172A", fuelBenzinEnd:"#020617",fuelE10Start:"#0F172A", fuelE10End:"#020617",fuelDieselStart:"#0F172A", fuelDieselEnd:"#020617",trendUp:"#B91C1C", trendDown:"#1D4ED8", trendStable:"#10B981",controlBoxFill:"#020617", controlBoxStroke:"#1E293B", controlBoxText:"#64748B"},
        neonMesh: {widgetBgTop:"#1e1b4b", widgetBgBottom:"#0f172a",headerTop:"#1e1b4b", headerBottom:"#0f172a",footerTop:"#0f172a", footerBottom:"#0f172a",borderGradStart:"transparent", borderGradMid:"transparent", borderGradEnd:"transparent",lineSeparator:"#334155", lineVertical:"#334155",textDefault:"#f8fafc", textName:"#f8fafc", textStatus:"#f8fafc",textTime:"#94a3b8", textFuel:"#94a3b8", textPrice:"#ffffff",textControl:"#64748b", textStatistik:"#64748b",textOpenTitle:"#94a3b8", textOpenTime:"#f8fafc",statusOpenFill:"rgba(16,185,129,0.25)", statusOpenStroke:"#10b981", statusOpenText:"#34d399",statusClosedFill:"rgba(220,38,38,0.25)", statusClosedStroke:"#dc2626", statusClosedText:"#ef4444",statistikFill:"rgba(255,255,255,0.05)", statistikStroke:"#475569", statistikText:"#94a3b8",fuelBenzinStart:"#4f46e5", fuelBenzinEnd:"#0f172a",fuelE10Start:"#9d174d", fuelE10End:"#0f172a",fuelDieselStart:"#4f46e5", fuelDieselEnd:"#0f172a",trendUp:"#ef4444", trendDown:"#3b82f6", trendStable:"#10b981",controlBoxFill:"#0f172a", controlBoxStroke:"#334155", controlBoxText:"#94a3b8"},
        obsidianFluid:{widgetBgTop:"#1e1b4b",widgetBgBottom:"#020617",headerTop:"#1e1b4b",headerBottom:"#020617",footerTop:"#020617",footerBottom:"#020617",borderGradStart:"rgba(255,255,255,0.05)",borderGradMid:"rgba(255,255,255,0.03)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#1e293b",lineVertical:"#1e293b",textDefault:"#f1f5f9",textName:"#f1f5f9",textStatus:"#eab308",textTime:"#94a3b8",textFuel:"#e2e8f0",textPrice:"#ffffff",textControl:"#64748b",textStatistik:"#94a3b8",textOpenTitle:"#eab308",textOpenTime:"#f1f5f9",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#334155",statistikText:"#e2e8f0",fuelBenzinStart:"#1e1b4b",fuelBenzinEnd:"#020617",fuelE10Start:"#1e1b4b",fuelE10End:"#020617",fuelDieselStart:"#1e1b4b",fuelDieselEnd:"#020617",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#334155",controlBoxText:"#94a3b8"},
        floatingGlass:{widgetBgTop:"#F0F9FF",widgetBgBottom:"#F0F9FF",headerTop:"#F0F9FF",headerBottom:"#F0F9FF",footerTop:"#F0F9FF",footerBottom:"#F0F9FF",borderGradStart:"#ffffff",borderGradMid:"#ffffff",borderGradEnd:"#ffffff",lineSeparator:"#bae6fd",lineVertical:"#bae6fd",textDefault:"#0F172A",textName:"#0369A1",textStatus:"#10B981",textTime:"#0369A1",textFuel:"#F0F9FF",textPrice:"#F0F9FF",textControl:"#0369A1",textStatistik:"#0369A1",textOpenTitle:"#075985",textOpenTime:"#0F172A",statusOpenFill:"#d1fae5",statusOpenStroke:"#10b981",statusOpenText:"#065f46",statusClosedFill:"#fee2e2",statusClosedStroke:"#dc2626",statusClosedText:"#b91c1c",statistikFill:"#ffffff",statistikStroke:"#bae6fd",statistikText:"#0369A1",fuelBenzinStart:"#0EA5E9",fuelBenzinEnd:"#0369A1",fuelE10Start:"#0EA5E9",fuelE10End:"#0369A1",fuelDieselStart:"#06B6D4",fuelDieselEnd:"#0369A1",trendUp:"#dc2626",trendDown:"#2563eb",trendStable:"#10b981",controlBoxFill:"#ffffff",controlBoxStroke:"#bae6fd",controlBoxText:"#0369A1"},
        liquidChrome:{widgetBgTop:"#4B5563",widgetBgBottom:"#374151",headerTop:"#E5E7EB",headerBottom:"#9CA3AF",footerTop:"#9CA3AF",footerBottom:"#374151",borderGradStart:"rgba(255,255,255,0.25)",borderGradMid:"rgba(255,255,255,0.15)",borderGradEnd:"rgba(255,255,255,0.05)",lineSeparator:"#d1d5db",lineVertical:"#d1d5db",textDefault:"#f9fafb",textName:"#ffffff",textStatus:"#ffffff",textTime:"#e5e7eb",textFuel:"#f3f4f6",textPrice:"#ffffff",textControl:"#d1d5db",textStatistik:"#e5e7eb",textOpenTitle:"#e5e7eb",textOpenTime:"#ffffff",statusOpenFill:"#d1fae5",statusOpenStroke:"#10b981",statusOpenText:"#065f46",statusClosedFill:"#fee2e2",statusClosedStroke:"#dc2626",statusClosedText:"#b91c1c",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#9ca3af",statistikText:"#e5e7eb",fuelBenzinStart:"#E5E7EB",fuelBenzinEnd:"#9CA3AF",fuelE10Start:"#E5E7EB",fuelE10End:"#9CA3AF",fuelDieselStart:"#E5E7EB",fuelDieselEnd:"#9CA3AF",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#4B5563",controlBoxStroke:"#9CA3AF",controlBoxText:"#e5e7eb"},
        titanCore:{widgetBgTop:"#030712",widgetBgBottom:"#374151",headerTop:"#030712",headerBottom:"#374151",footerTop:"#374151",footerBottom:"#030712",borderGradStart:"rgba(255,255,255,0.1)",borderGradMid:"rgba(255,255,255,0.05)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#475569",lineVertical:"#475569",textDefault:"#f1f5f9",textName:"#f1f5f9",textStatus:"#f1f5f9",textTime:"#94a3b8",textFuel:"#cbd5e1",textPrice:"#ffffff",textControl:"#64748b",textStatistik:"#94a3b8",textOpenTitle:"#cbd5e1",textOpenTime:"#f1f5f9",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#475569",statistikText:"#94a3b8",fuelBenzinStart:"#374151",fuelBenzinEnd:"#030712",fuelE10Start:"#374151",fuelE10End:"#030712",fuelDieselStart:"#374151",fuelDieselEnd:"#030712",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#030712",controlBoxStroke:"#475569",controlBoxText:"#94a3b8"},
        graphiteGrid:{widgetBgTop:"#18181b",widgetBgBottom:"#09090b",headerTop:"#3f3f46",headerBottom:"#18181b",footerTop:"#18181b",footerBottom:"#09090b",borderGradStart:"rgba(255,255,255,0.1)",borderGradMid:"rgba(255,255,255,0.05)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#3f3f46",lineVertical:"#3f3f46",textDefault:"#f4f4f5",textName:"#ffffff",textStatus:"#ffffff",textTime:"#a1a1aa",textFuel:"#d4d4d8",textPrice:"#ffffff",textControl:"#71717a",textStatistik:"#a1a1aa",textOpenTitle:"#d4d4d8",textOpenTime:"#f4f4f5",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#3f3f46",statistikText:"#a1a1aa",fuelBenzinStart:"#3f3f46",fuelBenzinEnd:"#18181b",fuelE10Start:"#3f3f46",fuelE10End:"#18181b",fuelDieselStart:"#3f3f46",fuelDieselEnd:"#18181b",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#18181b",controlBoxStroke:"#3f3f46",controlBoxText:"#a1a1aa"}
    };
    
    function getTankstellenTheme() {
        const preset = getState(TANKSTELLEN_THEME_DP).val;
        return TANKSTELLEN_THEMES[preset] || TANKSTELLEN_THEMES.midnightBlue;
    }
    
    function createTankstellenSVG({stationName, stationState, distance, lastFetch, lastUpdate, openingHours, priceBenzin, priceE10, priceDiesel, logoUrl, trendBenzin, trendE10, trendDiesel, showStatistik = false, showBorder = true, minimalMode = false}) {
        const t = getTankstellenTheme();
        const uid = `ts_${Math.random().toString(36).slice(2,7)}`;
    
        function esc(str) {
            return String(str)
                .replace(/&/g, "&amp;")
                .replace(/</g, "&lt;")
                .replace(/>/g, "&gt;")
                .replace(/"/g, "&quot;");
        }
    
        const badgeH    = minimalMode ? 27 : 18;
        const badgeY1   = minimalMode ? 0  : 0;
        const badgeY2   = minimalMode ? 34 : 24;
        const badgeY3   = minimalMode ? 68 : 48;
        const priceFont = minimalMode ? 14 : 12;
        const fuelFont  = minimalMode ? 12 : 9.5;
    
        function trendIcon(type) {
            if (type === "steigend") {
                return `<text x="175" y="${minimalMode ? 17 : 12}" text-anchor="end" fill="${t.trendUp}">↗</text>`;
            }
            if (type === "fallend") {
                return `<text x="175" y="${minimalMode ? 17 : 12}" text-anchor="end" fill="${t.trendDown}">↘</text>`;
            }
            return `<path d="M167,${minimalMode ? 14 : 9} L174,${minimalMode ? 14 : 9} M172,${minimalMode ? 12 : 7} L174,${minimalMode ? 14 : 9} L172,${minimalMode ? 16 : 11}" stroke="${t.trendStable}" stroke-width="1.25" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`;
        }
    
        function formatNumber(value) {
            if (useDotInsteadOfComma) {
                return value.replace(",", ".");
            } else {
                return value.replace(".", ",");
            }
        }
    
        return `
        <svg viewBox="0 0 365 163" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet">
        <style>
            .txt { 
                font-family:'InterVariable',sans-serif!important;
                font-feature-settings:"tnum"!important;
                fill:${t.textDefault}!important;
            }
    
            .txt-name { font-size:15px!important;font-weight:600!important;fill:${t.textName}!important;font-variant: small-caps; }
            .txt-status { font-size:8px!important;font-weight:600!important;fill:${t.textStatus}!important; }
            .txt-time { font-size:8px!important;fill:${t.textTime}!important; }
            .txt-opening-title { font-size:9px!important;font-weight:700!important;fill:${t.textOpenTitle}!important; }
            .txt-opening-time { font-size:10px!important;fill:${t.textOpenTime}!important; }
            .txt-fuel { font-size:${fuelFont}px!important; font-weight:700!important; fill:${t.textFuel}!important; }
    
            .txt-price { 
                font-family:'Courier New',monospace!important;
                font-size:${priceFont}px!important;
                font-weight:700!important;
                fill:${t.textPrice}!important;
            }
    
            .txt-control {
                font-size:9px!important;
                font-weight:600!important;
                fill:${t.textControl}!important;
            }
    
            .txt-statistik {
                fill:${t.textStatistik}!important;
                font-size:8px!important;
                font-weight:600!important;
            }
    
            .txt-distance {
                font-size:12px!important;
                font-weight:600!important;
                fill:${t.textTime}!important;
            }
        </style>
    
        <defs>
            <linearGradient id="${uid}-widgetBg" x1="0" y1="0" x2="0" y2="1">
                <stop offset="0%" stop-color="${t.widgetBgTop}" stop-opacity="0.95"/>
                <stop offset="100%" stop-color="${t.widgetBgBottom}" stop-opacity="0.98"/>
            </linearGradient>
    
            <linearGradient id="${uid}-headerGrad" x1="0" y1="0" x2="0" y2="1">
                <stop offset="0%" stop-color="${t.headerTop}" stop-opacity="0.6"/>
                <stop offset="100%" stop-color="${t.headerBottom}" stop-opacity="0.95"/>
            </linearGradient>
    
            <linearGradient id="${uid}-footerGrad" x1="0" y1="0" x2="0" y2="1">
                <stop offset="0%" stop-color="${t.footerTop}" stop-opacity="0.45"/>
                <stop offset="100%" stop-color="${t.footerBottom}" stop-opacity="0.75"/>
            </linearGradient>
    
            <linearGradient id="${uid}-borderGrad" x1="0" y1="0" x2="1" y2="1">
                <stop offset="0%" stop-color="${t.borderGradStart}" stop-opacity="0.35"/>
                <stop offset="50%" stop-color="${t.borderGradMid}" stop-opacity="0.1"/>
                <stop offset="100%" stop-color="${t.borderGradEnd}" stop-opacity="0.2"/>
            </linearGradient>
    
            <linearGradient id="${uid}-bgBenzin" x1="0" y1="0" x2="1" y2="0">
                <stop offset="0%" stop-color="${t.fuelBenzinStart}"/>
                <stop offset="100%" stop-color="${t.fuelBenzinEnd}"/>
            </linearGradient>
    
            <linearGradient id="${uid}-bgE10" x1="0" y1="0" x2="1" y2="0">
                <stop offset="0%" stop-color="${t.fuelE10Start}"/>
                <stop offset="100%" stop-color="${t.fuelE10End}"/>
            </linearGradient>
    
            <linearGradient id="${uid}-bgDiesel" x1="0" y1="0" x2="1" y2="0">
                <stop offset="0%" stop-color="${t.fuelDieselStart}"/>
                <stop offset="100%" stop-color="${t.fuelDieselEnd}"/>
            </linearGradient>
        </defs>
    
        <rect x="1.5" y="1.5" width="362" height="160" fill="url(#${uid}-widgetBg)" stroke="${showBorder ? `url(#${uid}-borderGrad)` : `none`}" stroke-width="1.25"/>
        <path d="M2.5,2.5H362.5V28H2.5Z" fill="url(#${uid}-headerGrad)"/>
        <image href="${logoUrl}" x="5" y="5" width="18" height="18" preserveAspectRatio="xMidYMid slice"/>
        <text class="txt txt-name" x="32" y="19">${esc(stationName)}</text>
    
        <g id="geoSymbol" transform="translate(345,7)">
            <g transform="translate(0,0) scale(1.0)">
                <path d="M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10m0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6" fill="${t.textTime}"/>
            </g>
        </g>
    
        <g id="geoDistance" transform="translate(287,5)">
            <text class="txt txt-distance" x="55" y="14" text-anchor="end">${formatNumber(esc(distance))}</text>
        </g>
    
        <line x1="1.5" y1="28" x2="363.5" y2="28" stroke="${t.lineSeparator}" stroke-width="0.75"/>
    
        <g opacity="0.55" transform="translate(0,-2)">
            <g transform="translate(15,41)">
                <g stroke="#94A3B8" stroke-width="1" fill="none">
                    <path d="M0,0 A 4,4 0 1,1 4,4" />
                    <path d="M4,-2 L4,2 L0,2" />
                </g>
            </g>
    
            <text class="txt txt-time" x="27" y="44" style="font-size:10px!important">${esc(lastUpdate)}</text>
    
            <g transform="translate(206,37)">
                <g stroke="#94A3B8" stroke-width="1" fill="none">
                    <path d="M0,6 L0,0" />
                    <path d="M-3,3 L0,6 L3,3" />
                    <path d="M-5,7 L5,7" />
                </g>
            </g>
            <text class="txt txt-time" x="216" y="44" style="font-size:10px!important">${esc(lastFetch)}</text>
        </g>
    
        <line x1="135" y1="52" x2="135" y2="${minimalMode ? 152 : 133.5}" stroke="${t.lineVertical}" stroke-width="0.75"/>
    
        <g transform="translate(12,54)">
            <g transform="translate(15,0)">
                <rect x="0" y="0" width="80" height="16" rx="3" fill="${stationState.includes("geschlossen") ? t.statusClosedFill : t.statusOpenFill}" stroke="${stationState.includes("geschlossen") ? t.statusClosedStroke : t.statusOpenStroke}" stroke-width="0.75"/>
                <text class="txt txt-status" x="40" y="11" text-anchor="middle" style="letter-spacing:1px;fill:${stationState.includes("geschlossen") ? t.statusClosedText : t.statusOpenText}">${esc(stationState.toUpperCase())}</text>
            </g>
    
            ${openingHours.map((o,i)=>`
                <text class="txt txt-opening-time" x="10" y="${32+i*16}">${esc(o.text)}</text>
                <text class="txt txt-opening-time" x="70" y="${32+i*16}">${esc(o.hours)}</text>
            `).join("")}
        </g>
    
        <g transform="translate(157,54)">
            <g transform="translate(0,${badgeY1})">
                <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgBenzin)" stroke="${t.fuelBenzinBorder}" stroke-width="0.75"/>
                <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#318CFF"/>
                <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">Benzin</text>
                <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceBenzin.slice(0,-1)))}<tspan dy="-1">${esc(priceBenzin.slice(-1))}</tspan></text>
                ${trendIcon(trendBenzin)}
            </g>
    
            <g transform="translate(0,${badgeY2})">
                <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgE10)" stroke="${t.fuelE10Border}" stroke-width="0.75"/>
                <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#4BBF31"/>
                <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">E10</text>
                <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceE10.slice(0,-1)))}<tspan dy="-1">${esc(priceE10.slice(-1))}</tspan></text>
                ${trendIcon(trendE10)}
            </g>
    
            <g transform="translate(0,${badgeY3})">
                <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgDiesel)" stroke="${t.fuelDieselBorder}" stroke-width="0.75"/>
                <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#E33232"/>
                <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">Diesel</text>
                <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceDiesel.slice(0,-1)))}<tspan dy="-1">${esc(priceDiesel.slice(-1))}</tspan></text>
                ${trendIcon(trendDiesel)}
            </g>
        </g>
    
        ${minimalMode || !t.footerTop ? `` : `<path d="M1.5,133.5H363.5V161.5H1.5Z" fill="url(#${uid}-footerGrad)" stroke="${t.footerStroke || 'none'}" stroke-width="0.75"/>`}
    
        ${(!minimalMode && showStatistik) ? `
        <g transform="translate(285,140)">
            <rect x="0" y="0" width="70" height="16" rx="3" fill="${t.statistikFill}" stroke="${t.statistikStroke}" stroke-width="0.75"/>
            <text class="txt-statistik" x="35" y="11" text-anchor="middle">${esc("STATISTIK")}</text>
        </g>
        ` : ``}
    
        ${minimalMode ? `` : `
        <g transform="translate(15,140.5)">
            <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
            <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("NUR ABRUF")}</text>
        </g>
    
        <g transform="translate(100,140.5)">
            <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
            <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("FAVORIT")}</text>
        </g>
    
        <g transform="translate(185,140.5)">
            <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
            <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("AKTIV")}</text>
        </g>
        `}
        </svg>
    `;
    }
    
    async function TankRenderer() {
        const tasks = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false).map(async (s) => {
            const path = `${base}.${s.id}`;
    
            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
            });
    
            setStateIfChanged(`${path}.svg`, svg);
        });
        await Promise.allSettled(tasks);
    }
    
    on({ id: TANKSTELLEN_THEME_DP, change: "ne" }, obj => {
        TankRenderer();
    });
    

    Wenn alles richtig gemacht wurde, trudeln die Daten regelmäßig ein. Trend und Prognosen werden nicht sofort "brauchbare" Daten liefern. Es muss einfach etwas Zeit vertreichen. Ich habe bei mir alles in VIS1 visualisiert, sollte aber auch mit anderen Systemen funktionieren.

    Viel Spaß und gutes Gelingen mit diesem Skript.

    Ro75.

    Neuerungen Version 1.1.0 - 21.06.2026

    • Dynamische Generierung und automatische Aktualisierung von SVG-Cards pro Tankstelle bei Wertänderung. Der Datenpunkt lautet "svg" und kann in VIS 1 via "String (unescaped)" dargestellt werden.
      630b4af2-bd1f-47b9-9325-f9903d6d06e4-image.jpeg

    • Zahlreiche Theme zur Ausahl. Der Datenpunkt lautet "theme" im Ordner "config". Bei Änderung erfolgt die automatische Neugenerierung.

    • Hinweise zum Update in Post #43.

    Korrektur Version 1.1.1 - 22.06.2026

    • Theme "Transparent" korrigiert.
    • Hinweise zum Update in Post #47.

    SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

    NegaleinN 1 Antwort Letzte Antwort
    4
    • M Offline
      M Offline
      MartyBr
      schrieb am zuletzt editiert von
      #2

      Mit welchen Widget visualisierst du die Werte? Hast du ein Beispiel? Das Script sieht vielversprechend aus.

      Gruß
      Martin


      Intel NUCs mit Proxmox / Iobroker als VM unter Debian
      Raspeberry mit USB Leseköpfen für Smartmeter
      Homematic und Homematic IP

      Ro75R 1 Antwort Letzte Antwort
      0
      • M MartyBr

        Mit welchen Widget visualisierst du die Werte? Hast du ein Beispiel? Das Script sieht vielversprechend aus.

        Ro75R Online
        Ro75R Online
        Ro75
        schrieb am zuletzt editiert von
        #3

        @MartyBr die Basic-Widgets und ich nutze Json von Material-Design (vis-Materialdesign 0.5.94)

        Hier mal eine Karte (Esso):

        [{"tpl":"tplImage","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"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","refreshInterval":"0","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,"src":"/vis.0/tanken/esso.png","stretch":true},"style":{"left":"789px","top":"295px","width":"57px","height":"70px","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplFrame","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","title":"{0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.name}","title_color":"#ffffff","title_top":"2","title_left":"5","header_height":"23","header_color":"{alias.0.TK.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,"title_back":"transparent","name":"Rahmen","locked":false},"style":{"left":"779px","top":"274px","width":"361px","height":"165px","z-index":1,"border-width":"1px","border-style":"solid","border-color":"rgba(255, 255, 255, 0.2)","border-radius":"10px","opacity":"{0_userdata.0.HardwareInfo.DashBoard.Opacity}%","font-family":"RobotoCondensed-Regular","font-style":"normal","font-weight":"lighter","font-variant":"small-caps","font-size":"medium","text-shadow":"3px 3px 4px #000","box-shadow":"15px 18px 62px 0px rgba(0, 0, 0, 0.35)","background":"#202020","background-color":"#000000"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-Icon-Button-State-Multi","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":true,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","countOids":"1","vibrateOnMobilDevices":"50","delayInMs0":"0","delayInMs1":"0","image":"chart-areaspline","imageColor":"#ffffff","colorBgFalse":"{alias.0.Switche.Tankstellen.9}","colorPress":"{alias.0.Switche.Tankstellen.9}","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,"g_lock":false,"autoLockAfter":"10","lockIconTop":"45","lockIconLeft":"55","lockIconSize":"20","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.button.icon.lock_icon","lockIconBackground":"#mdwTheme:vis-materialdesign.0.colors.button.icon.lock_icon_background","lockBackgroundSizeFactor":"1","lockFilterGrayscale":"30","oid0":"0_userdata.0.tankerkoenig.Statistik_Switch","value0":"9","oid1":"0_userdata.0.tankerkoenig.Grafana","value1":"http://192.168.10.99:3000/d-solo/bfcb8097-7090-45f9-84a3-44d67b2faea1/tanken?orgId=1&refresh=15m&panelId=9","clickSoundVolume":"0.5","g_buttonOids_§2":false,"delayInMs2":"0","g_buttonOids_§3":false,"delayInMs3":"0","g_buttonOids_§4":false,"delayInMs4":"0"},"style":{"left":"1078px","top":"374px","z-index":"4","border-style":"solid","border-radius":"","border-width":"2px","width":"50px","height":"50px","box-shadow":"3px 3px 8px 1px rgba(255, 255, 255, 0.65)"},"widgetSet":"materialdesign"},{"tpl":"tplValueString","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.status","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_prepend":""},"style":{"left":"1065px","top":"279px","color":"rgba(255,255,255,0.8)","z-index":"7","width":"64px","height":"14px","text-align":"right","text-shadow":"3px 3px 4px #000","font-family":"RobotoCondensed-Regular","font-style":"normal","font-variant":"normal","font-weight":"lighter","font-size":"small","line-height":"1"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-Table","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.openingTimes","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,"countCols":"1","tableLayout":"card","showHeader":false,"roundBorder":true,"headerTextSize":"#mdwTheme:vis-materialdesign.0.fontSizes.table.header","headerFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.table.header","colorBackground":"transparent","colorHeaderRowBackground":"","colorHeaderRowText":"","colorRowBackground":"transparent","colorRowBackgroundHover":"transparent","colorRowText":"rgba(255,255,255,0.8)","borderColor":"transparent","dividers":"rgba(255,255,255,0.25)","showColumn0":"true","colType0":"text","textAlign0":"left","colTextSize0":"12","fontFamily0":"RobotoCondensed-Regular","showColumn1":"true","colType1":"text","textAlign1":"right","colTextSize1":"12","fontFamily1":"RobotoCondensed-Regular","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,"dataJson":"","showColumn3":false,"colType3":"text","textAlign3":"right","colTextSize3":"12","fontFamily3":"RobotoCondensed-Regular","showColumn4":"true","colType4":"text","textAlign4":"right","colTextSize4":"#mdwTheme:vis-materialdesign.0.fontSizes.table.row","fontFamily4":"#mdwTheme:vis-materialdesign.0.fonts.table.row","imageSize0":"","label0":" ","colNoWrap1":true,"columnWidth0":"40","colNoWrap0":true,"fixedHeader":true,"columnWidth1":"30","rowHeight":"19","padding_left0":"5","columnWidth3":"","headerRowHeight":"0","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","imageSize1":"","suffix3":" €","debug":false,"g_columnLayout_§2":false,"showColumn2":"true","colType2":"text","textAlign2":"center","colTextSize2":"#mdwTheme:vis-materialdesign.0.fontSizes.table.row","fontFamily2":"#mdwTheme:vis-materialdesign.0.fonts.table.row"},"style":{"left":"782px","top":"359px","width":"118px","height":"78px","z-index":"8","text-shadow":"3px 3px 4px #000","font-family":"RobotoCondensed-Regular","font-style":"normal","font-variant":"normal","font-weight":"lighter","font-size":""},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-Table","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.prices","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,"countCols":"2","tableLayout":"card","showHeader":false,"roundBorder":true,"headerTextSize":"#mdwTheme:vis-materialdesign.0.fontSizes.table.header","headerFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.table.header","colorBackground":"transparent","colorHeaderRowBackground":"","colorHeaderRowText":"","colorRowBackground":"transparent","colorRowBackgroundHover":"transparent","colorRowText":"rgba(255,255,255,0.8)","borderColor":"transparent","dividers":"rgba(255,255,255,0.25)","showColumn0":"true","colType0":"image","textAlign0":"left","colTextSize0":"12","fontFamily0":"RobotoCondensed-Regular","showColumn1":"true","colType1":"text","textAlign1":"left","colTextSize1":"15","fontFamily1":"RobotoCondensed-Regular","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,"dataJson":"","showColumn3":false,"colType3":"text","textAlign3":"right","colTextSize3":"12","fontFamily3":"RobotoCondensed-Regular","showColumn4":"true","colType4":"text","textAlign4":"right","colTextSize4":"#mdwTheme:vis-materialdesign.0.fontSizes.table.row","fontFamily4":"#mdwTheme:vis-materialdesign.0.fonts.table.row","imageSize0":"20","label0":" ","colNoWrap1":true,"columnWidth0":"35","colNoWrap0":true,"fixedHeader":true,"columnWidth1":"65","rowHeight":"32","padding_left0":"5","columnWidth3":"","headerRowHeight":"0","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","imageSize1":"","suffix3":" €","debug":false,"g_columnLayout_§2":true,"showColumn2":"true","colType2":"text","textAlign2":"right","colTextSize2":"15","fontFamily2":"RobotoCondensed-Regular"},"style":{"left":"902px","top":"338px","width":"165px","height":"105px","z-index":"8","text-shadow":"3px 3px 4px #000","font-family":"RobotoCondensed-Regular","font-style":"normal","font-variant":"normal","font-weight":"lighter","font-size":""},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.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":"RobotoCondensed-Regular","valueFontSize":"15","colorCheckBox":"rgba(31, 97, 196, 0.25)","colorCheckBoxBorder":"rgba(31, 97, 196, 0.25)","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":"inaktiv","labelTrue":"aktiv","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"},"style":{"left":"1062px","top":"321px","width":"76px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.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":"RobotoCondensed-Regular","valueFontSize":"14","colorCheckBox":"rgba(31, 97, 196, 0.25)","colorCheckBoxBorder":"rgba(31, 97, 196, 0.25)","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":"NUR Abruf","labelTrue":"NUR Abruf","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"},"style":{"left":"862px","top":"321px","width":"108px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.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":"RobotoCondensed-Regular","valueFontSize":"14","colorCheckBox":"rgba(31, 97, 196, 0.25)","colorCheckBoxBorder":"rgba(31, 97, 196, 0.25)","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":"Favorit","labelTrue":"Favorit","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"},"style":{"left":"972px","top":"321px","width":"88px","height":"20px","z-index":"10","text-shadow":"3px 3px 4px #000"},"widgetSet":"materialdesign"},{"tpl":"tplValueString","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.lastPriceUpdate","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_prepend":"Update: "},"style":{"left":"1007px","top":"301px","z-index":"6","font-family":"RobotoCondensed-Regular","text-shadow":"3px 3px 4px #000","width":"130px","height":"11px","font-style":"normal","font-variant":"normal","font-weight":"lighter","font-size":"11px","color":"rgba(255,255,255,0.8)"},"widgetSet":"basic"},{"tpl":"tplValueString","data":{"oid":"0_userdata.0.tankerkoenig.c21f9238-c5e6-4a5b-985e-89d406166b2d.lastChecked","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_prepend":"Abruf: "},"style":{"left":"862px","top":"301px","z-index":"6","font-family":"RobotoCondensed-Regular","text-shadow":"3px 3px 4px #000","width":"130px","height":"11px","font-style":"normal","font-variant":"normal","font-weight":"lighter","font-size":"11px","color":"rgba(255,255,255,0.8)"},"widgetSet":"basic"}]
        

        Ro75.

        SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

        1 Antwort Letzte Antwort
        0
        • Ro75R Online
          Ro75R Online
          Ro75
          schrieb am zuletzt editiert von
          #4

          Noch ein Hinweis. Sobald Daten zu den Stationen erstmalig abgerufen wurden, können Adressdaten (Name, Straße, Ort, Plz) nachträglich geändert werden, OHNE das diese Infos wieder überschrieben werden!

          Ro75.

          SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

          1 Antwort Letzte Antwort
          1
          • M Offline
            M Offline
            MartyBr
            schrieb am zuletzt editiert von
            #5

            Danke, ich importier das Widget und schaue es mir an.

            Gruß
            Martin


            Intel NUCs mit Proxmox / Iobroker als VM unter Debian
            Raspeberry mit USB Leseköpfen für Smartmeter
            Homematic und Homematic IP

            1 Antwort Letzte Antwort
            0
            • NashraN Offline
              NashraN Offline
              Nashra
              Most Active Forum Testing
              schrieb am zuletzt editiert von Nashra
              #6

              Moin @ro75 , klasse Skript, danke dafür.
              Könntest Du noch bitte die Bilder red, green und blue hochladen, danke
              Sorry übersehen tanken.zip

              Gruß Ralf
              Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

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

              1 Antwort Letzte Antwort
              0
              • Thomas MaulT Offline
                Thomas MaulT Offline
                Thomas Maul
                schrieb am zuletzt editiert von
                #7

                Super, danke! Ich probier's demnächst.

                Hinweis: im Bild ganz oben ist der genaue Standort verpixelt (vermutlich wg. Privatsphäre), im Code sind aber hoffentlich dann nicht Deine echten Geodaten ;-)

                Ro75R 1 Antwort Letzte Antwort
                0
                • Ro75R Ro75

                  Einleitung

                  Mir ist bewusst, dass es bereits den offiziellen ioBroker Tankerkönig Adapter (v3.4.0) gibt, der zuverlässig die aktuellen Spritpreise liefert. Mit meinem Extended-Skript möchte ich die Leistung des Adapters keinesfalls schmälern – im Gegenteil: Das Skript versteht sich als Ergänzung, die zusätzliche Funktionen wie Trends, Prognosen und Empfehlungen bereitstellt und die Daten für Visualisierungen und Automatisierungen im Smart Home noch aussagekräftiger macht. Das Skript setzt nicht auf die Daten des Adapters auf. Das Skript ist eine eigenständige Lösung.

                  tk_anonymized.png

                  Funktionelle Beschreibung
                  Das Skript bietet neben der Standard-Preisabfrage eine Vielzahl an Features:

                  Preisabfrage & Speicherung für Benzin, E10 und Diesel

                  Historie & Trendberechnung über 48h, 14 Tage und 90 Tage

                  24h-Prognose mit Richtungspfeilen und projiziertem Preis

                  Durchschnitts- & Differenzwerte aller offenen Stationen

                  Top-3 Ranking nach Preis → Favorit → Entfernung

                  Handlungsempfehlungen („JETZT TANKEN“, „ABWARTEN“, „NICHT TANKEN“)

                  Konfigurierbare Schwellenwerte für Preisvorteile und Trends

                  Unicode-Hochzahlen für typografisch saubere Preisdarstellung

                  Geodaten & Distanzberechnung: Entfernung zur eigenen Position wird berechnet und in die Logik einbezogen

                  Favoriten: Stationen können als Favorit markiert werden, was bei Gleichstand den Ausschlag gibt

                  Stationen aktivieren/deaktivieren: Jede Station lässt sich einzeln steuern, auch „nur Daten abrufen“ ohne Auswertung ist möglich

                  Öffnungszeiten: Offene/geschlossene Stationen werden berücksichtigt, inkl. Feiertagslogik und Overrides

                  Reiner Datenabruf: Für Nutzer, die nur Rohdaten wollen, lässt sich die Auswertung pro Station abschalten

                  Vergleich: Adapter vs. Extended-Skript

                  Merkmal Tankerkönig Adapter 3.4.0 Extended-Skript
                  Basisfunktion: Preise abrufen ✔️ ✔️
                  Stationen frei definierbar ✔️ ✔️
                  Historie ❌ ✔️ (48h, 14d, 90d)
                  Trendberechnung ❌ ✔️
                  24h-Prognose ❌ ✔️
                  Durchschnittspreise ❌ ✔️
                  Preis-Differenzen ❌ ✔️
                  Top-3 Ranking ❌ ✔️
                  Empfehlungen (JETZT/ NICHT TANKEN) ❌ ✔️
                  Konfigurierbare Schwellenwerte ❌ ✔️
                  Unicode-Hochzahlen für Preise ❌ ✔️
                  Visuelle JSON-Ausgaben für VIS ❌ ✔️
                  Geodaten / Distanzberechnung ❌ ✔️
                  Favoriten-Logik ❌ ✔️
                  Stationen aktivieren/deaktivieren ❌ ✔️
                  Reiner Datenabruf ohne Auswertung ❌ ✔️
                  Öffnungszeiten inkl. Feiertage ❌ ✔️
                  Fehler- und Info-Logging Basis Erweiterte Steuerung

                  Besonderheiten
                  Geodaten: Entfernung zur Tankstelle wird berechnet und in Rankings berücksichtigt.

                  Favoriten: Markierte Stationen haben Vorrang bei gleichen Preisen.

                  Stationen steuerbar: Jede Station kann einzeln aktiviert, deaktiviert oder auf „nur Daten“ gesetzt werden.

                  Öffnungszeiten: Berücksichtigung von Öffnungsstatus, Feiertagen und Overrides.

                  Reiner Datenabruf: Wer nur Rohdaten will, kann die Auswertung pro Station abschalten.

                  Visuelle JSON-Ausgaben: Alle Ergebnisse (Top-3, Durchschnitt, Empfehlungen) stehen als JSON für VIS oder andere Frontends bereit.

                  Praxisnähe: Handlungsempfehlungen und Trends sind direkt nutzbar für Automatisierungen.

                  Typografie: Preise mit Hochzahlen wirken sauberer und sind sofort unterscheidbar.

                  Manuelle Änderung der Stationsdaten: Nach dem ersten Datenabruf können die Stationsdaten manuell überschrieben, OHNE das diese beim Folgeabruf wieder überschieben werden. Das betrifft Name und Adressdaten.

                  Datenstruktur:

                  0_userdata.0.tankerkoenig
                  ├── <stationId>
                  │   ├── benzin (number, €)
                  │   ├── e10 (number, €)
                  │   ├── diesel (number, €)
                  │   ├── benzin_str (string)
                  │   ├── e10_str (string)
                  │   ├── diesel_str (string)
                  │   ├── name (string)
                  │   ├── brand (string)
                  │   ├── street (string)
                  │   ├── postCode (string)
                  │   ├── place (string)
                  │   ├── isOpen (boolean)
                  │   ├── isWholeDay (boolean)
                  │   ├── openingTimes (string JSON)
                  │   ├── overrides (string JSON)
                  │   ├── distance (number, km)
                  │   ├── lastPriceUpdate (string, Datum/Uhrzeit)
                  │   ├── lastChecked (string, Datum/Uhrzeit)
                  │   ├── prices (string JSON)
                  │   ├── image (string, Pfad)
                  │   ├── enabled (boolean)
                  │   ├── dataonly (boolean)
                  │   ├── status (string)
                  │   ├── favorite (boolean)
                  │   ├── svg (string)
                  │   └── aspects
                  │       ├── benzin
                  │       │   ├── trend_48h / trend_48h_icon
                  │       │   ├── trend_14d / trend_14d_icon
                  │       │   ├── trend_90d / trend_90d_icon
                  │       │   ├── trend_24h_proj / trend_24h_proj_icon
                  │       │   ├── trend_24h_proj_price (number, €)
                  │       │   ├── history (string JSON)
                  │       │   └── json (string JSON)
                  │       ├── e10 (analog zu benzin)
                  │       ├── diesel (analog zu benzin)
                  │       └── reset_history (boolean)
                  │
                  ├── cheapest
                  │   ├── benzin_price / benzin_price_str
                  │   ├── benzin_station / benzin_station_name / benzin_image
                  │   ├── benzin_top3_json
                  │   ├── e10_price / e10_price_str
                  │   ├── e10_station / e10_station_name / e10_image
                  │   ├── e10_top3_json
                  │   ├── diesel_price / diesel_price_str
                  │   ├── diesel_station / diesel_station_name / diesel_image
                  │   ├── diesel_top3_json
                  │   └── cheapest_json (alle zusammen)
                  │
                  ├── average
                  │   ├── benzin / benzin_str
                  │   ├── e10 / e10_str
                  │   ├── diesel / diesel_str
                  │   └── average_json
                  │
                  ├── difference
                  │   ├── benzin / e10 / diesel (Preisunterschiede)
                  │   └── prices (JSON mit billigster/teuerster Station)
                  │
                  ├── recommendation_json (Handlungsempfehlungen)
                  ├── all_stations_full_info (JSON)
                  ├── reset_all_trends (boolean)
                  │
                  └── config
                      ├── threshold_tanken (€/L unter Durchschnitt)
                      ├── threshold_nicht_tanken (€/L über Durchschnitt)
                      ├── trend_threshold_percent (% vom Durchschnitt)
                      ├── use_superscript (boolean)
                      ├── theme (string)
                      ├── show_trend_symbols (boolean)
                      ├── keep_last_price_if_closed (boolean)
                  
                  

                  Fazit
                  Der Adapter ist ideal für den schnellen Einstieg. Das Extended-Skript richtet sich an alle, die mehr Kontext, mehr Intelligenz und mehr Kontrolle wollen. Es macht die Tankerkönig-Daten nicht nur sichtbar, sondern wirklich nutzbar – für Visualisierungen, Automatisierungen und smarte Entscheidungen im Alltag.

                  Voraussetzungen

                  API‑Key: Den API‑Key bekommst du kostenlos auf der offiziellen Tankerkönig‑Seite.
                  Gehe auf tankerkoenig.de → oben rechts „API‑Key“ auswählen. Formular ausfüllen (Name, E‑Mail). Du erhältst per Mail deinen persönlichen Schlüssel.

                  Der Key ist notwendig, um die API nutzen zu können. Ohne ihn gibt es keine Datenabfragen. Einschränkungen: Die API ist für private Projekte gedacht, nicht für Massendatenabfragen. Empfohlen sind maximal 10 Tankstellen und ein Abfrageintervall von mindestens 5 Minuten. Das Skript ruft bei mir aller 10 Minuten (bitte keine glatten Minuten nehmen) 12 Stationen ab.

                  Tankstellen‑UUIDs: Jede Tankstelle hat eine eindeutige UUID (Universally Unique Identifier). Über die Tankerkönig‑Webseite: Dort kannst du nach Tankstellen suchen (PLZ oder Ort eingeben). Diese UUIDs trägst du dann im Skrip ein, um genau die gewünschten Stationen abzufragen.

                  NPM-Modul: Damit die API‑Abfragen zuverlässig funktionieren, muss im JavaScript‑Adapter ein zusätzliches npm‑Modul eingetragen werden, das die HTTP‑Requests mit einem gültigen User‑Agent ausführt. Hintergrund: Die Tankerkönig‑API erwartet, dass jede Anfrage einen User‑Agent‑Header mitliefert. Ohne diesen kann es zu Ablehnungen oder Fehlern kommen.

                  Vorgehen: Den JavaScript‑Adapter öffnen. Unter „Zusätzliche npm‑Module“ das Modul user-agents eintragen.
                  npm.png

                  Grafiken: Ich habe bereits einige Grafiken von Tankstellen und zusätzliche Grafiken für Auswertungen und Darstellung in VIS beigefügt. Es sind aber nicht alle Tankstellen dabei - da müsst ihr selber aktiv werden.
                  tanken.zip

                  HINWEIS: Wenn ihr das Skript testen wollt, bitte Adapter und Skript nicht zur selben Zeit laufen lassen! Es besteht die Gefahr den Fehler 503 zu bekommen, ihr kommt sonst in das Ratelimit! Es ist zwar möglich mehr als 10 Stationen einzutragen, allerdings sollte es nicht übertrieben werden. Je mehr Stationen um so größer das Abrufinterval! Bei mir getestet und ohne Probleme 12 Stationen, aller 10 Miinuten.

                  WAS IST ZU MACHEN?

                  1. API-Key besorgen
                  2. UUIDs der Stationen besorgen
                  3. Code einkopieren und anpassen
                  const apiKey = ""; // Tankerkoenig API-Schlüssel
                  const base = "0_userdata.0.tankerkoenig"; // kann auch so belassen werden
                  const image_base = "/vis.0/tanken/"; //hier wird der Standort für die Bilder eingetragen
                  const myLocation = { lat: 51.18869225498527, lon: 14.44717724792715 };   // hier eure Geodaten
                  const stations = [
                      { id: "51d4b70e-a095-1aa0-e100-80009459e03a", image: image_base+"jet.png" },
                      { id: "9bbf6e47-eafe-4072-a7b1-9bf7fee2ba44", image: image_base+"sb-tank.png" },
                      { id: "2c0a9194-7b4b-4590-bbae-8db8760598c4", image: image_base+"total.png" },
                      { id: "0cc33bda-3773-4b47-94d2-41142e9a97ad", image: image_base+"agip.png" },
                      { id: "0868c839-f0cd-4ceb-a53c-4a6de271b606", image: image_base+"marktkauf.png" },
                      { id: "53ad9d77-a259-40fc-b868-b79cb77086d8", image: image_base+"aral.png" },
                      { id: "1b008ee6-78ea-4485-ab1d-7212a393b471", image: image_base+"aral.png" },
                      { id: "4a92a231-3d68-4928-9155-5d3534583c57", image: image_base+"aral.png" },
                      { id: "c21f9238-c5e6-4a5b-985e-89d406166b2d", image: image_base+"esso.png" },
                      { id: "86f037d7-d8f8-4fad-9aac-f256857725f6", image: image_base+"sprint.png" },
                      { id: "28989f56-fe4c-4785-925d-cc0ee4e574e8", image: image_base+"greenline.png" },
                      { id: "005056ba-7cb6-1ed2-bceb-b72e2ef04d4a", image: image_base+"star.png" }
                  ]; // hier eure Stationen
                  

                  Hier jetzt der Code:

                  // === Tankerkoenig Extended-Script ===
                   
                  //Erst-Version 1.0.0 - 14.12.2025
                  //Version 1.1.1 - 22.06.2026
                  //Ersteller Ro75.
                   
                  //Voraussetzungen (Version 1.1.1 getestet mit)
                  //NodeJS: 22.x
                  //Javascript-Adapter: 9.0.18
                  //Admin-Adapter: 7.8.23
                  //JS-Controller: 7.2.2
                  
                  // === Einstellungen & Konfiguration ===
                  const apiKey     = '';          										// Tankerkönig API-Schlüssel
                  const base       = "0_userdata.0.tankerkoenig";                     	// Basis-Pfad für alle States
                  const image_base = "/vis.0/tanken/";       								// Pfad zu lokalen Bildern
                  const myLocation = { lat: 51.18869225498527, lon: 14.44717724792715 };  // Eigener Standort für Distanzberechnung
                  
                  const ENABLE_LOG = false;                                           // Allgemeine Logs ein/aus
                  const ENABLE_ERROR_LOG = true;                                      // Fehlerlogs ein/aus
                  
                  // === Tankstellenliste ===
                  const stations = [
                      { id: "51d4b70e-a095-1aa0-e100-80009459e03a", image: image_base+"jet.png" },
                      { id: "9bbf6e47-eafe-4072-a7b1-9bf7fee2ba44", image: image_base+"sb-tank.png" },
                      { id: "2c0a9194-7b4b-4590-bbae-8db8760598c4", image: image_base+"total.png" },
                      { id: "0868c839-f0cd-4ceb-a53c-4a6de271b606", image: image_base+"marktkauf.png" },
                      { id: "53ad9d77-a259-40fc-b868-b79cb77086d8", image: image_base+"aral.png" },
                      { id: "1b008ee6-78ea-4485-ab1d-7212a393b471", image: image_base+"aral.png" },
                      { id: "4a92a231-3d68-4928-9155-5d3534583c57", image: image_base+"aral.png" },
                      { id: "c21f9238-c5e6-4a5b-985e-89d406166b2d", image: image_base+"esso.png" },
                      { id: "86f037d7-d8f8-4fad-9aac-f256857725f6", image: image_base+"sprint.png" },
                      { id: "28989f56-fe4c-4785-925d-cc0ee4e574e8", image: image_base+"greenline.png" },
                      { id: "005056ba-7cb6-1ed2-bceb-b72e2ef04d4a", image: image_base+"star.png" }
                  ];
                  
                  // ********** AB HIER NICHTS MEHR ÄNDERN !!! **********//
                  const TANKSTELLEN_THEME_DP = `${base}.config.theme`;                
                  
                  const UserAgent = require('user-agents');
                  
                  async function smartCreateState(id, value, options = {}) {
                      if (existsState(id)) return;
                      await createState(id, value, options);
                  }
                  
                  function setIfEmpty(id, value) {
                      const current = getState(id)?.val;
                      if (!current || current === "") {
                          setStateIfChanged(id, value);
                      }
                  }
                  
                  function setStateIfChanged(id, value) {
                      const state = getState(id);
                      if (!state) return;
                  
                      const old = state.val;
                      const isObject = v => v !== null && typeof v === "object";
                  
                      if (isObject(value)) {
                          const newStr = JSON.stringify(value);
                          let oldStr = null;
                  
                          if (typeof old === "string") oldStr = old;
                          else if (isObject(old)) oldStr = JSON.stringify(old);
                  
                          if (newStr === oldStr) return;
                          return setState(id, newStr, true);
                      }
                  
                      if (old === value) return;
                      setState(id, value, true);
                  }
                  
                  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}`;
                  }
                  
                  function sleepMs(ms) {
                      return new Promise(resolve => setTimeout(resolve, ms));
                  }
                  
                  function logInfo(msg) {
                      if (ENABLE_LOG) log(`[Tankerkoenig] ${msg}`,"info");
                  }
                  
                  function logError(msg) {
                      if (ENABLE_ERROR_LOG) log(`[Tankerkoenig ERROR] ${msg}`,"error");
                  }
                  
                  function getDistance(lat1, lon1, lat2, lon2) {
                      const R = 6371;
                      const dLat = (lat2 - lat1) * Math.PI / 180;
                      const dLon = (lon2 - lon1) * Math.PI / 180;
                      const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
                      return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
                  }
                  
                  function formatOpeningEntries(list, WEEKDAY_MAP) {
                      return list.map(o => {
                          let rawText = (typeof o.text === "string" && o.text.trim() !== "") ? o.text : "keine Angabe";
                  
                          let text = rawText
                              .replace(/\btäglich ausser Sonn- und Feiertagen\b/gi, "Mo-Sa")
                              .replace(
                                  /\b(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag|Feiertag)\b/g,
                                  m => WEEKDAY_MAP[m] || m   // Fallback: wenn Map-Eintrag fehlt, Original behalten
                              );
                  
                          const hours =
                              (o.start && o.end)
                                  ? `${o.start.split(':')[0]}-${o.end.split(':')[0]}`
                                  : "";
                  
                          return { text, hours };
                      });
                  }
                  
                  async function initStates() {
                      stations.forEach((s) => {
                          const path = `${base}.${s.id}`;
                  
                          ["benzin","e10","diesel"].forEach(fuel => {
                              ["48h","14d","90d"].forEach(win => {
                                  smartCreateState(`${path}.aspects.${fuel}.trend_${win}`, "", { name: `Trend ${fuel} ${win}`, type: "string", read: true, write: true });
                                  smartCreateState(`${path}.aspects.${fuel}.trend_${win}_icon`, "", { name: `Trend Icon ${fuel} ${win}`, type: "string", read: true, write: true });
                              });
                  
                              smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj`, "", { name: `Trend ${fuel} 24h Prognose`, type: "string", read: true, write: true });
                              smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "", { name: `Trend Icon ${fuel} 24h Prognose`, type: "string", read: true, write: true });
                              smartCreateState(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0, { name: `Trend ${fuel} 24h prognostizierter Preis`, type: "number", read: true, write: true, unit: "€" });
                  
                              smartCreateState(`${path}.aspects.${fuel}.history`, "[]", { name: `Historie ${fuel}`, type: 'string', read: true, write: true }); //dient nur der Datenhaltung für Auswertung
                              smartCreateState(`${path}.aspects.${fuel}.json`, "[]", { name: `JSON ${fuel}`, type: 'string', read: true, write: true });
                          });
                  
                          smartCreateState(`${path}.image`, s.image, { name: 'Image', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.enabled`, true, { name: 'Aktiv', type: 'boolean', read: true, write: true });
                          smartCreateState(`${path}.dataonly`, false, { name: 'Nur Daten abrufen, nicht auswerten', type: 'boolean', read: true, write: true });
                          smartCreateState(`${path}.status`, '', { name: 'Status', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.benzin`, 0, { name: 'Benzin', type: 'number', read: true, write: true, unit: '€' });
                          smartCreateState(`${path}.e10`, 0, { name: 'E10', type: 'number', read: true, write: true, unit: '€' });
                          smartCreateState(`${path}.diesel`, 0, { name: 'Diesel', type: 'number', read: true, write: true, unit: '€' });
                          smartCreateState(`${path}.benzin_str`, '', { name: 'Benzin (String)', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.e10_str`, '', { name: 'E10 (String)', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.diesel_str`, '', { name: 'Diesel (String)', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.name`, '', { name: 'Name', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.brand`, '', { name: 'Marke', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.street`, '', { name: 'Straße', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.postCode`, '', { name: 'Postleitzahl', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.place`, '', { name: 'Ort', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.isOpen`, false, { name: 'Ist Offen', type: 'boolean', read: true, write: true });
                          smartCreateState(`${path}.isWholeDay`, false, { name: 'ganztägig', type: 'boolean', read: true, write: true });
                          smartCreateState(`${path}.openingTimes`, "[]", { name: 'Öffnungszeiten', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.overrides`, "[]", { name: 'geänderte Öffnungszeiten', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.distance`, 0, { name: 'Entfernung', type: 'number', read: true, write: true });
                          smartCreateState(`${path}.lastPriceUpdate`, formatDateTime(), { name: 'letzte Preisaktualisierung', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.lastChecked`, formatDateTime(), { name: 'letzter Abruf', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.prices`, "[]", { name: 'Preis JSON', type: 'string', read: true, write: true });
                          smartCreateState(`${path}.favorite`, false, { name: 'Favorit', type: 'boolean', read: true, write: true });
                          smartCreateState(`${path}.svg`, '', { name: 'SVG Image', type: 'string', read: true, write: true });
                  
                          smartCreateState(`${path}.aspects.reset_history`, false, { name: "History & Trends zurücksetzen", type: "boolean", read: true, write: true });
                      });
                      
                      ["benzin", "e10", "diesel"].forEach(fuel => {
                          smartCreateState(`${base}.cheapest.${fuel}_price`, 0, { type: 'number', read: true, write: true, unit: '€' });
                          smartCreateState(`${base}.cheapest.${fuel}_price_str`, "", { type: 'string', read: true, write: true });
                          smartCreateState(`${base}.cheapest.${fuel}_station`, '', { type: 'string', read: true, write: true });
                          smartCreateState(`${base}.cheapest.${fuel}_station_name`, '', { type: 'string', read: true, write: true });
                          smartCreateState(`${base}.cheapest.${fuel}_image`, '', { type: 'string', read: true, write: true });
                          smartCreateState(`${base}.cheapest.${fuel}_top3_json`, "[]", { name: `Top 3 ${fuel}`, type: 'string', read: true, write: true });
                  
                          smartCreateState(`${base}.average.${fuel}`, 0, { name: `${fuel}`, type: 'number', read: true, write: true, unit: '€' });
                          smartCreateState(`${base}.average.${fuel}_str`, "", { type: 'string', read: true, write: true });
                  
                          smartCreateState(`${base}.difference.${fuel}`, 0, { name: `${fuel}`, type: 'number', read: true, write: true, unit: '€' });
                      });
                  
                      smartCreateState(`${base}.recommendation.benzin_tanken_empfohlen`, false, { name: "Tanken empfohlen Benzin", type: "boolean", read: true, write: true });
                      smartCreateState(`${base}.recommendation.e10_tanken_empfohlen`, false, { name: "Tanken empfohlen E10", type: "boolean", read: true, write: true });
                      smartCreateState(`${base}.recommendation.diesel_tanken_empfohlen`, false, { name: "Tanken empfohlen Diesel", type: "boolean", read: true, write: true });
                  
                      smartCreateState(`${base}.difference.prices`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
                      smartCreateState(`${base}.cheapest.cheapest_json`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
                      smartCreateState(`${base}.average.average_json`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
                  
                      smartCreateState(`${base}.recommendation_json`, "[]", { name: 'Empfehlungen JSON', type: 'string', read: true, write: true });
                  
                      smartCreateState(`${base}.all_stations_full_info`, "[]", { name: 'JSON', type: 'string', read: true, write: true });
                      smartCreateState(`${base}.reset_all_trends`, false, { name: "ALLE Trends & Historien zurücksetzen", type: "boolean", read: true, write: true });
                  
                      smartCreateState(`${base}.config.threshold_tanken`, 0.05, { name: "Schwelle JETZT_TANKEN (€/L unter Durchschnitt)", type: "number", read: true, write: true, unit: "€" });
                      smartCreateState(`${base}.config.threshold_nicht_tanken`, -0.05, { name: "Schwelle NICHT_TANKEN (€/L über Durchschnitt)", type: "number", read: true, write: true, unit: "€" });
                      smartCreateState(`${base}.config.trend_threshold_percent`, 0.2, { name: "Trend-Schwelle (% vom Durchschnitt)", type: "number", read: true, write: true, unit: "%" });
                      smartCreateState(`${base}.config.use_superscript`, true, { name: "Preise mit Hochzahl darstellen", type: "boolean", read: true, write: true });
                      smartCreateState(`${base}.config.show_trend_symbols`, false, { name: "Trend-/Forecast-Symbole im JSON anzeigen", type: "boolean", read: true, write: true });
                      smartCreateState(`${base}.config.keep_last_price_if_closed`, true, { name: "Letzten Preis bei geschlossenen Stationen behalten", type: "boolean", read: true, write: true });
                  
                      smartCreateState(TANKSTELLEN_THEME_DP, "midnightBlue", {
                          type: "mixed",
                          read: true,
                          write: true,
                          name: "Tankstellen Theme",
                          states: {
                              "darkNeon": "Dark Neon",
                              "flatModern": "Flat Modern",
                              "floatingGlass": "Floating Glass",
                              "graphiteGrid": "Graphite Grid",
                              "liquidChrome": "Liquid Chrome",
                              "materialDesign": "Material Design",
                              "midnightBlue": "Midnight Blue",
                              "midnightPanel": "Midnight Panel",
                              "neonMesh": "Neon Mesh",
                              "nightHorizon": "Night Horizon",
                              "obsidianFluid": "Obsidian Fluid",
                              "obsidianGold": "Obsidian Gold",
                              "silverChrome": "Silver Chrome",
                              "spotlightDark": "Spotlight Dark",
                              "titanCore": "Titan Core",
                              "transparent": "Transparent"
                          }
                      });
                  
                      logInfo("States initialisiert.");
                  }
                  
                  function httpGetAsync(url, options) {
                      return new Promise((resolve, reject) => {
                          httpGet(url, options, (error, response) => {
                              if (error) reject(error);
                              else resolve(response);
                          });
                      });
                  }
                  
                  function calculateAveragePrices() {
                      const fuels = ["benzin", "e10", "diesel"];
                      const averages = {};
                  
                      fuels.forEach(fuel => {
                          let sum = 0;
                          let count = 0;
                  
                          stations
                              .filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.dataonly`)?.val !== true)
                              .forEach(s => {
                                  const path = `${base}.${s.id}`;
                                  const isOpen = getState(`${path}.isOpen`)?.val;
                                  const price = getState(`${path}.${fuel}`)?.val;
                  
                                  if (isOpen && typeof price === "number" && price > 0) {
                                      sum += price;
                                      count++;
                                  }
                              });
                  
                          averages[fuel] = count > 0 ? parseFloat((sum / count).toFixed(3)) : 0;
                      });
                  
                      fuels.forEach(fuel => {
                          setStateIfChanged(`${base}.average.${fuel}`, averages[fuel]);
                          setStateIfChanged(`${base}.average.${fuel}_str`, formatPriceUnicode(averages[fuel]));
                      });
                      logInfo("Durchschnittspreise aktualisiert.");
                  }
                  
                  function calculateFutureTrend(history, futureHours = 24) {
                      const data = history.filter(h => typeof h.price === "number").sort((a,b) => a.ts - b.ts);
                      if (data.length < 2) return { text: "kein Trend", icon: TREND_ICONS.none, projectedPrice: null };
                  
                      const first = data[0];
                      const last  = data[data.length - 1];
                  
                      const hoursDiff = (last.ts - first.ts) / (1000 * 3600); 
                      if (hoursDiff === 0) return { text: "stabil", icon: TREND_ICONS.flat, projectedPrice: last.price };
                  
                      const ratePerHour = (last.price - first.price) / hoursDiff;
                      const projectedPrice = last.price + ratePerHour * futureHours;
                  
                      const avg = data.reduce((sum, d) => sum + d.price, 0) / data.length;
                      const TH = avg * 0.002;
                  
                      const diff = projectedPrice - last.price;
                      if (diff > TH) return { text: "steigend", icon: TREND_ICONS.up, projectedPrice };
                      if (diff < -TH) return { text: "fallend", icon: TREND_ICONS.down, projectedPrice };
                      return { text: "stabil", icon: TREND_ICONS.flat, projectedPrice };
                  }
                  
                  function updateAspectsJSON(stationId) {
                      const path = `${base}.${stationId}`;
                      ["benzin","e10","diesel"].forEach(fuel => {
                          const trends = {
                              trend_48h: getState(`${path}.aspects.${fuel}.trend_48h`)?.val || "",
                              trend_14d: getState(`${path}.aspects.${fuel}.trend_14d`)?.val || "",
                              trend_90d: getState(`${path}.aspects.${fuel}.trend_90d`)?.val || "",
                              trend_24h_proj: getState(`${path}.aspects.${fuel}.trend_24h_proj`)?.val || "",
                              trend_24h_proj_price: getState(`${path}.aspects.${fuel}.trend_24h_proj_price`)?.val || 0,
                              trend_48h_icon: getState(`${path}.aspects.${fuel}.trend_48h_icon`)?.val || "",
                              trend_14d_icon: getState(`${path}.aspects.${fuel}.trend_14d_icon`)?.val || "",
                              trend_90d_icon: getState(`${path}.aspects.${fuel}.trend_90d_icon`)?.val || "",
                              trend_24h_proj_icon: getState(`${path}.aspects.${fuel}.trend_24h_proj_icon`)?.val || ""
                          };
                          setStateIfChanged(`${path}.aspects.${fuel}.json`, JSON.stringify(trends));
                      });
                  }
                  
                  const TREND_ICONS = { up: "↑", down: "↓", flat: "→", none: "–" };
                  const TREND_SYMBOLS = { up: "↑", down: "↓", flat: "→" };
                  const FORECAST_SYMBOLS = { up: "↗", down: "↘", flat: "→" };
                  const SUPERSCRIPT = ['⁰','¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹'];
                  
                  function formatPriceUnicode(price) {
                      if (price === null || price === undefined || isNaN(price)) return null;
                  
                      const p = Number(price).toFixed(3);
                      const main = p.slice(0, -1).replace('.', ',');
                      const lastDigit = p.slice(-1);
                      const useSuperscript = getState(`${base}.config.use_superscript`)?.val ?? true;
                  
                      if (useSuperscript) {
                          return main + SUPERSCRIPT[Number(lastDigit)];
                      } else {
                          return (Number(price).toFixed(2)).replace('.', ',');
                      }
                  }
                  
                  function calculateDifferencesStates() {
                      const fuels = [
                          { key: "benzin", label: "Benzin" },
                          { key: "e10", label: "E10" },
                          { key: "diesel", label: "Diesel" }
                      ];
                  
                      const openStations = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.isOpen`)?.val === true && getState(`${base}.${s.id}.dataonly`)?.val !== true);
                  
                      const priceDiffArray = fuels.map(fuel => {
                          const prices = openStations
                              .map(s => {
                                  const price = getState(`${base}.${s.id}.${fuel.key}`)?.val;
                                  return (typeof price === "number" && price > 0)
                                      ? {
                                          name: getState(`${base}.${s.id}.name`)?.val || "",
                                          price,
                                          image: getState(`${base}.${s.id}.image`)?.val || ""
                                      }
                                      : null;
                              })
                              .filter(Boolean);
                  
                          let diff = 0;
                          let cheapestName = "---";
                          let teuersteName = "---";
                          let billigste_image = "";
                          let teuerste_image = "";
                  
                          if (prices.length > 0) {
                              const cheapest = prices.reduce((a, b) => a.price < b.price ? a : b);
                              const expensive = prices.reduce((a, b) => a.price > b.price ? a : b);
                  
                              diff = parseFloat((expensive.price - cheapest.price).toFixed(2));
                  
                              billigste_image = cheapest.image;
                              teuerste_image = expensive.image;
                  
                              cheapestName = cheapest.name + " (" + cheapest.price.toFixed(2) + " €)";
                              teuersteName = expensive.name + " (" + expensive.price.toFixed(2) + " €)";
                          }
                          setStateIfChanged(`${base}.difference.${fuel.key}`, diff);
                  
                          return {text: fuel.label, billigste_image, billigste: cheapestName, teuerste_image, teuerste: teuersteName, differenz: diff.toFixed(2)};
                      });
                  
                      setStateIfChanged(`${base}.difference.prices`, JSON.stringify(priceDiffArray));
                      logInfo("Differenzen und Preise als JSON unter `${base}.difference` aktualisiert.");
                  }
                  
                  function saveCheapestJSON() {
                      const fuels = [
                          { key: "benzin", label: "Benzin", img: image_base+"blue.png" },
                          { key: "e10", label: "E10", img: image_base+"green.png" },
                          { key: "diesel", label: "Diesel", img: image_base+"red.png" }
                      ];
                  
                      const json = fuels.map(fuel => {
                          const stationId = getState(`${base}.cheapest.${fuel.key}_station`)?.val;
                          if (!stationId) {
                              return {col_1: fuel.img, col_2: fuel.label, col_3: "", col_4: "---", col_5: "---"};
                          }
                  
                          const img = getState(`${base}.${stationId}.image`)?.val || "";
                          const isFav = getState(`${base}.${stationId}.favorite`)?.val === true;
                          const brand = (getState(`${base}.${stationId}.name`)?.val || "") + (isFav ? " ★" : "");
                          const price = getState(`${base}.${stationId}.${fuel.key}`)?.val ?? null;
                  
                          return {col_1: fuel.img, col_2: fuel.label, col_3: img, col_4: brand.trim(), col_5: formatPriceUnicode(price)};
                      });
                      setStateIfChanged(`${base}.cheapest.cheapest_json`, JSON.stringify(json));
                  }
                  
                  function saveTop3JSON() {
                      const fuels = ["benzin","e10","diesel"];
                  
                      fuels.forEach(fuel => {
                          const stationsWithPrices = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false && getState(`${base}.${s.id}.isOpen`)?.val === true && getState(`${base}.${s.id}.dataonly`)?.val !== true)
                              .map(s => {
                                  const isFav = getState(`${base}.${s.id}.favorite`)?.val === true;
                                  return {
                                      name: getState(`${base}.${s.id}.name`)?.val || "",
                                      favorite: isFav,
                                      price: getState(`${base}.${s.id}.${fuel}`)?.val || 0,
                                      image: getState(`${base}.${s.id}.image`)?.val || "",
                                      distance: getState(`${base}.${s.id}.distance`)?.val || 0
                                  };
                              })
                              .filter(s => typeof s.price === "number" && s.price > 0);
                  
                          stationsWithPrices.sort((a, b) => {
                              if (a.price !== b.price) return a.price - b.price;
                              if (a.favorite !== b.favorite) return a.favorite ? -1 : 1;
                              return a.distance - b.distance;
                          });
                  
                          const top3 = stationsWithPrices.slice(0,3).map((s, index) => ({
                              rank: index + 1,
                              image: s.image,
                              name: s.name + (s.favorite ? " ★" : ""),
                              price: formatPriceUnicode(s.price),  // <-- hier Hochzahlen verwenden
                              distance: parseFloat(s.distance.toFixed(2))
                          }));
                          setStateIfChanged(`${base}.cheapest.${fuel}_top3_json`, JSON.stringify(top3));
                      });
                  }
                  
                  function saveAverageJSON() {
                      const fuels = ["benzin","e10","diesel"];
                      const json = fuels.map(fuel => {
                          const avg = getState(`${base}.average.${fuel}`)?.val ?? 0;
                          return {fuel: fuel, price: formatPriceUnicode(avg)};
                      });
                      setStateIfChanged(`${base}.average.average_json`, JSON.stringify(json));
                  }
                  
                  function appendHistory(path, fuel, price) {
                      if (typeof price !== "number" || price <= 0) return;
                  
                      const now = Date.now();
                      const cutoff90d = now - 90 * 24 * 3600 * 1000;  // 90 Tage
                      const cutoff48h = now - 48 * 3600 * 1000;       // 48 Stunden
                  
                      const historyStr = getState(`${path}.aspects.${fuel}.history`)?.val || "[]";
                      let history = [];
                      try { history = JSON.parse(historyStr); } catch {}
                  
                      history.push({ ts: now, price });
                      history = history.filter(h => h.ts >= cutoff90d);
                  
                      const shortTerm = history.filter(h => h.ts >= cutoff48h);
                      const longTerm = history
                          .filter(h => h.ts < cutoff48h)
                          .reduce((acc, cur) => {
                              const hour = Math.floor(cur.ts / (3600*1000)); // Stunde als Bucket
                              if (!acc[hour]) acc[hour] = { ts: cur.ts, price: cur.price, count: 1 };
                              else {
                                  acc[hour].price = (acc[hour].price * acc[hour].count + cur.price) / (acc[hour].count + 1);
                                  acc[hour].count++;
                                  acc[hour].ts = cur.ts; // letzte Zeit der Stunde
                              }
                              return acc;
                          }, {});
                  
                      const longTermArray = Object.values(longTerm).map(h => ({ ts: h.ts, price: parseFloat(h.price.toFixed(3)) }));
                      const newHistory = [...longTermArray, ...shortTerm];
                      setStateIfChanged(`${path}.aspects.${fuel}.history`, JSON.stringify(newHistory));
                  }
                  
                  function calculateTrend(history, hours) {
                      const cutoff = Date.now() - (hours * 3600 * 1000);
                      const data = history.filter(h => h.ts >= cutoff).sort((a,b) => a.ts - b.ts);
                  
                      if (data.length < 2) return { text: "kein Trend", icon: TREND_ICONS.none };
                  
                      const first = data[0].price;
                      const last  = data[data.length - 1].price;
                      const diff  = last - first;
                  
                      const avg = data.reduce((sum,d) => sum+d.price,0) / data.length;
                      const thresholdPercent = getState(`${base}.config.trend_threshold_percent`)?.val ?? 0.2;
                      const TH = avg * (thresholdPercent / 100);
                  
                      if (diff > TH) return { text: "steigend", icon: TREND_ICONS.up };
                      if (diff < -TH) return { text: "fallend", icon: TREND_ICONS.down };
                      return { text: "stabil", icon: TREND_ICONS.flat };
                  }
                  
                  async function updateRecommendations() {
                      const fuels = [
                          { key: "benzin", label: "BENZIN" },
                          { key: "e10",    label: "E10" },
                          { key: "diesel", label: "DIESEL" }
                      ];
                  
                      const recommendations = [];
                      const thresholdTanken = getState(`${base}.config.threshold_tanken`)?.val ?? 0.05;
                      const thresholdNichtTanken = getState(`${base}.config.threshold_nicht_tanken`)?.val ?? -0.05;
                  
                      fuels.forEach(fuel => {
                          const avg       = getState(`${base}.average.${fuel.key}`)?.val;
                          const cheapest  = getState(`${base}.cheapest.${fuel.key}_price`)?.val;
                          const stationId = getState(`${base}.cheapest.${fuel.key}_station`)?.val;
                          const stationNm = getState(`${base}.cheapest.${fuel.key}_station_name`)?.val;
                  
                          if (typeof avg !== "number" || typeof cheapest !== "number" || !stationId) {
                              return;
                          }
                  
                          const diff = parseFloat((avg - cheapest).toFixed(2));
                  
                          let action = "ABWARTEN";
                          let reason = "Kein Preisvorteil";
                  
                          if (diff >= thresholdTanken) {
                              action = "JETZT_TANKEN";
                              reason = `${diff.toFixed(2).replace('.', ',')} € unter Durchschnitt`;
                          } else if (diff <= thresholdNichtTanken) {
                              action = "NICHT_TANKEN";
                              reason = `${Math.abs(diff).toFixed(2).replace('.', ',')} € über Durchschnitt`;
                          }
                  
                          const tanken_empfohlen = (action === "JETZT_TANKEN");
                  
                          setStateIfChanged(`${base}.recommendation.${fuel.key}_tanken_empfohlen`, tanken_empfohlen);
                  
                          const trend48h = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_48h_icon`)?.val || "–";
                          const trend14d = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_14d_icon`)?.val || "–";
                          const trend90d = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_90d_icon`)?.val || "–";
                  
                          const projDir   = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_24h_proj_icon`)?.val || "–";
                          const projPrice = getState(`${base}.${stationId}.aspects.${fuel.key}.trend_24h_proj_price`)?.val || 0;
                  
                          recommendations.push({
                              fuel: fuel.label,
                              action,
                              reason,
                              trend_48h: trend48h,
                              trend_14d: trend14d,
                              trend_90d: trend90d,
                              forecast_dir: projDir,
                              forecast_price: projPrice > 0 ? parseFloat(projPrice.toFixed(2)) : null,
                              best_station_name: stationNm || "",
                              best_station_price: formatPriceUnicode(cheapest)
                          });
                      });
                      setStateIfChanged(`${base}.recommendation_json`, JSON.stringify(recommendations));
                  }
                  
                  async function loadData() {
                      logInfo("Starte Datenabfrage ...");
                  
                      function considerCheapest(cheapest, fuelKey, newPrice, dist, stationId, image, isFav) {
                          if (typeof newPrice !== 'number') return;
                  
                          const current = cheapest[fuelKey];
                          if (!current) {
                              cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                              return;
                          }
                          if (newPrice < current.price) {
                              cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                              return;
                          }
                          if (newPrice === current.price) {
                              const currentFav = !!current.favorite;
                              if (isFav && !currentFav) {
                                  cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                                  return;
                              }
                              if ((isFav === currentFav) && dist < current.distance) {
                                  cheapest[fuelKey] = { price: newPrice, station: stationId, image: image, distance: dist, favorite: !!isFav };
                                  return;
                              }
                          }
                      }
                  
                      const listCleaner = (entry = '') =>
                          entry
                              .toLowerCase()
                              .split(' ')
                              .map(word =>
                                  word.replace(/oe/g, 'ö')
                                      .replace(/ae/g, 'ä')
                                      .replace(/ue/g, 'ü')
                                      .replace(/ss/g, 'ß')
                              )
                              .map(word => word.charAt(0).toUpperCase() + word.slice(1))
                              .join(' ');
                  
                      const cheapest = { benzin: null, e10: null, diesel: null };
                  
                      const tasks = stations
                          .filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false)
                          .map(async (s) => {
                  
                              const url = `https://creativecommons.tankerkoenig.de/json/detail.php?id=${s.id}&apikey=${apiKey}`;
                              try {
                                  const dynamicUA = new UserAgent().toString();
                  
                                  logInfo(`Abruf für Station ${s.id}`);
                  
                                  const response = await httpGetAsync(url, {timeout: 15000, headers: { "User-Agent": dynamicUA }});
                  
                                  if (!response || response.statusCode !== 200) {
                                      logError(`HTTP Error Station ${s.id}: ${response?.statusCode}`);
                                      return;
                                  }
                  
                                  const body = typeof response.data === "string" ? JSON.parse(response.data) : response.data;
                                  if (!body || !body.station) return;
                  
                                  const p = body.station;
                                  const path = `${base}.${s.id}`;
                  
                                  setStateIfChanged(`${path}.status`, p.isOpen ? "geöffnet" : "geschlossen");
                                  setStateIfChanged(`${path}.image`, s.image);
                  
                                  setIfEmpty(`${path}.name`, p.name);
                                  setIfEmpty(`${path}.brand`, p.brand);
                  
                                  const streetWithHouse = p.houseNumber && p.houseNumber.trim() !== "" ? `${p.street} ${p.houseNumber}` : p.street;
                  
                                  setIfEmpty(`${path}.street`, listCleaner(streetWithHouse));
                                  setIfEmpty(`${path}.place`, listCleaner(p.place));
                                  setIfEmpty(`${path}.postCode`, p.postCode ? p.postCode.toString().padStart(5, "0") : "");
                  
                                  setStateIfChanged(`${path}.isOpen`, p.isOpen);
                                  setStateIfChanged(`${path}.isWholeDay`, p.wholeDay);
                  
                                  const WEEKDAY_MAP = { "Montag": "Mo", "Dienstag": "Di", "Mittwoch": "Mi", "Donnerstag": "Do", "Freitag": "Fr", "Samstag": "Sa", "Sonntag": "So", "Feiertag": "Ft" };
                  
                                  let rawOpeningTimes;
                                  if (p.wholeDay) {
                                      rawOpeningTimes = [{ text: "Mo-So", start: "00:00:00", end: "24:00:00" }];
                                  } else {
                                      if (Array.isArray(p.openingTimes)) {
                                          rawOpeningTimes = p.openingTimes;
                                      } else if (typeof p.openingTimes === "string") {
                                          try {
                                              rawOpeningTimes = JSON.parse(p.openingTimes);
                                          } catch {
                                              rawOpeningTimes = [];
                                          }
                                      } else {
                                          rawOpeningTimes = [];
                                      }
                                  }
                  
                                  const formattedOpening = formatOpeningEntries(rawOpeningTimes, WEEKDAY_MAP);
                                  setStateIfChanged(`${path}.openingTimes`, JSON.stringify(formattedOpening));
                  
                                  let rawOverrides;
                                  if (Array.isArray(p.overrides)) {
                                      rawOverrides = p.overrides;
                                  } else if (typeof p.overrides === "string") {
                                      try { rawOverrides = JSON.parse(p.overrides); } catch { rawOverrides = []; }
                                  } else {
                                      rawOverrides = [];
                                  }
                  
                                  const formattedOverrides = formatOpeningEntries(rawOverrides, WEEKDAY_MAP);
                                  setStateIfChanged(`${path}.overrides`, JSON.stringify(formattedOverrides));
                  
                                  if (p.lat && p.lng) {
                                      const distance = getDistance(myLocation.lat, myLocation.lon, p.lat, p.lng);
                                      setStateIfChanged(`${path}.distance`, parseFloat(distance.toFixed(2)));
                                  }
                  
                                  let priceChanged = false;
                  
                                  const fuels = [
                                      { api: "e5", dp: "benzin" },
                                      { api: "e10", dp: "e10" },
                                      { api: "diesel", dp: "diesel" }
                                  ];
                  
                                  const keepLastPriceIfClosed = getState(`${base}.config.keep_last_price_if_closed`)?.val ?? true;
                                  if (p.isOpen) {
                                      if (getState(`${path}.benzin`)?.val !== p.e5) {
                                          appendHistory(path, "benzin", p.e5);
                                      }
                                      if (getState(`${path}.e10`)?.val !== p.e10) {
                                          appendHistory(path, "e10", p.e10);
                                      }
                                      if (getState(`${path}.diesel`)?.val !== p.diesel) {
                                          appendHistory(path, "diesel", p.diesel);
                                      }
                  
                                      fuels.forEach(f => {
                                          if (typeof p[f.api] === "number") {
                                              const oldVal = getState(`${path}.${f.dp}`)?.val;
                                              if (oldVal !== p[f.api]) priceChanged = true;
                                              setStateIfChanged(`${path}.${f.dp}`, p[f.api]);
                                          }
                                      });
                  
                                      if (priceChanged) {
                                          setStateIfChanged(`${path}.lastPriceUpdate`, formatDateTime());
                                      }
                  
                                      setStateIfChanged(`${path}.benzin_str`, formatPriceUnicode(getState(`${path}.benzin`)?.val));
                                      setStateIfChanged(`${path}.e10_str`, formatPriceUnicode(getState(`${path}.e10`)?.val));
                                      setStateIfChanged(`${path}.diesel_str`, formatPriceUnicode(getState(`${path}.diesel`)?.val));
                  
                                  } else if (!keepLastPriceIfClosed) {
                                      setStateIfChanged(`${path}.benzin`, 0.0);
                                      setStateIfChanged(`${path}.e10`, 0.0);
                                      setStateIfChanged(`${path}.diesel`, 0.0);
                                      setStateIfChanged(`${path}.benzin_str`, "");
                                      setStateIfChanged(`${path}.e10_str`, "");
                                      setStateIfChanged(`${path}.diesel_str`, "");
                                  }
                  
                                  ["benzin","e10","diesel"].forEach(fuel => {
                                      const historyStr = getState(`${path}.aspects.${fuel}.history`)?.val || "[]";
                                      let history = [];
                                      try { history = JSON.parse(historyStr); } catch {}
                  
                                  const trends = {
                                      "48h": calculateTrend(history, 48),
                                      "14d": calculateTrend(history, 24 * 14),
                                      "90d": calculateTrend(history, 24 * 90)
                                  };
                  
                                  Object.entries(trends).forEach(([win, result]) => {
                                      setStateIfChanged(`${path}.aspects.${fuel}.trend_${win}`, result.text);
                                      setStateIfChanged(`${path}.aspects.${fuel}.trend_${win}_icon`, result.icon);
                                  });
                  
                                  const futureTrend = calculateFutureTrend(history, 24);
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, futureTrend.text);
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, futureTrend.icon);
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, futureTrend.projectedPrice ? parseFloat(futureTrend.projectedPrice.toFixed(3)) : 0);                });
                  
                                  function buildPriceEntry(fuelKey, label, image) {
                                      let priceStr = formatPriceUnicode(getState(`${path}.${fuelKey}`)?.val ?? null) || "";
                  
                                      const showTrendSymbols = getState(`${base}.config.show_trend_symbols`)?.val ?? false;
                                      if (showTrendSymbols && priceStr) {
                                          const trendIcon = getState(`${path}.aspects.${fuelKey}.trend_48h_icon`)?.val || TREND_SYMBOLS.flat;
                                          const forecastIcon = getState(`${path}.aspects.${fuelKey}.trend_24h_proj_icon`)?.val || FORECAST_SYMBOLS.flat;
                                          priceStr = `${priceStr} ${trendIcon} ${forecastIcon}`;
                                      }
                  
                                      return { image, text: label, price: priceStr };
                                  }
                  
                                  const pricesJSON = [
                                      buildPriceEntry("benzin", "Benzin", image_base + "blue.png"),
                                      buildPriceEntry("e10",    "E10",    image_base + "green.png"),
                                      buildPriceEntry("diesel", "Diesel", image_base + "red.png")
                                  ];
                  
                                  setStateIfChanged(`${path}.prices`, JSON.stringify(pricesJSON));
                                  setStateIfChanged(`${path}.lastChecked`, formatDateTime());
                  
                                  const dist = getState(`${path}.distance`)?.val || 0;
                                  const isFav = getState(`${path}.favorite`)?.val === true;
                                  if (p.isOpen && getState(`${base}.${s.id}.dataonly`)?.val !== true) {
                                      considerCheapest(cheapest, 'benzin', p.e5, dist, s.id, s.image, isFav);
                                      considerCheapest(cheapest, 'e10', p.e10, dist, s.id, s.image, isFav);
                                      considerCheapest(cheapest, 'diesel', p.diesel, dist, s.id, s.image, isFav);
                                  }
                                  updateAspectsJSON(s.id);
                              } catch (error) {
                                  logError(`Fehler bei Station ${s.id}: ${error}`);
                              }
                          });
                  
                      await Promise.allSettled(tasks);
                      logInfo("Auswertung abgeschlossen.");
                  
                      ["benzin", "e10", "diesel"].forEach(fuel => {
                          if (cheapest[fuel]) {
                              const stationId = cheapest[fuel].station;
                              const stationName = getState(`${base}.${stationId}.name`)?.val || "";
                  
                              setStateIfChanged(`${base}.cheapest.${fuel}_price`, cheapest[fuel].price);
                              setStateIfChanged(`${base}.cheapest.${fuel}_price_str`, formatPriceUnicode(cheapest[fuel].price));
                              setStateIfChanged(`${base}.cheapest.${fuel}_station`, stationId); // ID bleibt für Pfad-Operationen
                              setStateIfChanged(`${base}.cheapest.${fuel}_station_name`, stationName);
                              setStateIfChanged(`${base}.cheapest.${fuel}_image`, cheapest[fuel].image);
                          } else {
                              setStateIfChanged(`${base}.cheapest.${fuel}_price`, 0);
                              setStateIfChanged(`${base}.cheapest.${fuel}_price_str`, "");
                              setStateIfChanged(`${base}.cheapest.${fuel}_station`, "");
                              setStateIfChanged(`${base}.cheapest.${fuel}_station_name`, "");
                              setStateIfChanged(`${base}.cheapest.${fuel}_image`, "");
                          }
                      });
                  
                      saveCheapestJSON();
                      saveTop3JSON();
                      calculateAveragePrices();
                      calculateDifferencesStates();
                      saveAverageJSON();
                  
                      const fullInfo = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false)
                          .map(s => {
                              const path = `${base}.${s.id}`;
                              return {
                                  name: getState(`${path}.name`)?.val || "",
                                  brand: getState(`${path}.brand`)?.val || "",
                                  street: getState(`${path}.street`)?.val || "",
                                  postCode: getState(`${path}.postCode`)?.val || "",
                                  place: getState(`${path}.place`)?.val || "",
                                  distance: getState(`${path}.distance`)?.val || "",
                                  image: getState(`${path}.image`)?.val || "",
                                  benzin: getState(`${path}.benzin`)?.val ?? null,
                                  e10: getState(`${path}.e10`)?.val ?? null,
                                  diesel: getState(`${path}.diesel`)?.val ?? null,
                                  isOpen: getState(`${path}.isOpen`)?.val ?? false,
                                  lastPriceUpdate: getState(`${path}.lastPriceUpdate`)?.val || "",
                                  lastChecked: getState(`${path}.lastChecked`)?.val || ""
                              };
                          });
                  
                      setStateIfChanged(`${base}.all_stations_full_info`, JSON.stringify(fullInfo));
                      updateRecommendations();
                  
                      TankRenderer();
                  }
                  
                  (async () => {
                      try {
                          if (await internetUndTankerkoenigOK()) {
                              await initStates();
                              await sleepMs(5000);
                              await loadData();
                          }
                      } catch (err) {
                          logError("Fehler beim Start: " + err);
                      }
                  })();
                  
                  schedule('35 7,17,27,37,47,57 * * * *', async() => {
                      try {
                          if (await internetUndTankerkoenigOK()) {
                              await initStates();
                              await sleepMs(5000);
                              await loadData();
                          }
                      } catch (err) {
                          logError("Fehler beim Cron-Start: " + err);
                      }
                  });
                  
                  async function internetUndTankerkoenigOK() {
                      try {
                          const net = await httpGetAsync("https://www.google.com/generate_204", { timeout: 5000 });
                          if (!net || net.statusCode !== 204) return false;
                  
                          const tk = await httpGetAsync("https://creativecommons.tankerkoenig.de/", { timeout: 5000 });
                          return (tk && tk.statusCode === 200);
                  
                      } catch {
                          return false;
                      }
                  }
                  
                  stations.forEach(s => {
                      const resetId = `${base}.${s.id}.aspects.reset_history`;
                  
                      on({ id: resetId, change: "ne" }, obj => {
                          if (obj.state.val === true) {
                              const path = `${base}.${s.id}`;
                  
                              ["benzin","e10","diesel"].forEach(fuel => {
                                  setStateIfChanged(`${path}.aspects.${fuel}.history`, "[]");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_48h`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_14d`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_90d`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0);
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_48h_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_14d_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_90d_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "");
                              });
                              setStateIfChanged(resetId, false);
                          }
                      });
                  });
                  
                  on({ id: `${base}.reset_all_trends`, change: "ne" }, obj => {
                      if (obj.state.val === true) {
                              stations.forEach(s => {
                              const path = `${base}.${s.id}`;
                              ["benzin","e10","diesel"].forEach(fuel => {
                                  setStateIfChanged(`${path}.aspects.${fuel}.history`, "[]");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_48h`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_14d`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_90d`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_price`, 0);
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_48h_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_14d_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_90d_icon`, "");
                                  setStateIfChanged(`${path}.aspects.${fuel}.trend_24h_proj_icon`, "");
                              });
                          });
                          setStateIfChanged(`${base}.reset_all_trends`, false);
                      }
                  });
                  
                  
                  // **** AB HIER DER SVG RENDERER MIT THEMEN-KONFIG ****
                  
                  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
                  
                  
                  const TANKSTELLEN_THEMES = {
                  // widgetBgTop        = Farbe Widget-Hintergrund oben       widgetBgBottom      = Farbe Widget-Hintergrund unten       headerTop          = Farbe Header oben
                  // headerBottom       = Farbe Header unten                  footerTop           = Farbe Footer oben                    footerBottom       = Farbe Footer unten
                  // footerStroke       = Farbe Footer-Rahmen                 borderGradStart     = Farbe Rahmenverlauf Start            borderGradMid      = Farbe Rahmenverlauf Mitte
                  // borderGradEnd      = Farbe Rahmenverlauf Ende            lineSeparator       = Farbe horizontale Trennlinie         lineVertical       = Farbe vertikale Trennlinie
                  
                  // textDefault        = Farbe Standard-Text                 textName            = Farbe Tankstellenname                textStatus         = Farbe Status-Text
                  // textTime           = Farbe Zeitangaben                   textFuel            = Farbe Kraftstoff-Label               textPrice          = Farbe Preis-Text
                  // textControl        = Farbe Control-Text                  textStatistik       = Farbe Statistik-Text                 textOpenTitle      = Farbe Öffnungszeiten-Titel
                  // textOpenTime       = Farbe Öffnungszeiten-Zeiten         statusOpenFill      = Farbe Hintergrund geöffnet           statusOpenStroke   = Farbe Rahmen geöffnet
                  
                  // statusOpenText     = Farbe Text geöffnet                 statusClosedFill    = Farbe Hintergrund geschlossen        statusClosedStroke = Farbe Rahmen geschlossen
                  // statusClosedText   = Farbe Text geschlossen              statistikFill       = Farbe Statistik-Hintergrund          statistikStroke    = Farbe Statistik-Rahmen
                  // statistikText      = Farbe Statistik-Text                fuelBenzinStart     = Farbe Benzin-Verlauf Start           fuelBenzinEnd      = Farbe Benzin-Verlauf Ende
                  // fuelE10Start       = Farbe E10-Verlauf Start             fuelE10End          = Farbe E10-Verlauf Ende               fuelDieselStart    = Farbe Diesel-Verlauf Start
                  
                  // fuelDieselEnd      = Farbe Diesel-Verlauf Ende           fuelBenzinBorder    = Farbe Benzin-Rahmen                  fuelE10Border      = Farbe E10-Rahmen
                  // fuelDieselBorder   = Farbe Diesel-Rahmen                 trendUp             = Farbe Trend ↑                        trendDown          = Farbe Trend ↓
                  // trendStable        = Farbe Trend →                       controlBoxFill      = Farbe Control-Box Hintergrund        controlBoxStroke   = Farbe Control-Box Rahmen
                  // controlBoxText     = Farbe Control-Box Text
                  
                  
                      midnightBlue:{widgetBgTop:"#0F172A",widgetBgBottom:"#020617",headerTop:"#1E293B",headerBottom:"#0F172A",footerTop:"#1E293B",footerBottom:"#0F172A",footerStroke:"#1E293B",borderGradStart:"#3B82F6",borderGradMid:"#1E293B",borderGradEnd:"#3B82F6",lineSeparator:"#334155",lineVertical:"#1E293B",textDefault:"#E2E8F0",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#E2E8F0",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#E2E8F0",textOpenTime:"#E2E8F0",statusOpenFill:"rgba(5,150,105,0.2)",statusOpenStroke:"#10B981",statusOpenText:"#34D399",statusClosedFill:"rgba(220,38,38,0.2)",statusClosedStroke:"#DC2626",statusClosedText:"#EF4444",statistikFill:"rgba(148,163,184,0.20)",statistikStroke:"#94A3B8",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#0F172A",fuelE10Start:"#0A2A22",fuelE10End:"#0F172A",fuelDieselStart:"#3F1515",fuelDieselEnd:"#0F172A",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#475569",controlBoxText:"#FFFFFF"},
                      silverChrome:{widgetBgTop:"#F8FAFC",widgetBgBottom:"#E2E8F0",headerTop:"#CBD5E1",headerBottom:"#94A3B8",footerTop:"#CBD5E1",footerBottom:"#94A3B8",footerStroke:"#64748B",borderGradStart:"#FFFFFF",borderGradMid:"#CBD5E1",borderGradEnd:"#FFFFFF",lineSeparator:"#94A3B8",lineVertical:"#94A3B8",textDefault:"#1E293B",textName:"#0F172A",textStatus:"#FFFFFF",textTime:"#334155",textFuel:"#0F172A",textPrice:"#0F172A",textControl:"#0F172A",textStatistik:"#0F172A",textOpenTitle:"#1E293B",textOpenTime:"#1E293B",statusOpenFill:"rgba(6,95,70,0.25)",statusOpenStroke:"#065F46",statusOpenText:"#065F46",statusClosedFill:"rgba(185,28,28,0.25)",statusClosedStroke:"#991B1B",statusClosedText:"#991B1B",statistikFill:"rgba(255,255,255,0.5)",statistikStroke:"#94A3B8",statistikText:"#1E293B",fuelBenzinStart:"#D9DEE5",fuelBenzinEnd:"#B8C0C9",fuelE10Start:"#D9DEE5",fuelE10End:"#B8C0C9",fuelDieselStart:"#D9DEE5",fuelDieselEnd:"#B8C0C9",fuelBenzinBorder:"#94A3B8",fuelE10Border:"#94A3B8",fuelDieselBorder:"#94A3B8",trendUp:"#B91C1C",trendDown:"#1D4ED8",trendStable:"#065F46",controlBoxFill:"#E5E7EB",controlBoxStroke:"#94A3B8",controlBoxText:"#1E293B"},
                      transparent:{widgetBgTop:"transparent",widgetBgBottom:"transparent",headerTop:"transparent",headerBottom:"transparent",footerTop:"transparent",footerBottom:"transparent",footerStroke:"#1E293B",borderGradStart:"#3B82F6",borderGradMid:"#1E293B",borderGradEnd:"#3B82F6",lineSeparator:"#334155",lineVertical:"#1E293B",textDefault:"#E2E8F0",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#E2E8F0",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#E2E8F0",textOpenTime:"#E2E8F0",statusOpenFill:"rgba(5,150,105,0.2)",statusOpenStroke:"#10B981",statusOpenText:"#34D399",statusClosedFill:"rgba(220,38,38,0.2)",statusClosedStroke:"#DC2626",statusClosedText:"#EF4444",statistikFill:"rgba(148,163,184,0.20)",statistikStroke:"#94A3B8",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#0F172A",fuelE10Start:"#0A2A22",fuelE10End:"#0F172A",fuelDieselStart:"#3F1515",fuelDieselEnd:"#0F172A",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#475569",controlBoxText:"#FFFFFF"},
                      flatModern:{widgetBgTop:"#FFFFFF",widgetBgBottom:"#F1F5F9",headerTop:"#E2E8F0",headerBottom:"#CBD5E1",footerTop:"#F1F5F9",footerBottom:"#E2E8F0",footerStroke:"#CBD5E1",borderGradStart:"#CBD5E1",borderGradMid:"#E2E8F0",borderGradEnd:"#CBD5E1",lineSeparator:"#CBD5E1",lineVertical:"#CBD5E1",textDefault:"#1E293B",textName:"#0F172A",textStatus:"#1E293B",textTime:"#475569",textFuel:"#1E293B",textPrice:"#0F172A",textControl:"#1E293B",textStatistik:"#1E293B",textOpenTitle:"#475569",textOpenTime:"#1E293B",statusOpenFill:"#DCFCE7",statusOpenStroke:"#22C55E",statusOpenText:"#166534",statusClosedFill:"#FEE2E2",statusClosedStroke:"#EF4444",statusClosedText:"#991B1B",statistikFill:"#F1F5F9",statistikStroke:"#CBD5E1",statistikText:"#1E293B",fuelBenzinStart:"#EFF6FF",fuelBenzinEnd:"#EFF6FF",fuelBenzinBorder:"#BFDBFE",fuelE10Start:"#F0FDF4",fuelE10End:"#F0FDF4",fuelE10Border:"#BBF7D0",fuelDieselStart:"#FEF2F2",fuelDieselEnd:"#FEF2F2",fuelDieselBorder:"#FECACA",trendUp:"#DC2626",trendDown:"#2563EB",trendStable:"#16A34A",controlBoxFill:"#F8FAFC",controlBoxStroke:"#CBD5E1",controlBoxText:"#1E293B"},
                      darkNeon:{widgetBgTop:"#0A0A0A",widgetBgBottom:"#171717",headerTop:"#171717",headerBottom:"#0A0A0A",footerTop:"#171717",footerBottom:"#0A0A0A",footerStroke:"#262626", borderGradStart:"#06B6D4",borderGradMid:"#000000",borderGradEnd:"#D946EF",lineSeparator:"#262626",lineVertical:"#262626",textDefault:"#A3A3A3",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#737373",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#A3A3A3",textStatistik:"#FFFFFF",textOpenTitle:"#A3A3A3",textOpenTime:"#FFFFFF",statusOpenFill:"rgba(34,197,94,0.1)",statusOpenStroke:"#22C55E",statusOpenText:"#4ADE80",statusClosedFill:"rgba(239,68,68,0.1)",statusClosedStroke:"#EF4444",statusClosedText:"#F87171",statistikFill:"#171717",statistikStroke:"#404040",statistikText:"#FFFFFF",fuelBenzinStart:"#1A2742",fuelBenzinEnd:"#000000",fuelE10Start:"#0A2A22",fuelE10End:"#000000",fuelDieselStart:"#3F1515",fuelDieselEnd:"#000000",fuelBenzinBorder:"#1E3A8A",fuelE10Border:"#0F5F3A",fuelDieselBorder:"#8A1E1E",trendUp:"#F43F5E",trendDown:"#38BDF8",trendStable:"#4ADE80",controlBoxFill:"#000000",controlBoxStroke:"#525252",controlBoxText:"#FFFFFF"},
                      materialDesign:{widgetBgTop:"#F5F5F5",widgetBgBottom:"#E0E0E0",headerTop:"#EEEEEE",headerBottom:"#E0E0E0",footerTop:"#EEEEEE",footerBottom:"#E0E0E0",footerStroke:"#BDBDBD",borderGradStart:"#E0E0E0",borderGradMid:"#9E9E9E",borderGradEnd:"#E0E0E0",lineSeparator:"#BDBDBD",lineVertical:"#BDBDBD",textDefault:"#424242",textName:"#212121",textStatus:"#212121",textTime:"#616161",textFuel:"#212121",textPrice:"#212121",textControl:"#424242",textStatistik:"#212121",textOpenTitle:"#616161",textOpenTime:"#212121",statusOpenFill:"#C8E6C9",statusOpenStroke:"#4CAF50",statusOpenText:"#2E7D32",statusClosedFill:"#FFCDD2",statusClosedStroke:"#F44336",statusClosedText:"#C62828",statistikFill:"#E0E0E0",statistikStroke:"#9E9E9E",statistikText:"#212121",fuelBenzinStart:"#E3F2FD",fuelBenzinEnd:"#E3F2FD",fuelBenzinBorder:"#2196F3",fuelE10Start:"#E8F5E9",fuelE10End:"#E8F5E9",fuelE10Border:"#4CAF50",fuelDieselStart:"#FFEBEE",fuelDieselEnd:"#FFEBEE",fuelDieselBorder:"#F44336",trendUp:"#D32F2F",trendDown:"#1976D2",trendStable:"#388E3C",controlBoxFill:"#F5F5F5",controlBoxStroke:"#9E9E9E",controlBoxText:"#212121"},
                      nightHorizon:{widgetBgTop:"#4C1D95",widgetBgBottom:"#991B1B",headerTop:"#2E1065",headerBottom:"#4C1D95",footerTop:"#7F1D1D",footerBottom:"#4C1D95",footerStroke:"#4C1D95",borderGradStart:"#F59E0B",borderGradMid:"#2E1065",borderGradEnd:"#F59E0B",lineSeparator:"rgba(255,255,255,0.2)",lineVertical:"rgba(255,255,255,0.2)",textDefault:"#FEE2E2",textName:"#FFFFFF",textStatus:"#FFFFFF",textTime:"#FDBA74",textFuel:"#FFFFFF",textPrice:"#FFFFFF",textControl:"#FFFFFF",textStatistik:"#FFFFFF",textOpenTitle:"#FDBA74",textOpenTime:"#FEE2E2",statusOpenFill:"rgba(34,197,94,0.3)",statusOpenStroke:"#22C55E",statusOpenText:"#86EFAC",statusClosedFill:"rgba(185,28,28,0.3)",statusClosedStroke:"#B91C1C",statusClosedText:"#FCA5A5",statistikFill:"rgba(255,255,255,0.1)",statistikStroke:"#FDBA74",statistikText:"#FFFFFF",fuelBenzinStart:"#312E81",fuelBenzinEnd:"#1E3A8A",fuelBenzinBorder:"#60A5FA",fuelE10Start:"#064E3B",fuelE10End:"#065F46",fuelE10Border:"#34D399",fuelDieselStart:"#7F1D1D",fuelDieselEnd:"#991B1B",fuelDieselBorder:"#F87171",trendUp:"#F87171",trendDown:"#60A5FA",trendStable:"#34D399",controlBoxFill:"#4C1D95",controlBoxStroke:"#FDBA74",controlBoxText:"#FFFFFF"},
                      obsidianGold:{widgetBgTop:"#171717",widgetBgBottom:"#0A0A0A",headerTop:"#262626",headerBottom:"#171717",footerTop:"#262626",footerBottom:"#171717",footerStroke:"#404040",borderGradStart:"#D4AF37",borderGradMid:"#171717",borderGradEnd:"#D4AF37",lineSeparator:"#404040",lineVertical:"#404040",textDefault:"#E5E5E5",textName:"#F5F5F5",textStatus:"#D4AF37",textTime:"#A3A3A3",textFuel:"#FFFFFF",textPrice:"#D4AF37",textControl:"#E5E5E5",textStatistik:"#D4AF37",textOpenTitle:"#A3A3A3",textOpenTime:"#E5E5E5",statusOpenFill:"rgba(212,175,55,0.15)",statusOpenStroke:"#D4AF37",statusOpenText:"#D4AF37",statusClosedFill:"rgba(64,64,64,0.3)",statusClosedStroke:"#525252",statusClosedText:"#A3A3A3",statistikFill:"rgba(212,175,55,0.1)",statistikStroke:"#D4AF37",statistikText:"#D4AF37",fuelBenzinStart:"#262626",fuelBenzinEnd:"#171717",fuelBenzinBorder:"#D4AF37",fuelE10Start:"#262626",fuelE10End:"#171717",fuelE10Border:"#D4AF37",fuelDieselStart:"#262626",fuelDieselEnd:"#171717",fuelDieselBorder:"#D4AF37",trendUp:"#D4AF37",trendDown:"#D4AF37",trendStable:"#D4AF37",controlBoxFill:"#171717",controlBoxStroke:"#404040",controlBoxText:"#D4AF37"},
                      spotlightDark: {widgetBgTop:"#020617", widgetBgBottom:"#020617",headerTop:"#020617", headerBottom:"#020617",footerTop:"#020617", footerBottom:"#020617",borderGradStart:"transparent", borderGradMid:"transparent", borderGradEnd:"transparent",lineSeparator:"#1e293b", lineVertical:"#1e293b",textDefault:"#e2e8f0", textName:"#ffffff", textStatus:"#ffffff",textTime:"#64748b", textFuel:"#94a3b8", textPrice:"#ffffff",textControl:"#64748b", textStatistik:"#64748b",textOpenTitle:"#94a3b8", textOpenTime:"#e2e8f0",statusOpenFill:"rgba(5,150,105,0.2)", statusOpenStroke:"#10b981", statusOpenText:"#34d399",statusClosedFill:"rgba(220,38,38,0.2)", statusClosedStroke:"#dc2626", statusClosedText:"#ef4444",statistikFill:"rgba(255,255,255,0.05)", statistikStroke:"#334155", statistikText:"#e2e8f0",fuelBenzinStart:"#1e293b", fuelBenzinEnd:"#020617",fuelE10Start:"#1e293b", fuelE10End:"#020617",fuelDieselStart:"#1e293b", fuelDieselEnd:"#020617",trendUp:"#ef4444", trendDown:"#3b82f6", trendStable:"#10b981",controlBoxFill:"#020617", controlBoxStroke:"#334155", controlBoxText:"#94a3b8"},
                      midnightPanel: {widgetBgTop:"#0F172A", widgetBgBottom:"#020617",headerTop:"#0F172A", headerBottom:"#0F172A",footerTop:"#020617", footerBottom:"#020617",borderGradStart:"#1E293B", borderGradMid:"#1E293B", borderGradEnd:"#1E293B",lineSeparator:"#1E293B", lineVertical:"#1E293B",textDefault:"#E2E8F0", textName:"#E2E8F0", textStatus:"#FEE2E2",textTime:"#64748B", textFuel:"#94A3B8", textPrice:"#FFFFFF",textControl:"#475569", textStatistik:"#64748B",textOpenTitle:"#64748B", textOpenTime:"#E2E8F0",statusOpenFill:"#065F46", statusOpenStroke:"#065F46", statusOpenText:"#D1FAE5",statusClosedFill:"#7F1D1D", statusClosedStroke:"#991B1B", statusClosedText:"#FEE2E2",statistikFill:"#020617", statistikStroke:"#1E293B", statistikText:"#64748B",fuelBenzinStart:"#0F172A", fuelBenzinEnd:"#020617",fuelE10Start:"#0F172A", fuelE10End:"#020617",fuelDieselStart:"#0F172A", fuelDieselEnd:"#020617",trendUp:"#B91C1C", trendDown:"#1D4ED8", trendStable:"#10B981",controlBoxFill:"#020617", controlBoxStroke:"#1E293B", controlBoxText:"#64748B"},
                      neonMesh: {widgetBgTop:"#1e1b4b", widgetBgBottom:"#0f172a",headerTop:"#1e1b4b", headerBottom:"#0f172a",footerTop:"#0f172a", footerBottom:"#0f172a",borderGradStart:"transparent", borderGradMid:"transparent", borderGradEnd:"transparent",lineSeparator:"#334155", lineVertical:"#334155",textDefault:"#f8fafc", textName:"#f8fafc", textStatus:"#f8fafc",textTime:"#94a3b8", textFuel:"#94a3b8", textPrice:"#ffffff",textControl:"#64748b", textStatistik:"#64748b",textOpenTitle:"#94a3b8", textOpenTime:"#f8fafc",statusOpenFill:"rgba(16,185,129,0.25)", statusOpenStroke:"#10b981", statusOpenText:"#34d399",statusClosedFill:"rgba(220,38,38,0.25)", statusClosedStroke:"#dc2626", statusClosedText:"#ef4444",statistikFill:"rgba(255,255,255,0.05)", statistikStroke:"#475569", statistikText:"#94a3b8",fuelBenzinStart:"#4f46e5", fuelBenzinEnd:"#0f172a",fuelE10Start:"#9d174d", fuelE10End:"#0f172a",fuelDieselStart:"#4f46e5", fuelDieselEnd:"#0f172a",trendUp:"#ef4444", trendDown:"#3b82f6", trendStable:"#10b981",controlBoxFill:"#0f172a", controlBoxStroke:"#334155", controlBoxText:"#94a3b8"},
                      obsidianFluid:{widgetBgTop:"#1e1b4b",widgetBgBottom:"#020617",headerTop:"#1e1b4b",headerBottom:"#020617",footerTop:"#020617",footerBottom:"#020617",borderGradStart:"rgba(255,255,255,0.05)",borderGradMid:"rgba(255,255,255,0.03)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#1e293b",lineVertical:"#1e293b",textDefault:"#f1f5f9",textName:"#f1f5f9",textStatus:"#eab308",textTime:"#94a3b8",textFuel:"#e2e8f0",textPrice:"#ffffff",textControl:"#64748b",textStatistik:"#94a3b8",textOpenTitle:"#eab308",textOpenTime:"#f1f5f9",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#334155",statistikText:"#e2e8f0",fuelBenzinStart:"#1e1b4b",fuelBenzinEnd:"#020617",fuelE10Start:"#1e1b4b",fuelE10End:"#020617",fuelDieselStart:"#1e1b4b",fuelDieselEnd:"#020617",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#020617",controlBoxStroke:"#334155",controlBoxText:"#94a3b8"},
                      floatingGlass:{widgetBgTop:"#F0F9FF",widgetBgBottom:"#F0F9FF",headerTop:"#F0F9FF",headerBottom:"#F0F9FF",footerTop:"#F0F9FF",footerBottom:"#F0F9FF",borderGradStart:"#ffffff",borderGradMid:"#ffffff",borderGradEnd:"#ffffff",lineSeparator:"#bae6fd",lineVertical:"#bae6fd",textDefault:"#0F172A",textName:"#0369A1",textStatus:"#10B981",textTime:"#0369A1",textFuel:"#F0F9FF",textPrice:"#F0F9FF",textControl:"#0369A1",textStatistik:"#0369A1",textOpenTitle:"#075985",textOpenTime:"#0F172A",statusOpenFill:"#d1fae5",statusOpenStroke:"#10b981",statusOpenText:"#065f46",statusClosedFill:"#fee2e2",statusClosedStroke:"#dc2626",statusClosedText:"#b91c1c",statistikFill:"#ffffff",statistikStroke:"#bae6fd",statistikText:"#0369A1",fuelBenzinStart:"#0EA5E9",fuelBenzinEnd:"#0369A1",fuelE10Start:"#0EA5E9",fuelE10End:"#0369A1",fuelDieselStart:"#06B6D4",fuelDieselEnd:"#0369A1",trendUp:"#dc2626",trendDown:"#2563eb",trendStable:"#10b981",controlBoxFill:"#ffffff",controlBoxStroke:"#bae6fd",controlBoxText:"#0369A1"},
                      liquidChrome:{widgetBgTop:"#4B5563",widgetBgBottom:"#374151",headerTop:"#E5E7EB",headerBottom:"#9CA3AF",footerTop:"#9CA3AF",footerBottom:"#374151",borderGradStart:"rgba(255,255,255,0.25)",borderGradMid:"rgba(255,255,255,0.15)",borderGradEnd:"rgba(255,255,255,0.05)",lineSeparator:"#d1d5db",lineVertical:"#d1d5db",textDefault:"#f9fafb",textName:"#ffffff",textStatus:"#ffffff",textTime:"#e5e7eb",textFuel:"#f3f4f6",textPrice:"#ffffff",textControl:"#d1d5db",textStatistik:"#e5e7eb",textOpenTitle:"#e5e7eb",textOpenTime:"#ffffff",statusOpenFill:"#d1fae5",statusOpenStroke:"#10b981",statusOpenText:"#065f46",statusClosedFill:"#fee2e2",statusClosedStroke:"#dc2626",statusClosedText:"#b91c1c",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#9ca3af",statistikText:"#e5e7eb",fuelBenzinStart:"#E5E7EB",fuelBenzinEnd:"#9CA3AF",fuelE10Start:"#E5E7EB",fuelE10End:"#9CA3AF",fuelDieselStart:"#E5E7EB",fuelDieselEnd:"#9CA3AF",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#4B5563",controlBoxStroke:"#9CA3AF",controlBoxText:"#e5e7eb"},
                      titanCore:{widgetBgTop:"#030712",widgetBgBottom:"#374151",headerTop:"#030712",headerBottom:"#374151",footerTop:"#374151",footerBottom:"#030712",borderGradStart:"rgba(255,255,255,0.1)",borderGradMid:"rgba(255,255,255,0.05)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#475569",lineVertical:"#475569",textDefault:"#f1f5f9",textName:"#f1f5f9",textStatus:"#f1f5f9",textTime:"#94a3b8",textFuel:"#cbd5e1",textPrice:"#ffffff",textControl:"#64748b",textStatistik:"#94a3b8",textOpenTitle:"#cbd5e1",textOpenTime:"#f1f5f9",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#475569",statistikText:"#94a3b8",fuelBenzinStart:"#374151",fuelBenzinEnd:"#030712",fuelE10Start:"#374151",fuelE10End:"#030712",fuelDieselStart:"#374151",fuelDieselEnd:"#030712",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#030712",controlBoxStroke:"#475569",controlBoxText:"#94a3b8"},
                      graphiteGrid:{widgetBgTop:"#18181b",widgetBgBottom:"#09090b",headerTop:"#3f3f46",headerBottom:"#18181b",footerTop:"#18181b",footerBottom:"#09090b",borderGradStart:"rgba(255,255,255,0.1)",borderGradMid:"rgba(255,255,255,0.05)",borderGradEnd:"rgba(255,255,255,0.02)",lineSeparator:"#3f3f46",lineVertical:"#3f3f46",textDefault:"#f4f4f5",textName:"#ffffff",textStatus:"#ffffff",textTime:"#a1a1aa",textFuel:"#d4d4d8",textPrice:"#ffffff",textControl:"#71717a",textStatistik:"#a1a1aa",textOpenTitle:"#d4d4d8",textOpenTime:"#f4f4f5",statusOpenFill:"#065f46",statusOpenStroke:"#10b981",statusOpenText:"#34d399",statusClosedFill:"#7f1d1d",statusClosedStroke:"#991b1b",statusClosedText:"#fee2e2",statistikFill:"rgba(255,255,255,0.05)",statistikStroke:"#3f3f46",statistikText:"#a1a1aa",fuelBenzinStart:"#3f3f46",fuelBenzinEnd:"#18181b",fuelE10Start:"#3f3f46",fuelE10End:"#18181b",fuelDieselStart:"#3f3f46",fuelDieselEnd:"#18181b",trendUp:"#ef4444",trendDown:"#3b82f6",trendStable:"#10b981",controlBoxFill:"#18181b",controlBoxStroke:"#3f3f46",controlBoxText:"#a1a1aa"}
                  };
                  
                  function getTankstellenTheme() {
                      const preset = getState(TANKSTELLEN_THEME_DP).val;
                      return TANKSTELLEN_THEMES[preset] || TANKSTELLEN_THEMES.midnightBlue;
                  }
                  
                  function createTankstellenSVG({stationName, stationState, distance, lastFetch, lastUpdate, openingHours, priceBenzin, priceE10, priceDiesel, logoUrl, trendBenzin, trendE10, trendDiesel, showStatistik = false, showBorder = true, minimalMode = false}) {
                      const t = getTankstellenTheme();
                      const uid = `ts_${Math.random().toString(36).slice(2,7)}`;
                  
                      function esc(str) {
                          return String(str)
                              .replace(/&/g, "&amp;")
                              .replace(/</g, "&lt;")
                              .replace(/>/g, "&gt;")
                              .replace(/"/g, "&quot;");
                      }
                  
                      const badgeH    = minimalMode ? 27 : 18;
                      const badgeY1   = minimalMode ? 0  : 0;
                      const badgeY2   = minimalMode ? 34 : 24;
                      const badgeY3   = minimalMode ? 68 : 48;
                      const priceFont = minimalMode ? 14 : 12;
                      const fuelFont  = minimalMode ? 12 : 9.5;
                  
                      function trendIcon(type) {
                          if (type === "steigend") {
                              return `<text x="175" y="${minimalMode ? 17 : 12}" text-anchor="end" fill="${t.trendUp}">↗</text>`;
                          }
                          if (type === "fallend") {
                              return `<text x="175" y="${minimalMode ? 17 : 12}" text-anchor="end" fill="${t.trendDown}">↘</text>`;
                          }
                          return `<path d="M167,${minimalMode ? 14 : 9} L174,${minimalMode ? 14 : 9} M172,${minimalMode ? 12 : 7} L174,${minimalMode ? 14 : 9} L172,${minimalMode ? 16 : 11}" stroke="${t.trendStable}" stroke-width="1.25" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`;
                      }
                  
                      function formatNumber(value) {
                          if (useDotInsteadOfComma) {
                              return value.replace(",", ".");
                          } else {
                              return value.replace(".", ",");
                          }
                      }
                  
                      return `
                      <svg viewBox="0 0 365 163" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet">
                      <style>
                          .txt { 
                              font-family:'InterVariable',sans-serif!important;
                              font-feature-settings:"tnum"!important;
                              fill:${t.textDefault}!important;
                          }
                  
                          .txt-name { font-size:15px!important;font-weight:600!important;fill:${t.textName}!important;font-variant: small-caps; }
                          .txt-status { font-size:8px!important;font-weight:600!important;fill:${t.textStatus}!important; }
                          .txt-time { font-size:8px!important;fill:${t.textTime}!important; }
                          .txt-opening-title { font-size:9px!important;font-weight:700!important;fill:${t.textOpenTitle}!important; }
                          .txt-opening-time { font-size:10px!important;fill:${t.textOpenTime}!important; }
                          .txt-fuel { font-size:${fuelFont}px!important; font-weight:700!important; fill:${t.textFuel}!important; }
                  
                          .txt-price { 
                              font-family:'Courier New',monospace!important;
                              font-size:${priceFont}px!important;
                              font-weight:700!important;
                              fill:${t.textPrice}!important;
                          }
                  
                          .txt-control {
                              font-size:9px!important;
                              font-weight:600!important;
                              fill:${t.textControl}!important;
                          }
                  
                          .txt-statistik {
                              fill:${t.textStatistik}!important;
                              font-size:8px!important;
                              font-weight:600!important;
                          }
                  
                          .txt-distance {
                              font-size:12px!important;
                              font-weight:600!important;
                              fill:${t.textTime}!important;
                          }
                      </style>
                  
                      <defs>
                          <linearGradient id="${uid}-widgetBg" x1="0" y1="0" x2="0" y2="1">
                              <stop offset="0%" stop-color="${t.widgetBgTop}" stop-opacity="0.95"/>
                              <stop offset="100%" stop-color="${t.widgetBgBottom}" stop-opacity="0.98"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-headerGrad" x1="0" y1="0" x2="0" y2="1">
                              <stop offset="0%" stop-color="${t.headerTop}" stop-opacity="0.6"/>
                              <stop offset="100%" stop-color="${t.headerBottom}" stop-opacity="0.95"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-footerGrad" x1="0" y1="0" x2="0" y2="1">
                              <stop offset="0%" stop-color="${t.footerTop}" stop-opacity="0.45"/>
                              <stop offset="100%" stop-color="${t.footerBottom}" stop-opacity="0.75"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-borderGrad" x1="0" y1="0" x2="1" y2="1">
                              <stop offset="0%" stop-color="${t.borderGradStart}" stop-opacity="0.35"/>
                              <stop offset="50%" stop-color="${t.borderGradMid}" stop-opacity="0.1"/>
                              <stop offset="100%" stop-color="${t.borderGradEnd}" stop-opacity="0.2"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-bgBenzin" x1="0" y1="0" x2="1" y2="0">
                              <stop offset="0%" stop-color="${t.fuelBenzinStart}"/>
                              <stop offset="100%" stop-color="${t.fuelBenzinEnd}"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-bgE10" x1="0" y1="0" x2="1" y2="0">
                              <stop offset="0%" stop-color="${t.fuelE10Start}"/>
                              <stop offset="100%" stop-color="${t.fuelE10End}"/>
                          </linearGradient>
                  
                          <linearGradient id="${uid}-bgDiesel" x1="0" y1="0" x2="1" y2="0">
                              <stop offset="0%" stop-color="${t.fuelDieselStart}"/>
                              <stop offset="100%" stop-color="${t.fuelDieselEnd}"/>
                          </linearGradient>
                      </defs>
                  
                      <rect x="1.5" y="1.5" width="362" height="160" fill="url(#${uid}-widgetBg)" stroke="${showBorder ? `url(#${uid}-borderGrad)` : `none`}" stroke-width="1.25"/>
                      <path d="M2.5,2.5H362.5V28H2.5Z" fill="url(#${uid}-headerGrad)"/>
                      <image href="${logoUrl}" x="5" y="5" width="18" height="18" preserveAspectRatio="xMidYMid slice"/>
                      <text class="txt txt-name" x="32" y="19">${esc(stationName)}</text>
                  
                      <g id="geoSymbol" transform="translate(345,7)">
                          <g transform="translate(0,0) scale(1.0)">
                              <path d="M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10m0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6" fill="${t.textTime}"/>
                          </g>
                      </g>
                  
                      <g id="geoDistance" transform="translate(287,5)">
                          <text class="txt txt-distance" x="55" y="14" text-anchor="end">${formatNumber(esc(distance))}</text>
                      </g>
                  
                      <line x1="1.5" y1="28" x2="363.5" y2="28" stroke="${t.lineSeparator}" stroke-width="0.75"/>
                  
                      <g opacity="0.55" transform="translate(0,-2)">
                          <g transform="translate(15,41)">
                              <g stroke="#94A3B8" stroke-width="1" fill="none">
                                  <path d="M0,0 A 4,4 0 1,1 4,4" />
                                  <path d="M4,-2 L4,2 L0,2" />
                              </g>
                          </g>
                  
                          <text class="txt txt-time" x="27" y="44" style="font-size:10px!important">${esc(lastUpdate)}</text>
                  
                          <g transform="translate(206,37)">
                              <g stroke="#94A3B8" stroke-width="1" fill="none">
                                  <path d="M0,6 L0,0" />
                                  <path d="M-3,3 L0,6 L3,3" />
                                  <path d="M-5,7 L5,7" />
                              </g>
                          </g>
                          <text class="txt txt-time" x="216" y="44" style="font-size:10px!important">${esc(lastFetch)}</text>
                      </g>
                  
                      <line x1="135" y1="52" x2="135" y2="${minimalMode ? 152 : 133.5}" stroke="${t.lineVertical}" stroke-width="0.75"/>
                  
                      <g transform="translate(12,54)">
                          <g transform="translate(15,0)">
                              <rect x="0" y="0" width="80" height="16" rx="3" fill="${stationState.includes("geschlossen") ? t.statusClosedFill : t.statusOpenFill}" stroke="${stationState.includes("geschlossen") ? t.statusClosedStroke : t.statusOpenStroke}" stroke-width="0.75"/>
                              <text class="txt txt-status" x="40" y="11" text-anchor="middle" style="letter-spacing:1px;fill:${stationState.includes("geschlossen") ? t.statusClosedText : t.statusOpenText}">${esc(stationState.toUpperCase())}</text>
                          </g>
                  
                          ${openingHours.map((o,i)=>`
                              <text class="txt txt-opening-time" x="10" y="${32+i*16}">${esc(o.text)}</text>
                              <text class="txt txt-opening-time" x="70" y="${32+i*16}">${esc(o.hours)}</text>
                          `).join("")}
                      </g>
                  
                      <g transform="translate(157,54)">
                          <g transform="translate(0,${badgeY1})">
                              <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgBenzin)" stroke="${t.fuelBenzinBorder}" stroke-width="0.75"/>
                              <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#318CFF"/>
                              <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">Benzin</text>
                              <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceBenzin.slice(0,-1)))}<tspan dy="-1">${esc(priceBenzin.slice(-1))}</tspan></text>
                              ${trendIcon(trendBenzin)}
                          </g>
                  
                          <g transform="translate(0,${badgeY2})">
                              <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgE10)" stroke="${t.fuelE10Border}" stroke-width="0.75"/>
                              <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#4BBF31"/>
                              <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">E10</text>
                              <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceE10.slice(0,-1)))}<tspan dy="-1">${esc(priceE10.slice(-1))}</tspan></text>
                              ${trendIcon(trendE10)}
                          </g>
                  
                          <g transform="translate(0,${badgeY3})">
                              <rect x="0" y="0" width="185" height="${badgeH}" rx="5" fill="url(#${uid}-bgDiesel)" stroke="${t.fuelDieselBorder}" stroke-width="0.75"/>
                              <circle cx="9" cy="${badgeH/2}" r="2.5" fill="#E33232"/>
                              <text class="txt txt-fuel" x="20" y="${badgeH/2 + (minimalMode ? 4.5 : 3.5)}">Diesel</text>
                              <text class="txt txt-price" x="155" y="${badgeH/2+4.5}" text-anchor="end">${formatNumber(esc(priceDiesel.slice(0,-1)))}<tspan dy="-1">${esc(priceDiesel.slice(-1))}</tspan></text>
                              ${trendIcon(trendDiesel)}
                          </g>
                      </g>
                  
                      ${minimalMode || !t.footerTop ? `` : `<path d="M1.5,133.5H363.5V161.5H1.5Z" fill="url(#${uid}-footerGrad)" stroke="${t.footerStroke || 'none'}" stroke-width="0.75"/>`}
                  
                      ${(!minimalMode && showStatistik) ? `
                      <g transform="translate(285,140)">
                          <rect x="0" y="0" width="70" height="16" rx="3" fill="${t.statistikFill}" stroke="${t.statistikStroke}" stroke-width="0.75"/>
                          <text class="txt-statistik" x="35" y="11" text-anchor="middle">${esc("STATISTIK")}</text>
                      </g>
                      ` : ``}
                  
                      ${minimalMode ? `` : `
                      <g transform="translate(15,140.5)">
                          <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
                          <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("NUR ABRUF")}</text>
                      </g>
                  
                      <g transform="translate(100,140.5)">
                          <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
                          <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("FAVORIT")}</text>
                      </g>
                  
                      <g transform="translate(185,140.5)">
                          <rect x="0" y="0" width="15" height="15" rx="2" fill="${t.controlBoxFill}" stroke="${t.controlBoxStroke}" stroke-width="0.75"/>
                          <text class="txt txt-control" x="20" y="11" fill="${t.controlBoxText}">${esc("AKTIV")}</text>
                      </g>
                      `}
                      </svg>
                  `;
                  }
                  
                  async function TankRenderer() {
                      const tasks = stations.filter(s => getState(`${base}.${s.id}.enabled`)?.val !== false).map(async (s) => {
                          const path = `${base}.${s.id}`;
                  
                          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
                          });
                  
                          setStateIfChanged(`${path}.svg`, svg);
                      });
                      await Promise.allSettled(tasks);
                  }
                  
                  on({ id: TANKSTELLEN_THEME_DP, change: "ne" }, obj => {
                      TankRenderer();
                  });
                  

                  Wenn alles richtig gemacht wurde, trudeln die Daten regelmäßig ein. Trend und Prognosen werden nicht sofort "brauchbare" Daten liefern. Es muss einfach etwas Zeit vertreichen. Ich habe bei mir alles in VIS1 visualisiert, sollte aber auch mit anderen Systemen funktionieren.

                  Viel Spaß und gutes Gelingen mit diesem Skript.

                  Ro75.

                  Neuerungen Version 1.1.0 - 21.06.2026

                  • Dynamische Generierung und automatische Aktualisierung von SVG-Cards pro Tankstelle bei Wertänderung. Der Datenpunkt lautet "svg" und kann in VIS 1 via "String (unescaped)" dargestellt werden.
                    630b4af2-bd1f-47b9-9325-f9903d6d06e4-image.jpeg

                  • Zahlreiche Theme zur Ausahl. Der Datenpunkt lautet "theme" im Ordner "config". Bei Änderung erfolgt die automatische Neugenerierung.

                  • Hinweise zum Update in Post #43.

                  Korrektur Version 1.1.1 - 22.06.2026

                  • Theme "Transparent" korrigiert.
                  • Hinweise zum Update in Post #47.
                  NegaleinN Offline
                  NegaleinN Offline
                  Negalein
                  schrieb am zuletzt editiert von
                  #8

                  @Ro75 sagte in Tankerkönig - Extended Skript:

                  Viel Spaß und gutes Gelingen mit diesem Skript.

                  Servus

                  Könnte man sowas auch für Österreich machen?
                  Adapter gibt es zwar, aber so wie deins wäre hübscher. ;)

                  API gibt es von e-Control

                  ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                  ° Node.js Fixer ---> iob nodejs-update
                  ° Fixer ---> iob fix

                  Ro75R 1 Antwort Letzte Antwort
                  0
                  • Thomas MaulT Thomas Maul

                    Super, danke! Ich probier's demnächst.

                    Hinweis: im Bild ganz oben ist der genaue Standort verpixelt (vermutlich wg. Privatsphäre), im Code sind aber hoffentlich dann nicht Deine echten Geodaten ;-)

                    Ro75R Online
                    Ro75R Online
                    Ro75
                    schrieb am zuletzt editiert von
                    #9

                    @Thomas-Maul sagte in Tankerkönig - Extended Skript:

                    Deine echten Geodaten ;-)

                    Nein, steht aber auch als Kommentar dahinter :-)

                    Ro75.

                    SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

                    1 Antwort Letzte Antwort
                    0
                    • NegaleinN Negalein

                      @Ro75 sagte in Tankerkönig - Extended Skript:

                      Viel Spaß und gutes Gelingen mit diesem Skript.

                      Servus

                      Könnte man sowas auch für Österreich machen?
                      Adapter gibt es zwar, aber so wie deins wäre hübscher. ;)

                      API gibt es von e-Control

                      Ro75R Online
                      Ro75R Online
                      Ro75
                      schrieb am zuletzt editiert von
                      #10

                      @Negalein sagte in Tankerkönig - Extended Skript:

                      Könnte man sowas auch für Österreich machen?

                      wenn ich Zeit und Lust habe, schaue ich mir das mal an. Im Moment bereite ich weitere Skripte vor, die eine Alternative zu Adaptern sind.

                      Ro75.

                      SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

                      1 Antwort Letzte Antwort
                      3
                      • joalexaJ Offline
                        joalexaJ Offline
                        joalexa
                        schrieb am zuletzt editiert von
                        #11

                        Hallo, erstmal besten Dank für Deine Arbeit. Der Tankerkoenig läuft bei mir. Ich habe nun Dein Skript angepasst und bekomme dann allerdings beim Import unter VIS1 folgenden Fehler:Tankerkoenig_ext2.jpg
                        Danke für die Hilfe

                        RPi 4, SSD, Debian Booster
                        XIAOMI Hubs, Aqara und XIAOMI Sensoren, Yeelight Lampen, Shelly Schalter und Steckdose, Sonoff-Schalter (Tasmota), Fritz!Boxen (7490, 7390...)

                        NegaleinN 1 Antwort Letzte Antwort
                        0
                        • joalexaJ joalexa

                          Hallo, erstmal besten Dank für Deine Arbeit. Der Tankerkoenig läuft bei mir. Ich habe nun Dein Skript angepasst und bekomme dann allerdings beim Import unter VIS1 folgenden Fehler:Tankerkoenig_ext2.jpg
                          Danke für die Hilfe

                          NegaleinN Offline
                          NegaleinN Offline
                          Negalein
                          schrieb am zuletzt editiert von
                          #12

                          @joalexa sagte in Tankerkönig - Extended Skript:

                          Der Tankerkoenig läuft bei mir. Ich habe nun Dein Skript angepasst und bekomme dann allerdings beim Import unter VIS1 folgenden Fehler:

                          das ist ein Javascript.
                          Musst du in Scripte anlegen. Nicht in VIS importieren.

                          Den Tankerkoenig Adapter brauchst du dann nicht mehr.

                          ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                          ° Node.js Fixer ---> iob nodejs-update
                          ° Fixer ---> iob fix

                          joalexaJ 1 Antwort Letzte Antwort
                          1
                          • NegaleinN Negalein

                            @joalexa sagte in Tankerkönig - Extended Skript:

                            Der Tankerkoenig läuft bei mir. Ich habe nun Dein Skript angepasst und bekomme dann allerdings beim Import unter VIS1 folgenden Fehler:

                            das ist ein Javascript.
                            Musst du in Scripte anlegen. Nicht in VIS importieren.

                            Den Tankerkoenig Adapter brauchst du dann nicht mehr.

                            joalexaJ Offline
                            joalexaJ Offline
                            joalexa
                            schrieb am zuletzt editiert von
                            #13

                            @Negalein Danke für den Hinweis

                            RPi 4, SSD, Debian Booster
                            XIAOMI Hubs, Aqara und XIAOMI Sensoren, Yeelight Lampen, Shelly Schalter und Steckdose, Sonoff-Schalter (Tasmota), Fritz!Boxen (7490, 7390...)

                            1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              Dragon
                              schrieb am zuletzt editiert von
                              #14

                              Hier habe ich mal etwas für die Vis 2 gebastelt.

                              Im Editor einfach die Zahlen durch die Zahlen eurer Tankstelle ersetzen und importieren. Funktioniert hervorragend.

                              [
                                {
                                  "tpl": "tplMaterial2Switches",
                                  "data": {
                                    "actual1": null,
                                    "actual10": null,
                                    "actual11": null,
                                    "actual12": null,
                                    "actual2": null,
                                    "actual3": null,
                                    "actual4": null,
                                    "actual5": null,
                                    "actual6": null,
                                    "actual7": null,
                                    "actual8": null,
                                    "actual9": null,
                                    "allSwitch": false,
                                    "bindings": [
                                      "widgetTitle",
                                      "icon2",
                                      "icon10",
                                      "infoActiveIcon1",
                                      "icon1"
                                    ],
                                    "blue1": null,
                                    "blue10": null,
                                    "blue11": null,
                                    "blue12": null,
                                    "blue2": null,
                                    "blue3": null,
                                    "blue4": null,
                                    "blue5": null,
                                    "blue6": null,
                                    "blue7": null,
                                    "blue8": null,
                                    "blue9": null,
                                    "boost1": null,
                                    "boost10": null,
                                    "boost11": null,
                                    "boost12": null,
                                    "boost2": null,
                                    "boost3": null,
                                    "boost4": null,
                                    "boost5": null,
                                    "boost6": null,
                                    "boost7": null,
                                    "boost8": null,
                                    "boost9": null,
                                    "brightness1": null,
                                    "brightness10": null,
                                    "brightness11": null,
                                    "brightness12": null,
                                    "brightness2": null,
                                    "brightness3": null,
                                    "brightness4": null,
                                    "brightness5": null,
                                    "brightness6": null,
                                    "brightness7": null,
                                    "brightness8": null,
                                    "brightness9": null,
                                    "buttonIcon1": null,
                                    "buttonIcon10": null,
                                    "buttonIcon11": null,
                                    "buttonIcon12": null,
                                    "buttonIcon2": null,
                                    "buttonIcon3": null,
                                    "buttonIcon4": null,
                                    "buttonIcon5": null,
                                    "buttonIcon6": null,
                                    "buttonIcon7": null,
                                    "buttonIcon8": null,
                                    "buttonIcon9": null,
                                    "buttonIconActive1": null,
                                    "buttonIconActive10": null,
                                    "buttonIconActive11": null,
                                    "buttonIconActive12": null,
                                    "buttonIconActive2": null,
                                    "buttonIconActive3": null,
                                    "buttonIconActive4": null,
                                    "buttonIconActive5": null,
                                    "buttonIconActive6": null,
                                    "buttonIconActive7": null,
                                    "buttonIconActive8": null,
                                    "buttonIconActive9": null,
                                    "buttonImage1": null,
                                    "buttonImage10": null,
                                    "buttonImage11": null,
                                    "buttonImage12": null,
                                    "buttonImage2": null,
                                    "buttonImage3": null,
                                    "buttonImage4": null,
                                    "buttonImage5": null,
                                    "buttonImage6": null,
                                    "buttonImage7": null,
                                    "buttonImage8": null,
                                    "buttonImage9": null,
                                    "buttonImageActive1": null,
                                    "buttonImageActive10": null,
                                    "buttonImageActive11": null,
                                    "buttonImageActive12": null,
                                    "buttonImageActive2": null,
                                    "buttonImageActive3": null,
                                    "buttonImageActive4": null,
                                    "buttonImageActive5": null,
                                    "buttonImageActive6": null,
                                    "buttonImageActive7": null,
                                    "buttonImageActive8": null,
                                    "buttonImageActive9": null,
                                    "buttonText1": null,
                                    "buttonText10": null,
                                    "buttonText11": null,
                                    "buttonText12": null,
                                    "buttonText2": null,
                                    "buttonText3": null,
                                    "buttonText4": null,
                                    "buttonText5": null,
                                    "buttonText6": null,
                                    "buttonText7": null,
                                    "buttonText8": null,
                                    "buttonText9": null,
                                    "buttonsWidth": 120,
                                    "chartPeriod1": 60,
                                    "chartPeriod10": 60,
                                    "chartPeriod11": 60,
                                    "chartPeriod12": 60,
                                    "chartPeriod2": 60,
                                    "chartPeriod3": 10080,
                                    "chartPeriod4": 60,
                                    "chartPeriod5": 60,
                                    "chartPeriod6": 60,
                                    "chartPeriod7": 60,
                                    "chartPeriod8": 60,
                                    "chartPeriod9": 60,
                                    "color1": null,
                                    "color10": null,
                                    "color11": null,
                                    "color12": null,
                                    "color2": null,
                                    "color3": "#ffffff",
                                    "color4": null,
                                    "color5": null,
                                    "color6": null,
                                    "color7": null,
                                    "color8": null,
                                    "color9": "#ffffff",
                                    "colorEnabled1": null,
                                    "colorEnabled10": null,
                                    "colorEnabled11": null,
                                    "colorEnabled12": null,
                                    "colorEnabled2": null,
                                    "colorEnabled3": "#ffffff",
                                    "colorEnabled4": null,
                                    "colorEnabled5": null,
                                    "colorEnabled6": null,
                                    "colorEnabled7": null,
                                    "colorEnabled8": null,
                                    "colorEnabled9": "#ffffff",
                                    "color_temperature1": null,
                                    "color_temperature10": null,
                                    "color_temperature11": null,
                                    "color_temperature12": null,
                                    "color_temperature2": null,
                                    "color_temperature3": null,
                                    "color_temperature4": null,
                                    "color_temperature5": null,
                                    "color_temperature6": null,
                                    "color_temperature7": null,
                                    "color_temperature8": null,
                                    "color_temperature9": null,
                                    "count": 13,
                                    "ct_max1": null,
                                    "ct_max10": null,
                                    "ct_max11": null,
                                    "ct_max12": null,
                                    "ct_max2": null,
                                    "ct_max3": null,
                                    "ct_max4": null,
                                    "ct_max5": null,
                                    "ct_max6": null,
                                    "ct_max7": null,
                                    "ct_max8": null,
                                    "ct_max9": null,
                                    "ct_min1": null,
                                    "ct_min10": null,
                                    "ct_min11": null,
                                    "ct_min12": null,
                                    "ct_min2": null,
                                    "ct_min3": null,
                                    "ct_min4": null,
                                    "ct_min5": null,
                                    "ct_min6": null,
                                    "ct_min7": null,
                                    "ct_min8": null,
                                    "ct_min9": null,
                                    "doNotConfirm1": null,
                                    "doNotConfirm10": null,
                                    "doNotConfirm11": null,
                                    "doNotConfirm12": null,
                                    "doNotConfirm2": null,
                                    "doNotConfirm3": null,
                                    "doNotConfirm4": null,
                                    "doNotConfirm5": null,
                                    "doNotConfirm6": null,
                                    "doNotConfirm7": null,
                                    "doNotConfirm8": null,
                                    "doNotConfirm9": null,
                                    "doNotWantIncludeWidgets": false,
                                    "g_common": true,
                                    "g_switch-1": true,
                                    "g_switch-10": true,
                                    "g_switch-11": true,
                                    "g_switch-12": true,
                                    "g_switch-2": true,
                                    "g_switch-3": true,
                                    "g_switch-4": true,
                                    "g_switch-5": true,
                                    "g_switch-6": true,
                                    "g_switch-7": true,
                                    "g_switch-8": true,
                                    "g_switch-9": true,
                                    "green1": null,
                                    "green10": null,
                                    "green11": null,
                                    "green12": null,
                                    "green2": null,
                                    "green3": null,
                                    "green4": null,
                                    "green5": null,
                                    "green6": null,
                                    "green7": null,
                                    "green8": null,
                                    "green9": null,
                                    "height1": null,
                                    "height10": null,
                                    "height11": null,
                                    "height12": null,
                                    "height2": null,
                                    "height3": null,
                                    "height4": null,
                                    "height5": null,
                                    "height6": null,
                                    "height7": null,
                                    "height8": null,
                                    "height9": null,
                                    "hide1": null,
                                    "hide10": null,
                                    "hide11": null,
                                    "hide12": null,
                                    "hide2": null,
                                    "hide3": null,
                                    "hide4": null,
                                    "hide5": null,
                                    "hide6": null,
                                    "hide7": null,
                                    "hide8": null,
                                    "hide9": null,
                                    "hideBrightness1": null,
                                    "hideBrightness10": null,
                                    "hideBrightness11": null,
                                    "hideBrightness12": null,
                                    "hideBrightness2": null,
                                    "hideBrightness3": null,
                                    "hideBrightness4": null,
                                    "hideBrightness5": null,
                                    "hideBrightness6": null,
                                    "hideBrightness7": null,
                                    "hideBrightness8": null,
                                    "hideBrightness9": null,
                                    "hideChart1": true,
                                    "hideChart10": true,
                                    "hideChart11": true,
                                    "hideChart12": true,
                                    "hideChart2": true,
                                    "hideChart3": true,
                                    "hideChart4": true,
                                    "hideChart5": true,
                                    "hideChart6": true,
                                    "hideChart7": true,
                                    "hideChart8": true,
                                    "hideChart9": true,
                                    "hue1": null,
                                    "hue10": null,
                                    "hue11": null,
                                    "hue12": null,
                                    "hue2": null,
                                    "hue3": null,
                                    "hue4": null,
                                    "hue5": null,
                                    "hue6": null,
                                    "hue7": null,
                                    "hue8": null,
                                    "hue9": null,
                                    "icon1": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                    "icon10": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                    "icon11": null,
                                    "icon12": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                    "icon2": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                    "icon3": "../vis-2.0/tanken/blue.png",
                                    "icon4": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                    "icon5": null,
                                    "icon6": "../vis-2.0/tanken/green.png",
                                    "icon7": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                    "icon8": null,
                                    "icon9": "../vis-2.0/tanken/red.png",
                                    "iconEnabled1": null,
                                    "iconEnabled10": null,
                                    "iconEnabled11": null,
                                    "iconEnabled12": null,
                                    "iconEnabled2": null,
                                    "iconEnabled3": "../vis-2.0/tanken/blue.png",
                                    "iconEnabled4": null,
                                    "iconEnabled5": null,
                                    "iconEnabled6": "../vis-2.0/tanken/green.png",
                                    "iconEnabled7": null,
                                    "iconEnabled8": null,
                                    "iconEnabled9": "../vis-2.0/tanken/red.png",
                                    "iconEnabledSmall1": null,
                                    "iconEnabledSmall10": null,
                                    "iconEnabledSmall11": null,
                                    "iconEnabledSmall12": null,
                                    "iconEnabledSmall2": null,
                                    "iconEnabledSmall3": null,
                                    "iconEnabledSmall4": null,
                                    "iconEnabledSmall5": null,
                                    "iconEnabledSmall6": null,
                                    "iconEnabledSmall7": null,
                                    "iconEnabledSmall8": null,
                                    "iconEnabledSmall9": null,
                                    "iconSmall1": null,
                                    "iconSmall10": null,
                                    "iconSmall11": null,
                                    "iconSmall12": null,
                                    "iconSmall2": null,
                                    "iconSmall3": null,
                                    "iconSmall4": null,
                                    "iconSmall5": null,
                                    "iconSmall6": null,
                                    "iconSmall7": null,
                                    "iconSmall8": null,
                                    "iconSmall9": null,
                                    "infoActiveColor1": null,
                                    "infoActiveColor10": null,
                                    "infoActiveColor11": null,
                                    "infoActiveColor12": null,
                                    "infoActiveColor2": null,
                                    "infoActiveColor3": null,
                                    "infoActiveColor4": null,
                                    "infoActiveColor5": null,
                                    "infoActiveColor6": null,
                                    "infoActiveColor7": null,
                                    "infoActiveColor8": null,
                                    "infoActiveColor9": null,
                                    "infoActiveIcon1": null,
                                    "infoActiveIcon10": null,
                                    "infoActiveIcon11": null,
                                    "infoActiveIcon12": null,
                                    "infoActiveIcon2": null,
                                    "infoActiveIcon3": null,
                                    "infoActiveIcon4": null,
                                    "infoActiveIcon5": null,
                                    "infoActiveIcon6": null,
                                    "infoActiveIcon7": null,
                                    "infoActiveIcon8": null,
                                    "infoActiveIcon9": null,
                                    "infoActiveImage1": null,
                                    "infoActiveImage10": null,
                                    "infoActiveImage11": null,
                                    "infoActiveImage12": null,
                                    "infoActiveImage2": null,
                                    "infoActiveImage3": null,
                                    "infoActiveImage4": null,
                                    "infoActiveImage5": null,
                                    "infoActiveImage6": null,
                                    "infoActiveImage7": null,
                                    "infoActiveImage8": null,
                                    "infoActiveImage9": null,
                                    "infoActiveText1": null,
                                    "infoActiveText10": null,
                                    "infoActiveText11": null,
                                    "infoActiveText12": null,
                                    "infoActiveText2": null,
                                    "infoActiveText3": null,
                                    "infoActiveText4": null,
                                    "infoActiveText5": null,
                                    "infoActiveText6": null,
                                    "infoActiveText7": null,
                                    "infoActiveText8": null,
                                    "infoActiveText9": null,
                                    "infoInactiveColor1": null,
                                    "infoInactiveColor10": null,
                                    "infoInactiveColor11": null,
                                    "infoInactiveColor12": null,
                                    "infoInactiveColor2": null,
                                    "infoInactiveColor3": null,
                                    "infoInactiveColor4": null,
                                    "infoInactiveColor5": null,
                                    "infoInactiveColor6": null,
                                    "infoInactiveColor7": null,
                                    "infoInactiveColor8": null,
                                    "infoInactiveColor9": null,
                                    "infoInactiveIcon1": null,
                                    "infoInactiveIcon10": null,
                                    "infoInactiveIcon11": null,
                                    "infoInactiveIcon12": null,
                                    "infoInactiveIcon2": null,
                                    "infoInactiveIcon3": null,
                                    "infoInactiveIcon4": null,
                                    "infoInactiveIcon5": null,
                                    "infoInactiveIcon6": null,
                                    "infoInactiveIcon7": null,
                                    "infoInactiveIcon8": null,
                                    "infoInactiveIcon9": null,
                                    "infoInactiveImage1": null,
                                    "infoInactiveImage10": null,
                                    "infoInactiveImage11": null,
                                    "infoInactiveImage12": null,
                                    "infoInactiveImage2": null,
                                    "infoInactiveImage3": null,
                                    "infoInactiveImage4": null,
                                    "infoInactiveImage5": null,
                                    "infoInactiveImage6": null,
                                    "infoInactiveImage7": null,
                                    "infoInactiveImage8": null,
                                    "infoInactiveImage9": null,
                                    "infoInactiveText1": null,
                                    "infoInactiveText10": null,
                                    "infoInactiveText11": null,
                                    "infoInactiveText12": null,
                                    "infoInactiveText2": null,
                                    "infoInactiveText3": null,
                                    "infoInactiveText4": null,
                                    "infoInactiveText5": null,
                                    "infoInactiveText6": null,
                                    "infoInactiveText7": null,
                                    "infoInactiveText8": null,
                                    "infoInactiveText9": null,
                                    "lockColor1": null,
                                    "lockColor10": null,
                                    "lockColor11": null,
                                    "lockColor12": null,
                                    "lockColor2": null,
                                    "lockColor3": null,
                                    "lockColor4": null,
                                    "lockColor5": null,
                                    "lockColor6": null,
                                    "lockColor7": null,
                                    "lockColor8": null,
                                    "lockColor9": null,
                                    "luminance1": null,
                                    "luminance10": null,
                                    "luminance11": null,
                                    "luminance12": null,
                                    "luminance2": null,
                                    "luminance3": null,
                                    "luminance4": null,
                                    "luminance5": null,
                                    "luminance6": null,
                                    "luminance7": null,
                                    "luminance8": null,
                                    "luminance9": null,
                                    "noIcon1": false,
                                    "noIcon10": true,
                                    "noIcon11": true,
                                    "noIcon12": true,
                                    "noIcon2": true,
                                    "noIcon3": null,
                                    "noIcon4": true,
                                    "noIcon5": true,
                                    "noIcon6": null,
                                    "noIcon7": true,
                                    "noIcon8": true,
                                    "noIcon9": null,
                                    "noLockAnimation1": null,
                                    "noLockAnimation10": null,
                                    "noLockAnimation11": null,
                                    "noLockAnimation12": null,
                                    "noLockAnimation2": null,
                                    "noLockAnimation3": null,
                                    "noLockAnimation4": null,
                                    "noLockAnimation5": null,
                                    "noLockAnimation6": null,
                                    "noLockAnimation7": null,
                                    "noLockAnimation8": null,
                                    "noLockAnimation9": null,
                                    "noRgbPalette1": null,
                                    "noRgbPalette10": null,
                                    "noRgbPalette11": null,
                                    "noRgbPalette12": null,
                                    "noRgbPalette2": null,
                                    "noRgbPalette3": null,
                                    "noRgbPalette4": null,
                                    "noRgbPalette5": null,
                                    "noRgbPalette6": null,
                                    "noRgbPalette7": null,
                                    "noRgbPalette8": null,
                                    "noRgbPalette9": null,
                                    "oid-pincode1": null,
                                    "oid-pincode10": null,
                                    "oid-pincode11": null,
                                    "oid-pincode12": null,
                                    "oid-pincode2": null,
                                    "oid-pincode3": null,
                                    "oid-pincode4": null,
                                    "oid-pincode5": null,
                                    "oid-pincode6": null,
                                    "oid-pincode7": null,
                                    "oid-pincode8": null,
                                    "oid-pincode9": null,
                                    "oid1": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.street",
                                    "oid10": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.diesel.trend_24h_proj",
                                    "oid11": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.diesel.trend_24h_proj_price",
                                    "oid12": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.lastChecked",
                                    "oid2": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.place",
                                    "oid3": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.benzin_str",
                                    "oid4": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj",
                                    "oid5": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_price",
                                    "oid6": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.e10_str",
                                    "oid7": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.e10.trend_24h_proj",
                                    "oid8": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.e10.trend_24h_proj_price",
                                    "oid9": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.diesel_str",
                                    "open1": null,
                                    "open10": null,
                                    "open11": null,
                                    "open12": null,
                                    "open2": null,
                                    "open3": null,
                                    "open4": null,
                                    "open5": null,
                                    "open6": null,
                                    "open7": null,
                                    "open8": null,
                                    "open9": null,
                                    "orientation": "horizontal",
                                    "party1": null,
                                    "party10": null,
                                    "party11": null,
                                    "party12": null,
                                    "party2": null,
                                    "party3": null,
                                    "party4": null,
                                    "party5": null,
                                    "party6": null,
                                    "party7": null,
                                    "party8": null,
                                    "party9": null,
                                    "pincode1": null,
                                    "pincode10": null,
                                    "pincode11": null,
                                    "pincode12": null,
                                    "pincode2": null,
                                    "pincode3": null,
                                    "pincode4": null,
                                    "pincode5": null,
                                    "pincode6": null,
                                    "pincode7": null,
                                    "pincode8": null,
                                    "pincode9": null,
                                    "pincodeReturnButton1": "submit",
                                    "pincodeReturnButton10": "submit",
                                    "pincodeReturnButton11": "submit",
                                    "pincodeReturnButton12": "submit",
                                    "pincodeReturnButton2": "submit",
                                    "pincodeReturnButton3": "submit",
                                    "pincodeReturnButton4": "submit",
                                    "pincodeReturnButton5": "submit",
                                    "pincodeReturnButton6": "submit",
                                    "pincodeReturnButton7": "submit",
                                    "pincodeReturnButton8": "submit",
                                    "pincodeReturnButton9": "submit",
                                    "position1": null,
                                    "position10": null,
                                    "position11": null,
                                    "position12": null,
                                    "position2": null,
                                    "position3": null,
                                    "position4": null,
                                    "position5": null,
                                    "position6": null,
                                    "position7": null,
                                    "position8": null,
                                    "position9": null,
                                    "red1": null,
                                    "red10": null,
                                    "red11": null,
                                    "red12": null,
                                    "red2": null,
                                    "red3": null,
                                    "red4": null,
                                    "red5": null,
                                    "red6": null,
                                    "red7": null,
                                    "red8": null,
                                    "red9": null,
                                    "rgbType1": null,
                                    "rgbType10": null,
                                    "rgbType11": null,
                                    "rgbType12": null,
                                    "rgbType2": null,
                                    "rgbType3": null,
                                    "rgbType4": null,
                                    "rgbType5": null,
                                    "rgbType6": null,
                                    "rgbType7": null,
                                    "rgbType8": null,
                                    "rgbType9": null,
                                    "saturation1": null,
                                    "saturation10": null,
                                    "saturation11": null,
                                    "saturation12": null,
                                    "saturation2": null,
                                    "saturation3": null,
                                    "saturation4": null,
                                    "saturation5": null,
                                    "saturation6": null,
                                    "saturation7": null,
                                    "saturation8": null,
                                    "saturation9": null,
                                    "sensor1": null,
                                    "sensor10": null,
                                    "sensor11": null,
                                    "sensor12": null,
                                    "sensor2": null,
                                    "sensor3": null,
                                    "sensor4": null,
                                    "sensor5": null,
                                    "sensor6": null,
                                    "sensor7": null,
                                    "sensor8": null,
                                    "sensor9": null,
                                    "slideInvert1": null,
                                    "slideInvert10": null,
                                    "slideInvert11": null,
                                    "slideInvert12": null,
                                    "slideInvert2": null,
                                    "slideInvert3": null,
                                    "slideInvert4": null,
                                    "slideInvert5": null,
                                    "slideInvert6": null,
                                    "slideInvert7": null,
                                    "slideInvert8": null,
                                    "slideInvert9": null,
                                    "step1": null,
                                    "step10": null,
                                    "step11": null,
                                    "step12": null,
                                    "step2": null,
                                    "step3": null,
                                    "step4": null,
                                    "step5": null,
                                    "step6": null,
                                    "step7": null,
                                    "step8": null,
                                    "step9": null,
                                    "switch1": null,
                                    "switch10": null,
                                    "switch11": null,
                                    "switch12": null,
                                    "switch2": null,
                                    "switch3": null,
                                    "switch4": null,
                                    "switch5": null,
                                    "switch6": null,
                                    "switch7": null,
                                    "switch8": null,
                                    "switch9": null,
                                    "timeout1": 500,
                                    "timeout10": 500,
                                    "timeout11": 500,
                                    "timeout12": 500,
                                    "timeout2": 500,
                                    "timeout3": 500,
                                    "timeout4": 500,
                                    "timeout5": 500,
                                    "timeout6": 500,
                                    "timeout7": 500,
                                    "timeout8": 500,
                                    "timeout9": 500,
                                    "title1": "Straße",
                                    "title10": "Prognose 24h",
                                    "title11": "Preisprognose 24h",
                                    "title12": null,
                                    "title2": "Ort",
                                    "title3": "Super 95",
                                    "title4": "Prognose 24h",
                                    "title5": "Preisprognose 24h",
                                    "title6": "E10",
                                    "title7": "Prognose 24h",
                                    "title8": "Preisprognose 24h",
                                    "title9": "Diesel",
                                    "type": "lines",
                                    "type1": "info",
                                    "type10": "info",
                                    "type11": "info",
                                    "type12": "info",
                                    "type2": "info",
                                    "type3": "info",
                                    "type4": "info",
                                    "type5": "info",
                                    "type6": "info",
                                    "type7": "info",
                                    "type8": "info",
                                    "type9": "info",
                                    "undefined1": null,
                                    "undefined10": null,
                                    "undefined11": null,
                                    "undefined12": null,
                                    "undefined2": null,
                                    "undefined3": null,
                                    "undefined4": null,
                                    "undefined5": null,
                                    "undefined6": null,
                                    "undefined7": null,
                                    "undefined8": null,
                                    "undefined9": null,
                                    "unit1": null,
                                    "unit10": null,
                                    "unit11": "€",
                                    "unit12": null,
                                    "unit2": null,
                                    "unit3": "€",
                                    "unit4": null,
                                    "unit5": "€",
                                    "unit6": "€",
                                    "unit7": null,
                                    "unit8": "€",
                                    "unit9": "€",
                                    "vacuum-battery-oid1": null,
                                    "vacuum-battery-oid10": null,
                                    "vacuum-battery-oid11": null,
                                    "vacuum-battery-oid12": null,
                                    "vacuum-battery-oid2": null,
                                    "vacuum-battery-oid3": null,
                                    "vacuum-battery-oid4": null,
                                    "vacuum-battery-oid5": null,
                                    "vacuum-battery-oid6": null,
                                    "vacuum-battery-oid7": null,
                                    "vacuum-battery-oid8": null,
                                    "vacuum-battery-oid9": null,
                                    "vacuum-cleaning-count-oid1": null,
                                    "vacuum-cleaning-count-oid10": null,
                                    "vacuum-cleaning-count-oid11": null,
                                    "vacuum-cleaning-count-oid12": null,
                                    "vacuum-cleaning-count-oid2": null,
                                    "vacuum-cleaning-count-oid3": null,
                                    "vacuum-cleaning-count-oid4": null,
                                    "vacuum-cleaning-count-oid5": null,
                                    "vacuum-cleaning-count-oid6": null,
                                    "vacuum-cleaning-count-oid7": null,
                                    "vacuum-cleaning-count-oid8": null,
                                    "vacuum-cleaning-count-oid9": null,
                                    "vacuum-fan-speed-oid1": null,
                                    "vacuum-fan-speed-oid10": null,
                                    "vacuum-fan-speed-oid11": null,
                                    "vacuum-fan-speed-oid12": null,
                                    "vacuum-fan-speed-oid2": null,
                                    "vacuum-fan-speed-oid3": null,
                                    "vacuum-fan-speed-oid4": null,
                                    "vacuum-fan-speed-oid5": null,
                                    "vacuum-fan-speed-oid6": null,
                                    "vacuum-fan-speed-oid7": null,
                                    "vacuum-fan-speed-oid8": null,
                                    "vacuum-fan-speed-oid9": null,
                                    "vacuum-filter-left-oid1": null,
                                    "vacuum-filter-left-oid10": null,
                                    "vacuum-filter-left-oid11": null,
                                    "vacuum-filter-left-oid12": null,
                                    "vacuum-filter-left-oid2": null,
                                    "vacuum-filter-left-oid3": null,
                                    "vacuum-filter-left-oid4": null,
                                    "vacuum-filter-left-oid5": null,
                                    "vacuum-filter-left-oid6": null,
                                    "vacuum-filter-left-oid7": null,
                                    "vacuum-filter-left-oid8": null,
                                    "vacuum-filter-left-oid9": null,
                                    "vacuum-home-oid1": null,
                                    "vacuum-home-oid10": null,
                                    "vacuum-home-oid11": null,
                                    "vacuum-home-oid12": null,
                                    "vacuum-home-oid2": null,
                                    "vacuum-home-oid3": null,
                                    "vacuum-home-oid4": null,
                                    "vacuum-home-oid5": null,
                                    "vacuum-home-oid6": null,
                                    "vacuum-home-oid7": null,
                                    "vacuum-home-oid8": null,
                                    "vacuum-home-oid9": null,
                                    "vacuum-is-charging-oid1": null,
                                    "vacuum-is-charging-oid10": null,
                                    "vacuum-is-charging-oid11": null,
                                    "vacuum-is-charging-oid12": null,
                                    "vacuum-is-charging-oid2": null,
                                    "vacuum-is-charging-oid3": null,
                                    "vacuum-is-charging-oid4": null,
                                    "vacuum-is-charging-oid5": null,
                                    "vacuum-is-charging-oid6": null,
                                    "vacuum-is-charging-oid7": null,
                                    "vacuum-is-charging-oid8": null,
                                    "vacuum-is-charging-oid9": null,
                                    "vacuum-main-brush-left-oid1": null,
                                    "vacuum-main-brush-left-oid10": null,
                                    "vacuum-main-brush-left-oid11": null,
                                    "vacuum-main-brush-left-oid12": null,
                                    "vacuum-main-brush-left-oid2": null,
                                    "vacuum-main-brush-left-oid3": null,
                                    "vacuum-main-brush-left-oid4": null,
                                    "vacuum-main-brush-left-oid5": null,
                                    "vacuum-main-brush-left-oid6": null,
                                    "vacuum-main-brush-left-oid7": null,
                                    "vacuum-main-brush-left-oid8": null,
                                    "vacuum-main-brush-left-oid9": null,
                                    "vacuum-map64-oid1": null,
                                    "vacuum-map64-oid10": null,
                                    "vacuum-map64-oid11": null,
                                    "vacuum-map64-oid12": null,
                                    "vacuum-map64-oid2": null,
                                    "vacuum-map64-oid3": null,
                                    "vacuum-map64-oid4": null,
                                    "vacuum-map64-oid5": null,
                                    "vacuum-map64-oid6": null,
                                    "vacuum-map64-oid7": null,
                                    "vacuum-map64-oid8": null,
                                    "vacuum-map64-oid9": null,
                                    "vacuum-own-image1": null,
                                    "vacuum-own-image10": null,
                                    "vacuum-own-image11": null,
                                    "vacuum-own-image12": null,
                                    "vacuum-own-image2": null,
                                    "vacuum-own-image3": null,
                                    "vacuum-own-image4": null,
                                    "vacuum-own-image5": null,
                                    "vacuum-own-image6": null,
                                    "vacuum-own-image7": null,
                                    "vacuum-own-image8": null,
                                    "vacuum-own-image9": null,
                                    "vacuum-pause-oid1": null,
                                    "vacuum-pause-oid10": null,
                                    "vacuum-pause-oid11": null,
                                    "vacuum-pause-oid12": null,
                                    "vacuum-pause-oid2": null,
                                    "vacuum-pause-oid3": null,
                                    "vacuum-pause-oid4": null,
                                    "vacuum-pause-oid5": null,
                                    "vacuum-pause-oid6": null,
                                    "vacuum-pause-oid7": null,
                                    "vacuum-pause-oid8": null,
                                    "vacuum-pause-oid9": null,
                                    "vacuum-sensors-left-oid1": null,
                                    "vacuum-sensors-left-oid10": null,
                                    "vacuum-sensors-left-oid11": null,
                                    "vacuum-sensors-left-oid12": null,
                                    "vacuum-sensors-left-oid2": null,
                                    "vacuum-sensors-left-oid3": null,
                                    "vacuum-sensors-left-oid4": null,
                                    "vacuum-sensors-left-oid5": null,
                                    "vacuum-sensors-left-oid6": null,
                                    "vacuum-sensors-left-oid7": null,
                                    "vacuum-sensors-left-oid8": null,
                                    "vacuum-sensors-left-oid9": null,
                                    "vacuum-side-brush-left-oid1": null,
                                    "vacuum-side-brush-left-oid10": null,
                                    "vacuum-side-brush-left-oid11": null,
                                    "vacuum-side-brush-left-oid12": null,
                                    "vacuum-side-brush-left-oid2": null,
                                    "vacuum-side-brush-left-oid3": null,
                                    "vacuum-side-brush-left-oid4": null,
                                    "vacuum-side-brush-left-oid5": null,
                                    "vacuum-side-brush-left-oid6": null,
                                    "vacuum-side-brush-left-oid7": null,
                                    "vacuum-side-brush-left-oid8": null,
                                    "vacuum-side-brush-left-oid9": null,
                                    "vacuum-start-oid1": null,
                                    "vacuum-start-oid10": null,
                                    "vacuum-start-oid11": null,
                                    "vacuum-start-oid12": null,
                                    "vacuum-start-oid2": null,
                                    "vacuum-start-oid3": null,
                                    "vacuum-start-oid4": null,
                                    "vacuum-start-oid5": null,
                                    "vacuum-start-oid6": null,
                                    "vacuum-start-oid7": null,
                                    "vacuum-start-oid8": null,
                                    "vacuum-start-oid9": null,
                                    "vacuum-status-oid1": null,
                                    "vacuum-status-oid10": null,
                                    "vacuum-status-oid11": null,
                                    "vacuum-status-oid12": null,
                                    "vacuum-status-oid2": null,
                                    "vacuum-status-oid3": null,
                                    "vacuum-status-oid4": null,
                                    "vacuum-status-oid5": null,
                                    "vacuum-status-oid6": null,
                                    "vacuum-status-oid7": null,
                                    "vacuum-status-oid8": null,
                                    "vacuum-status-oid9": null,
                                    "vacuum-use-default-picture1": true,
                                    "vacuum-use-default-picture10": true,
                                    "vacuum-use-default-picture11": true,
                                    "vacuum-use-default-picture12": true,
                                    "vacuum-use-default-picture2": true,
                                    "vacuum-use-default-picture3": true,
                                    "vacuum-use-default-picture4": true,
                                    "vacuum-use-default-picture5": true,
                                    "vacuum-use-default-picture6": true,
                                    "vacuum-use-default-picture7": true,
                                    "vacuum-use-default-picture8": true,
                                    "vacuum-use-default-picture9": true,
                                    "vacuum-use-rooms1": null,
                                    "vacuum-use-rooms10": null,
                                    "vacuum-use-rooms11": null,
                                    "vacuum-use-rooms12": null,
                                    "vacuum-use-rooms2": null,
                                    "vacuum-use-rooms3": null,
                                    "vacuum-use-rooms4": null,
                                    "vacuum-use-rooms5": null,
                                    "vacuum-use-rooms6": null,
                                    "vacuum-use-rooms7": null,
                                    "vacuum-use-rooms8": null,
                                    "vacuum-use-rooms9": null,
                                    "visibility-cond1": "==",
                                    "visibility-cond10": "==",
                                    "visibility-cond11": "==",
                                    "visibility-cond12": "==",
                                    "visibility-cond2": "==",
                                    "visibility-cond3": "==",
                                    "visibility-cond4": "==",
                                    "visibility-cond5": "==",
                                    "visibility-cond6": "==",
                                    "visibility-cond7": "==",
                                    "visibility-cond8": "==",
                                    "visibility-cond9": "==",
                                    "visibility-oid1": null,
                                    "visibility-oid10": null,
                                    "visibility-oid11": null,
                                    "visibility-oid12": null,
                                    "visibility-oid2": null,
                                    "visibility-oid3": null,
                                    "visibility-oid4": null,
                                    "visibility-oid5": null,
                                    "visibility-oid6": null,
                                    "visibility-oid7": null,
                                    "visibility-oid8": null,
                                    "visibility-oid9": null,
                                    "visibility-val1": "1",
                                    "visibility-val10": "1",
                                    "visibility-val11": "1",
                                    "visibility-val12": "1",
                                    "visibility-val2": "1",
                                    "visibility-val3": "1",
                                    "visibility-val4": "1",
                                    "visibility-val5": "1",
                                    "visibility-val6": "1",
                                    "visibility-val7": "1",
                                    "visibility-val8": "1",
                                    "visibility-val9": "1",
                                    "white1": null,
                                    "white10": null,
                                    "white11": null,
                                    "white12": null,
                                    "white2": null,
                                    "white3": null,
                                    "white4": null,
                                    "white5": null,
                                    "white6": null,
                                    "white7": null,
                                    "white8": null,
                                    "white9": null,
                                    "whiteMode1": null,
                                    "whiteMode10": null,
                                    "whiteMode11": null,
                                    "whiteMode12": null,
                                    "whiteMode2": null,
                                    "whiteMode3": null,
                                    "whiteMode4": null,
                                    "whiteMode5": null,
                                    "whiteMode6": null,
                                    "whiteMode7": null,
                                    "whiteMode8": null,
                                    "whiteMode9": null,
                                    "widget1": null,
                                    "widget10": null,
                                    "widget11": null,
                                    "widget12": null,
                                    "widget2": null,
                                    "widget3": null,
                                    "widget4": null,
                                    "widget5": null,
                                    "widget6": null,
                                    "widget7": null,
                                    "widget8": null,
                                    "widget9": null,
                                    "widgetTitle": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.name}",
                                    "working1": null,
                                    "working10": null,
                                    "working11": null,
                                    "working12": null,
                                    "working2": null,
                                    "working3": null,
                                    "working4": null,
                                    "working5": null,
                                    "working6": null,
                                    "working7": null,
                                    "working8": null,
                                    "working9": null,
                                    "oid13": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.lastPriceUpdate",
                                    "type13": "info",
                                    "noIcon13": true,
                                    "icon13": "",
                                    "iconSmall13": null,
                                    "iconEnabled13": null,
                                    "iconEnabledSmall13": null,
                                    "color13": null,
                                    "colorEnabled13": null,
                                    "slideInvert13": null,
                                    "title13": null,
                                    "unit13": null,
                                    "step13": null,
                                    "hideChart13": true,
                                    "chartPeriod13": 60,
                                    "buttonText13": null,
                                    "buttonIcon13": null,
                                    "buttonImage13": null,
                                    "buttonIconActive13": null,
                                    "buttonImageActive13": null,
                                    "infoInactiveText13": null,
                                    "infoActiveText13": null,
                                    "infoInactiveIcon13": null,
                                    "infoActiveIcon13": null,
                                    "infoInactiveImage13": null,
                                    "infoActiveImage13": null,
                                    "infoInactiveColor13": null,
                                    "infoActiveColor13": null,
                                    "widget13": null,
                                    "height13": null,
                                    "position13": null,
                                    "hide13": null,
                                    "actual13": null,
                                    "boost13": null,
                                    "party13": null,
                                    "switch13": null,
                                    "brightness13": null,
                                    "rgbType13": null,
                                    "red13": null,
                                    "green13": null,
                                    "blue13": null,
                                    "white13": null,
                                    "color_temperature13": null,
                                    "ct_min13": null,
                                    "ct_max13": null,
                                    "hue13": null,
                                    "saturation13": null,
                                    "luminance13": null,
                                    "hideBrightness13": null,
                                    "whiteMode13": null,
                                    "noRgbPalette13": null,
                                    "open13": null,
                                    "working13": null,
                                    "sensor13": null,
                                    "pincode13": null,
                                    "oid-pincode13": null,
                                    "doNotConfirm13": null,
                                    "noLockAnimation13": null,
                                    "lockColor13": null,
                                    "pincodeReturnButton13": "submit",
                                    "timeout13": 500,
                                    "vacuum-status-oid13": null,
                                    "vacuum-battery-oid13": null,
                                    "vacuum-is-charging-oid13": null,
                                    "vacuum-fan-speed-oid13": null,
                                    "vacuum-sensors-left-oid13": null,
                                    "vacuum-filter-left-oid13": null,
                                    "vacuum-main-brush-left-oid13": null,
                                    "vacuum-side-brush-left-oid13": null,
                                    "vacuum-cleaning-count-oid13": null,
                                    "vacuum-use-rooms13": null,
                                    "vacuum-map64-oid13": null,
                                    "vacuum-use-default-picture13": true,
                                    "vacuum-own-image13": null,
                                    "vacuum-start-oid13": null,
                                    "vacuum-home-oid13": null,
                                    "vacuum-pause-oid13": null,
                                    "undefined13": null,
                                    "visibility-oid13": null,
                                    "visibility-cond13": "==",
                                    "visibility-val13": "1",
                                    "g_switch-13": true,
                                    "visibility-oid": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.isOpen",
                                    "visibility-cond": "==",
                                    "visibility-val": "false",
                                    "visibility-groups": null,
                                    "visibility-groups-action": "hide",
                                    "g_visibility": true
                                  },
                                  "style": {
                                    "bindings": [],
                                    "left": -6,
                                    "top": 14,
                                    "width": "100%",
                                    "height": "588px",
                                    "position": "relative"
                                  },
                                  "widgetSet": "vis-2-widgets-material",
                                  "_id": "i000001"
                                }
                              ]
                              
                              Ro75R 1 Antwort Letzte Antwort
                              0
                              • D Dragon

                                Hier habe ich mal etwas für die Vis 2 gebastelt.

                                Im Editor einfach die Zahlen durch die Zahlen eurer Tankstelle ersetzen und importieren. Funktioniert hervorragend.

                                [
                                  {
                                    "tpl": "tplMaterial2Switches",
                                    "data": {
                                      "actual1": null,
                                      "actual10": null,
                                      "actual11": null,
                                      "actual12": null,
                                      "actual2": null,
                                      "actual3": null,
                                      "actual4": null,
                                      "actual5": null,
                                      "actual6": null,
                                      "actual7": null,
                                      "actual8": null,
                                      "actual9": null,
                                      "allSwitch": false,
                                      "bindings": [
                                        "widgetTitle",
                                        "icon2",
                                        "icon10",
                                        "infoActiveIcon1",
                                        "icon1"
                                      ],
                                      "blue1": null,
                                      "blue10": null,
                                      "blue11": null,
                                      "blue12": null,
                                      "blue2": null,
                                      "blue3": null,
                                      "blue4": null,
                                      "blue5": null,
                                      "blue6": null,
                                      "blue7": null,
                                      "blue8": null,
                                      "blue9": null,
                                      "boost1": null,
                                      "boost10": null,
                                      "boost11": null,
                                      "boost12": null,
                                      "boost2": null,
                                      "boost3": null,
                                      "boost4": null,
                                      "boost5": null,
                                      "boost6": null,
                                      "boost7": null,
                                      "boost8": null,
                                      "boost9": null,
                                      "brightness1": null,
                                      "brightness10": null,
                                      "brightness11": null,
                                      "brightness12": null,
                                      "brightness2": null,
                                      "brightness3": null,
                                      "brightness4": null,
                                      "brightness5": null,
                                      "brightness6": null,
                                      "brightness7": null,
                                      "brightness8": null,
                                      "brightness9": null,
                                      "buttonIcon1": null,
                                      "buttonIcon10": null,
                                      "buttonIcon11": null,
                                      "buttonIcon12": null,
                                      "buttonIcon2": null,
                                      "buttonIcon3": null,
                                      "buttonIcon4": null,
                                      "buttonIcon5": null,
                                      "buttonIcon6": null,
                                      "buttonIcon7": null,
                                      "buttonIcon8": null,
                                      "buttonIcon9": null,
                                      "buttonIconActive1": null,
                                      "buttonIconActive10": null,
                                      "buttonIconActive11": null,
                                      "buttonIconActive12": null,
                                      "buttonIconActive2": null,
                                      "buttonIconActive3": null,
                                      "buttonIconActive4": null,
                                      "buttonIconActive5": null,
                                      "buttonIconActive6": null,
                                      "buttonIconActive7": null,
                                      "buttonIconActive8": null,
                                      "buttonIconActive9": null,
                                      "buttonImage1": null,
                                      "buttonImage10": null,
                                      "buttonImage11": null,
                                      "buttonImage12": null,
                                      "buttonImage2": null,
                                      "buttonImage3": null,
                                      "buttonImage4": null,
                                      "buttonImage5": null,
                                      "buttonImage6": null,
                                      "buttonImage7": null,
                                      "buttonImage8": null,
                                      "buttonImage9": null,
                                      "buttonImageActive1": null,
                                      "buttonImageActive10": null,
                                      "buttonImageActive11": null,
                                      "buttonImageActive12": null,
                                      "buttonImageActive2": null,
                                      "buttonImageActive3": null,
                                      "buttonImageActive4": null,
                                      "buttonImageActive5": null,
                                      "buttonImageActive6": null,
                                      "buttonImageActive7": null,
                                      "buttonImageActive8": null,
                                      "buttonImageActive9": null,
                                      "buttonText1": null,
                                      "buttonText10": null,
                                      "buttonText11": null,
                                      "buttonText12": null,
                                      "buttonText2": null,
                                      "buttonText3": null,
                                      "buttonText4": null,
                                      "buttonText5": null,
                                      "buttonText6": null,
                                      "buttonText7": null,
                                      "buttonText8": null,
                                      "buttonText9": null,
                                      "buttonsWidth": 120,
                                      "chartPeriod1": 60,
                                      "chartPeriod10": 60,
                                      "chartPeriod11": 60,
                                      "chartPeriod12": 60,
                                      "chartPeriod2": 60,
                                      "chartPeriod3": 10080,
                                      "chartPeriod4": 60,
                                      "chartPeriod5": 60,
                                      "chartPeriod6": 60,
                                      "chartPeriod7": 60,
                                      "chartPeriod8": 60,
                                      "chartPeriod9": 60,
                                      "color1": null,
                                      "color10": null,
                                      "color11": null,
                                      "color12": null,
                                      "color2": null,
                                      "color3": "#ffffff",
                                      "color4": null,
                                      "color5": null,
                                      "color6": null,
                                      "color7": null,
                                      "color8": null,
                                      "color9": "#ffffff",
                                      "colorEnabled1": null,
                                      "colorEnabled10": null,
                                      "colorEnabled11": null,
                                      "colorEnabled12": null,
                                      "colorEnabled2": null,
                                      "colorEnabled3": "#ffffff",
                                      "colorEnabled4": null,
                                      "colorEnabled5": null,
                                      "colorEnabled6": null,
                                      "colorEnabled7": null,
                                      "colorEnabled8": null,
                                      "colorEnabled9": "#ffffff",
                                      "color_temperature1": null,
                                      "color_temperature10": null,
                                      "color_temperature11": null,
                                      "color_temperature12": null,
                                      "color_temperature2": null,
                                      "color_temperature3": null,
                                      "color_temperature4": null,
                                      "color_temperature5": null,
                                      "color_temperature6": null,
                                      "color_temperature7": null,
                                      "color_temperature8": null,
                                      "color_temperature9": null,
                                      "count": 13,
                                      "ct_max1": null,
                                      "ct_max10": null,
                                      "ct_max11": null,
                                      "ct_max12": null,
                                      "ct_max2": null,
                                      "ct_max3": null,
                                      "ct_max4": null,
                                      "ct_max5": null,
                                      "ct_max6": null,
                                      "ct_max7": null,
                                      "ct_max8": null,
                                      "ct_max9": null,
                                      "ct_min1": null,
                                      "ct_min10": null,
                                      "ct_min11": null,
                                      "ct_min12": null,
                                      "ct_min2": null,
                                      "ct_min3": null,
                                      "ct_min4": null,
                                      "ct_min5": null,
                                      "ct_min6": null,
                                      "ct_min7": null,
                                      "ct_min8": null,
                                      "ct_min9": null,
                                      "doNotConfirm1": null,
                                      "doNotConfirm10": null,
                                      "doNotConfirm11": null,
                                      "doNotConfirm12": null,
                                      "doNotConfirm2": null,
                                      "doNotConfirm3": null,
                                      "doNotConfirm4": null,
                                      "doNotConfirm5": null,
                                      "doNotConfirm6": null,
                                      "doNotConfirm7": null,
                                      "doNotConfirm8": null,
                                      "doNotConfirm9": null,
                                      "doNotWantIncludeWidgets": false,
                                      "g_common": true,
                                      "g_switch-1": true,
                                      "g_switch-10": true,
                                      "g_switch-11": true,
                                      "g_switch-12": true,
                                      "g_switch-2": true,
                                      "g_switch-3": true,
                                      "g_switch-4": true,
                                      "g_switch-5": true,
                                      "g_switch-6": true,
                                      "g_switch-7": true,
                                      "g_switch-8": true,
                                      "g_switch-9": true,
                                      "green1": null,
                                      "green10": null,
                                      "green11": null,
                                      "green12": null,
                                      "green2": null,
                                      "green3": null,
                                      "green4": null,
                                      "green5": null,
                                      "green6": null,
                                      "green7": null,
                                      "green8": null,
                                      "green9": null,
                                      "height1": null,
                                      "height10": null,
                                      "height11": null,
                                      "height12": null,
                                      "height2": null,
                                      "height3": null,
                                      "height4": null,
                                      "height5": null,
                                      "height6": null,
                                      "height7": null,
                                      "height8": null,
                                      "height9": null,
                                      "hide1": null,
                                      "hide10": null,
                                      "hide11": null,
                                      "hide12": null,
                                      "hide2": null,
                                      "hide3": null,
                                      "hide4": null,
                                      "hide5": null,
                                      "hide6": null,
                                      "hide7": null,
                                      "hide8": null,
                                      "hide9": null,
                                      "hideBrightness1": null,
                                      "hideBrightness10": null,
                                      "hideBrightness11": null,
                                      "hideBrightness12": null,
                                      "hideBrightness2": null,
                                      "hideBrightness3": null,
                                      "hideBrightness4": null,
                                      "hideBrightness5": null,
                                      "hideBrightness6": null,
                                      "hideBrightness7": null,
                                      "hideBrightness8": null,
                                      "hideBrightness9": null,
                                      "hideChart1": true,
                                      "hideChart10": true,
                                      "hideChart11": true,
                                      "hideChart12": true,
                                      "hideChart2": true,
                                      "hideChart3": true,
                                      "hideChart4": true,
                                      "hideChart5": true,
                                      "hideChart6": true,
                                      "hideChart7": true,
                                      "hideChart8": true,
                                      "hideChart9": true,
                                      "hue1": null,
                                      "hue10": null,
                                      "hue11": null,
                                      "hue12": null,
                                      "hue2": null,
                                      "hue3": null,
                                      "hue4": null,
                                      "hue5": null,
                                      "hue6": null,
                                      "hue7": null,
                                      "hue8": null,
                                      "hue9": null,
                                      "icon1": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                      "icon10": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                      "icon11": null,
                                      "icon12": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                      "icon2": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.image}",
                                      "icon3": "../vis-2.0/tanken/blue.png",
                                      "icon4": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                      "icon5": null,
                                      "icon6": "../vis-2.0/tanken/green.png",
                                      "icon7": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_icon}",
                                      "icon8": null,
                                      "icon9": "../vis-2.0/tanken/red.png",
                                      "iconEnabled1": null,
                                      "iconEnabled10": null,
                                      "iconEnabled11": null,
                                      "iconEnabled12": null,
                                      "iconEnabled2": null,
                                      "iconEnabled3": "../vis-2.0/tanken/blue.png",
                                      "iconEnabled4": null,
                                      "iconEnabled5": null,
                                      "iconEnabled6": "../vis-2.0/tanken/green.png",
                                      "iconEnabled7": null,
                                      "iconEnabled8": null,
                                      "iconEnabled9": "../vis-2.0/tanken/red.png",
                                      "iconEnabledSmall1": null,
                                      "iconEnabledSmall10": null,
                                      "iconEnabledSmall11": null,
                                      "iconEnabledSmall12": null,
                                      "iconEnabledSmall2": null,
                                      "iconEnabledSmall3": null,
                                      "iconEnabledSmall4": null,
                                      "iconEnabledSmall5": null,
                                      "iconEnabledSmall6": null,
                                      "iconEnabledSmall7": null,
                                      "iconEnabledSmall8": null,
                                      "iconEnabledSmall9": null,
                                      "iconSmall1": null,
                                      "iconSmall10": null,
                                      "iconSmall11": null,
                                      "iconSmall12": null,
                                      "iconSmall2": null,
                                      "iconSmall3": null,
                                      "iconSmall4": null,
                                      "iconSmall5": null,
                                      "iconSmall6": null,
                                      "iconSmall7": null,
                                      "iconSmall8": null,
                                      "iconSmall9": null,
                                      "infoActiveColor1": null,
                                      "infoActiveColor10": null,
                                      "infoActiveColor11": null,
                                      "infoActiveColor12": null,
                                      "infoActiveColor2": null,
                                      "infoActiveColor3": null,
                                      "infoActiveColor4": null,
                                      "infoActiveColor5": null,
                                      "infoActiveColor6": null,
                                      "infoActiveColor7": null,
                                      "infoActiveColor8": null,
                                      "infoActiveColor9": null,
                                      "infoActiveIcon1": null,
                                      "infoActiveIcon10": null,
                                      "infoActiveIcon11": null,
                                      "infoActiveIcon12": null,
                                      "infoActiveIcon2": null,
                                      "infoActiveIcon3": null,
                                      "infoActiveIcon4": null,
                                      "infoActiveIcon5": null,
                                      "infoActiveIcon6": null,
                                      "infoActiveIcon7": null,
                                      "infoActiveIcon8": null,
                                      "infoActiveIcon9": null,
                                      "infoActiveImage1": null,
                                      "infoActiveImage10": null,
                                      "infoActiveImage11": null,
                                      "infoActiveImage12": null,
                                      "infoActiveImage2": null,
                                      "infoActiveImage3": null,
                                      "infoActiveImage4": null,
                                      "infoActiveImage5": null,
                                      "infoActiveImage6": null,
                                      "infoActiveImage7": null,
                                      "infoActiveImage8": null,
                                      "infoActiveImage9": null,
                                      "infoActiveText1": null,
                                      "infoActiveText10": null,
                                      "infoActiveText11": null,
                                      "infoActiveText12": null,
                                      "infoActiveText2": null,
                                      "infoActiveText3": null,
                                      "infoActiveText4": null,
                                      "infoActiveText5": null,
                                      "infoActiveText6": null,
                                      "infoActiveText7": null,
                                      "infoActiveText8": null,
                                      "infoActiveText9": null,
                                      "infoInactiveColor1": null,
                                      "infoInactiveColor10": null,
                                      "infoInactiveColor11": null,
                                      "infoInactiveColor12": null,
                                      "infoInactiveColor2": null,
                                      "infoInactiveColor3": null,
                                      "infoInactiveColor4": null,
                                      "infoInactiveColor5": null,
                                      "infoInactiveColor6": null,
                                      "infoInactiveColor7": null,
                                      "infoInactiveColor8": null,
                                      "infoInactiveColor9": null,
                                      "infoInactiveIcon1": null,
                                      "infoInactiveIcon10": null,
                                      "infoInactiveIcon11": null,
                                      "infoInactiveIcon12": null,
                                      "infoInactiveIcon2": null,
                                      "infoInactiveIcon3": null,
                                      "infoInactiveIcon4": null,
                                      "infoInactiveIcon5": null,
                                      "infoInactiveIcon6": null,
                                      "infoInactiveIcon7": null,
                                      "infoInactiveIcon8": null,
                                      "infoInactiveIcon9": null,
                                      "infoInactiveImage1": null,
                                      "infoInactiveImage10": null,
                                      "infoInactiveImage11": null,
                                      "infoInactiveImage12": null,
                                      "infoInactiveImage2": null,
                                      "infoInactiveImage3": null,
                                      "infoInactiveImage4": null,
                                      "infoInactiveImage5": null,
                                      "infoInactiveImage6": null,
                                      "infoInactiveImage7": null,
                                      "infoInactiveImage8": null,
                                      "infoInactiveImage9": null,
                                      "infoInactiveText1": null,
                                      "infoInactiveText10": null,
                                      "infoInactiveText11": null,
                                      "infoInactiveText12": null,
                                      "infoInactiveText2": null,
                                      "infoInactiveText3": null,
                                      "infoInactiveText4": null,
                                      "infoInactiveText5": null,
                                      "infoInactiveText6": null,
                                      "infoInactiveText7": null,
                                      "infoInactiveText8": null,
                                      "infoInactiveText9": null,
                                      "lockColor1": null,
                                      "lockColor10": null,
                                      "lockColor11": null,
                                      "lockColor12": null,
                                      "lockColor2": null,
                                      "lockColor3": null,
                                      "lockColor4": null,
                                      "lockColor5": null,
                                      "lockColor6": null,
                                      "lockColor7": null,
                                      "lockColor8": null,
                                      "lockColor9": null,
                                      "luminance1": null,
                                      "luminance10": null,
                                      "luminance11": null,
                                      "luminance12": null,
                                      "luminance2": null,
                                      "luminance3": null,
                                      "luminance4": null,
                                      "luminance5": null,
                                      "luminance6": null,
                                      "luminance7": null,
                                      "luminance8": null,
                                      "luminance9": null,
                                      "noIcon1": false,
                                      "noIcon10": true,
                                      "noIcon11": true,
                                      "noIcon12": true,
                                      "noIcon2": true,
                                      "noIcon3": null,
                                      "noIcon4": true,
                                      "noIcon5": true,
                                      "noIcon6": null,
                                      "noIcon7": true,
                                      "noIcon8": true,
                                      "noIcon9": null,
                                      "noLockAnimation1": null,
                                      "noLockAnimation10": null,
                                      "noLockAnimation11": null,
                                      "noLockAnimation12": null,
                                      "noLockAnimation2": null,
                                      "noLockAnimation3": null,
                                      "noLockAnimation4": null,
                                      "noLockAnimation5": null,
                                      "noLockAnimation6": null,
                                      "noLockAnimation7": null,
                                      "noLockAnimation8": null,
                                      "noLockAnimation9": null,
                                      "noRgbPalette1": null,
                                      "noRgbPalette10": null,
                                      "noRgbPalette11": null,
                                      "noRgbPalette12": null,
                                      "noRgbPalette2": null,
                                      "noRgbPalette3": null,
                                      "noRgbPalette4": null,
                                      "noRgbPalette5": null,
                                      "noRgbPalette6": null,
                                      "noRgbPalette7": null,
                                      "noRgbPalette8": null,
                                      "noRgbPalette9": null,
                                      "oid-pincode1": null,
                                      "oid-pincode10": null,
                                      "oid-pincode11": null,
                                      "oid-pincode12": null,
                                      "oid-pincode2": null,
                                      "oid-pincode3": null,
                                      "oid-pincode4": null,
                                      "oid-pincode5": null,
                                      "oid-pincode6": null,
                                      "oid-pincode7": null,
                                      "oid-pincode8": null,
                                      "oid-pincode9": null,
                                      "oid1": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.street",
                                      "oid10": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.diesel.trend_24h_proj",
                                      "oid11": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.diesel.trend_24h_proj_price",
                                      "oid12": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.lastChecked",
                                      "oid2": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.place",
                                      "oid3": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.benzin_str",
                                      "oid4": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj",
                                      "oid5": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.benzin.trend_24h_proj_price",
                                      "oid6": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.e10_str",
                                      "oid7": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.e10.trend_24h_proj",
                                      "oid8": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.aspects.e10.trend_24h_proj_price",
                                      "oid9": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.diesel_str",
                                      "open1": null,
                                      "open10": null,
                                      "open11": null,
                                      "open12": null,
                                      "open2": null,
                                      "open3": null,
                                      "open4": null,
                                      "open5": null,
                                      "open6": null,
                                      "open7": null,
                                      "open8": null,
                                      "open9": null,
                                      "orientation": "horizontal",
                                      "party1": null,
                                      "party10": null,
                                      "party11": null,
                                      "party12": null,
                                      "party2": null,
                                      "party3": null,
                                      "party4": null,
                                      "party5": null,
                                      "party6": null,
                                      "party7": null,
                                      "party8": null,
                                      "party9": null,
                                      "pincode1": null,
                                      "pincode10": null,
                                      "pincode11": null,
                                      "pincode12": null,
                                      "pincode2": null,
                                      "pincode3": null,
                                      "pincode4": null,
                                      "pincode5": null,
                                      "pincode6": null,
                                      "pincode7": null,
                                      "pincode8": null,
                                      "pincode9": null,
                                      "pincodeReturnButton1": "submit",
                                      "pincodeReturnButton10": "submit",
                                      "pincodeReturnButton11": "submit",
                                      "pincodeReturnButton12": "submit",
                                      "pincodeReturnButton2": "submit",
                                      "pincodeReturnButton3": "submit",
                                      "pincodeReturnButton4": "submit",
                                      "pincodeReturnButton5": "submit",
                                      "pincodeReturnButton6": "submit",
                                      "pincodeReturnButton7": "submit",
                                      "pincodeReturnButton8": "submit",
                                      "pincodeReturnButton9": "submit",
                                      "position1": null,
                                      "position10": null,
                                      "position11": null,
                                      "position12": null,
                                      "position2": null,
                                      "position3": null,
                                      "position4": null,
                                      "position5": null,
                                      "position6": null,
                                      "position7": null,
                                      "position8": null,
                                      "position9": null,
                                      "red1": null,
                                      "red10": null,
                                      "red11": null,
                                      "red12": null,
                                      "red2": null,
                                      "red3": null,
                                      "red4": null,
                                      "red5": null,
                                      "red6": null,
                                      "red7": null,
                                      "red8": null,
                                      "red9": null,
                                      "rgbType1": null,
                                      "rgbType10": null,
                                      "rgbType11": null,
                                      "rgbType12": null,
                                      "rgbType2": null,
                                      "rgbType3": null,
                                      "rgbType4": null,
                                      "rgbType5": null,
                                      "rgbType6": null,
                                      "rgbType7": null,
                                      "rgbType8": null,
                                      "rgbType9": null,
                                      "saturation1": null,
                                      "saturation10": null,
                                      "saturation11": null,
                                      "saturation12": null,
                                      "saturation2": null,
                                      "saturation3": null,
                                      "saturation4": null,
                                      "saturation5": null,
                                      "saturation6": null,
                                      "saturation7": null,
                                      "saturation8": null,
                                      "saturation9": null,
                                      "sensor1": null,
                                      "sensor10": null,
                                      "sensor11": null,
                                      "sensor12": null,
                                      "sensor2": null,
                                      "sensor3": null,
                                      "sensor4": null,
                                      "sensor5": null,
                                      "sensor6": null,
                                      "sensor7": null,
                                      "sensor8": null,
                                      "sensor9": null,
                                      "slideInvert1": null,
                                      "slideInvert10": null,
                                      "slideInvert11": null,
                                      "slideInvert12": null,
                                      "slideInvert2": null,
                                      "slideInvert3": null,
                                      "slideInvert4": null,
                                      "slideInvert5": null,
                                      "slideInvert6": null,
                                      "slideInvert7": null,
                                      "slideInvert8": null,
                                      "slideInvert9": null,
                                      "step1": null,
                                      "step10": null,
                                      "step11": null,
                                      "step12": null,
                                      "step2": null,
                                      "step3": null,
                                      "step4": null,
                                      "step5": null,
                                      "step6": null,
                                      "step7": null,
                                      "step8": null,
                                      "step9": null,
                                      "switch1": null,
                                      "switch10": null,
                                      "switch11": null,
                                      "switch12": null,
                                      "switch2": null,
                                      "switch3": null,
                                      "switch4": null,
                                      "switch5": null,
                                      "switch6": null,
                                      "switch7": null,
                                      "switch8": null,
                                      "switch9": null,
                                      "timeout1": 500,
                                      "timeout10": 500,
                                      "timeout11": 500,
                                      "timeout12": 500,
                                      "timeout2": 500,
                                      "timeout3": 500,
                                      "timeout4": 500,
                                      "timeout5": 500,
                                      "timeout6": 500,
                                      "timeout7": 500,
                                      "timeout8": 500,
                                      "timeout9": 500,
                                      "title1": "Straße",
                                      "title10": "Prognose 24h",
                                      "title11": "Preisprognose 24h",
                                      "title12": null,
                                      "title2": "Ort",
                                      "title3": "Super 95",
                                      "title4": "Prognose 24h",
                                      "title5": "Preisprognose 24h",
                                      "title6": "E10",
                                      "title7": "Prognose 24h",
                                      "title8": "Preisprognose 24h",
                                      "title9": "Diesel",
                                      "type": "lines",
                                      "type1": "info",
                                      "type10": "info",
                                      "type11": "info",
                                      "type12": "info",
                                      "type2": "info",
                                      "type3": "info",
                                      "type4": "info",
                                      "type5": "info",
                                      "type6": "info",
                                      "type7": "info",
                                      "type8": "info",
                                      "type9": "info",
                                      "undefined1": null,
                                      "undefined10": null,
                                      "undefined11": null,
                                      "undefined12": null,
                                      "undefined2": null,
                                      "undefined3": null,
                                      "undefined4": null,
                                      "undefined5": null,
                                      "undefined6": null,
                                      "undefined7": null,
                                      "undefined8": null,
                                      "undefined9": null,
                                      "unit1": null,
                                      "unit10": null,
                                      "unit11": "€",
                                      "unit12": null,
                                      "unit2": null,
                                      "unit3": "€",
                                      "unit4": null,
                                      "unit5": "€",
                                      "unit6": "€",
                                      "unit7": null,
                                      "unit8": "€",
                                      "unit9": "€",
                                      "vacuum-battery-oid1": null,
                                      "vacuum-battery-oid10": null,
                                      "vacuum-battery-oid11": null,
                                      "vacuum-battery-oid12": null,
                                      "vacuum-battery-oid2": null,
                                      "vacuum-battery-oid3": null,
                                      "vacuum-battery-oid4": null,
                                      "vacuum-battery-oid5": null,
                                      "vacuum-battery-oid6": null,
                                      "vacuum-battery-oid7": null,
                                      "vacuum-battery-oid8": null,
                                      "vacuum-battery-oid9": null,
                                      "vacuum-cleaning-count-oid1": null,
                                      "vacuum-cleaning-count-oid10": null,
                                      "vacuum-cleaning-count-oid11": null,
                                      "vacuum-cleaning-count-oid12": null,
                                      "vacuum-cleaning-count-oid2": null,
                                      "vacuum-cleaning-count-oid3": null,
                                      "vacuum-cleaning-count-oid4": null,
                                      "vacuum-cleaning-count-oid5": null,
                                      "vacuum-cleaning-count-oid6": null,
                                      "vacuum-cleaning-count-oid7": null,
                                      "vacuum-cleaning-count-oid8": null,
                                      "vacuum-cleaning-count-oid9": null,
                                      "vacuum-fan-speed-oid1": null,
                                      "vacuum-fan-speed-oid10": null,
                                      "vacuum-fan-speed-oid11": null,
                                      "vacuum-fan-speed-oid12": null,
                                      "vacuum-fan-speed-oid2": null,
                                      "vacuum-fan-speed-oid3": null,
                                      "vacuum-fan-speed-oid4": null,
                                      "vacuum-fan-speed-oid5": null,
                                      "vacuum-fan-speed-oid6": null,
                                      "vacuum-fan-speed-oid7": null,
                                      "vacuum-fan-speed-oid8": null,
                                      "vacuum-fan-speed-oid9": null,
                                      "vacuum-filter-left-oid1": null,
                                      "vacuum-filter-left-oid10": null,
                                      "vacuum-filter-left-oid11": null,
                                      "vacuum-filter-left-oid12": null,
                                      "vacuum-filter-left-oid2": null,
                                      "vacuum-filter-left-oid3": null,
                                      "vacuum-filter-left-oid4": null,
                                      "vacuum-filter-left-oid5": null,
                                      "vacuum-filter-left-oid6": null,
                                      "vacuum-filter-left-oid7": null,
                                      "vacuum-filter-left-oid8": null,
                                      "vacuum-filter-left-oid9": null,
                                      "vacuum-home-oid1": null,
                                      "vacuum-home-oid10": null,
                                      "vacuum-home-oid11": null,
                                      "vacuum-home-oid12": null,
                                      "vacuum-home-oid2": null,
                                      "vacuum-home-oid3": null,
                                      "vacuum-home-oid4": null,
                                      "vacuum-home-oid5": null,
                                      "vacuum-home-oid6": null,
                                      "vacuum-home-oid7": null,
                                      "vacuum-home-oid8": null,
                                      "vacuum-home-oid9": null,
                                      "vacuum-is-charging-oid1": null,
                                      "vacuum-is-charging-oid10": null,
                                      "vacuum-is-charging-oid11": null,
                                      "vacuum-is-charging-oid12": null,
                                      "vacuum-is-charging-oid2": null,
                                      "vacuum-is-charging-oid3": null,
                                      "vacuum-is-charging-oid4": null,
                                      "vacuum-is-charging-oid5": null,
                                      "vacuum-is-charging-oid6": null,
                                      "vacuum-is-charging-oid7": null,
                                      "vacuum-is-charging-oid8": null,
                                      "vacuum-is-charging-oid9": null,
                                      "vacuum-main-brush-left-oid1": null,
                                      "vacuum-main-brush-left-oid10": null,
                                      "vacuum-main-brush-left-oid11": null,
                                      "vacuum-main-brush-left-oid12": null,
                                      "vacuum-main-brush-left-oid2": null,
                                      "vacuum-main-brush-left-oid3": null,
                                      "vacuum-main-brush-left-oid4": null,
                                      "vacuum-main-brush-left-oid5": null,
                                      "vacuum-main-brush-left-oid6": null,
                                      "vacuum-main-brush-left-oid7": null,
                                      "vacuum-main-brush-left-oid8": null,
                                      "vacuum-main-brush-left-oid9": null,
                                      "vacuum-map64-oid1": null,
                                      "vacuum-map64-oid10": null,
                                      "vacuum-map64-oid11": null,
                                      "vacuum-map64-oid12": null,
                                      "vacuum-map64-oid2": null,
                                      "vacuum-map64-oid3": null,
                                      "vacuum-map64-oid4": null,
                                      "vacuum-map64-oid5": null,
                                      "vacuum-map64-oid6": null,
                                      "vacuum-map64-oid7": null,
                                      "vacuum-map64-oid8": null,
                                      "vacuum-map64-oid9": null,
                                      "vacuum-own-image1": null,
                                      "vacuum-own-image10": null,
                                      "vacuum-own-image11": null,
                                      "vacuum-own-image12": null,
                                      "vacuum-own-image2": null,
                                      "vacuum-own-image3": null,
                                      "vacuum-own-image4": null,
                                      "vacuum-own-image5": null,
                                      "vacuum-own-image6": null,
                                      "vacuum-own-image7": null,
                                      "vacuum-own-image8": null,
                                      "vacuum-own-image9": null,
                                      "vacuum-pause-oid1": null,
                                      "vacuum-pause-oid10": null,
                                      "vacuum-pause-oid11": null,
                                      "vacuum-pause-oid12": null,
                                      "vacuum-pause-oid2": null,
                                      "vacuum-pause-oid3": null,
                                      "vacuum-pause-oid4": null,
                                      "vacuum-pause-oid5": null,
                                      "vacuum-pause-oid6": null,
                                      "vacuum-pause-oid7": null,
                                      "vacuum-pause-oid8": null,
                                      "vacuum-pause-oid9": null,
                                      "vacuum-sensors-left-oid1": null,
                                      "vacuum-sensors-left-oid10": null,
                                      "vacuum-sensors-left-oid11": null,
                                      "vacuum-sensors-left-oid12": null,
                                      "vacuum-sensors-left-oid2": null,
                                      "vacuum-sensors-left-oid3": null,
                                      "vacuum-sensors-left-oid4": null,
                                      "vacuum-sensors-left-oid5": null,
                                      "vacuum-sensors-left-oid6": null,
                                      "vacuum-sensors-left-oid7": null,
                                      "vacuum-sensors-left-oid8": null,
                                      "vacuum-sensors-left-oid9": null,
                                      "vacuum-side-brush-left-oid1": null,
                                      "vacuum-side-brush-left-oid10": null,
                                      "vacuum-side-brush-left-oid11": null,
                                      "vacuum-side-brush-left-oid12": null,
                                      "vacuum-side-brush-left-oid2": null,
                                      "vacuum-side-brush-left-oid3": null,
                                      "vacuum-side-brush-left-oid4": null,
                                      "vacuum-side-brush-left-oid5": null,
                                      "vacuum-side-brush-left-oid6": null,
                                      "vacuum-side-brush-left-oid7": null,
                                      "vacuum-side-brush-left-oid8": null,
                                      "vacuum-side-brush-left-oid9": null,
                                      "vacuum-start-oid1": null,
                                      "vacuum-start-oid10": null,
                                      "vacuum-start-oid11": null,
                                      "vacuum-start-oid12": null,
                                      "vacuum-start-oid2": null,
                                      "vacuum-start-oid3": null,
                                      "vacuum-start-oid4": null,
                                      "vacuum-start-oid5": null,
                                      "vacuum-start-oid6": null,
                                      "vacuum-start-oid7": null,
                                      "vacuum-start-oid8": null,
                                      "vacuum-start-oid9": null,
                                      "vacuum-status-oid1": null,
                                      "vacuum-status-oid10": null,
                                      "vacuum-status-oid11": null,
                                      "vacuum-status-oid12": null,
                                      "vacuum-status-oid2": null,
                                      "vacuum-status-oid3": null,
                                      "vacuum-status-oid4": null,
                                      "vacuum-status-oid5": null,
                                      "vacuum-status-oid6": null,
                                      "vacuum-status-oid7": null,
                                      "vacuum-status-oid8": null,
                                      "vacuum-status-oid9": null,
                                      "vacuum-use-default-picture1": true,
                                      "vacuum-use-default-picture10": true,
                                      "vacuum-use-default-picture11": true,
                                      "vacuum-use-default-picture12": true,
                                      "vacuum-use-default-picture2": true,
                                      "vacuum-use-default-picture3": true,
                                      "vacuum-use-default-picture4": true,
                                      "vacuum-use-default-picture5": true,
                                      "vacuum-use-default-picture6": true,
                                      "vacuum-use-default-picture7": true,
                                      "vacuum-use-default-picture8": true,
                                      "vacuum-use-default-picture9": true,
                                      "vacuum-use-rooms1": null,
                                      "vacuum-use-rooms10": null,
                                      "vacuum-use-rooms11": null,
                                      "vacuum-use-rooms12": null,
                                      "vacuum-use-rooms2": null,
                                      "vacuum-use-rooms3": null,
                                      "vacuum-use-rooms4": null,
                                      "vacuum-use-rooms5": null,
                                      "vacuum-use-rooms6": null,
                                      "vacuum-use-rooms7": null,
                                      "vacuum-use-rooms8": null,
                                      "vacuum-use-rooms9": null,
                                      "visibility-cond1": "==",
                                      "visibility-cond10": "==",
                                      "visibility-cond11": "==",
                                      "visibility-cond12": "==",
                                      "visibility-cond2": "==",
                                      "visibility-cond3": "==",
                                      "visibility-cond4": "==",
                                      "visibility-cond5": "==",
                                      "visibility-cond6": "==",
                                      "visibility-cond7": "==",
                                      "visibility-cond8": "==",
                                      "visibility-cond9": "==",
                                      "visibility-oid1": null,
                                      "visibility-oid10": null,
                                      "visibility-oid11": null,
                                      "visibility-oid12": null,
                                      "visibility-oid2": null,
                                      "visibility-oid3": null,
                                      "visibility-oid4": null,
                                      "visibility-oid5": null,
                                      "visibility-oid6": null,
                                      "visibility-oid7": null,
                                      "visibility-oid8": null,
                                      "visibility-oid9": null,
                                      "visibility-val1": "1",
                                      "visibility-val10": "1",
                                      "visibility-val11": "1",
                                      "visibility-val12": "1",
                                      "visibility-val2": "1",
                                      "visibility-val3": "1",
                                      "visibility-val4": "1",
                                      "visibility-val5": "1",
                                      "visibility-val6": "1",
                                      "visibility-val7": "1",
                                      "visibility-val8": "1",
                                      "visibility-val9": "1",
                                      "white1": null,
                                      "white10": null,
                                      "white11": null,
                                      "white12": null,
                                      "white2": null,
                                      "white3": null,
                                      "white4": null,
                                      "white5": null,
                                      "white6": null,
                                      "white7": null,
                                      "white8": null,
                                      "white9": null,
                                      "whiteMode1": null,
                                      "whiteMode10": null,
                                      "whiteMode11": null,
                                      "whiteMode12": null,
                                      "whiteMode2": null,
                                      "whiteMode3": null,
                                      "whiteMode4": null,
                                      "whiteMode5": null,
                                      "whiteMode6": null,
                                      "whiteMode7": null,
                                      "whiteMode8": null,
                                      "whiteMode9": null,
                                      "widget1": null,
                                      "widget10": null,
                                      "widget11": null,
                                      "widget12": null,
                                      "widget2": null,
                                      "widget3": null,
                                      "widget4": null,
                                      "widget5": null,
                                      "widget6": null,
                                      "widget7": null,
                                      "widget8": null,
                                      "widget9": null,
                                      "widgetTitle": "{0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.name}",
                                      "working1": null,
                                      "working10": null,
                                      "working11": null,
                                      "working12": null,
                                      "working2": null,
                                      "working3": null,
                                      "working4": null,
                                      "working5": null,
                                      "working6": null,
                                      "working7": null,
                                      "working8": null,
                                      "working9": null,
                                      "oid13": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.lastPriceUpdate",
                                      "type13": "info",
                                      "noIcon13": true,
                                      "icon13": "",
                                      "iconSmall13": null,
                                      "iconEnabled13": null,
                                      "iconEnabledSmall13": null,
                                      "color13": null,
                                      "colorEnabled13": null,
                                      "slideInvert13": null,
                                      "title13": null,
                                      "unit13": null,
                                      "step13": null,
                                      "hideChart13": true,
                                      "chartPeriod13": 60,
                                      "buttonText13": null,
                                      "buttonIcon13": null,
                                      "buttonImage13": null,
                                      "buttonIconActive13": null,
                                      "buttonImageActive13": null,
                                      "infoInactiveText13": null,
                                      "infoActiveText13": null,
                                      "infoInactiveIcon13": null,
                                      "infoActiveIcon13": null,
                                      "infoInactiveImage13": null,
                                      "infoActiveImage13": null,
                                      "infoInactiveColor13": null,
                                      "infoActiveColor13": null,
                                      "widget13": null,
                                      "height13": null,
                                      "position13": null,
                                      "hide13": null,
                                      "actual13": null,
                                      "boost13": null,
                                      "party13": null,
                                      "switch13": null,
                                      "brightness13": null,
                                      "rgbType13": null,
                                      "red13": null,
                                      "green13": null,
                                      "blue13": null,
                                      "white13": null,
                                      "color_temperature13": null,
                                      "ct_min13": null,
                                      "ct_max13": null,
                                      "hue13": null,
                                      "saturation13": null,
                                      "luminance13": null,
                                      "hideBrightness13": null,
                                      "whiteMode13": null,
                                      "noRgbPalette13": null,
                                      "open13": null,
                                      "working13": null,
                                      "sensor13": null,
                                      "pincode13": null,
                                      "oid-pincode13": null,
                                      "doNotConfirm13": null,
                                      "noLockAnimation13": null,
                                      "lockColor13": null,
                                      "pincodeReturnButton13": "submit",
                                      "timeout13": 500,
                                      "vacuum-status-oid13": null,
                                      "vacuum-battery-oid13": null,
                                      "vacuum-is-charging-oid13": null,
                                      "vacuum-fan-speed-oid13": null,
                                      "vacuum-sensors-left-oid13": null,
                                      "vacuum-filter-left-oid13": null,
                                      "vacuum-main-brush-left-oid13": null,
                                      "vacuum-side-brush-left-oid13": null,
                                      "vacuum-cleaning-count-oid13": null,
                                      "vacuum-use-rooms13": null,
                                      "vacuum-map64-oid13": null,
                                      "vacuum-use-default-picture13": true,
                                      "vacuum-own-image13": null,
                                      "vacuum-start-oid13": null,
                                      "vacuum-home-oid13": null,
                                      "vacuum-pause-oid13": null,
                                      "undefined13": null,
                                      "visibility-oid13": null,
                                      "visibility-cond13": "==",
                                      "visibility-val13": "1",
                                      "g_switch-13": true,
                                      "visibility-oid": "0_userdata.0.tankerkoenig.aa7ec0ed-f087-48e5-95c1-bcb47affa5cf.isOpen",
                                      "visibility-cond": "==",
                                      "visibility-val": "false",
                                      "visibility-groups": null,
                                      "visibility-groups-action": "hide",
                                      "g_visibility": true
                                    },
                                    "style": {
                                      "bindings": [],
                                      "left": -6,
                                      "top": 14,
                                      "width": "100%",
                                      "height": "588px",
                                      "position": "relative"
                                    },
                                    "widgetSet": "vis-2-widgets-material",
                                    "_id": "i000001"
                                  }
                                ]
                                
                                Ro75R Online
                                Ro75R Online
                                Ro75
                                schrieb am zuletzt editiert von
                                #15

                                @Dragon kannst du uns auch bildlich was zeigen? Also, für alle die jetzt (noch) keine VIS2 einsetzen?

                                Ro75.

                                SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

                                1 Antwort Letzte Antwort
                                0
                                • D Offline
                                  D Offline
                                  Dragon
                                  schrieb am zuletzt editiert von
                                  #16

                                  {C37661C6-8452-4AFD-9C36-4ECC2A1149D9}.png

                                  1 Antwort Letzte Antwort
                                  1
                                  • D Offline
                                    D Offline
                                    Dragon
                                    schrieb am zuletzt editiert von
                                    #17

                                    {4C046D23-462B-44FB-9FFE-8AAFF5244165}.png

                                    [
                                      {
                                        "tpl": "tplMaterial2Switches",
                                        "data": {
                                          "actual1": null,
                                          "actual2": null,
                                          "actual3": null,
                                          "actual4": null,
                                          "actual5": null,
                                          "actual6": null,
                                          "allSwitch": false,
                                          "bindings": [
                                            "icon10",
                                            "infoActiveIcon1",
                                            "oid2"
                                          ],
                                          "blue1": null,
                                          "blue2": null,
                                          "blue3": null,
                                          "blue4": null,
                                          "blue5": null,
                                          "blue6": null,
                                          "boost1": null,
                                          "boost2": null,
                                          "boost3": null,
                                          "boost4": null,
                                          "boost5": null,
                                          "boost6": null,
                                          "brightness1": null,
                                          "brightness2": null,
                                          "brightness3": null,
                                          "brightness4": null,
                                          "brightness5": null,
                                          "brightness6": null,
                                          "buttonIcon1": null,
                                          "buttonIcon2": null,
                                          "buttonIcon3": null,
                                          "buttonIcon4": null,
                                          "buttonIcon5": null,
                                          "buttonIcon6": null,
                                          "buttonIconActive1": null,
                                          "buttonIconActive2": null,
                                          "buttonIconActive3": null,
                                          "buttonIconActive4": null,
                                          "buttonIconActive5": null,
                                          "buttonIconActive6": null,
                                          "buttonImage1": null,
                                          "buttonImage2": null,
                                          "buttonImage3": null,
                                          "buttonImage4": null,
                                          "buttonImage5": null,
                                          "buttonImage6": null,
                                          "buttonImageActive1": null,
                                          "buttonImageActive2": null,
                                          "buttonImageActive3": null,
                                          "buttonImageActive4": null,
                                          "buttonImageActive5": null,
                                          "buttonImageActive6": null,
                                          "buttonText1": null,
                                          "buttonText2": null,
                                          "buttonText3": null,
                                          "buttonText4": null,
                                          "buttonText5": null,
                                          "buttonText6": null,
                                          "buttonsWidth": 120,
                                          "chartPeriod1": 60,
                                          "chartPeriod2": 60,
                                          "chartPeriod3": 60,
                                          "chartPeriod4": 60,
                                          "chartPeriod5": 60,
                                          "chartPeriod6": 60,
                                          "color1": null,
                                          "color2": null,
                                          "color3": null,
                                          "color4": null,
                                          "color5": null,
                                          "color6": null,
                                          "colorEnabled1": null,
                                          "colorEnabled2": null,
                                          "colorEnabled3": null,
                                          "colorEnabled4": null,
                                          "colorEnabled5": null,
                                          "colorEnabled6": null,
                                          "color_temperature1": null,
                                          "color_temperature2": null,
                                          "color_temperature3": null,
                                          "color_temperature4": null,
                                          "color_temperature5": null,
                                          "color_temperature6": null,
                                          "count": 12,
                                          "ct_max1": null,
                                          "ct_max2": null,
                                          "ct_max3": null,
                                          "ct_max4": null,
                                          "ct_max5": null,
                                          "ct_max6": null,
                                          "ct_min1": null,
                                          "ct_min2": null,
                                          "ct_min3": null,
                                          "ct_min4": null,
                                          "ct_min5": null,
                                          "ct_min6": null,
                                          "doNotConfirm1": null,
                                          "doNotConfirm2": null,
                                          "doNotConfirm3": null,
                                          "doNotConfirm4": null,
                                          "doNotConfirm5": null,
                                          "doNotConfirm6": null,
                                          "doNotWantIncludeWidgets": false,
                                          "g_common": true,
                                          "g_switch-1": true,
                                          "g_switch-2": true,
                                          "g_switch-3": true,
                                          "g_switch-4": true,
                                          "g_switch-5": true,
                                          "g_switch-6": true,
                                          "green1": null,
                                          "green2": null,
                                          "green3": null,
                                          "green4": null,
                                          "green5": null,
                                          "green6": null,
                                          "height1": null,
                                          "height2": null,
                                          "height3": null,
                                          "height4": null,
                                          "height5": null,
                                          "height6": null,
                                          "hide1": null,
                                          "hide2": null,
                                          "hide3": null,
                                          "hide4": null,
                                          "hide5": null,
                                          "hide6": null,
                                          "hideBrightness1": null,
                                          "hideBrightness2": null,
                                          "hideBrightness3": null,
                                          "hideBrightness4": null,
                                          "hideBrightness5": null,
                                          "hideBrightness6": null,
                                          "hideChart1": true,
                                          "hideChart2": true,
                                          "hideChart3": true,
                                          "hideChart4": true,
                                          "hideChart5": true,
                                          "hideChart6": true,
                                          "hue1": null,
                                          "hue2": null,
                                          "hue3": null,
                                          "hue4": null,
                                          "hue5": null,
                                          "hue6": null,
                                          "icon1": "../vis-2.0/tanken/blue.png",
                                          "icon2": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "icon3": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "icon4": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "icon5": "../vis-2.0/tanken/red.png",
                                          "icon6": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconEnabled1": "../vis-2.0/tanken/blue.png",
                                          "iconEnabled2": null,
                                          "iconEnabled3": null,
                                          "iconEnabled4": null,
                                          "iconEnabled5": "../vis-2.0/tanken/red.png",
                                          "iconEnabled6": null,
                                          "iconEnabledSmall1": null,
                                          "iconEnabledSmall2": null,
                                          "iconEnabledSmall3": null,
                                          "iconEnabledSmall4": null,
                                          "iconEnabledSmall5": null,
                                          "iconEnabledSmall6": null,
                                          "iconSmall1": null,
                                          "iconSmall2": null,
                                          "iconSmall3": null,
                                          "iconSmall4": null,
                                          "iconSmall5": null,
                                          "iconSmall6": null,
                                          "infoActiveColor1": null,
                                          "infoActiveColor2": null,
                                          "infoActiveColor3": null,
                                          "infoActiveColor4": null,
                                          "infoActiveColor5": null,
                                          "infoActiveColor6": null,
                                          "infoActiveIcon1": null,
                                          "infoActiveIcon2": null,
                                          "infoActiveIcon3": null,
                                          "infoActiveIcon4": null,
                                          "infoActiveIcon5": null,
                                          "infoActiveIcon6": null,
                                          "infoActiveImage1": null,
                                          "infoActiveImage2": null,
                                          "infoActiveImage3": null,
                                          "infoActiveImage4": null,
                                          "infoActiveImage5": null,
                                          "infoActiveImage6": null,
                                          "infoActiveText1": null,
                                          "infoActiveText2": null,
                                          "infoActiveText3": null,
                                          "infoActiveText4": null,
                                          "infoActiveText5": null,
                                          "infoActiveText6": null,
                                          "infoInactiveColor1": null,
                                          "infoInactiveColor2": null,
                                          "infoInactiveColor3": null,
                                          "infoInactiveColor4": null,
                                          "infoInactiveColor5": null,
                                          "infoInactiveColor6": null,
                                          "infoInactiveIcon1": null,
                                          "infoInactiveIcon2": null,
                                          "infoInactiveIcon3": null,
                                          "infoInactiveIcon4": null,
                                          "infoInactiveIcon5": null,
                                          "infoInactiveIcon6": null,
                                          "infoInactiveImage1": null,
                                          "infoInactiveImage2": null,
                                          "infoInactiveImage3": null,
                                          "infoInactiveImage4": null,
                                          "infoInactiveImage5": null,
                                          "infoInactiveImage6": null,
                                          "infoInactiveText1": null,
                                          "infoInactiveText2": null,
                                          "infoInactiveText3": null,
                                          "infoInactiveText4": null,
                                          "infoInactiveText5": null,
                                          "infoInactiveText6": null,
                                          "lockColor1": null,
                                          "lockColor2": null,
                                          "lockColor3": null,
                                          "lockColor4": null,
                                          "lockColor5": null,
                                          "lockColor6": null,
                                          "luminance1": null,
                                          "luminance2": null,
                                          "luminance3": null,
                                          "luminance4": null,
                                          "luminance5": null,
                                          "luminance6": null,
                                          "noIcon1": false,
                                          "noIcon2": true,
                                          "noIcon3": true,
                                          "noIcon4": true,
                                          "noIcon5": false,
                                          "noIcon6": true,
                                          "noLockAnimation1": null,
                                          "noLockAnimation2": null,
                                          "noLockAnimation3": null,
                                          "noLockAnimation4": null,
                                          "noLockAnimation5": null,
                                          "noLockAnimation6": null,
                                          "noRgbPalette1": null,
                                          "noRgbPalette2": null,
                                          "noRgbPalette3": null,
                                          "noRgbPalette4": null,
                                          "noRgbPalette5": null,
                                          "noRgbPalette6": null,
                                          "oid-pincode1": null,
                                          "oid-pincode2": null,
                                          "oid-pincode3": null,
                                          "oid-pincode4": null,
                                          "oid-pincode5": null,
                                          "oid-pincode6": null,
                                          "oid1": "0_userdata.0.tankerkoenig.cheapest.benzin_station_name",
                                          "oid2": "0_userdata.0.tankerkoenig.cheapest.benzin_price_str",
                                          "oid3": "0_userdata.0.tankerkoenig.difference.benzin",
                                          "oid4": "0_userdata.0.tankerkoenig.average.benzin_str",
                                          "oid5": "0_userdata.0.tankerkoenig.cheapest.diesel_station_name",
                                          "oid6": "0_userdata.0.tankerkoenig.cheapest.diesel_price_str",
                                          "open1": null,
                                          "open2": null,
                                          "open3": null,
                                          "open4": null,
                                          "open5": null,
                                          "open6": null,
                                          "orientation": "horizontal",
                                          "party1": null,
                                          "party2": null,
                                          "party3": null,
                                          "party4": null,
                                          "party5": null,
                                          "party6": null,
                                          "pincode1": null,
                                          "pincode2": null,
                                          "pincode3": null,
                                          "pincode4": null,
                                          "pincode5": null,
                                          "pincode6": null,
                                          "pincodeReturnButton1": "submit",
                                          "pincodeReturnButton2": "submit",
                                          "pincodeReturnButton3": "submit",
                                          "pincodeReturnButton4": "submit",
                                          "pincodeReturnButton5": "submit",
                                          "pincodeReturnButton6": "submit",
                                          "position1": null,
                                          "position2": null,
                                          "position3": null,
                                          "position4": null,
                                          "position5": null,
                                          "position6": null,
                                          "red1": null,
                                          "red2": null,
                                          "red3": null,
                                          "red4": null,
                                          "red5": null,
                                          "red6": null,
                                          "rgbType1": null,
                                          "rgbType2": null,
                                          "rgbType3": null,
                                          "rgbType4": null,
                                          "rgbType5": null,
                                          "rgbType6": null,
                                          "saturation1": null,
                                          "saturation2": null,
                                          "saturation3": null,
                                          "saturation4": null,
                                          "saturation5": null,
                                          "saturation6": null,
                                          "sensor1": null,
                                          "sensor2": null,
                                          "sensor3": null,
                                          "sensor4": null,
                                          "sensor5": null,
                                          "sensor6": null,
                                          "slideInvert1": null,
                                          "slideInvert2": null,
                                          "slideInvert3": null,
                                          "slideInvert4": null,
                                          "slideInvert5": null,
                                          "slideInvert6": null,
                                          "step1": null,
                                          "step2": null,
                                          "step3": null,
                                          "step4": null,
                                          "step5": null,
                                          "step6": null,
                                          "switch1": null,
                                          "switch2": null,
                                          "switch3": null,
                                          "switch4": null,
                                          "switch5": null,
                                          "switch6": null,
                                          "timeout1": 500,
                                          "timeout2": 500,
                                          "timeout3": 500,
                                          "timeout4": 500,
                                          "timeout5": 500,
                                          "timeout6": 500,
                                          "title1": " ",
                                          "title2": "Super",
                                          "title3": "Differenz",
                                          "title4": "Durchschnitt",
                                          "title5": " ",
                                          "title6": "Diesel",
                                          "type": "lines",
                                          "type1": "info",
                                          "type2": "info",
                                          "type3": "info",
                                          "type4": "info",
                                          "type5": "info",
                                          "type6": "info",
                                          "undefined1": null,
                                          "undefined2": null,
                                          "undefined3": null,
                                          "undefined4": null,
                                          "undefined5": null,
                                          "undefined6": null,
                                          "unit1": null,
                                          "unit2": "€",
                                          "unit3": "€",
                                          "unit4": "€",
                                          "unit5": null,
                                          "unit6": "€",
                                          "vacuum-battery-oid1": null,
                                          "vacuum-battery-oid2": null,
                                          "vacuum-battery-oid3": null,
                                          "vacuum-battery-oid4": null,
                                          "vacuum-battery-oid5": null,
                                          "vacuum-battery-oid6": null,
                                          "vacuum-cleaning-count-oid1": null,
                                          "vacuum-cleaning-count-oid2": null,
                                          "vacuum-cleaning-count-oid3": null,
                                          "vacuum-cleaning-count-oid4": null,
                                          "vacuum-cleaning-count-oid5": null,
                                          "vacuum-cleaning-count-oid6": null,
                                          "vacuum-fan-speed-oid1": null,
                                          "vacuum-fan-speed-oid2": null,
                                          "vacuum-fan-speed-oid3": null,
                                          "vacuum-fan-speed-oid4": null,
                                          "vacuum-fan-speed-oid5": null,
                                          "vacuum-fan-speed-oid6": null,
                                          "vacuum-filter-left-oid1": null,
                                          "vacuum-filter-left-oid2": null,
                                          "vacuum-filter-left-oid3": null,
                                          "vacuum-filter-left-oid4": null,
                                          "vacuum-filter-left-oid5": null,
                                          "vacuum-filter-left-oid6": null,
                                          "vacuum-home-oid1": null,
                                          "vacuum-home-oid2": null,
                                          "vacuum-home-oid3": null,
                                          "vacuum-home-oid4": null,
                                          "vacuum-home-oid5": null,
                                          "vacuum-home-oid6": null,
                                          "vacuum-is-charging-oid1": null,
                                          "vacuum-is-charging-oid2": null,
                                          "vacuum-is-charging-oid3": null,
                                          "vacuum-is-charging-oid4": null,
                                          "vacuum-is-charging-oid5": null,
                                          "vacuum-is-charging-oid6": null,
                                          "vacuum-main-brush-left-oid1": null,
                                          "vacuum-main-brush-left-oid2": null,
                                          "vacuum-main-brush-left-oid3": null,
                                          "vacuum-main-brush-left-oid4": null,
                                          "vacuum-main-brush-left-oid5": null,
                                          "vacuum-main-brush-left-oid6": null,
                                          "vacuum-map64-oid1": null,
                                          "vacuum-map64-oid2": null,
                                          "vacuum-map64-oid3": null,
                                          "vacuum-map64-oid4": null,
                                          "vacuum-map64-oid5": null,
                                          "vacuum-map64-oid6": null,
                                          "vacuum-own-image1": null,
                                          "vacuum-own-image2": null,
                                          "vacuum-own-image3": null,
                                          "vacuum-own-image4": null,
                                          "vacuum-own-image5": null,
                                          "vacuum-own-image6": null,
                                          "vacuum-pause-oid1": null,
                                          "vacuum-pause-oid2": null,
                                          "vacuum-pause-oid3": null,
                                          "vacuum-pause-oid4": null,
                                          "vacuum-pause-oid5": null,
                                          "vacuum-pause-oid6": null,
                                          "vacuum-sensors-left-oid1": null,
                                          "vacuum-sensors-left-oid2": null,
                                          "vacuum-sensors-left-oid3": null,
                                          "vacuum-sensors-left-oid4": null,
                                          "vacuum-sensors-left-oid5": null,
                                          "vacuum-sensors-left-oid6": null,
                                          "vacuum-side-brush-left-oid1": null,
                                          "vacuum-side-brush-left-oid2": null,
                                          "vacuum-side-brush-left-oid3": null,
                                          "vacuum-side-brush-left-oid4": null,
                                          "vacuum-side-brush-left-oid5": null,
                                          "vacuum-side-brush-left-oid6": null,
                                          "vacuum-start-oid1": null,
                                          "vacuum-start-oid2": null,
                                          "vacuum-start-oid3": null,
                                          "vacuum-start-oid4": null,
                                          "vacuum-start-oid5": null,
                                          "vacuum-start-oid6": null,
                                          "vacuum-status-oid1": null,
                                          "vacuum-status-oid2": null,
                                          "vacuum-status-oid3": null,
                                          "vacuum-status-oid4": null,
                                          "vacuum-status-oid5": null,
                                          "vacuum-status-oid6": null,
                                          "vacuum-use-default-picture1": true,
                                          "vacuum-use-default-picture2": true,
                                          "vacuum-use-default-picture3": true,
                                          "vacuum-use-default-picture4": true,
                                          "vacuum-use-default-picture5": true,
                                          "vacuum-use-default-picture6": true,
                                          "vacuum-use-rooms1": null,
                                          "vacuum-use-rooms2": null,
                                          "vacuum-use-rooms3": null,
                                          "vacuum-use-rooms4": null,
                                          "vacuum-use-rooms5": null,
                                          "vacuum-use-rooms6": null,
                                          "visibility-cond1": "==",
                                          "visibility-cond2": "==",
                                          "visibility-cond3": "==",
                                          "visibility-cond4": "==",
                                          "visibility-cond5": "==",
                                          "visibility-cond6": "==",
                                          "visibility-oid1": null,
                                          "visibility-oid2": null,
                                          "visibility-oid3": null,
                                          "visibility-oid4": null,
                                          "visibility-oid5": null,
                                          "visibility-oid6": null,
                                          "visibility-val1": "1",
                                          "visibility-val2": "1",
                                          "visibility-val3": "1",
                                          "visibility-val4": "1",
                                          "visibility-val5": "1",
                                          "visibility-val6": "1",
                                          "white1": null,
                                          "white2": null,
                                          "white3": null,
                                          "white4": null,
                                          "white5": null,
                                          "white6": null,
                                          "whiteMode1": null,
                                          "whiteMode2": null,
                                          "whiteMode3": null,
                                          "whiteMode4": null,
                                          "whiteMode5": null,
                                          "whiteMode6": null,
                                          "widget1": null,
                                          "widget2": null,
                                          "widget3": null,
                                          "widget4": null,
                                          "widget5": null,
                                          "widget6": null,
                                          "widgetTitle": "Günstigster Preis",
                                          "working1": null,
                                          "working2": null,
                                          "working3": null,
                                          "working4": null,
                                          "working5": null,
                                          "working6": null,
                                          "oid7": "0_userdata.0.tankerkoenig.difference.diesel",
                                          "type7": "info",
                                          "noIcon7": true,
                                          "icon7": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconSmall7": null,
                                          "iconEnabled7": null,
                                          "iconEnabledSmall7": null,
                                          "color7": null,
                                          "colorEnabled7": null,
                                          "slideInvert7": null,
                                          "title7": "Differenz",
                                          "unit7": "€",
                                          "step7": null,
                                          "hideChart7": true,
                                          "chartPeriod7": 60,
                                          "buttonText7": null,
                                          "buttonIcon7": null,
                                          "buttonImage7": null,
                                          "buttonIconActive7": null,
                                          "buttonImageActive7": null,
                                          "infoInactiveText7": null,
                                          "infoActiveText7": null,
                                          "infoInactiveIcon7": null,
                                          "infoActiveIcon7": null,
                                          "infoInactiveImage7": null,
                                          "infoActiveImage7": null,
                                          "infoInactiveColor7": null,
                                          "infoActiveColor7": null,
                                          "widget7": null,
                                          "height7": null,
                                          "position7": null,
                                          "hide7": null,
                                          "actual7": null,
                                          "boost7": null,
                                          "party7": null,
                                          "switch7": null,
                                          "brightness7": null,
                                          "rgbType7": null,
                                          "red7": null,
                                          "green7": null,
                                          "blue7": null,
                                          "white7": null,
                                          "color_temperature7": null,
                                          "ct_min7": null,
                                          "ct_max7": null,
                                          "hue7": null,
                                          "saturation7": null,
                                          "luminance7": null,
                                          "hideBrightness7": null,
                                          "whiteMode7": null,
                                          "noRgbPalette7": null,
                                          "open7": null,
                                          "working7": null,
                                          "sensor7": null,
                                          "pincode7": null,
                                          "oid-pincode7": null,
                                          "doNotConfirm7": null,
                                          "noLockAnimation7": null,
                                          "lockColor7": null,
                                          "pincodeReturnButton7": "submit",
                                          "timeout7": 500,
                                          "vacuum-status-oid7": null,
                                          "vacuum-battery-oid7": null,
                                          "vacuum-is-charging-oid7": null,
                                          "vacuum-fan-speed-oid7": null,
                                          "vacuum-sensors-left-oid7": null,
                                          "vacuum-filter-left-oid7": null,
                                          "vacuum-main-brush-left-oid7": null,
                                          "vacuum-side-brush-left-oid7": null,
                                          "vacuum-cleaning-count-oid7": null,
                                          "vacuum-use-rooms7": null,
                                          "vacuum-map64-oid7": null,
                                          "vacuum-use-default-picture7": true,
                                          "vacuum-own-image7": null,
                                          "vacuum-start-oid7": null,
                                          "vacuum-home-oid7": null,
                                          "vacuum-pause-oid7": null,
                                          "undefined7": null,
                                          "visibility-oid7": null,
                                          "visibility-cond7": "==",
                                          "visibility-val7": "1",
                                          "g_switch-7": true,
                                          "oid8": "0_userdata.0.tankerkoenig.average.diesel_str",
                                          "type8": "info",
                                          "noIcon8": true,
                                          "icon8": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconSmall8": null,
                                          "iconEnabled8": null,
                                          "iconEnabledSmall8": null,
                                          "color8": null,
                                          "colorEnabled8": null,
                                          "slideInvert8": null,
                                          "title8": "Durchschnitt",
                                          "unit8": "€",
                                          "step8": null,
                                          "hideChart8": true,
                                          "chartPeriod8": 60,
                                          "buttonText8": null,
                                          "buttonIcon8": null,
                                          "buttonImage8": null,
                                          "buttonIconActive8": null,
                                          "buttonImageActive8": null,
                                          "infoInactiveText8": null,
                                          "infoActiveText8": null,
                                          "infoInactiveIcon8": null,
                                          "infoActiveIcon8": null,
                                          "infoInactiveImage8": null,
                                          "infoActiveImage8": null,
                                          "infoInactiveColor8": null,
                                          "infoActiveColor8": null,
                                          "widget8": null,
                                          "height8": null,
                                          "position8": null,
                                          "hide8": null,
                                          "actual8": null,
                                          "boost8": null,
                                          "party8": null,
                                          "switch8": null,
                                          "brightness8": null,
                                          "rgbType8": null,
                                          "red8": null,
                                          "green8": null,
                                          "blue8": null,
                                          "white8": null,
                                          "color_temperature8": null,
                                          "ct_min8": null,
                                          "ct_max8": null,
                                          "hue8": null,
                                          "saturation8": null,
                                          "luminance8": null,
                                          "hideBrightness8": null,
                                          "whiteMode8": null,
                                          "noRgbPalette8": null,
                                          "open8": null,
                                          "working8": null,
                                          "sensor8": null,
                                          "pincode8": null,
                                          "oid-pincode8": null,
                                          "doNotConfirm8": null,
                                          "noLockAnimation8": null,
                                          "lockColor8": null,
                                          "pincodeReturnButton8": "submit",
                                          "timeout8": 500,
                                          "vacuum-status-oid8": null,
                                          "vacuum-battery-oid8": null,
                                          "vacuum-is-charging-oid8": null,
                                          "vacuum-fan-speed-oid8": null,
                                          "vacuum-sensors-left-oid8": null,
                                          "vacuum-filter-left-oid8": null,
                                          "vacuum-main-brush-left-oid8": null,
                                          "vacuum-side-brush-left-oid8": null,
                                          "vacuum-cleaning-count-oid8": null,
                                          "vacuum-use-rooms8": null,
                                          "vacuum-map64-oid8": null,
                                          "vacuum-use-default-picture8": true,
                                          "vacuum-own-image8": null,
                                          "vacuum-start-oid8": null,
                                          "vacuum-home-oid8": null,
                                          "vacuum-pause-oid8": null,
                                          "undefined8": null,
                                          "visibility-oid8": null,
                                          "visibility-cond8": "==",
                                          "visibility-val8": "1",
                                          "g_switch-8": true,
                                          "oid9": "0_userdata.0.tankerkoenig.cheapest.e10_station_name",
                                          "type9": "info",
                                          "noIcon9": false,
                                          "icon9": "../vis-2.0/tanken/green.png",
                                          "iconSmall9": null,
                                          "iconEnabled9": "../vis-2.0/tanken/green.png",
                                          "iconEnabledSmall9": null,
                                          "color9": null,
                                          "colorEnabled9": null,
                                          "slideInvert9": null,
                                          "title9": " ",
                                          "unit9": null,
                                          "step9": null,
                                          "hideChart9": true,
                                          "chartPeriod9": 60,
                                          "buttonText9": null,
                                          "buttonIcon9": null,
                                          "buttonImage9": null,
                                          "buttonIconActive9": null,
                                          "buttonImageActive9": null,
                                          "infoInactiveText9": null,
                                          "infoActiveText9": null,
                                          "infoInactiveIcon9": null,
                                          "infoActiveIcon9": null,
                                          "infoInactiveImage9": null,
                                          "infoActiveImage9": null,
                                          "infoInactiveColor9": null,
                                          "infoActiveColor9": null,
                                          "widget9": null,
                                          "height9": null,
                                          "position9": null,
                                          "hide9": null,
                                          "actual9": null,
                                          "boost9": null,
                                          "party9": null,
                                          "switch9": null,
                                          "brightness9": null,
                                          "rgbType9": null,
                                          "red9": null,
                                          "green9": null,
                                          "blue9": null,
                                          "white9": null,
                                          "color_temperature9": null,
                                          "ct_min9": null,
                                          "ct_max9": null,
                                          "hue9": null,
                                          "saturation9": null,
                                          "luminance9": null,
                                          "hideBrightness9": null,
                                          "whiteMode9": null,
                                          "noRgbPalette9": null,
                                          "open9": null,
                                          "working9": null,
                                          "sensor9": null,
                                          "pincode9": null,
                                          "oid-pincode9": null,
                                          "doNotConfirm9": null,
                                          "noLockAnimation9": null,
                                          "lockColor9": null,
                                          "pincodeReturnButton9": "submit",
                                          "timeout9": 500,
                                          "vacuum-status-oid9": null,
                                          "vacuum-battery-oid9": null,
                                          "vacuum-is-charging-oid9": null,
                                          "vacuum-fan-speed-oid9": null,
                                          "vacuum-sensors-left-oid9": null,
                                          "vacuum-filter-left-oid9": null,
                                          "vacuum-main-brush-left-oid9": null,
                                          "vacuum-side-brush-left-oid9": null,
                                          "vacuum-cleaning-count-oid9": null,
                                          "vacuum-use-rooms9": null,
                                          "vacuum-map64-oid9": null,
                                          "vacuum-use-default-picture9": true,
                                          "vacuum-own-image9": null,
                                          "vacuum-start-oid9": null,
                                          "vacuum-home-oid9": null,
                                          "vacuum-pause-oid9": null,
                                          "undefined9": null,
                                          "visibility-oid9": null,
                                          "visibility-cond9": "==",
                                          "visibility-val9": "1",
                                          "g_switch-9": true,
                                          "oid10": "0_userdata.0.tankerkoenig.cheapest.e10_price_str",
                                          "type10": "info",
                                          "noIcon10": true,
                                          "icon10": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconSmall10": null,
                                          "iconEnabled10": null,
                                          "iconEnabledSmall10": null,
                                          "color10": null,
                                          "colorEnabled10": null,
                                          "slideInvert10": null,
                                          "title10": "E10",
                                          "unit10": "€",
                                          "step10": null,
                                          "hideChart10": true,
                                          "chartPeriod10": 60,
                                          "buttonText10": null,
                                          "buttonIcon10": null,
                                          "buttonImage10": null,
                                          "buttonIconActive10": null,
                                          "buttonImageActive10": null,
                                          "infoInactiveText10": null,
                                          "infoActiveText10": null,
                                          "infoInactiveIcon10": null,
                                          "infoActiveIcon10": null,
                                          "infoInactiveImage10": null,
                                          "infoActiveImage10": null,
                                          "infoInactiveColor10": null,
                                          "infoActiveColor10": null,
                                          "widget10": null,
                                          "height10": null,
                                          "position10": null,
                                          "hide10": null,
                                          "actual10": null,
                                          "boost10": null,
                                          "party10": null,
                                          "switch10": null,
                                          "brightness10": null,
                                          "rgbType10": null,
                                          "red10": null,
                                          "green10": null,
                                          "blue10": null,
                                          "white10": null,
                                          "color_temperature10": null,
                                          "ct_min10": null,
                                          "ct_max10": null,
                                          "hue10": null,
                                          "saturation10": null,
                                          "luminance10": null,
                                          "hideBrightness10": null,
                                          "whiteMode10": null,
                                          "noRgbPalette10": null,
                                          "open10": null,
                                          "working10": null,
                                          "sensor10": null,
                                          "pincode10": null,
                                          "oid-pincode10": null,
                                          "doNotConfirm10": null,
                                          "noLockAnimation10": null,
                                          "lockColor10": null,
                                          "pincodeReturnButton10": "submit",
                                          "timeout10": 500,
                                          "vacuum-status-oid10": null,
                                          "vacuum-battery-oid10": null,
                                          "vacuum-is-charging-oid10": null,
                                          "vacuum-fan-speed-oid10": null,
                                          "vacuum-sensors-left-oid10": null,
                                          "vacuum-filter-left-oid10": null,
                                          "vacuum-main-brush-left-oid10": null,
                                          "vacuum-side-brush-left-oid10": null,
                                          "vacuum-cleaning-count-oid10": null,
                                          "vacuum-use-rooms10": null,
                                          "vacuum-map64-oid10": null,
                                          "vacuum-use-default-picture10": true,
                                          "vacuum-own-image10": null,
                                          "vacuum-start-oid10": null,
                                          "vacuum-home-oid10": null,
                                          "vacuum-pause-oid10": null,
                                          "undefined10": null,
                                          "visibility-oid10": null,
                                          "visibility-cond10": "==",
                                          "visibility-val10": "1",
                                          "g_switch-10": true,
                                          "oid11": "0_userdata.0.tankerkoenig.difference.e10",
                                          "type11": "info",
                                          "noIcon11": true,
                                          "icon11": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconSmall11": null,
                                          "iconEnabled11": null,
                                          "iconEnabledSmall11": null,
                                          "color11": null,
                                          "colorEnabled11": null,
                                          "slideInvert11": null,
                                          "title11": "Differenz",
                                          "unit11": "€",
                                          "step11": null,
                                          "hideChart11": true,
                                          "chartPeriod11": 60,
                                          "buttonText11": null,
                                          "buttonIcon11": null,
                                          "buttonImage11": null,
                                          "buttonIconActive11": null,
                                          "buttonImageActive11": null,
                                          "infoInactiveText11": null,
                                          "infoActiveText11": null,
                                          "infoInactiveIcon11": null,
                                          "infoActiveIcon11": null,
                                          "infoInactiveImage11": null,
                                          "infoActiveImage11": null,
                                          "infoInactiveColor11": null,
                                          "infoActiveColor11": null,
                                          "widget11": null,
                                          "height11": null,
                                          "position11": null,
                                          "hide11": null,
                                          "actual11": null,
                                          "boost11": null,
                                          "party11": null,
                                          "switch11": null,
                                          "brightness11": null,
                                          "rgbType11": null,
                                          "red11": null,
                                          "green11": null,
                                          "blue11": null,
                                          "white11": null,
                                          "color_temperature11": null,
                                          "ct_min11": null,
                                          "ct_max11": null,
                                          "hue11": null,
                                          "saturation11": null,
                                          "luminance11": null,
                                          "hideBrightness11": null,
                                          "whiteMode11": null,
                                          "noRgbPalette11": null,
                                          "open11": null,
                                          "working11": null,
                                          "sensor11": null,
                                          "pincode11": null,
                                          "oid-pincode11": null,
                                          "doNotConfirm11": null,
                                          "noLockAnimation11": null,
                                          "lockColor11": null,
                                          "pincodeReturnButton11": "submit",
                                          "timeout11": 500,
                                          "vacuum-status-oid11": null,
                                          "vacuum-battery-oid11": null,
                                          "vacuum-is-charging-oid11": null,
                                          "vacuum-fan-speed-oid11": null,
                                          "vacuum-sensors-left-oid11": null,
                                          "vacuum-filter-left-oid11": null,
                                          "vacuum-main-brush-left-oid11": null,
                                          "vacuum-side-brush-left-oid11": null,
                                          "vacuum-cleaning-count-oid11": null,
                                          "vacuum-use-rooms11": null,
                                          "vacuum-map64-oid11": null,
                                          "vacuum-use-default-picture11": true,
                                          "vacuum-own-image11": null,
                                          "vacuum-start-oid11": null,
                                          "vacuum-home-oid11": null,
                                          "vacuum-pause-oid11": null,
                                          "undefined11": null,
                                          "visibility-oid11": null,
                                          "visibility-cond11": "==",
                                          "visibility-val11": "1",
                                          "g_switch-11": true,
                                          "oid12": "0_userdata.0.tankerkoenig.average.e10_str",
                                          "type12": "info",
                                          "noIcon12": true,
                                          "icon12": "{0_userdata.0.tankerkoenig.bfbd3c8e-78af-486e-94f0-5b99f37dfe76.image}",
                                          "iconSmall12": null,
                                          "iconEnabled12": null,
                                          "iconEnabledSmall12": null,
                                          "color12": null,
                                          "colorEnabled12": null,
                                          "slideInvert12": null,
                                          "title12": "Durchschnitt",
                                          "unit12": "€",
                                          "step12": null,
                                          "hideChart12": true,
                                          "chartPeriod12": 60,
                                          "buttonText12": null,
                                          "buttonIcon12": null,
                                          "buttonImage12": null,
                                          "buttonIconActive12": null,
                                          "buttonImageActive12": null,
                                          "infoInactiveText12": null,
                                          "infoActiveText12": null,
                                          "infoInactiveIcon12": null,
                                          "infoActiveIcon12": null,
                                          "infoInactiveImage12": null,
                                          "infoActiveImage12": null,
                                          "infoInactiveColor12": null,
                                          "infoActiveColor12": null,
                                          "widget12": null,
                                          "height12": null,
                                          "position12": null,
                                          "hide12": null,
                                          "actual12": null,
                                          "boost12": null,
                                          "party12": null,
                                          "switch12": null,
                                          "brightness12": null,
                                          "rgbType12": null,
                                          "red12": null,
                                          "green12": null,
                                          "blue12": null,
                                          "white12": null,
                                          "color_temperature12": null,
                                          "ct_min12": null,
                                          "ct_max12": null,
                                          "hue12": null,
                                          "saturation12": null,
                                          "luminance12": null,
                                          "hideBrightness12": null,
                                          "whiteMode12": null,
                                          "noRgbPalette12": null,
                                          "open12": null,
                                          "working12": null,
                                          "sensor12": null,
                                          "pincode12": null,
                                          "oid-pincode12": null,
                                          "doNotConfirm12": null,
                                          "noLockAnimation12": null,
                                          "lockColor12": null,
                                          "pincodeReturnButton12": "submit",
                                          "timeout12": 500,
                                          "vacuum-status-oid12": null,
                                          "vacuum-battery-oid12": null,
                                          "vacuum-is-charging-oid12": null,
                                          "vacuum-fan-speed-oid12": null,
                                          "vacuum-sensors-left-oid12": null,
                                          "vacuum-filter-left-oid12": null,
                                          "vacuum-main-brush-left-oid12": null,
                                          "vacuum-side-brush-left-oid12": null,
                                          "vacuum-cleaning-count-oid12": null,
                                          "vacuum-use-rooms12": null,
                                          "vacuum-map64-oid12": null,
                                          "vacuum-use-default-picture12": true,
                                          "vacuum-own-image12": null,
                                          "vacuum-start-oid12": null,
                                          "vacuum-home-oid12": null,
                                          "vacuum-pause-oid12": null,
                                          "undefined12": null,
                                          "visibility-oid12": null,
                                          "visibility-cond12": "==",
                                          "visibility-val12": "1",
                                          "g_switch-12": true
                                        },
                                        "style": {
                                          "bindings": [],
                                          "left": -6,
                                          "top": 14,
                                          "width": "100%",
                                          "height": "588px",
                                          "position": "relative"
                                        },
                                        "widgetSet": "vis-2-widgets-material",
                                        "_id": "i000001"
                                      }
                                    ]
                                    
                                    1 Antwort Letzte Antwort
                                    0
                                    • D Offline
                                      D Offline
                                      Dragon
                                      schrieb am zuletzt editiert von
                                      #18

                                      günstigster Diesel/Benzin/E10, damit startet die Seite

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        Dragon
                                        schrieb am zuletzt editiert von Dragon
                                        #19

                                        @ro75
                                        Als erste mal ein herzliches Dankeschön für dieses super Skript.
                                        Könntest du evtl die Empfehlungen aus der Json in boolsche Datenpunkte integrieren. Sodass man es nutzen kann. Die Tabelle mit dem JSON passt nicht auf meine Visaulisierung.
                                        Die Entfernung zu mir, wär auch toll wenn es in einem Datenpunkt stehen könnte.

                                        Ro75R 1 Antwort Letzte Antwort
                                        0
                                        • D Offline
                                          D Offline
                                          Dragon
                                          schrieb am zuletzt editiert von
                                          #20
                                          [
                                            {
                                              "tpl": "tplMaterial2Switches",
                                              "data": {
                                                "actual1": null,
                                                "actual10": null,
                                                "actual11": null,
                                                "actual12": null,
                                                "actual2": null,
                                                "actual3": null,
                                                "actual4": null,
                                                "actual5": null,
                                                "actual6": null,
                                                "actual7": null,
                                                "actual8": null,
                                                "actual9": null,
                                                "allSwitch": false,
                                                "bindings": [
                                                  "widgetTitle",
                                                  "icon2",
                                                  "icon10",
                                                  "infoActiveIcon1",
                                                  "icon1",
                                                  "buttonImage9",
                                                  "buttonImage3",
                                                  "buttonImageActive3",
                                                  "buttonImage6",
                                                  "buttonImageActive6",
                                                  "buttonImageActive9"
                                                ],
                                                "blue1": null,
                                                "blue10": null,
                                                "blue11": null,
                                                "blue12": null,
                                                "blue2": null,
                                                "blue3": null,
                                                "blue4": null,
                                                "blue5": null,
                                                "blue6": null,
                                                "blue7": null,
                                                "blue8": null,
                                                "blue9": null,
                                                "boost1": null,
                                                "boost10": null,
                                                "boost11": null,
                                                "boost12": null,
                                                "boost2": null,
                                                "boost3": null,
                                                "boost4": null,
                                                "boost5": null,
                                                "boost6": null,
                                                "boost7": null,
                                                "boost8": null,
                                                "boost9": null,
                                                "brightness1": null,
                                                "brightness10": null,
                                                "brightness11": null,
                                                "brightness12": null,
                                                "brightness2": null,
                                                "brightness3": null,
                                                "brightness4": null,
                                                "brightness5": null,
                                                "brightness6": null,
                                                "brightness7": null,
                                                "brightness8": null,
                                                "brightness9": null,
                                                "buttonIcon1": null,
                                                "buttonIcon10": null,
                                                "buttonIcon11": null,
                                                "buttonIcon12": null,
                                                "buttonIcon2": null,
                                                "buttonIcon3": null,
                                                "buttonIcon4": null,
                                                "buttonIcon5": null,
                                                "buttonIcon6": "",
                                                "buttonIcon7": null,
                                                "buttonIcon8": null,
                                                "buttonIcon9": null,
                                                "buttonIconActive1": null,
                                                "buttonIconActive10": null,
                                                "buttonIconActive11": null,
                                                "buttonIconActive12": null,
                                                "buttonIconActive2": null,
                                                "buttonIconActive3": "",
                                                "buttonIconActive4": null,
                                                "buttonIconActive5": null,
                                                "buttonIconActive6": "",
                                                "buttonIconActive7": null,
                                                "buttonIconActive8": null,
                                                "buttonIconActive9": "",
                                                "buttonImage1": null,
                                                "buttonImage10": null,
                                                "buttonImage11": null,
                                                "buttonImage12": null,
                                                "buttonImage2": null,
                                                "buttonImage3": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_icon}",
                                                "buttonImage4": null,
                                                "buttonImage5": null,
                                                "buttonImage6": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.e10.trend_24h_proj_icon}",
                                                "buttonImage7": null,
                                                "buttonImage8": null,
                                                "buttonImage9": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.diesel.trend_24h_proj_icon}",
                                                "buttonImageActive1": null,
                                                "buttonImageActive10": null,
                                                "buttonImageActive11": null,
                                                "buttonImageActive12": null,
                                                "buttonImageActive2": null,
                                                "buttonImageActive3": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_icon}",
                                                "buttonImageActive4": null,
                                                "buttonImageActive5": null,
                                                "buttonImageActive6": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.e10.trend_24h_proj_icon}",
                                                "buttonImageActive7": null,
                                                "buttonImageActive8": null,
                                                "buttonImageActive9": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.diesel.trend_24h_proj_icon}",
                                                "buttonText1": null,
                                                "buttonText10": null,
                                                "buttonText11": null,
                                                "buttonText12": null,
                                                "buttonText2": null,
                                                "buttonText3": null,
                                                "buttonText4": null,
                                                "buttonText5": null,
                                                "buttonText6": null,
                                                "buttonText7": null,
                                                "buttonText8": null,
                                                "buttonText9": null,
                                                "buttonsWidth": 120,
                                                "chartPeriod1": 60,
                                                "chartPeriod10": 60,
                                                "chartPeriod11": 60,
                                                "chartPeriod12": 60,
                                                "chartPeriod2": 10080,
                                                "chartPeriod3": 60,
                                                "chartPeriod4": 60,
                                                "chartPeriod5": 60,
                                                "chartPeriod6": 60,
                                                "chartPeriod7": 60,
                                                "chartPeriod8": 60,
                                                "chartPeriod9": 60,
                                                "color1": null,
                                                "color10": null,
                                                "color11": null,
                                                "color12": null,
                                                "color2": "#ffffff",
                                                "color3": null,
                                                "color4": null,
                                                "color5": null,
                                                "color6": null,
                                                "color7": null,
                                                "color8": "#ffffff",
                                                "color9": null,
                                                "colorEnabled1": null,
                                                "colorEnabled10": null,
                                                "colorEnabled11": null,
                                                "colorEnabled12": null,
                                                "colorEnabled2": "#ffffff",
                                                "colorEnabled3": null,
                                                "colorEnabled4": null,
                                                "colorEnabled5": null,
                                                "colorEnabled6": null,
                                                "colorEnabled7": null,
                                                "colorEnabled8": "#ffffff",
                                                "colorEnabled9": null,
                                                "color_temperature1": null,
                                                "color_temperature10": null,
                                                "color_temperature11": null,
                                                "color_temperature12": null,
                                                "color_temperature2": null,
                                                "color_temperature3": null,
                                                "color_temperature4": null,
                                                "color_temperature5": null,
                                                "color_temperature6": null,
                                                "color_temperature7": null,
                                                "color_temperature8": null,
                                                "color_temperature9": null,
                                                "count": 12,
                                                "ct_max1": null,
                                                "ct_max10": null,
                                                "ct_max11": null,
                                                "ct_max12": null,
                                                "ct_max2": null,
                                                "ct_max3": null,
                                                "ct_max4": null,
                                                "ct_max5": null,
                                                "ct_max6": null,
                                                "ct_max7": null,
                                                "ct_max8": null,
                                                "ct_max9": null,
                                                "ct_min1": null,
                                                "ct_min10": null,
                                                "ct_min11": null,
                                                "ct_min12": null,
                                                "ct_min2": null,
                                                "ct_min3": null,
                                                "ct_min4": null,
                                                "ct_min5": null,
                                                "ct_min6": null,
                                                "ct_min7": null,
                                                "ct_min8": null,
                                                "ct_min9": null,
                                                "doNotConfirm1": null,
                                                "doNotConfirm10": null,
                                                "doNotConfirm11": null,
                                                "doNotConfirm12": null,
                                                "doNotConfirm2": null,
                                                "doNotConfirm3": null,
                                                "doNotConfirm4": null,
                                                "doNotConfirm5": null,
                                                "doNotConfirm6": null,
                                                "doNotConfirm7": null,
                                                "doNotConfirm8": null,
                                                "doNotConfirm9": null,
                                                "doNotWantIncludeWidgets": false,
                                                "g_common": true,
                                                "g_switch-1": true,
                                                "g_switch-10": true,
                                                "g_switch-11": true,
                                                "g_switch-12": true,
                                                "g_switch-2": true,
                                                "g_switch-3": true,
                                                "g_switch-4": true,
                                                "g_switch-5": true,
                                                "g_switch-6": true,
                                                "g_switch-7": true,
                                                "g_switch-8": true,
                                                "g_switch-9": true,
                                                "green1": null,
                                                "green10": null,
                                                "green11": null,
                                                "green12": null,
                                                "green2": null,
                                                "green3": null,
                                                "green4": null,
                                                "green5": null,
                                                "green6": null,
                                                "green7": null,
                                                "green8": null,
                                                "green9": null,
                                                "height1": null,
                                                "height10": null,
                                                "height11": null,
                                                "height12": null,
                                                "height2": null,
                                                "height3": null,
                                                "height4": null,
                                                "height5": null,
                                                "height6": null,
                                                "height7": null,
                                                "height8": null,
                                                "height9": null,
                                                "hide1": null,
                                                "hide10": null,
                                                "hide11": null,
                                                "hide12": null,
                                                "hide2": null,
                                                "hide3": null,
                                                "hide4": null,
                                                "hide5": null,
                                                "hide6": null,
                                                "hide7": null,
                                                "hide8": null,
                                                "hide9": null,
                                                "hideBrightness1": null,
                                                "hideBrightness10": null,
                                                "hideBrightness11": null,
                                                "hideBrightness12": null,
                                                "hideBrightness2": null,
                                                "hideBrightness3": null,
                                                "hideBrightness4": null,
                                                "hideBrightness5": null,
                                                "hideBrightness6": null,
                                                "hideBrightness7": null,
                                                "hideBrightness8": null,
                                                "hideBrightness9": null,
                                                "hideChart1": true,
                                                "hideChart10": true,
                                                "hideChart11": true,
                                                "hideChart12": true,
                                                "hideChart2": true,
                                                "hideChart3": true,
                                                "hideChart4": true,
                                                "hideChart5": true,
                                                "hideChart6": true,
                                                "hideChart7": true,
                                                "hideChart8": true,
                                                "hideChart9": true,
                                                "hue1": null,
                                                "hue10": null,
                                                "hue11": null,
                                                "hue12": null,
                                                "hue2": null,
                                                "hue3": null,
                                                "hue4": null,
                                                "hue5": null,
                                                "hue6": null,
                                                "hue7": null,
                                                "hue8": null,
                                                "hue9": null,
                                                "icon1": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.image}",
                                                "icon10": null,
                                                "icon11": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.image}",
                                                "icon12": "",
                                                "icon2": "../vis-2.0/tanken/blue.png",
                                                "icon3": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_icon}",
                                                "icon4": null,
                                                "icon5": "../vis-2.0/tanken/green.png",
                                                "icon6": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_icon}",
                                                "icon7": null,
                                                "icon8": "../vis-2.0/tanken/red.png",
                                                "icon9": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_icon}",
                                                "iconEnabled1": null,
                                                "iconEnabled10": null,
                                                "iconEnabled11": null,
                                                "iconEnabled12": null,
                                                "iconEnabled2": "../vis-2.0/tanken/blue.png",
                                                "iconEnabled3": null,
                                                "iconEnabled4": null,
                                                "iconEnabled5": "../vis-2.0/tanken/green.png",
                                                "iconEnabled6": null,
                                                "iconEnabled7": null,
                                                "iconEnabled8": "../vis-2.0/tanken/red.png",
                                                "iconEnabled9": null,
                                                "iconEnabledSmall1": null,
                                                "iconEnabledSmall10": null,
                                                "iconEnabledSmall11": null,
                                                "iconEnabledSmall12": null,
                                                "iconEnabledSmall2": null,
                                                "iconEnabledSmall3": null,
                                                "iconEnabledSmall4": null,
                                                "iconEnabledSmall5": null,
                                                "iconEnabledSmall6": null,
                                                "iconEnabledSmall7": null,
                                                "iconEnabledSmall8": null,
                                                "iconEnabledSmall9": null,
                                                "iconSmall1": null,
                                                "iconSmall10": null,
                                                "iconSmall11": null,
                                                "iconSmall12": null,
                                                "iconSmall2": null,
                                                "iconSmall3": null,
                                                "iconSmall4": null,
                                                "iconSmall5": null,
                                                "iconSmall6": null,
                                                "iconSmall7": null,
                                                "iconSmall8": null,
                                                "iconSmall9": null,
                                                "infoActiveColor1": null,
                                                "infoActiveColor10": null,
                                                "infoActiveColor11": null,
                                                "infoActiveColor12": null,
                                                "infoActiveColor2": null,
                                                "infoActiveColor3": null,
                                                "infoActiveColor4": null,
                                                "infoActiveColor5": null,
                                                "infoActiveColor6": null,
                                                "infoActiveColor7": null,
                                                "infoActiveColor8": null,
                                                "infoActiveColor9": null,
                                                "infoActiveIcon1": null,
                                                "infoActiveIcon10": null,
                                                "infoActiveIcon11": null,
                                                "infoActiveIcon12": null,
                                                "infoActiveIcon2": null,
                                                "infoActiveIcon3": null,
                                                "infoActiveIcon4": null,
                                                "infoActiveIcon5": null,
                                                "infoActiveIcon6": null,
                                                "infoActiveIcon7": null,
                                                "infoActiveIcon8": null,
                                                "infoActiveIcon9": null,
                                                "infoActiveImage1": null,
                                                "infoActiveImage10": null,
                                                "infoActiveImage11": null,
                                                "infoActiveImage12": null,
                                                "infoActiveImage2": null,
                                                "infoActiveImage3": null,
                                                "infoActiveImage4": null,
                                                "infoActiveImage5": null,
                                                "infoActiveImage6": null,
                                                "infoActiveImage7": null,
                                                "infoActiveImage8": null,
                                                "infoActiveImage9": null,
                                                "infoActiveText1": null,
                                                "infoActiveText10": null,
                                                "infoActiveText11": null,
                                                "infoActiveText12": null,
                                                "infoActiveText2": null,
                                                "infoActiveText3": null,
                                                "infoActiveText4": null,
                                                "infoActiveText5": null,
                                                "infoActiveText6": null,
                                                "infoActiveText7": null,
                                                "infoActiveText8": null,
                                                "infoActiveText9": null,
                                                "infoInactiveColor1": null,
                                                "infoInactiveColor10": null,
                                                "infoInactiveColor11": null,
                                                "infoInactiveColor12": null,
                                                "infoInactiveColor2": null,
                                                "infoInactiveColor3": null,
                                                "infoInactiveColor4": null,
                                                "infoInactiveColor5": null,
                                                "infoInactiveColor6": null,
                                                "infoInactiveColor7": null,
                                                "infoInactiveColor8": null,
                                                "infoInactiveColor9": null,
                                                "infoInactiveIcon1": null,
                                                "infoInactiveIcon10": null,
                                                "infoInactiveIcon11": null,
                                                "infoInactiveIcon12": null,
                                                "infoInactiveIcon2": null,
                                                "infoInactiveIcon3": null,
                                                "infoInactiveIcon4": null,
                                                "infoInactiveIcon5": null,
                                                "infoInactiveIcon6": null,
                                                "infoInactiveIcon7": null,
                                                "infoInactiveIcon8": null,
                                                "infoInactiveIcon9": null,
                                                "infoInactiveImage1": null,
                                                "infoInactiveImage10": null,
                                                "infoInactiveImage11": null,
                                                "infoInactiveImage12": null,
                                                "infoInactiveImage2": null,
                                                "infoInactiveImage3": null,
                                                "infoInactiveImage4": null,
                                                "infoInactiveImage5": null,
                                                "infoInactiveImage6": null,
                                                "infoInactiveImage7": null,
                                                "infoInactiveImage8": null,
                                                "infoInactiveImage9": null,
                                                "infoInactiveText1": null,
                                                "infoInactiveText10": null,
                                                "infoInactiveText11": null,
                                                "infoInactiveText12": null,
                                                "infoInactiveText2": null,
                                                "infoInactiveText3": null,
                                                "infoInactiveText4": null,
                                                "infoInactiveText5": null,
                                                "infoInactiveText6": null,
                                                "infoInactiveText7": null,
                                                "infoInactiveText8": null,
                                                "infoInactiveText9": null,
                                                "lockColor1": null,
                                                "lockColor10": null,
                                                "lockColor11": null,
                                                "lockColor12": null,
                                                "lockColor2": null,
                                                "lockColor3": null,
                                                "lockColor4": null,
                                                "lockColor5": null,
                                                "lockColor6": null,
                                                "lockColor7": null,
                                                "lockColor8": null,
                                                "lockColor9": null,
                                                "luminance1": null,
                                                "luminance10": null,
                                                "luminance11": null,
                                                "luminance12": null,
                                                "luminance2": null,
                                                "luminance3": null,
                                                "luminance4": null,
                                                "luminance5": null,
                                                "luminance6": null,
                                                "luminance7": null,
                                                "luminance8": null,
                                                "luminance9": null,
                                                "noIcon1": false,
                                                "noIcon10": true,
                                                "noIcon11": true,
                                                "noIcon12": true,
                                                "noIcon2": null,
                                                "noIcon3": true,
                                                "noIcon4": true,
                                                "noIcon5": null,
                                                "noIcon6": true,
                                                "noIcon7": true,
                                                "noIcon8": null,
                                                "noIcon9": true,
                                                "noLockAnimation1": null,
                                                "noLockAnimation10": null,
                                                "noLockAnimation11": null,
                                                "noLockAnimation12": null,
                                                "noLockAnimation2": null,
                                                "noLockAnimation3": null,
                                                "noLockAnimation4": null,
                                                "noLockAnimation5": null,
                                                "noLockAnimation6": null,
                                                "noLockAnimation7": null,
                                                "noLockAnimation8": null,
                                                "noLockAnimation9": null,
                                                "noRgbPalette1": null,
                                                "noRgbPalette10": null,
                                                "noRgbPalette11": null,
                                                "noRgbPalette12": null,
                                                "noRgbPalette2": null,
                                                "noRgbPalette3": null,
                                                "noRgbPalette4": null,
                                                "noRgbPalette5": null,
                                                "noRgbPalette6": null,
                                                "noRgbPalette7": null,
                                                "noRgbPalette8": null,
                                                "noRgbPalette9": null,
                                                "oid-pincode1": null,
                                                "oid-pincode10": null,
                                                "oid-pincode11": null,
                                                "oid-pincode12": null,
                                                "oid-pincode2": null,
                                                "oid-pincode3": null,
                                                "oid-pincode4": null,
                                                "oid-pincode5": null,
                                                "oid-pincode6": null,
                                                "oid-pincode7": null,
                                                "oid-pincode8": null,
                                                "oid-pincode9": null,
                                                "oid1": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.street",
                                                "oid10": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.diesel.trend_24h_proj_price",
                                                "oid11": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.lastChecked",
                                                "oid12": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.lastPriceUpdate",
                                                "oid2": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.benzin_str",
                                                "oid3": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj",
                                                "oid4": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.benzin.trend_24h_proj_price",
                                                "oid5": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.e10_str",
                                                "oid6": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.e10.trend_24h_proj",
                                                "oid7": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.e10.trend_24h_proj_price",
                                                "oid8": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.diesel_str",
                                                "oid9": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.aspects.diesel.trend_24h_proj",
                                                "open1": null,
                                                "open10": null,
                                                "open11": null,
                                                "open12": null,
                                                "open2": null,
                                                "open3": null,
                                                "open4": null,
                                                "open5": null,
                                                "open6": null,
                                                "open7": null,
                                                "open8": null,
                                                "open9": null,
                                                "orientation": "horizontal",
                                                "party1": null,
                                                "party10": null,
                                                "party11": null,
                                                "party12": null,
                                                "party2": null,
                                                "party3": null,
                                                "party4": null,
                                                "party5": null,
                                                "party6": null,
                                                "party7": null,
                                                "party8": null,
                                                "party9": null,
                                                "pincode1": null,
                                                "pincode10": null,
                                                "pincode11": null,
                                                "pincode12": null,
                                                "pincode2": null,
                                                "pincode3": null,
                                                "pincode4": null,
                                                "pincode5": null,
                                                "pincode6": null,
                                                "pincode7": null,
                                                "pincode8": null,
                                                "pincode9": null,
                                                "pincodeReturnButton1": "submit",
                                                "pincodeReturnButton10": "submit",
                                                "pincodeReturnButton11": "submit",
                                                "pincodeReturnButton12": "submit",
                                                "pincodeReturnButton2": "submit",
                                                "pincodeReturnButton3": "submit",
                                                "pincodeReturnButton4": "submit",
                                                "pincodeReturnButton5": "submit",
                                                "pincodeReturnButton6": "submit",
                                                "pincodeReturnButton7": "submit",
                                                "pincodeReturnButton8": "submit",
                                                "pincodeReturnButton9": "submit",
                                                "position1": null,
                                                "position10": null,
                                                "position11": null,
                                                "position12": null,
                                                "position2": null,
                                                "position3": null,
                                                "position4": null,
                                                "position5": null,
                                                "position6": null,
                                                "position7": null,
                                                "position8": null,
                                                "position9": null,
                                                "red1": null,
                                                "red10": null,
                                                "red11": null,
                                                "red12": null,
                                                "red2": null,
                                                "red3": null,
                                                "red4": null,
                                                "red5": null,
                                                "red6": null,
                                                "red7": null,
                                                "red8": null,
                                                "red9": null,
                                                "rgbType1": null,
                                                "rgbType10": null,
                                                "rgbType11": null,
                                                "rgbType12": null,
                                                "rgbType2": null,
                                                "rgbType3": null,
                                                "rgbType4": null,
                                                "rgbType5": null,
                                                "rgbType6": null,
                                                "rgbType7": null,
                                                "rgbType8": null,
                                                "rgbType9": null,
                                                "saturation1": null,
                                                "saturation10": null,
                                                "saturation11": null,
                                                "saturation12": null,
                                                "saturation2": null,
                                                "saturation3": null,
                                                "saturation4": null,
                                                "saturation5": null,
                                                "saturation6": null,
                                                "saturation7": null,
                                                "saturation8": null,
                                                "saturation9": null,
                                                "sensor1": null,
                                                "sensor10": null,
                                                "sensor11": null,
                                                "sensor12": null,
                                                "sensor2": null,
                                                "sensor3": null,
                                                "sensor4": null,
                                                "sensor5": null,
                                                "sensor6": null,
                                                "sensor7": null,
                                                "sensor8": null,
                                                "sensor9": null,
                                                "slideInvert1": null,
                                                "slideInvert10": null,
                                                "slideInvert11": null,
                                                "slideInvert12": null,
                                                "slideInvert2": null,
                                                "slideInvert3": null,
                                                "slideInvert4": null,
                                                "slideInvert5": null,
                                                "slideInvert6": null,
                                                "slideInvert7": null,
                                                "slideInvert8": null,
                                                "slideInvert9": null,
                                                "step1": null,
                                                "step10": null,
                                                "step11": null,
                                                "step12": null,
                                                "step2": null,
                                                "step3": null,
                                                "step4": null,
                                                "step5": null,
                                                "step6": null,
                                                "step7": null,
                                                "step8": null,
                                                "step9": null,
                                                "switch1": null,
                                                "switch10": null,
                                                "switch11": null,
                                                "switch12": null,
                                                "switch2": null,
                                                "switch3": null,
                                                "switch4": null,
                                                "switch5": null,
                                                "switch6": null,
                                                "switch7": null,
                                                "switch8": null,
                                                "switch9": null,
                                                "timeout1": 500,
                                                "timeout10": 500,
                                                "timeout11": 500,
                                                "timeout12": 500,
                                                "timeout2": 500,
                                                "timeout3": 500,
                                                "timeout4": 500,
                                                "timeout5": 500,
                                                "timeout6": 500,
                                                "timeout7": 500,
                                                "timeout8": 500,
                                                "timeout9": 500,
                                                "title1": "Straße",
                                                "title10": "Preisprognose 24h",
                                                "title11": null,
                                                "title12": null,
                                                "title2": "Super 95",
                                                "title3": "Prognose 24h",
                                                "title4": "Preisprognose 24h",
                                                "title5": "E10",
                                                "title6": "Prognose 24h",
                                                "title7": "Preisprognose 24h",
                                                "title8": "Diesel",
                                                "title9": "Prognose 24h",
                                                "type": "lines",
                                                "type1": "info",
                                                "type10": "info",
                                                "type11": "info",
                                                "type12": "info",
                                                "type2": "info",
                                                "type3": "button",
                                                "type4": "info",
                                                "type5": "info",
                                                "type6": "button",
                                                "type7": "info",
                                                "type8": "info",
                                                "type9": "button",
                                                "undefined1": null,
                                                "undefined10": null,
                                                "undefined11": null,
                                                "undefined12": null,
                                                "undefined2": null,
                                                "undefined3": null,
                                                "undefined4": null,
                                                "undefined5": null,
                                                "undefined6": null,
                                                "undefined7": null,
                                                "undefined8": null,
                                                "undefined9": null,
                                                "unit1": null,
                                                "unit10": "€",
                                                "unit11": null,
                                                "unit12": null,
                                                "unit2": "€",
                                                "unit3": null,
                                                "unit4": "€",
                                                "unit5": "€",
                                                "unit6": null,
                                                "unit7": "€",
                                                "unit8": "€",
                                                "unit9": null,
                                                "vacuum-battery-oid1": null,
                                                "vacuum-battery-oid10": null,
                                                "vacuum-battery-oid11": null,
                                                "vacuum-battery-oid12": null,
                                                "vacuum-battery-oid2": null,
                                                "vacuum-battery-oid3": null,
                                                "vacuum-battery-oid4": null,
                                                "vacuum-battery-oid5": null,
                                                "vacuum-battery-oid6": null,
                                                "vacuum-battery-oid7": null,
                                                "vacuum-battery-oid8": null,
                                                "vacuum-battery-oid9": null,
                                                "vacuum-cleaning-count-oid1": null,
                                                "vacuum-cleaning-count-oid10": null,
                                                "vacuum-cleaning-count-oid11": null,
                                                "vacuum-cleaning-count-oid12": null,
                                                "vacuum-cleaning-count-oid2": null,
                                                "vacuum-cleaning-count-oid3": null,
                                                "vacuum-cleaning-count-oid4": null,
                                                "vacuum-cleaning-count-oid5": null,
                                                "vacuum-cleaning-count-oid6": null,
                                                "vacuum-cleaning-count-oid7": null,
                                                "vacuum-cleaning-count-oid8": null,
                                                "vacuum-cleaning-count-oid9": null,
                                                "vacuum-fan-speed-oid1": null,
                                                "vacuum-fan-speed-oid10": null,
                                                "vacuum-fan-speed-oid11": null,
                                                "vacuum-fan-speed-oid12": null,
                                                "vacuum-fan-speed-oid2": null,
                                                "vacuum-fan-speed-oid3": null,
                                                "vacuum-fan-speed-oid4": null,
                                                "vacuum-fan-speed-oid5": null,
                                                "vacuum-fan-speed-oid6": null,
                                                "vacuum-fan-speed-oid7": null,
                                                "vacuum-fan-speed-oid8": null,
                                                "vacuum-fan-speed-oid9": null,
                                                "vacuum-filter-left-oid1": null,
                                                "vacuum-filter-left-oid10": null,
                                                "vacuum-filter-left-oid11": null,
                                                "vacuum-filter-left-oid12": null,
                                                "vacuum-filter-left-oid2": null,
                                                "vacuum-filter-left-oid3": null,
                                                "vacuum-filter-left-oid4": null,
                                                "vacuum-filter-left-oid5": null,
                                                "vacuum-filter-left-oid6": null,
                                                "vacuum-filter-left-oid7": null,
                                                "vacuum-filter-left-oid8": null,
                                                "vacuum-filter-left-oid9": null,
                                                "vacuum-home-oid1": null,
                                                "vacuum-home-oid10": null,
                                                "vacuum-home-oid11": null,
                                                "vacuum-home-oid12": null,
                                                "vacuum-home-oid2": null,
                                                "vacuum-home-oid3": null,
                                                "vacuum-home-oid4": null,
                                                "vacuum-home-oid5": null,
                                                "vacuum-home-oid6": null,
                                                "vacuum-home-oid7": null,
                                                "vacuum-home-oid8": null,
                                                "vacuum-home-oid9": null,
                                                "vacuum-is-charging-oid1": null,
                                                "vacuum-is-charging-oid10": null,
                                                "vacuum-is-charging-oid11": null,
                                                "vacuum-is-charging-oid12": null,
                                                "vacuum-is-charging-oid2": null,
                                                "vacuum-is-charging-oid3": null,
                                                "vacuum-is-charging-oid4": null,
                                                "vacuum-is-charging-oid5": null,
                                                "vacuum-is-charging-oid6": null,
                                                "vacuum-is-charging-oid7": null,
                                                "vacuum-is-charging-oid8": null,
                                                "vacuum-is-charging-oid9": null,
                                                "vacuum-main-brush-left-oid1": null,
                                                "vacuum-main-brush-left-oid10": null,
                                                "vacuum-main-brush-left-oid11": null,
                                                "vacuum-main-brush-left-oid12": null,
                                                "vacuum-main-brush-left-oid2": null,
                                                "vacuum-main-brush-left-oid3": null,
                                                "vacuum-main-brush-left-oid4": null,
                                                "vacuum-main-brush-left-oid5": null,
                                                "vacuum-main-brush-left-oid6": null,
                                                "vacuum-main-brush-left-oid7": null,
                                                "vacuum-main-brush-left-oid8": null,
                                                "vacuum-main-brush-left-oid9": null,
                                                "vacuum-map64-oid1": null,
                                                "vacuum-map64-oid10": null,
                                                "vacuum-map64-oid11": null,
                                                "vacuum-map64-oid12": null,
                                                "vacuum-map64-oid2": null,
                                                "vacuum-map64-oid3": null,
                                                "vacuum-map64-oid4": null,
                                                "vacuum-map64-oid5": null,
                                                "vacuum-map64-oid6": null,
                                                "vacuum-map64-oid7": null,
                                                "vacuum-map64-oid8": null,
                                                "vacuum-map64-oid9": null,
                                                "vacuum-own-image1": null,
                                                "vacuum-own-image10": null,
                                                "vacuum-own-image11": null,
                                                "vacuum-own-image12": null,
                                                "vacuum-own-image2": null,
                                                "vacuum-own-image3": null,
                                                "vacuum-own-image4": null,
                                                "vacuum-own-image5": null,
                                                "vacuum-own-image6": null,
                                                "vacuum-own-image7": null,
                                                "vacuum-own-image8": null,
                                                "vacuum-own-image9": null,
                                                "vacuum-pause-oid1": null,
                                                "vacuum-pause-oid10": null,
                                                "vacuum-pause-oid11": null,
                                                "vacuum-pause-oid12": null,
                                                "vacuum-pause-oid2": null,
                                                "vacuum-pause-oid3": null,
                                                "vacuum-pause-oid4": null,
                                                "vacuum-pause-oid5": null,
                                                "vacuum-pause-oid6": null,
                                                "vacuum-pause-oid7": null,
                                                "vacuum-pause-oid8": null,
                                                "vacuum-pause-oid9": null,
                                                "vacuum-sensors-left-oid1": null,
                                                "vacuum-sensors-left-oid10": null,
                                                "vacuum-sensors-left-oid11": null,
                                                "vacuum-sensors-left-oid12": null,
                                                "vacuum-sensors-left-oid2": null,
                                                "vacuum-sensors-left-oid3": null,
                                                "vacuum-sensors-left-oid4": null,
                                                "vacuum-sensors-left-oid5": null,
                                                "vacuum-sensors-left-oid6": null,
                                                "vacuum-sensors-left-oid7": null,
                                                "vacuum-sensors-left-oid8": null,
                                                "vacuum-sensors-left-oid9": null,
                                                "vacuum-side-brush-left-oid1": null,
                                                "vacuum-side-brush-left-oid10": null,
                                                "vacuum-side-brush-left-oid11": null,
                                                "vacuum-side-brush-left-oid12": null,
                                                "vacuum-side-brush-left-oid2": null,
                                                "vacuum-side-brush-left-oid3": null,
                                                "vacuum-side-brush-left-oid4": null,
                                                "vacuum-side-brush-left-oid5": null,
                                                "vacuum-side-brush-left-oid6": null,
                                                "vacuum-side-brush-left-oid7": null,
                                                "vacuum-side-brush-left-oid8": null,
                                                "vacuum-side-brush-left-oid9": null,
                                                "vacuum-start-oid1": null,
                                                "vacuum-start-oid10": null,
                                                "vacuum-start-oid11": null,
                                                "vacuum-start-oid12": null,
                                                "vacuum-start-oid2": null,
                                                "vacuum-start-oid3": null,
                                                "vacuum-start-oid4": null,
                                                "vacuum-start-oid5": null,
                                                "vacuum-start-oid6": null,
                                                "vacuum-start-oid7": null,
                                                "vacuum-start-oid8": null,
                                                "vacuum-start-oid9": null,
                                                "vacuum-status-oid1": null,
                                                "vacuum-status-oid10": null,
                                                "vacuum-status-oid11": null,
                                                "vacuum-status-oid12": null,
                                                "vacuum-status-oid2": null,
                                                "vacuum-status-oid3": null,
                                                "vacuum-status-oid4": null,
                                                "vacuum-status-oid5": null,
                                                "vacuum-status-oid6": null,
                                                "vacuum-status-oid7": null,
                                                "vacuum-status-oid8": null,
                                                "vacuum-status-oid9": null,
                                                "vacuum-use-default-picture1": true,
                                                "vacuum-use-default-picture10": true,
                                                "vacuum-use-default-picture11": true,
                                                "vacuum-use-default-picture12": true,
                                                "vacuum-use-default-picture2": true,
                                                "vacuum-use-default-picture3": true,
                                                "vacuum-use-default-picture4": true,
                                                "vacuum-use-default-picture5": true,
                                                "vacuum-use-default-picture6": true,
                                                "vacuum-use-default-picture7": true,
                                                "vacuum-use-default-picture8": true,
                                                "vacuum-use-default-picture9": true,
                                                "vacuum-use-rooms1": null,
                                                "vacuum-use-rooms10": null,
                                                "vacuum-use-rooms11": null,
                                                "vacuum-use-rooms12": null,
                                                "vacuum-use-rooms2": null,
                                                "vacuum-use-rooms3": null,
                                                "vacuum-use-rooms4": null,
                                                "vacuum-use-rooms5": null,
                                                "vacuum-use-rooms6": null,
                                                "vacuum-use-rooms7": null,
                                                "vacuum-use-rooms8": null,
                                                "vacuum-use-rooms9": null,
                                                "visibility-cond1": "==",
                                                "visibility-cond10": "==",
                                                "visibility-cond11": "==",
                                                "visibility-cond12": "==",
                                                "visibility-cond2": "==",
                                                "visibility-cond3": "==",
                                                "visibility-cond4": "==",
                                                "visibility-cond5": "==",
                                                "visibility-cond6": "==",
                                                "visibility-cond7": "==",
                                                "visibility-cond8": "==",
                                                "visibility-cond9": "==",
                                                "visibility-oid1": null,
                                                "visibility-oid10": null,
                                                "visibility-oid11": null,
                                                "visibility-oid12": null,
                                                "visibility-oid2": null,
                                                "visibility-oid3": null,
                                                "visibility-oid4": null,
                                                "visibility-oid5": null,
                                                "visibility-oid6": null,
                                                "visibility-oid7": null,
                                                "visibility-oid8": null,
                                                "visibility-oid9": null,
                                                "visibility-val1": "1",
                                                "visibility-val10": "1",
                                                "visibility-val11": "1",
                                                "visibility-val12": "1",
                                                "visibility-val2": "1",
                                                "visibility-val3": "1",
                                                "visibility-val4": "1",
                                                "visibility-val5": "1",
                                                "visibility-val6": "1",
                                                "visibility-val7": "1",
                                                "visibility-val8": "1",
                                                "visibility-val9": "1",
                                                "white1": null,
                                                "white10": null,
                                                "white11": null,
                                                "white12": null,
                                                "white2": null,
                                                "white3": null,
                                                "white4": null,
                                                "white5": null,
                                                "white6": null,
                                                "white7": null,
                                                "white8": null,
                                                "white9": null,
                                                "whiteMode1": null,
                                                "whiteMode10": null,
                                                "whiteMode11": null,
                                                "whiteMode12": null,
                                                "whiteMode2": null,
                                                "whiteMode3": null,
                                                "whiteMode4": null,
                                                "whiteMode5": null,
                                                "whiteMode6": null,
                                                "whiteMode7": null,
                                                "whiteMode8": null,
                                                "whiteMode9": null,
                                                "widget1": null,
                                                "widget10": null,
                                                "widget11": null,
                                                "widget12": null,
                                                "widget2": null,
                                                "widget3": null,
                                                "widget4": null,
                                                "widget5": null,
                                                "widget6": null,
                                                "widget7": null,
                                                "widget8": null,
                                                "widget9": null,
                                                "widgetTitle": "{0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.name}",
                                                "working1": null,
                                                "working10": null,
                                                "working11": null,
                                                "working12": null,
                                                "working2": null,
                                                "working3": null,
                                                "working4": null,
                                                "working5": null,
                                                "working6": null,
                                                "working7": null,
                                                "working8": null,
                                                "working9": null,
                                                "visibility-oid": "0_userdata.0.tankerkoenig.005056ba-7cb6-1ed2-bceb-865970388d30.isOpen",
                                                "visibility-cond": "==",
                                                "visibility-val": "true",
                                                "visibility-groups": null,
                                                "visibility-groups-action": "hide",
                                                "g_visibility": true
                                              },
                                              "style": {
                                                "bindings": [],
                                                "left": -6,
                                                "top": 14,
                                                "width": "100%",
                                                "height": "588px",
                                                "position": "relative"
                                              },
                                              "widgetSet": "vis-2-widgets-material",
                                              "_id": "i000001"
                                            }
                                          ]
                                          

                                          0e5fe157-7296-49d2-95bc-9b78fc27acfc-{07001583-6163-4F5E-B5D0-7DDCBA13564B}.png

                                          1 Antwort Letzte Antwort
                                          1

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          508

                                          Online

                                          33.0k

                                          Benutzer

                                          83.3k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2026
                                          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