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. Visualisierung
  4. EPG-Daten via Script

NEWS

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

  • 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

EPG-Daten via Script

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vismaterial ui
70 Beiträge 9 Kommentatoren 430 Aufrufe 10 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

    Hallo. Heute mal einen kleinen Einblick in mein neustes Projekt, mit etwas KI Unterstützung. Knapp 700 Zeilen Code liefern das hier:
    ac6d66e6-fd45-4963-8ab1-b005b59877ab-image.jpeg

    63c26a64-193d-40c1-8000-0d9828ba8031-image.jpeg

    Ca. 170 Sender. Favoritensteuerung, Senderreihenfolge, automatische Aktualisierung.

    2faf835b-fe3f-4141-9f2a-1838d48d958c-image.jpeg
    Oder alle anstehenden Sendungen zu einem Sender.

    EPG-TV für ioBroker

    Mit diesem Script lassen sich aktuelle TV-Programmdaten (EPG) von über 160 deutschen TV-Sendern direkt in ioBroker integrieren. Die Daten werden automatisch aus einer XMLTV-Quelle geladen und als Datenpunkte zur Verfügung gestellt.

    Neben den eigentlichen Programminformationen bietet das Script eine komfortable Senderverwaltung mit Favoritenfunktion, individueller Sortierung sowie umfangreichen Filtermöglichkeiten. Dadurch eignet es sich hervorragend für Visualisierungen in Jarvis, VIS oder anderen Dashboards.

    Funktionen

    • Über 160 deutsche TV-Sender
    • Free-TV und Pay-TV
    • Automatischer Import der EPG-Daten
    • Aktuelle und kommende Sendungen
    • Senderlogos
    • Favoritenverwaltung
    • Individuelle Senderreihenfolge
    • Filter nach Senderart und Kategorie
    • Automatische tägliche Aktualisierung

    Voraussetzungen

    Für das Script werden folgende zusätzliche NPM-Module benötigt:

    Modul Verwendung
    xml2js Einlesen und Verarbeiten der XMLTV-Daten
    user-agents Erzeugung eines Browser-User-Agents für den Abruf der EPG-Daten

    Die Module können im JavaScript-Adapter unter „Zusätzliche NPM-Module“ eingetragen werden. Anschließend den JavaScript-Adapter neu starten.

    Visualisierung

    Die Ausgabe erfolgt hauptsächlich über den Datenpunkt broadcast_list.

    Für die Darstellung verwende ich das JSON-Widget aus VIS Material Design ab Version 0.5.94. Die Programmdaten werden bereits als fertiges JSON bereitgestellt und können direkt im Widget verarbeitet werden.

    Wichtige Hinweise

    Beim ersten Start werden automatisch alle verfügbaren Sender aus der XMLTV-Quelle eingelesen und die benötigten Datenpunkte angelegt.

    Folgende Datenpunkte werden vollständig vom Script verwaltet und sollten nicht manuell geändert werden:

    • sender_json
    • active_sender_list
    • favorite_sender_list
    • broadcast_list

    Die Senderbearbeitung erfolgt ausschließlich über die dafür vorgesehenen Datenpunkte im Bereich edit.*.

    Wichtige Datenpunkte

    Datenpunkt Bedeutung Verwendung
    sender_json Interne Senderliste Wird vom Script zur Senderverwaltung verwendet
    active_sender_list Alle aktiven Sender Für Dropdowns und Senderauswahl
    favorite_sender_list Alle Favoritensender Für Favoritenlisten und Senderauswahl
    broadcast_list Programmausgabe Hauptdatenpunkt für Tabellen, Listen und TV-Guides
    selected_channel Ausgewählter Sender Zeigt aktuelle und kommende Sendungen eines Senders
    refresh Manueller Reload Lädt Sender- und EPG-Daten neu
    filter_* Filterfunktionen Filterung nach Favoriten, Free-/Pay-TV und Kategorien
    broadcast_mode Anzeigemodus all = alle Sender, selected = ausgewählter Sender
    count Anzahl gefundener Sender Kontrollwert nach dem Einlesen
    max_order_number Höchste vergebene Sendernummer Hilfswert für die Senderreihenfolge

    Verfügbare Filter

    • Favoriten
    • Free-TV
    • Pay-TV
    • Film
    • Serie
    • Doku
    • Kinder
    • Musik
    • Shopping
    • Sport
    • Nachrichten
    • Vollprogramm

    Automatische Aktualisierung

    • Täglicher EPG-Import um 03:00 Uhr
    • Manueller Reload über refresh
    • Laufende Aktualisierung der Programmliste

    Verwendung

    Alle aktuellen Sendungen anzeigen

    broadcast_mode = all

    Zeigt die aktuell laufenden Sendungen aller aktiven Sender in broadcast_list.

    Einzelnen Sender anzeigen

    selected_channel auf die gewünschte Sender-ID setzen.

    Anschließend enthält broadcast_list die aktuelle sowie alle kommenden Sendungen dieses Senders.

    Favoriten verwenden

    Sender können als Favoriten markiert und über favorite_sender_list oder den Filter filter_favorite verwendet werden.

    Sender filtern

    Die Ausgabe kann über die verschiedenen filter_* Datenpunkte nach Senderart oder Kategorie eingeschränkt werden.

    Hinweis
    Dieses Script wurde mit Unterstützung von KI entwickelt und anschließend in ioBroker getestet und angepasst. Trotz umfangreicher Tests können Fehler oder Verbesserungspotenziale nicht ausgeschlossen werden. Rückmeldungen, Fehlerberichte und Verbesserungsvorschläge sind daher jederzeit willkommen.

    Hier das Script:

    // === EPG - TV-Daten ===
     
    //Erst-Version 1.0.0 - 22.06.2026
    //Version 1.0.1 - 24.06.2026
    //Ersteller Ro75.
     
    //Voraussetzungen (Version 1.0.1 getestet mit)
    //NodeJS: 22.22.x
    //Javascript-Adapter: 9.0.18
    //Admin-Adapter: 7.8.23
    //js-controler: 7.2.2
    
    //********** START KONFIGURATION **********
    const root     = "0_userdata.0.epg.";
    const data     = root + "data.";
    const sender   = root + "sender_json";
    
    //********** AB HIER NICHTS MEHR ÄNDERN **********
    const xml2js = require("xml2js");
    const UserAgent = require("user-agents");
    
    let select_channel_mode = 0;
    let loading = false;
    
    const CONFIG = {
        "1":   { url_id: "1-2-3tv.de",                art: "Free", typ: "Shopping",      name: "1-2-3.tv" },
        "2":   { url_id: "13THSTREET.de",             art: "Pay",  typ: "Film",          name: "13th Street" },
        "3":   { url_id: "3sat.de",                   art: "Free", typ: "Vollprogramm",  name: "3sat" },
        "4":   { url_id: "atv.de",                    art: "Free", typ: "Vollprogramm",  name: "ATV" },
        "5":   { url_id: "AnimalPlanet.de",           art: "Pay",  typ: "Doku",          name: "Animal Planet" },
        "6":   { url_id: "ANIXESerie.de",             art: "Free", typ: "Serie",         name: "ANIXE Serie" },
        "7":   { url_id: "ANIXE+.de",                 art: "Free", typ: "Vollprogramm",  name: "ANIXE+" },
        "8":   { url_id: "ARD-alpha.de",              art: "Free", typ: "Doku",          name: "ARD alpha" },
        "9":   { url_id: "ARTE.de",                   art: "Free", typ: "Doku",          name: "ARTE" },
        "10":  { url_id: "automotorundsport.de",      art: "Pay",  typ: "Doku",          name: "auto motor und sport" },
        "11":  { url_id: "AXNBlack.de",               art: "Pay",  typ: "Film",          name: "AXN Black" },
        "12":  { url_id: "AXNWhite.de",               art: "Pay",  typ: "Serie",         name: "AXN White" },
        "13":  { url_id: "Beate-UhseTV.de",           art: "Pay",  typ: "Film",          name: "Beate-Uhse.TV" },
        "14":  { url_id: "BR.de",                     art: "Free", typ: "Vollprogramm",  name: "BR Fernsehen" },
        "15":  { url_id: "CartoonNetwork.de",         art: "Pay",  typ: "Kinder",        name: "Cartoon Network" },
        "16":  { url_id: "Cartoonito.de",             art: "Pay",  typ: "Kinder",        name: "Cartoonito" },
        "17":  { url_id: "ComedyCentral.de",          art: "Free", typ: "Serie",         name: "Comedy Central" },
        "18":  { url_id: "Crime+Investigation.de",    art: "Pay",  typ: "Doku",          name: "Crime + Investigation" },
        "19":  { url_id: "CuriosityChannel.de",       art: "Pay",  typ: "Doku",          name: "Curiosity Channel" },
        "20":  { url_id: "DasErste.de",               art: "Free", typ: "Vollprogramm",  name: "Das Erste" },
        "21":  { url_id: "DAZN.de",                   art: "Pay",  typ: "Sport",         name: "DAZN" },
        "22":  { url_id: "DAZN1.de",                  art: "Pay",  typ: "Sport",         name: "DAZN 1" },
        "23":  { url_id: "DAZN2.de",                  art: "Pay",  typ: "Sport",         name: "DAZN 2" },
        "24":  { url_id: "DeluxeDanceByKontor.de",    art: "Free", typ: "Musik",         name: "DELUXE DANCE by Kontor" },
        "25":  { url_id: "DeluxeFlashback.de",        art: "Free", typ: "Musik",         name: "DELUXE FLASHBACK" },
        "26":  { url_id: "DeluxeLounge.de",           art: "Free", typ: "Musik",         name: "DELUXE LOUNGE" },
        "27":  { url_id: "DeluxeMusic.de",            art: "Free", typ: "Musik",         name: "DELUXE MUSIC" },
        "28":  { url_id: "DeluxeRap.de",              art: "Free", typ: "Musik",         name: "DELUXE RAP" },
        "29":  { url_id: "DeluxeRock.de",             art: "Free", typ: "Musik",         name: "DELUXE ROCK" },
        "30":  { url_id: "DeutschesMusikFernsehen.de",art: "Free", typ: "Musik",         name: "Deutsches Musik Fernsehen" },
        "31":  { url_id: "Discovery.de",              art: "Pay",  typ: "Doku",          name: "Discovery Channel" },
        "32":  { url_id: "DisneyChannel.de",          art: "Free", typ: "Kinder",        name: "Disney Channel" },
        "33":  { url_id: "DMAX.de",                   art: "Free", typ: "Doku",          name: "DMAX" },
        "34":  { url_id: "dokusat.de",                art: "Free", typ: "Doku",          name: "dokuSAT" },
        "35":  { url_id: "EDGESport.de",              art: "Pay",  typ: "Sport",         name: "EDGE Sport" },
        "36":  { url_id: "emsTV.de",                  art: "Free", typ: "Musik",         name: "ems TV" },
        "37":  { url_id: "eSPORTS1.de",               art: "Pay",  typ: "Sport",         name: "eSPORTS1" },
        "38":  { url_id: "Eurosport1.de",             art: "Free", typ: "Sport",         name: "Eurosport 1" },
        "39":  { url_id: "Eurosport2.de",             art: "Pay",  typ: "Sport",         name: "Eurosport 2" },
        "40":  { url_id: "Heimatkanal.de",            art: "Pay",  typ: "Film",          name: "Heimatkanal" },
        "41":  { url_id: "HGTV.de",                   art: "Free", typ: "Doku",          name: "HGTV" },
        "42":  { url_id: "HISTORY.de",                art: "Pay",  typ: "Doku",          name: "HISTORY" },
        "43":  { url_id: "hr.de",                     art: "Free", typ: "Vollprogramm",  name: "hr Fernsehen" },
        "44":  { url_id: "HSE.de",                    art: "Free", typ: "Shopping",      name: "HSE" },
        "45":  { url_id: "HSE24.de",                  art: "Free", typ: "Shopping",      name: "HSE24" },
        "46":  { url_id: "Jukebox.de",                art: "Free", typ: "Musik",         name: "Jukebox" },
        "47":  { url_id: "JustCooking.de",            art: "Free", typ: "Doku",          name: "Just Cooking" },
        "48":  { url_id: "KabelEins.de",              art: "Free", typ: "Vollprogramm",  name: "kabel eins" },
        "49":  { url_id: "KabelEinsCLASSICS.de",      art: "Pay",  typ: "Film",          name: "kabel eins CLASSICS" },
        "50":  { url_id: "KabelEinsDoku.de",          art: "Free", typ: "Doku",          name: "kabel eins Doku" },
        "51":  { url_id: "KiKA.de",                   art: "Free", typ: "Kinder",        name: "KiKA" },
        "52":  { url_id: "KinoweltTV.de",             art: "Pay",  typ: "Film",          name: "Kinowelt TV" },
        "53":  { url_id: "MDRSachsen.de",             art: "Free", typ: "Vollprogramm",  name: "MDR Sachsen" },
        "54":  { url_id: "MTV.de",                    art: "Pay",  typ: "Musik",         name: "MTV" },
        "55":  { url_id: "MTV00s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 00s" },
        "56":  { url_id: "MTV80s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 80s" },
        "57":  { url_id: "MTV90s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 90s" },
        "58":  { url_id: "MTVHits.de",                art: "Pay",  typ: "Musik",         name: "MTV Hits" },
        "59":  { url_id: "MTVLive.de",                art: "Pay",  typ: "Musik",         name: "MTV Live" },
        "60":  { url_id: "n-tv.de",                   art: "Free", typ: "Doku",          name: "n-tv" },
        "61":  { url_id: "N24Doku.de",                art: "Free", typ: "Doku",          name: "N24 Doku" },
        "62":  { url_id: "NationalGeographic.de",     art: "Pay",  typ: "Doku",          name: "National Geographic" },
        "63":  { url_id: "NationalGeographicWILD.de", art: "Pay",  typ: "Doku",          name: "Nat Geo Wild" },
        "64":  { url_id: "NDR.de",                    art: "Free", typ: "Vollprogramm",  name: "NDR Fernsehen" },
        "65":  { url_id: "Nick.de",                   art: "Free", typ: "Kinder",        name: "Nick" },
        "66":  { url_id: "NickComedyCentral+1.de",    art: "Free", typ: "Kinder",        name: "Nick / CC +1" },
        "67":  { url_id: "NickJr.de",                 art: "Pay",  typ: "Kinder",        name: "Nick Jr." },
        "68":  { url_id: "Nicktoons.de",              art: "Pay",  typ: "Kinder",        name: "Nicktoons" },
        "69":  { url_id: "NITRO.de",                  art: "Free", typ: "Vollprogramm",  name: "NITRO" },
        "70":  { url_id: "ONE.de",                    art: "Free", typ: "Vollprogramm",  name: "ONE" },
        "71":  { url_id: "phoenix.de",                art: "Free", typ: "Doku",          name: "phoenix" },
        "72":  { url_id: "ProSieben.de",              art: "Free", typ: "Vollprogramm",  name: "ProSieben" },
        "73":  { url_id: "ProSiebenFUN.de",           art: "Pay",  typ: "Serie",         name: "ProSieben FUN" },
        "74":  { url_id: "ProSiebenMAXX.de",          art: "Free", typ: "Vollprogramm",  name: "ProSieben MAXX" },
        "75":  { url_id: "QVC.de",                    art: "Free", typ: "Shopping",      name: "QVC" },
        "76":  { url_id: "rbbBrandenburg.de",         art: "Free", typ: "Vollprogramm",  name: "rbb Brandenburg" },
        "77":  { url_id: "RiC.de",                    art: "Free", typ: "Kinder",        name: "RiC" },
        "78":  { url_id: "RomanceTV.de",              art: "Pay",  typ: "Film",          name: "Romance TV" },
        "79":  { url_id: "RTL.de",                    art: "Free", typ: "Vollprogramm",  name: "RTL" },
        "80":  { url_id: "RTLCrime.de",               art: "Pay",  typ: "Serie",         name: "RTL Crime" },
        "81":  { url_id: "RTLLiving.de",              art: "Pay",  typ: "Doku",          name: "RTL Living" },
        "82":  { url_id: "RTLPassion.de",             art: "Pay",  typ: "Serie",         name: "RTL Passion" },
        "83":  { url_id: "RTLplus.de",                art: "Free", typ: "Serie",         name: "RTLplus" },
        "84":  { url_id: "RTLup.de",                  art: "Free", typ: "Vollprogramm",  name: "RTLup" },
        "85":  { url_id: "RTLZWEI.de",                art: "Free", typ: "Vollprogramm",  name: "RTLZWEI" },
        "86":  { url_id: "SAT1.de",                   art: "Free", typ: "Vollprogramm",  name: "SAT.1" },
        "87":  { url_id: "SAT1emotions.de",           art: "Pay",  typ: "Serie",         name: "SAT.1 emotions" },
        "88":  { url_id: "SAT1GOLD.de",               art: "Free", typ: "Vollprogramm",  name: "SAT.1 GOLD" },
        "89":  { url_id: "SchlagerDeluxe.de",         art: "Free", typ: "Musik",         name: "Schlager Deluxe" },
        "90":  { url_id: "SchlagerparadiesTV.de",     art: "Free", typ: "Musik",         name: "Schlagerparadies TV" },
        "91":  { url_id: "sixx.de",                   art: "Free", typ: "Vollprogramm",  name: "sixx" },
        "92":  { url_id: "SkyCinemaAction.de",        art: "Pay",  typ: "Film",          name: "Sky Cinema Action" },
        "93":  { url_id: "SkyCinemaBlockbuster.de",   art: "Pay",  typ: "Film",          name: "Sky Cinema Blockbuster" },
        "94":  { url_id: "SkyCinemaClassics.de",      art: "Pay",  typ: "Film",          name: "Sky Cinema Classics" },
        "96":  { url_id: "SkyCinemaPremiere.de",      art: "Pay",  typ: "Film",          name: "Sky Cinema Premiere" },
        "97":  { url_id: "SkyCrime.de",               art: "Pay",  typ: "Serie",         name: "Sky Crime" },
        "98":  { url_id: "SkyDocumentaries.de",       art: "Pay",  typ: "Doku",          name: "Sky Documentaries" },
        "99":  { url_id: "SkyNature.de",              art: "Pay",  typ: "Doku",          name: "Sky Nature" },
        "100": { url_id: "SkyOne.de",                 art: "Pay",  typ: "Vollprogramm",  name: "Sky One" },
        "101": { url_id: "SkySciFi.de",               art: "Pay",  typ: "Film",          name: "Sky Sci-Fi" },
        "102": { url_id: "SkyShowcase.de",            art: "Pay",  typ: "Vollprogramm",  name: "Sky Showcase" },
        "103": { url_id: "SkySport1.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 1" },
        "104": { url_id: "SkySport10.de",             art: "Pay",  typ: "Sport",         name: "Sky Sport 10" },
        "105": { url_id: "SkySport2.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 2" },
        "106": { url_id: "SkySport3.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 3" },
        "107": { url_id: "SkySport4.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 4" },
        "108": { url_id: "SkySport5.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 5" },
        "109": { url_id: "SkySport6.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 6" },
        "110": { url_id: "SkySport7.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 7" },
        "111": { url_id: "SkySport8.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 8" },
        "112": { url_id: "SkySport9.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 9" },
        "113": { url_id: "SkySportAustria1.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Austria 1" },
        "114": { url_id: "SkySportBundesliga.de",     art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga" },
        "115": { url_id: "SkySportBundesliga1.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 1" },
        "116": { url_id: "SkySportBundesliga10.de",   art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 10" },
        "117": { url_id: "SkySportBundesliga2.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 2" },
        "118": { url_id: "SkySportBundesliga3.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 3" },
        "119": { url_id: "SkySportBundesliga4.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 4" },
        "120": { url_id: "SkySportBundesliga5.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 5" },
        "121": { url_id: "SkySportBundesliga6.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 6" },
        "122": { url_id: "SkySportBundesliga7.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 7" },
        "123": { url_id: "SkySportBundesliga8.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 8" },
        "124": { url_id: "SkySportBundesliga9.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 9" },
        "125": { url_id: "SkySportBundesligaUHD.de",  art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga UHD" },
        "126": { url_id: "SkySportF1.de",             art: "Pay",  typ: "Sport",         name: "Sky Sport F1" },
        "127": { url_id: "SkySportGolf.de",           art: "Pay",  typ: "Sport",         name: "Sky Sport Golf" },
        "128": { url_id: "SkySportKompakt1.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Kompakt 1" },
        "129": { url_id: "SkySportMix.de",            art: "Pay",  typ: "Sport",         name: "Sky Sport Mix" },
        "130": { url_id: "SkySportNews.de",           art: "Pay",  typ: "Sport",         name: "Sky Sport News" },
        "131": { url_id: "SkySportPremierLeague.de",  art: "Pay",  typ: "Sport",         name: "Sky Sport Premier League" },
        "132": { url_id: "SkySportTennis.de",         art: "Pay",  typ: "Sport",         name: "Sky Sport Tennis" },
        "133": { url_id: "SkySportTopEvent.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Top Event" },
        "134": { url_id: "SkySportUHD.de",            art: "Pay",  typ: "Sport",         name: "Sky Sport UHD" },
        "135": { url_id: "SkyAtlantic.de",            art: "Pay",  typ: "Serie",         name: "Sky Atlantic" },
        "136": { url_id: "SkyKrimi.de",               art: "Pay",  typ: "Serie",         name: "Sky Krimi" },
        "137": { url_id: "sonnenklarTV.de",           art: "Free", typ: "Shopping",      name: "sonnenklar.TV" },
        "138": { url_id: "SpiegelGeschichte.de",      art: "Pay",  typ: "Doku",          name: "Spiegel Geschichte" },
        "139": { url_id: "SPORT1.de",                 art: "Free", typ: "Sport",         name: "SPORT1" },
        "140": { url_id: "SPORT1+.de",                art: "Pay",  typ: "Sport",         name: "SPORT1+" },
        "141": { url_id: "SRFernsehen.de",            art: "Free", typ: "Vollprogramm",  name: "SR Fernsehen" },
        "142": { url_id: "SuperRTL.de",               art: "Free", typ: "Kinder",        name: "SUPER RTL" },
        "143": { url_id: "SWRBW.de",                  art: "Free", typ: "Vollprogramm",  name: "SWR BW" },
        "144": { url_id: "tagesschau24.de",           art: "Free", typ: "Doku",          name: "tagesschau24" },
        "145": { url_id: "Tele5.de",                  art: "Free", typ: "Film",          name: "Tele 5" },
        "146": { url_id: "TLC.de",                    art: "Free", typ: "Doku",          name: "TLC" },
        "147": { url_id: "TOGGOplus.de",              art: "Free", typ: "Kinder",        name: "TOGGO plus" },
        "148": { url_id: "UniversalTV.de",            art: "Pay",  typ: "Serie",         name: "Universal TV" },
        "149": { url_id: "VolksmusikTV.de",           art: "Free", typ: "Musik",         name: "Volksmusik TV" },
        "150": { url_id: "VOX.de",                    art: "Free", typ: "Vollprogramm",  name: "VOX" },
        "151": { url_id: "VOXup.de",                  art: "Free", typ: "Vollprogramm",  name: "VOXup" },
        "152": { url_id: "WaidwerkTV.de",             art: "Pay",  typ: "Doku",          name: "Waidwerk TV" },
        "153": { url_id: "WarnerTVComedy.de",         art: "Pay",  typ: "Serie",         name: "Warner TV Comedy" },
        "154": { url_id: "WarnerTVFilm.de",           art: "Pay",  typ: "Film",          name: "Warner TV Film" },
        "155": { url_id: "WarnerTVSerie.de",          art: "Pay",  typ: "Serie",         name: "Warner TV Serie" },
        "156": { url_id: "WDR.de",                    art: "Free", typ: "Vollprogramm",  name: "WDR Fernsehen" },
        "157": { url_id: "WELT.de",                   art: "Free", typ: "Doku",          name: "WELT" },
        "158": { url_id: "WeltderWunder.de",          art: "Free", typ: "Doku",          name: "Welt der Wunder" },
        "159": { url_id: "ZDF.de",                    art: "Free", typ: "Vollprogramm",  name: "ZDF" },
        "160": { url_id: "zdf_neo.de",                art: "Free", typ: "Vollprogramm",  name: "ZDFneo" },
        "161": { url_id: "ZDFinfo.de",                art: "Free", typ: "Doku",          name: "ZDFinfo" }
    };
    
    async function smartCreateState(id, value, options = {}) {
        if (existsState(id)) return;
        await createState(id, value, options);
    }
    
    function sleepMs(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    
    const MAP_URL_TO_ID = {};
    for (const key in CONFIG) MAP_URL_TO_ID[CONFIG[key].url_id] = Number(key);
    
    function parseXmltvTime(t) {
        const [stamp, offset] = t.split(" ");
        const d = new Date(`${stamp.slice(0,4)}-${stamp.slice(4,6)}-${stamp.slice(6,8)}T${stamp.slice(8,10)}:${stamp.slice(10,12)}:${stamp.slice(12,14)}${offset}`);
        return `${String(d.getDate()).padStart(2,"0")}.${String(d.getMonth()+1).padStart(2,"0")}.${d.getFullYear()} ` + `${String(d.getHours()).padStart(2,"0")}:${String(d.getMinutes()).padStart(2,"0")}:${String(d.getSeconds()).padStart(2,"0")}`;
    }
    
    function parseGermanDateTime(str) {
        const [datePart, timePart] = str.split(" ");
        const [day, month, year] = datePart.split(".").map(Number);
        const [hour, minute, second] = timePart.split(":").map(Number);
        return new Date(year, month - 1, day, hour, minute, second).getTime();
    }
    
    function setStateIfChanged(id, value, STOPPED = false) {
        if (STOPPED) return;
    
        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);
    }
    
    async function main() {
        loading = true;
        await smartCreateState(sender, "[]", {name: "Senderliste", type: "string", read: true, write: false});
        await smartCreateState(root + "count", 0, {name: "Anzahl", type: "number", read: true, write: false});
        await smartCreateState(root + "refresh", false, {name: "Aktualisieren", type: "boolean", read: true, write: true});
    
        await smartCreateState(root + "filter_favorite", false, {name: "Filter nur Favoriten", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_free", false, {name: "Filter nur Free-TV", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_pay", false, {name: "Filter nur Pay-TV", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_film", false, {name: "Filter Typ Film", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_serie", false, {name: "Filter Typ Serie", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_doku", false, {name: "Filter Typ Doku", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_kinder", false, {name: "Filter Typ Kinder", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_musik", false, {name: "Filter Typ Musik", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_shopping", false, {name: "Filter Typ Shopping", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_sport", false, {name: "Filter Typ Sport", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_nachrichten", false, {name: "Filter Typ Nachrichten", type: "boolean", read: true, write: true});
        await smartCreateState(root + "filter_typ_vollprogramm", false, {name: "Filter Typ Vollprogramm", type: "boolean", read: true, write: true});
    
        await smartCreateState(root + "broadcast_mode", "all", {name: "Broadcast Modus", type: "string", read: true, write: true});
        await smartCreateState(root + "broadcast_list", "[]", {name: "aktuelle Sendungen", type: "string", read: true, write: false});
        await smartCreateState(root + "selected_channel", 0, {name: "Ausgewählter Sender", type: "number", read: true, write: true});
        await smartCreateState(root + "selected_channel_favorite", 0, {name: "Ausgewählter Favorit-Sender", type: "number", read: true, write: true});
        await smartCreateState(root + "active_sender_list", "[]", {name: "alle aktiven Sender mit ID", type: "string", read: true, write: false});
        await smartCreateState(root + "favorite_sender_list", "[]", {name: "alle Favoriten mit ID", type: "string", read: true, write: false});
        await smartCreateState(root + "max_order_number", 0, {name: "Höchste vergebene Sendernummer", type: "number", read: true, write: false});
        await smartCreateState(root + "sender_edit_list", "[]", {name: "Editierungsliste", type: "string", read: true, write: true});
    
        await smartCreateState(root + "edit.active", true, { name: "Aktiv", type: "boolean", read: true, write: true });
        await smartCreateState(root + "edit.favorite", false, { name: "Favorit", type: "boolean", read: true, write: true });
        await smartCreateState(root + "edit.icon_url", "", { name: "Icon URL", type: "string", read: true, write: true });
        await smartCreateState(root + "edit.art", "", { name: "Art", type: "string", read: true, write: false });
        await smartCreateState(root + "edit.typ", "", { name: "Typ", type: "string", read: true, write: false });
        await smartCreateState(root + "edit.name", "", { name: "Name", type: "string", read: true, write: true });
        await smartCreateState(root + "edit.order", 0, {name: "Sender Reihenfolge", type: "number", read: true, write: true});
        await smartCreateState(root + "edit.save", false, { name: "Speichern", type: "boolean", read: true, write: true });
    
        await sleepMs(200);
        await loadChannelsAndProgrammes();
        await sleepMs(500);
        await createSenderList("active");
        await createSenderList("favorite");
        await sleepMs(200);
        await initSenderEditList();
        await sleepMs(2000);
        
        await updateAllActiveBroadcasts();
    
        registerTriggers();
        loading = false;
    }
    main();
    
    function senderPassesFilters(internal_id) {
        const base = data + internal_id;
    
        const active = getState(base + ".active")?.val;
        if (!active) return false;
    
        const favoriteOnly = getState(root + "filter_favorite")?.val === true;
        if (favoriteOnly) {
            const fav = getState(base + ".favorite")?.val;
            if (!fav) return false;
        }
    
        const allowedArt = [];
        if (getState(root + "filter_free")?.val === true) allowedArt.push("Free");
        if (getState(root + "filter_pay")?.val === true)  allowedArt.push("Pay");
    
        const art = getState(base + ".art")?.val;
    
        if (allowedArt.length > 0 && !allowedArt.includes(art)) return false;
    
        const senderTyp = getState(base + ".typ")?.val;
    
        const allowedTypes = [];
        if (getState(root + "filter_typ_film")?.val === true) allowedTypes.push("Film");
        if (getState(root + "filter_typ_serie")?.val === true) allowedTypes.push("Serie");
        if (getState(root + "filter_typ_doku")?.val === true) allowedTypes.push("Doku");
        if (getState(root + "filter_typ_kinder")?.val === true) allowedTypes.push("Kinder");
        if (getState(root + "filter_typ_musik")?.val === true) allowedTypes.push("Musik");
        if (getState(root + "filter_typ_shopping")?.val === true) allowedTypes.push("Shopping");
        if (getState(root + "filter_typ_sport")?.val === true) allowedTypes.push("Sport");
        if (getState(root + "filter_typ_nachrichten")?.val === true) allowedTypes.push("Nachrichten");
        if (getState(root + "filter_typ_vollprogramm")?.val === true) allowedTypes.push("Vollprogramm");
    
        if (allowedTypes.length > 0 && !allowedTypes.includes(senderTyp)) return false;
    
        return true;
    }
    
    async function updateMaxOrderNumber() {
        const senderList = JSON.parse(getState(sender).val || "[]");
        let max = 0;
    
        for (const s of senderList) {
            const order = getState(data + s.internal_id + ".order")?.val || 0;
            if (order > max) max = order;
        }
    
        setStateIfChanged(root + "max_order_number", max);
        return max;
    }
    
    async function loadSenderIntoEdit(id) {
        const base = data + id;
    
        setStateIfChanged(root + "edit.active",   getState(base + ".active")?.val || false);
        setStateIfChanged(root + "edit.favorite", getState(base + ".favorite")?.val || false);
        setStateIfChanged(root + "edit.icon_url", getState(base + ".icon_url")?.val || "");
        setStateIfChanged(root + "edit.art",      getState(base + ".art")?.val || "");
        setStateIfChanged(root + "edit.typ",      getState(base + ".typ")?.val || "");
        setStateIfChanged(root + "edit.name",     getState(base + ".name")?.val || "");
        setStateIfChanged(root + "edit.order",    getState(base + ".order")?.val || 0);
    }
    
    async function saveEditToSender(id) {
        const base = data + id;
    
        setStateIfChanged(base + ".active",   getState(root + "edit.active")?.val);
        setStateIfChanged(base + ".favorite", getState(root + "edit.favorite")?.val);
        setStateIfChanged(base + ".order",    getState(root + "edit.order")?.val);
    }
    
    async function createEditSenderList() {
        const result = [];
        const senderList = JSON.parse(getState(sender).val || "[]");
    
        for (const s of senderList) {
            const base  = data + s.internal_id;
    
            const name     = getState(base + ".name")?.val || "";
            const order    = Number(getState(base + ".order")?.val || 0);
            const favorite = getState(base + ".favorite")?.val === true;
            const active   = getState(base + ".active")?.val === true;
    
            result.push({
                text: name,
                value: s.internal_id,
                order: order,
                favorite: favorite,
                active: active
            });
        }
    
        result.sort((a, b) => {
            const oa = a.order;
            const ob = b.order;
    
            if (oa > 0 && ob === 0) return -1;
            if (oa === 0 && ob > 0) return 1;
    
            if (oa > 0 && ob > 0) return oa - ob;
    
            return a.text.localeCompare(b.text);
        });
    
        return result;
    }
    
    async function initSenderEditList() {
        const list = await createEditSenderList();
        setStateIfChanged(root + "sender_edit_list", JSON.stringify(list));
    }
    
    async function loadChannelsAndProgrammes() {
        try {
            const ua = new UserAgent().toString();
    
            const response = await httpGetAsync("https://iptv-epg.org/files/epg-de.xml", { timeout: 20000, headers: { "User-Agent": ua } });
            if (!response || response.statusCode !== 200) return;
    
            const xml = response.data;
            const result = await xml2js.parseStringPromise(xml);
    
            const channels = result.tv.channel
                .filter(ch => MAP_URL_TO_ID[ch.$.id])
                .map(ch => ({
                    id: ch.$.id,
                    name: Array.isArray(ch["display-name"]) ? (typeof ch["display-name"][0] === "string" ? ch["display-name"][0] : ch["display-name"][0]._ || "") : "",
                    internal_id: MAP_URL_TO_ID[ch.$.id],
                    icon_url: ch.icon?.[0]?.$.src || ""
                }))
                .sort((a, b) => a.internal_id - b.internal_id);
    
            setStateIfChanged(root + "count", channels.length);
            setStateIfChanged(sender, JSON.stringify(channels.map(c => ({id: c.id, name: CONFIG[c.internal_id].name, internal_id: c.internal_id}))));
    
            const programmes = result.tv.programme
                .filter(p => MAP_URL_TO_ID[p.$.channel])
                .map(p => ({
                    internal_id: MAP_URL_TO_ID[p.$.channel],
                    start: parseXmltvTime(p.$.start),
                    stop:  parseXmltvTime(p.$.stop),
                    title: Array.isArray(p.title) ? (p.title[0]._ || p.title[0]) : "",
                    desc:  Array.isArray(p.desc)  ? (p.desc[0]._  || p.desc[0])  : "",
                    date:  Array.isArray(p.date)  ? p.date[0] : "",
                    episode: Array.isArray(p["episode-num"]) ? p["episode-num"][0] : "",
                    categories: Array.isArray(p.category) ? p.category.map(c => (typeof c === "string" ? c : c._ || "")) : [],
                    icon: p.icon?.[0]?.$.src || ""
                }));
    
            const grouped = {};
            for (const p of programmes) {
                if (!grouped[p.internal_id]) grouped[p.internal_id] = [];
                grouped[p.internal_id].push(p);
            }
    
            for (const ch of channels) {
                const list = grouped[ch.internal_id] || [];
                const base = data + ch.internal_id;
    
                const now = Date.now();
                const filtered = list.filter(p => {
                    const stopTs = new Date(
                        p.stop.slice(6,10) + "-" + p.stop.slice(3,5) + "-" + p.stop.slice(0,2) + "T" +
                        p.stop.slice(11,19)
                    ).getTime();
                    return stopTs >= now;
                });
    
                // internal_id aus JSON entfernen
                const cleaned = filtered.map(p => {
                    const { internal_id, ...rest } = p;
                    return rest;
                });
    
                await smartCreateState(base + ".broadcast", "[]", { name: "Sendungen", type: "string", read: true, write: false });
                await smartCreateState(base + ".active", true, { name: "Aktiv", type: "boolean", read: true, write: true });
                await smartCreateState(base + ".favorite", false, { name: "Favorit", type: "boolean", read: true, write: true });
                await smartCreateState(base + ".icon_url", ch.icon_url, { name: "Icon URL", type: "string", read: true, write: true });
                await smartCreateState(base + ".art", CONFIG[ch.internal_id].art, { name: "Art", type: "string", read: true, write: false });
                await smartCreateState(base + ".typ", CONFIG[ch.internal_id].typ, { name: "Typ", type: "string", read: true, write: false });
                await smartCreateState(base + ".name", CONFIG[ch.internal_id].name, { name: "Name", type: "string", read: true, write: true });
                await smartCreateState(base + ".order", 0, {name: "Sender Reihenfolge", type: "number", read: true, write: true});
                setStateIfChanged(base + ".broadcast", JSON.stringify(cleaned));
            }
        } catch (err) {
            log(err, "error");
        }
    }
    
    async function createSenderList(mode) {
        const result = [];
        const senderList = JSON.parse(getState(sender).val || "[]");
    
        for (const s of senderList) {
            const base = data + s.internal_id;
    
            if (mode === "favorite") {
                const favorite = getState(base + ".favorite")?.val;
                if (!favorite) continue;
            }
    
            const senderName = getState(base + ".name")?.val || "";
            result.push({text: senderName, value: s.internal_id
            });
        }
    
        if (mode === "favorite") {
            result.sort((a, b) => {
                const orderA = getState(data + a.value + ".order")?.val || 0;
                const orderB = getState(data + b.value + ".order")?.val || 0;
    
                if (orderA > 0 && orderB === 0) return -1;
                if (orderA === 0 && orderB > 0) return 1;
                if (orderA > 0 && orderB > 0) return orderA - orderB;
    
                return a.text.localeCompare(b.text);
            });
        } else {
            result.sort((a, b) => a.text.localeCompare(b.text));
        }
    
        if (mode === "active") {
            setStateIfChanged(root + "active_sender_list", JSON.stringify(result));
        } else if (mode === "favorite") {
            setStateIfChanged(root + "favorite_sender_list", JSON.stringify(result));
        }
    
        return result;
    }
    
    async function updateAllActiveBroadcasts() {
        const result = [];
        const now = Date.now();
    
        const senderList = JSON.parse(getState(sender).val || "[]");
        for (const s of senderList) {
            if (!senderPassesFilters(s.internal_id)) continue;
    
            const base  = data + s.internal_id;
            const order = getState(base + ".order")?.val || 0;
    
            const raw = getState(base + ".broadcast")?.val || "[]";
            let list = [];
    
            try {
                list = JSON.parse(raw);
            } catch (e) {
                log("Fehler beim JSON-Parse für Sender " + s.internal_id + ": " + e, "warn");
                continue;
            }
    
            const senderIcon = getState(base + ".icon_url")?.val || "";
            const senderName = getState(base + ".name")?.val || "";
    
            for (const entry of list) {
                const start_ts = parseGermanDateTime(entry.start);
                const stop_ts  = parseGermanDateTime(entry.stop);
    
                if (now >= start_ts && now < stop_ts) {
                    const startTime = entry.start.split(" ")[1].slice(0,5);
                    const stopTime  = entry.stop.split(" ")[1].slice(0,5);
    
                    result.push({
                        sender_icon_url: `<img style="max-width:80px; max-height:80px; object-fit:contain; vertical-align:middle;" src="${senderIcon}">`,
                        sender_name: senderName,
                        start: startTime,
                        stop: stopTime,
                        title: entry.title,
                        desc: entry.desc,
                        date: entry.date,
                        icon: entry.icon,
                        order: order
                    });
                    break;
                }
            }
        }
    
        result.sort((a, b) => {
            const oa = a.order || 0;
            const ob = b.order || 0;
    
            if (oa > 0 && ob === 0) return -1;
            if (oa === 0 && ob > 0) return 1;
            if (oa > 0 && ob > 0) return oa - ob;
    
            return a.sender_name.localeCompare(b.sender_name);
        });
    
        setStateIfChanged(root + "broadcast_list", JSON.stringify(result));
        return result;
    }
    
    async function updateSelectedChannelBroadcast() {
        const result = [];
        const now = Date.now();
    
        let selected;
        if (select_channel_mode == 1) {
            selected = getState(root + "selected_channel")?.val;
        } else {
            selected = getState(root + "selected_channel_favorite")?.val;
        }
        if (!selected) return [];
    
        const base = data + selected;
        const raw = getState(base + ".broadcast")?.val || "[]";
        let list = [];
    
        try {
            list = JSON.parse(raw);
        } catch (e) {
            log("Fehler beim JSON-Parse für selected_channel " + selected + ": " + e, "warn");
            return [];
        }
    
        const senderIcon = getState(base + ".icon_url")?.val || "";
        const senderName = getState(base + ".name")?.val || "";
    
        for (const entry of list) {
            const stop_ts = parseGermanDateTime(entry.stop);
    
            if (stop_ts > now) {
                const startTime = entry.start.split(" ")[1].slice(0,5);
                const stopTime  = entry.stop.split(" ")[1].slice(0,5);
    
                result.push({
                    sender_icon_url: `<img style="max-width:80px; max-height:80px; object-fit:contain; vertical-align:middle;" src="${senderIcon}">`,
                    sender_name: senderName,
                    start: startTime,
                    stop: stopTime,
                    title: entry.title,
                    desc: entry.desc,
                    date: entry.date,
                    icon: entry.icon});
            }
        }
    
        setStateIfChanged(root + "broadcast_list", JSON.stringify(result));
        return result;
    }
    
    schedule("0 3 * * *", async () => {
        await loadChannelsAndProgrammes();
        await initSenderEditList();
    });
    
    schedule("1 * * * * *", async () => {
        if (loading === true) return;
        const mode = getState(root + "broadcast_mode")?.val;
    
        if (mode === "selected") {
            await updateSelectedChannelBroadcast();
        } else {
            await updateAllActiveBroadcasts();
        }
    });
    
    function registerTriggers() {
        on({ id: root + "refresh", change: "ne" }, async (obj) => {
            if (obj.state && obj.state.ack === false && obj.state.val === true) {
                try {
                    await loadChannelsAndProgrammes();
                    await createSenderList("active");
                    await createSenderList("favorite");
                    await initSenderEditList();
                    await updateMaxOrderNumber();
                } catch (err) {}
                setState(root + "refresh", false, true);
            }
        });
    
        on({ id: root + "edit.save", change: "ne" }, async (obj) => {
            if (obj.state && obj.state.ack === false && obj.state.val === true) {
                try {
                    if (select_channel_mode == 1) {
                        await saveEditToSender(getState(root + "selected_channel").val);
                    } else if (select_channel_mode == 2) {
                        await saveEditToSender(getState(root + "selected_channel_favorite").val);
                    }
                    await createSenderList("active");
                    await createSenderList("favorite");
                } catch (err) {}
                setState(root + "edit.save", false, true);
            }
        });
    
        on({ id: root + "selected_channel", change: "ne" }, async obj => {
            const val = obj.state.val;
    
            if (!val) {
                setStateIfChanged(root + "broadcast_mode", "all");
            } else {
                select_channel_mode = 1;
                setStateIfChanged(root + "broadcast_mode", "selected");
                await updateSelectedChannelBroadcast();
                await updateMaxOrderNumber();
                await loadSenderIntoEdit(val);
            }
        });
    
        on({ id: root + "selected_channel_favorite", change: "ne" }, async obj => {
            const val = obj.state.val;
    
            if (!val) {
                setStateIfChanged(root + "broadcast_mode", "all");
            } else {
                select_channel_mode = 2;
                setStateIfChanged(root + "broadcast_mode", "selected");
                await updateSelectedChannelBroadcast();
                await updateMaxOrderNumber();
                await loadSenderIntoEdit(val);
            }
        });
    
        const TYPE_FILTERS = [root + "filter_favorite", root + "filter_free", root + "filter_pay", root + "filter_typ_film", root + "filter_typ_serie", root + "filter_typ_doku", root + "filter_typ_kinder", root + "filter_typ_musik", root + "filter_typ_shopping", root + "filter_typ_sport", root + "filter_typ_nachrichten", root + "filter_typ_vollprogramm"];
        on({ id: TYPE_FILTERS, change: "ne" }, async () => {
            await updateAllActiveBroadcasts();
        });
    
        on({ id: root + "broadcast_mode", change: "ne" }, async obj => {
            const val = obj.state.val;
    
            if (val === 'all') {
                await updateAllActiveBroadcasts();
            }
        });
    
        on({ id: root + "sender_edit_list", change: "ne" }, async obj => {
            if (!obj || !obj.state || !obj.state.val) return;
    
            let list;
            try {
                list = JSON.parse(obj.state.val);
            } catch (e) {
                log("Fehler: sender_edit_list enthält kein gültiges JSON", "warn");
                return;
            }
    
            for (const entry of list) {
                const id = entry.value;
                const base = data + id;
    
                setStateIfChanged(base + ".order", Number(entry.order || 0));
                setStateIfChanged(base + ".favorite", entry.favorite === true);
                setStateIfChanged(base + ".active", entry.active === true);
            }
            
            await initSenderEditList();
        });
    }
    

    Viel Spaß und Erfolg bei der Umsetzung.

    Ro75.

    Änderung 1.0.1 - 24.06.2026

    • Start und Stop jetzt nur im klassischen Stil (HH:MM). Also 19:15, 20:15, etc.
    • Weiterer Datenpunkt "selected_channel_favorite" löst die selben Ereignisse wie "selected_channel" aus. Senderdetails für Visualisierung und in der Hauptanzeige alle Sendungen zum gewählten Kanal.
    • Zentrale Sendereditierung. Jetzt können über den Datenpunkt "sender_edit_list" die wichtigsten Einstellungen pro Sender zentral vorgenommen werden. Dazu wird der Inhalt des Datenpunktes (json) angepasst. Dazu kann der Sender den Favoriten (favorite) hinzugefügt, aktiviert oder deaktiviert (active) werden. Darüber hinaus sit es möglich, die Senderreihenfolge (order) festzulegen. Wenn alle Änderungen durchgeführt - einfach speichern und ein Trigger erledigt automatisch den Rest (Daten werden an Sender übergeben und Einstellungen werden sofort aktiv).

    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

    bahnuhrB sigi234S NegaleinN 5 Antworten Letzte Antwort
    1
    • Ro75R Ro75

      Hallo. Heute mal einen kleinen Einblick in mein neustes Projekt, mit etwas KI Unterstützung. Knapp 700 Zeilen Code liefern das hier:
      ac6d66e6-fd45-4963-8ab1-b005b59877ab-image.jpeg

      63c26a64-193d-40c1-8000-0d9828ba8031-image.jpeg

      Ca. 170 Sender. Favoritensteuerung, Senderreihenfolge, automatische Aktualisierung.

      2faf835b-fe3f-4141-9f2a-1838d48d958c-image.jpeg
      Oder alle anstehenden Sendungen zu einem Sender.

      EPG-TV für ioBroker

      Mit diesem Script lassen sich aktuelle TV-Programmdaten (EPG) von über 160 deutschen TV-Sendern direkt in ioBroker integrieren. Die Daten werden automatisch aus einer XMLTV-Quelle geladen und als Datenpunkte zur Verfügung gestellt.

      Neben den eigentlichen Programminformationen bietet das Script eine komfortable Senderverwaltung mit Favoritenfunktion, individueller Sortierung sowie umfangreichen Filtermöglichkeiten. Dadurch eignet es sich hervorragend für Visualisierungen in Jarvis, VIS oder anderen Dashboards.

      Funktionen

      • Über 160 deutsche TV-Sender
      • Free-TV und Pay-TV
      • Automatischer Import der EPG-Daten
      • Aktuelle und kommende Sendungen
      • Senderlogos
      • Favoritenverwaltung
      • Individuelle Senderreihenfolge
      • Filter nach Senderart und Kategorie
      • Automatische tägliche Aktualisierung

      Voraussetzungen

      Für das Script werden folgende zusätzliche NPM-Module benötigt:

      Modul Verwendung
      xml2js Einlesen und Verarbeiten der XMLTV-Daten
      user-agents Erzeugung eines Browser-User-Agents für den Abruf der EPG-Daten

      Die Module können im JavaScript-Adapter unter „Zusätzliche NPM-Module“ eingetragen werden. Anschließend den JavaScript-Adapter neu starten.

      Visualisierung

      Die Ausgabe erfolgt hauptsächlich über den Datenpunkt broadcast_list.

      Für die Darstellung verwende ich das JSON-Widget aus VIS Material Design ab Version 0.5.94. Die Programmdaten werden bereits als fertiges JSON bereitgestellt und können direkt im Widget verarbeitet werden.

      Wichtige Hinweise

      Beim ersten Start werden automatisch alle verfügbaren Sender aus der XMLTV-Quelle eingelesen und die benötigten Datenpunkte angelegt.

      Folgende Datenpunkte werden vollständig vom Script verwaltet und sollten nicht manuell geändert werden:

      • sender_json
      • active_sender_list
      • favorite_sender_list
      • broadcast_list

      Die Senderbearbeitung erfolgt ausschließlich über die dafür vorgesehenen Datenpunkte im Bereich edit.*.

      Wichtige Datenpunkte

      Datenpunkt Bedeutung Verwendung
      sender_json Interne Senderliste Wird vom Script zur Senderverwaltung verwendet
      active_sender_list Alle aktiven Sender Für Dropdowns und Senderauswahl
      favorite_sender_list Alle Favoritensender Für Favoritenlisten und Senderauswahl
      broadcast_list Programmausgabe Hauptdatenpunkt für Tabellen, Listen und TV-Guides
      selected_channel Ausgewählter Sender Zeigt aktuelle und kommende Sendungen eines Senders
      refresh Manueller Reload Lädt Sender- und EPG-Daten neu
      filter_* Filterfunktionen Filterung nach Favoriten, Free-/Pay-TV und Kategorien
      broadcast_mode Anzeigemodus all = alle Sender, selected = ausgewählter Sender
      count Anzahl gefundener Sender Kontrollwert nach dem Einlesen
      max_order_number Höchste vergebene Sendernummer Hilfswert für die Senderreihenfolge

      Verfügbare Filter

      • Favoriten
      • Free-TV
      • Pay-TV
      • Film
      • Serie
      • Doku
      • Kinder
      • Musik
      • Shopping
      • Sport
      • Nachrichten
      • Vollprogramm

      Automatische Aktualisierung

      • Täglicher EPG-Import um 03:00 Uhr
      • Manueller Reload über refresh
      • Laufende Aktualisierung der Programmliste

      Verwendung

      Alle aktuellen Sendungen anzeigen

      broadcast_mode = all

      Zeigt die aktuell laufenden Sendungen aller aktiven Sender in broadcast_list.

      Einzelnen Sender anzeigen

      selected_channel auf die gewünschte Sender-ID setzen.

      Anschließend enthält broadcast_list die aktuelle sowie alle kommenden Sendungen dieses Senders.

      Favoriten verwenden

      Sender können als Favoriten markiert und über favorite_sender_list oder den Filter filter_favorite verwendet werden.

      Sender filtern

      Die Ausgabe kann über die verschiedenen filter_* Datenpunkte nach Senderart oder Kategorie eingeschränkt werden.

      Hinweis
      Dieses Script wurde mit Unterstützung von KI entwickelt und anschließend in ioBroker getestet und angepasst. Trotz umfangreicher Tests können Fehler oder Verbesserungspotenziale nicht ausgeschlossen werden. Rückmeldungen, Fehlerberichte und Verbesserungsvorschläge sind daher jederzeit willkommen.

      Hier das Script:

      // === EPG - TV-Daten ===
       
      //Erst-Version 1.0.0 - 22.06.2026
      //Version 1.0.1 - 24.06.2026
      //Ersteller Ro75.
       
      //Voraussetzungen (Version 1.0.1 getestet mit)
      //NodeJS: 22.22.x
      //Javascript-Adapter: 9.0.18
      //Admin-Adapter: 7.8.23
      //js-controler: 7.2.2
      
      //********** START KONFIGURATION **********
      const root     = "0_userdata.0.epg.";
      const data     = root + "data.";
      const sender   = root + "sender_json";
      
      //********** AB HIER NICHTS MEHR ÄNDERN **********
      const xml2js = require("xml2js");
      const UserAgent = require("user-agents");
      
      let select_channel_mode = 0;
      let loading = false;
      
      const CONFIG = {
          "1":   { url_id: "1-2-3tv.de",                art: "Free", typ: "Shopping",      name: "1-2-3.tv" },
          "2":   { url_id: "13THSTREET.de",             art: "Pay",  typ: "Film",          name: "13th Street" },
          "3":   { url_id: "3sat.de",                   art: "Free", typ: "Vollprogramm",  name: "3sat" },
          "4":   { url_id: "atv.de",                    art: "Free", typ: "Vollprogramm",  name: "ATV" },
          "5":   { url_id: "AnimalPlanet.de",           art: "Pay",  typ: "Doku",          name: "Animal Planet" },
          "6":   { url_id: "ANIXESerie.de",             art: "Free", typ: "Serie",         name: "ANIXE Serie" },
          "7":   { url_id: "ANIXE+.de",                 art: "Free", typ: "Vollprogramm",  name: "ANIXE+" },
          "8":   { url_id: "ARD-alpha.de",              art: "Free", typ: "Doku",          name: "ARD alpha" },
          "9":   { url_id: "ARTE.de",                   art: "Free", typ: "Doku",          name: "ARTE" },
          "10":  { url_id: "automotorundsport.de",      art: "Pay",  typ: "Doku",          name: "auto motor und sport" },
          "11":  { url_id: "AXNBlack.de",               art: "Pay",  typ: "Film",          name: "AXN Black" },
          "12":  { url_id: "AXNWhite.de",               art: "Pay",  typ: "Serie",         name: "AXN White" },
          "13":  { url_id: "Beate-UhseTV.de",           art: "Pay",  typ: "Film",          name: "Beate-Uhse.TV" },
          "14":  { url_id: "BR.de",                     art: "Free", typ: "Vollprogramm",  name: "BR Fernsehen" },
          "15":  { url_id: "CartoonNetwork.de",         art: "Pay",  typ: "Kinder",        name: "Cartoon Network" },
          "16":  { url_id: "Cartoonito.de",             art: "Pay",  typ: "Kinder",        name: "Cartoonito" },
          "17":  { url_id: "ComedyCentral.de",          art: "Free", typ: "Serie",         name: "Comedy Central" },
          "18":  { url_id: "Crime+Investigation.de",    art: "Pay",  typ: "Doku",          name: "Crime + Investigation" },
          "19":  { url_id: "CuriosityChannel.de",       art: "Pay",  typ: "Doku",          name: "Curiosity Channel" },
          "20":  { url_id: "DasErste.de",               art: "Free", typ: "Vollprogramm",  name: "Das Erste" },
          "21":  { url_id: "DAZN.de",                   art: "Pay",  typ: "Sport",         name: "DAZN" },
          "22":  { url_id: "DAZN1.de",                  art: "Pay",  typ: "Sport",         name: "DAZN 1" },
          "23":  { url_id: "DAZN2.de",                  art: "Pay",  typ: "Sport",         name: "DAZN 2" },
          "24":  { url_id: "DeluxeDanceByKontor.de",    art: "Free", typ: "Musik",         name: "DELUXE DANCE by Kontor" },
          "25":  { url_id: "DeluxeFlashback.de",        art: "Free", typ: "Musik",         name: "DELUXE FLASHBACK" },
          "26":  { url_id: "DeluxeLounge.de",           art: "Free", typ: "Musik",         name: "DELUXE LOUNGE" },
          "27":  { url_id: "DeluxeMusic.de",            art: "Free", typ: "Musik",         name: "DELUXE MUSIC" },
          "28":  { url_id: "DeluxeRap.de",              art: "Free", typ: "Musik",         name: "DELUXE RAP" },
          "29":  { url_id: "DeluxeRock.de",             art: "Free", typ: "Musik",         name: "DELUXE ROCK" },
          "30":  { url_id: "DeutschesMusikFernsehen.de",art: "Free", typ: "Musik",         name: "Deutsches Musik Fernsehen" },
          "31":  { url_id: "Discovery.de",              art: "Pay",  typ: "Doku",          name: "Discovery Channel" },
          "32":  { url_id: "DisneyChannel.de",          art: "Free", typ: "Kinder",        name: "Disney Channel" },
          "33":  { url_id: "DMAX.de",                   art: "Free", typ: "Doku",          name: "DMAX" },
          "34":  { url_id: "dokusat.de",                art: "Free", typ: "Doku",          name: "dokuSAT" },
          "35":  { url_id: "EDGESport.de",              art: "Pay",  typ: "Sport",         name: "EDGE Sport" },
          "36":  { url_id: "emsTV.de",                  art: "Free", typ: "Musik",         name: "ems TV" },
          "37":  { url_id: "eSPORTS1.de",               art: "Pay",  typ: "Sport",         name: "eSPORTS1" },
          "38":  { url_id: "Eurosport1.de",             art: "Free", typ: "Sport",         name: "Eurosport 1" },
          "39":  { url_id: "Eurosport2.de",             art: "Pay",  typ: "Sport",         name: "Eurosport 2" },
          "40":  { url_id: "Heimatkanal.de",            art: "Pay",  typ: "Film",          name: "Heimatkanal" },
          "41":  { url_id: "HGTV.de",                   art: "Free", typ: "Doku",          name: "HGTV" },
          "42":  { url_id: "HISTORY.de",                art: "Pay",  typ: "Doku",          name: "HISTORY" },
          "43":  { url_id: "hr.de",                     art: "Free", typ: "Vollprogramm",  name: "hr Fernsehen" },
          "44":  { url_id: "HSE.de",                    art: "Free", typ: "Shopping",      name: "HSE" },
          "45":  { url_id: "HSE24.de",                  art: "Free", typ: "Shopping",      name: "HSE24" },
          "46":  { url_id: "Jukebox.de",                art: "Free", typ: "Musik",         name: "Jukebox" },
          "47":  { url_id: "JustCooking.de",            art: "Free", typ: "Doku",          name: "Just Cooking" },
          "48":  { url_id: "KabelEins.de",              art: "Free", typ: "Vollprogramm",  name: "kabel eins" },
          "49":  { url_id: "KabelEinsCLASSICS.de",      art: "Pay",  typ: "Film",          name: "kabel eins CLASSICS" },
          "50":  { url_id: "KabelEinsDoku.de",          art: "Free", typ: "Doku",          name: "kabel eins Doku" },
          "51":  { url_id: "KiKA.de",                   art: "Free", typ: "Kinder",        name: "KiKA" },
          "52":  { url_id: "KinoweltTV.de",             art: "Pay",  typ: "Film",          name: "Kinowelt TV" },
          "53":  { url_id: "MDRSachsen.de",             art: "Free", typ: "Vollprogramm",  name: "MDR Sachsen" },
          "54":  { url_id: "MTV.de",                    art: "Pay",  typ: "Musik",         name: "MTV" },
          "55":  { url_id: "MTV00s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 00s" },
          "56":  { url_id: "MTV80s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 80s" },
          "57":  { url_id: "MTV90s.de",                 art: "Pay",  typ: "Musik",         name: "MTV 90s" },
          "58":  { url_id: "MTVHits.de",                art: "Pay",  typ: "Musik",         name: "MTV Hits" },
          "59":  { url_id: "MTVLive.de",                art: "Pay",  typ: "Musik",         name: "MTV Live" },
          "60":  { url_id: "n-tv.de",                   art: "Free", typ: "Doku",          name: "n-tv" },
          "61":  { url_id: "N24Doku.de",                art: "Free", typ: "Doku",          name: "N24 Doku" },
          "62":  { url_id: "NationalGeographic.de",     art: "Pay",  typ: "Doku",          name: "National Geographic" },
          "63":  { url_id: "NationalGeographicWILD.de", art: "Pay",  typ: "Doku",          name: "Nat Geo Wild" },
          "64":  { url_id: "NDR.de",                    art: "Free", typ: "Vollprogramm",  name: "NDR Fernsehen" },
          "65":  { url_id: "Nick.de",                   art: "Free", typ: "Kinder",        name: "Nick" },
          "66":  { url_id: "NickComedyCentral+1.de",    art: "Free", typ: "Kinder",        name: "Nick / CC +1" },
          "67":  { url_id: "NickJr.de",                 art: "Pay",  typ: "Kinder",        name: "Nick Jr." },
          "68":  { url_id: "Nicktoons.de",              art: "Pay",  typ: "Kinder",        name: "Nicktoons" },
          "69":  { url_id: "NITRO.de",                  art: "Free", typ: "Vollprogramm",  name: "NITRO" },
          "70":  { url_id: "ONE.de",                    art: "Free", typ: "Vollprogramm",  name: "ONE" },
          "71":  { url_id: "phoenix.de",                art: "Free", typ: "Doku",          name: "phoenix" },
          "72":  { url_id: "ProSieben.de",              art: "Free", typ: "Vollprogramm",  name: "ProSieben" },
          "73":  { url_id: "ProSiebenFUN.de",           art: "Pay",  typ: "Serie",         name: "ProSieben FUN" },
          "74":  { url_id: "ProSiebenMAXX.de",          art: "Free", typ: "Vollprogramm",  name: "ProSieben MAXX" },
          "75":  { url_id: "QVC.de",                    art: "Free", typ: "Shopping",      name: "QVC" },
          "76":  { url_id: "rbbBrandenburg.de",         art: "Free", typ: "Vollprogramm",  name: "rbb Brandenburg" },
          "77":  { url_id: "RiC.de",                    art: "Free", typ: "Kinder",        name: "RiC" },
          "78":  { url_id: "RomanceTV.de",              art: "Pay",  typ: "Film",          name: "Romance TV" },
          "79":  { url_id: "RTL.de",                    art: "Free", typ: "Vollprogramm",  name: "RTL" },
          "80":  { url_id: "RTLCrime.de",               art: "Pay",  typ: "Serie",         name: "RTL Crime" },
          "81":  { url_id: "RTLLiving.de",              art: "Pay",  typ: "Doku",          name: "RTL Living" },
          "82":  { url_id: "RTLPassion.de",             art: "Pay",  typ: "Serie",         name: "RTL Passion" },
          "83":  { url_id: "RTLplus.de",                art: "Free", typ: "Serie",         name: "RTLplus" },
          "84":  { url_id: "RTLup.de",                  art: "Free", typ: "Vollprogramm",  name: "RTLup" },
          "85":  { url_id: "RTLZWEI.de",                art: "Free", typ: "Vollprogramm",  name: "RTLZWEI" },
          "86":  { url_id: "SAT1.de",                   art: "Free", typ: "Vollprogramm",  name: "SAT.1" },
          "87":  { url_id: "SAT1emotions.de",           art: "Pay",  typ: "Serie",         name: "SAT.1 emotions" },
          "88":  { url_id: "SAT1GOLD.de",               art: "Free", typ: "Vollprogramm",  name: "SAT.1 GOLD" },
          "89":  { url_id: "SchlagerDeluxe.de",         art: "Free", typ: "Musik",         name: "Schlager Deluxe" },
          "90":  { url_id: "SchlagerparadiesTV.de",     art: "Free", typ: "Musik",         name: "Schlagerparadies TV" },
          "91":  { url_id: "sixx.de",                   art: "Free", typ: "Vollprogramm",  name: "sixx" },
          "92":  { url_id: "SkyCinemaAction.de",        art: "Pay",  typ: "Film",          name: "Sky Cinema Action" },
          "93":  { url_id: "SkyCinemaBlockbuster.de",   art: "Pay",  typ: "Film",          name: "Sky Cinema Blockbuster" },
          "94":  { url_id: "SkyCinemaClassics.de",      art: "Pay",  typ: "Film",          name: "Sky Cinema Classics" },
          "96":  { url_id: "SkyCinemaPremiere.de",      art: "Pay",  typ: "Film",          name: "Sky Cinema Premiere" },
          "97":  { url_id: "SkyCrime.de",               art: "Pay",  typ: "Serie",         name: "Sky Crime" },
          "98":  { url_id: "SkyDocumentaries.de",       art: "Pay",  typ: "Doku",          name: "Sky Documentaries" },
          "99":  { url_id: "SkyNature.de",              art: "Pay",  typ: "Doku",          name: "Sky Nature" },
          "100": { url_id: "SkyOne.de",                 art: "Pay",  typ: "Vollprogramm",  name: "Sky One" },
          "101": { url_id: "SkySciFi.de",               art: "Pay",  typ: "Film",          name: "Sky Sci-Fi" },
          "102": { url_id: "SkyShowcase.de",            art: "Pay",  typ: "Vollprogramm",  name: "Sky Showcase" },
          "103": { url_id: "SkySport1.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 1" },
          "104": { url_id: "SkySport10.de",             art: "Pay",  typ: "Sport",         name: "Sky Sport 10" },
          "105": { url_id: "SkySport2.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 2" },
          "106": { url_id: "SkySport3.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 3" },
          "107": { url_id: "SkySport4.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 4" },
          "108": { url_id: "SkySport5.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 5" },
          "109": { url_id: "SkySport6.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 6" },
          "110": { url_id: "SkySport7.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 7" },
          "111": { url_id: "SkySport8.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 8" },
          "112": { url_id: "SkySport9.de",              art: "Pay",  typ: "Sport",         name: "Sky Sport 9" },
          "113": { url_id: "SkySportAustria1.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Austria 1" },
          "114": { url_id: "SkySportBundesliga.de",     art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga" },
          "115": { url_id: "SkySportBundesliga1.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 1" },
          "116": { url_id: "SkySportBundesliga10.de",   art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 10" },
          "117": { url_id: "SkySportBundesliga2.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 2" },
          "118": { url_id: "SkySportBundesliga3.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 3" },
          "119": { url_id: "SkySportBundesliga4.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 4" },
          "120": { url_id: "SkySportBundesliga5.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 5" },
          "121": { url_id: "SkySportBundesliga6.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 6" },
          "122": { url_id: "SkySportBundesliga7.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 7" },
          "123": { url_id: "SkySportBundesliga8.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 8" },
          "124": { url_id: "SkySportBundesliga9.de",    art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga 9" },
          "125": { url_id: "SkySportBundesligaUHD.de",  art: "Pay",  typ: "Sport",         name: "Sky Sport Bundesliga UHD" },
          "126": { url_id: "SkySportF1.de",             art: "Pay",  typ: "Sport",         name: "Sky Sport F1" },
          "127": { url_id: "SkySportGolf.de",           art: "Pay",  typ: "Sport",         name: "Sky Sport Golf" },
          "128": { url_id: "SkySportKompakt1.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Kompakt 1" },
          "129": { url_id: "SkySportMix.de",            art: "Pay",  typ: "Sport",         name: "Sky Sport Mix" },
          "130": { url_id: "SkySportNews.de",           art: "Pay",  typ: "Sport",         name: "Sky Sport News" },
          "131": { url_id: "SkySportPremierLeague.de",  art: "Pay",  typ: "Sport",         name: "Sky Sport Premier League" },
          "132": { url_id: "SkySportTennis.de",         art: "Pay",  typ: "Sport",         name: "Sky Sport Tennis" },
          "133": { url_id: "SkySportTopEvent.de",       art: "Pay",  typ: "Sport",         name: "Sky Sport Top Event" },
          "134": { url_id: "SkySportUHD.de",            art: "Pay",  typ: "Sport",         name: "Sky Sport UHD" },
          "135": { url_id: "SkyAtlantic.de",            art: "Pay",  typ: "Serie",         name: "Sky Atlantic" },
          "136": { url_id: "SkyKrimi.de",               art: "Pay",  typ: "Serie",         name: "Sky Krimi" },
          "137": { url_id: "sonnenklarTV.de",           art: "Free", typ: "Shopping",      name: "sonnenklar.TV" },
          "138": { url_id: "SpiegelGeschichte.de",      art: "Pay",  typ: "Doku",          name: "Spiegel Geschichte" },
          "139": { url_id: "SPORT1.de",                 art: "Free", typ: "Sport",         name: "SPORT1" },
          "140": { url_id: "SPORT1+.de",                art: "Pay",  typ: "Sport",         name: "SPORT1+" },
          "141": { url_id: "SRFernsehen.de",            art: "Free", typ: "Vollprogramm",  name: "SR Fernsehen" },
          "142": { url_id: "SuperRTL.de",               art: "Free", typ: "Kinder",        name: "SUPER RTL" },
          "143": { url_id: "SWRBW.de",                  art: "Free", typ: "Vollprogramm",  name: "SWR BW" },
          "144": { url_id: "tagesschau24.de",           art: "Free", typ: "Doku",          name: "tagesschau24" },
          "145": { url_id: "Tele5.de",                  art: "Free", typ: "Film",          name: "Tele 5" },
          "146": { url_id: "TLC.de",                    art: "Free", typ: "Doku",          name: "TLC" },
          "147": { url_id: "TOGGOplus.de",              art: "Free", typ: "Kinder",        name: "TOGGO plus" },
          "148": { url_id: "UniversalTV.de",            art: "Pay",  typ: "Serie",         name: "Universal TV" },
          "149": { url_id: "VolksmusikTV.de",           art: "Free", typ: "Musik",         name: "Volksmusik TV" },
          "150": { url_id: "VOX.de",                    art: "Free", typ: "Vollprogramm",  name: "VOX" },
          "151": { url_id: "VOXup.de",                  art: "Free", typ: "Vollprogramm",  name: "VOXup" },
          "152": { url_id: "WaidwerkTV.de",             art: "Pay",  typ: "Doku",          name: "Waidwerk TV" },
          "153": { url_id: "WarnerTVComedy.de",         art: "Pay",  typ: "Serie",         name: "Warner TV Comedy" },
          "154": { url_id: "WarnerTVFilm.de",           art: "Pay",  typ: "Film",          name: "Warner TV Film" },
          "155": { url_id: "WarnerTVSerie.de",          art: "Pay",  typ: "Serie",         name: "Warner TV Serie" },
          "156": { url_id: "WDR.de",                    art: "Free", typ: "Vollprogramm",  name: "WDR Fernsehen" },
          "157": { url_id: "WELT.de",                   art: "Free", typ: "Doku",          name: "WELT" },
          "158": { url_id: "WeltderWunder.de",          art: "Free", typ: "Doku",          name: "Welt der Wunder" },
          "159": { url_id: "ZDF.de",                    art: "Free", typ: "Vollprogramm",  name: "ZDF" },
          "160": { url_id: "zdf_neo.de",                art: "Free", typ: "Vollprogramm",  name: "ZDFneo" },
          "161": { url_id: "ZDFinfo.de",                art: "Free", typ: "Doku",          name: "ZDFinfo" }
      };
      
      async function smartCreateState(id, value, options = {}) {
          if (existsState(id)) return;
          await createState(id, value, options);
      }
      
      function sleepMs(ms) {
          return new Promise(resolve => setTimeout(resolve, ms));
      }
      
      const MAP_URL_TO_ID = {};
      for (const key in CONFIG) MAP_URL_TO_ID[CONFIG[key].url_id] = Number(key);
      
      function parseXmltvTime(t) {
          const [stamp, offset] = t.split(" ");
          const d = new Date(`${stamp.slice(0,4)}-${stamp.slice(4,6)}-${stamp.slice(6,8)}T${stamp.slice(8,10)}:${stamp.slice(10,12)}:${stamp.slice(12,14)}${offset}`);
          return `${String(d.getDate()).padStart(2,"0")}.${String(d.getMonth()+1).padStart(2,"0")}.${d.getFullYear()} ` + `${String(d.getHours()).padStart(2,"0")}:${String(d.getMinutes()).padStart(2,"0")}:${String(d.getSeconds()).padStart(2,"0")}`;
      }
      
      function parseGermanDateTime(str) {
          const [datePart, timePart] = str.split(" ");
          const [day, month, year] = datePart.split(".").map(Number);
          const [hour, minute, second] = timePart.split(":").map(Number);
          return new Date(year, month - 1, day, hour, minute, second).getTime();
      }
      
      function setStateIfChanged(id, value, STOPPED = false) {
          if (STOPPED) return;
      
          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);
      }
      
      async function main() {
          loading = true;
          await smartCreateState(sender, "[]", {name: "Senderliste", type: "string", read: true, write: false});
          await smartCreateState(root + "count", 0, {name: "Anzahl", type: "number", read: true, write: false});
          await smartCreateState(root + "refresh", false, {name: "Aktualisieren", type: "boolean", read: true, write: true});
      
          await smartCreateState(root + "filter_favorite", false, {name: "Filter nur Favoriten", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_free", false, {name: "Filter nur Free-TV", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_pay", false, {name: "Filter nur Pay-TV", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_film", false, {name: "Filter Typ Film", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_serie", false, {name: "Filter Typ Serie", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_doku", false, {name: "Filter Typ Doku", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_kinder", false, {name: "Filter Typ Kinder", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_musik", false, {name: "Filter Typ Musik", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_shopping", false, {name: "Filter Typ Shopping", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_sport", false, {name: "Filter Typ Sport", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_nachrichten", false, {name: "Filter Typ Nachrichten", type: "boolean", read: true, write: true});
          await smartCreateState(root + "filter_typ_vollprogramm", false, {name: "Filter Typ Vollprogramm", type: "boolean", read: true, write: true});
      
          await smartCreateState(root + "broadcast_mode", "all", {name: "Broadcast Modus", type: "string", read: true, write: true});
          await smartCreateState(root + "broadcast_list", "[]", {name: "aktuelle Sendungen", type: "string", read: true, write: false});
          await smartCreateState(root + "selected_channel", 0, {name: "Ausgewählter Sender", type: "number", read: true, write: true});
          await smartCreateState(root + "selected_channel_favorite", 0, {name: "Ausgewählter Favorit-Sender", type: "number", read: true, write: true});
          await smartCreateState(root + "active_sender_list", "[]", {name: "alle aktiven Sender mit ID", type: "string", read: true, write: false});
          await smartCreateState(root + "favorite_sender_list", "[]", {name: "alle Favoriten mit ID", type: "string", read: true, write: false});
          await smartCreateState(root + "max_order_number", 0, {name: "Höchste vergebene Sendernummer", type: "number", read: true, write: false});
          await smartCreateState(root + "sender_edit_list", "[]", {name: "Editierungsliste", type: "string", read: true, write: true});
      
          await smartCreateState(root + "edit.active", true, { name: "Aktiv", type: "boolean", read: true, write: true });
          await smartCreateState(root + "edit.favorite", false, { name: "Favorit", type: "boolean", read: true, write: true });
          await smartCreateState(root + "edit.icon_url", "", { name: "Icon URL", type: "string", read: true, write: true });
          await smartCreateState(root + "edit.art", "", { name: "Art", type: "string", read: true, write: false });
          await smartCreateState(root + "edit.typ", "", { name: "Typ", type: "string", read: true, write: false });
          await smartCreateState(root + "edit.name", "", { name: "Name", type: "string", read: true, write: true });
          await smartCreateState(root + "edit.order", 0, {name: "Sender Reihenfolge", type: "number", read: true, write: true});
          await smartCreateState(root + "edit.save", false, { name: "Speichern", type: "boolean", read: true, write: true });
      
          await sleepMs(200);
          await loadChannelsAndProgrammes();
          await sleepMs(500);
          await createSenderList("active");
          await createSenderList("favorite");
          await sleepMs(200);
          await initSenderEditList();
          await sleepMs(2000);
          
          await updateAllActiveBroadcasts();
      
          registerTriggers();
          loading = false;
      }
      main();
      
      function senderPassesFilters(internal_id) {
          const base = data + internal_id;
      
          const active = getState(base + ".active")?.val;
          if (!active) return false;
      
          const favoriteOnly = getState(root + "filter_favorite")?.val === true;
          if (favoriteOnly) {
              const fav = getState(base + ".favorite")?.val;
              if (!fav) return false;
          }
      
          const allowedArt = [];
          if (getState(root + "filter_free")?.val === true) allowedArt.push("Free");
          if (getState(root + "filter_pay")?.val === true)  allowedArt.push("Pay");
      
          const art = getState(base + ".art")?.val;
      
          if (allowedArt.length > 0 && !allowedArt.includes(art)) return false;
      
          const senderTyp = getState(base + ".typ")?.val;
      
          const allowedTypes = [];
          if (getState(root + "filter_typ_film")?.val === true) allowedTypes.push("Film");
          if (getState(root + "filter_typ_serie")?.val === true) allowedTypes.push("Serie");
          if (getState(root + "filter_typ_doku")?.val === true) allowedTypes.push("Doku");
          if (getState(root + "filter_typ_kinder")?.val === true) allowedTypes.push("Kinder");
          if (getState(root + "filter_typ_musik")?.val === true) allowedTypes.push("Musik");
          if (getState(root + "filter_typ_shopping")?.val === true) allowedTypes.push("Shopping");
          if (getState(root + "filter_typ_sport")?.val === true) allowedTypes.push("Sport");
          if (getState(root + "filter_typ_nachrichten")?.val === true) allowedTypes.push("Nachrichten");
          if (getState(root + "filter_typ_vollprogramm")?.val === true) allowedTypes.push("Vollprogramm");
      
          if (allowedTypes.length > 0 && !allowedTypes.includes(senderTyp)) return false;
      
          return true;
      }
      
      async function updateMaxOrderNumber() {
          const senderList = JSON.parse(getState(sender).val || "[]");
          let max = 0;
      
          for (const s of senderList) {
              const order = getState(data + s.internal_id + ".order")?.val || 0;
              if (order > max) max = order;
          }
      
          setStateIfChanged(root + "max_order_number", max);
          return max;
      }
      
      async function loadSenderIntoEdit(id) {
          const base = data + id;
      
          setStateIfChanged(root + "edit.active",   getState(base + ".active")?.val || false);
          setStateIfChanged(root + "edit.favorite", getState(base + ".favorite")?.val || false);
          setStateIfChanged(root + "edit.icon_url", getState(base + ".icon_url")?.val || "");
          setStateIfChanged(root + "edit.art",      getState(base + ".art")?.val || "");
          setStateIfChanged(root + "edit.typ",      getState(base + ".typ")?.val || "");
          setStateIfChanged(root + "edit.name",     getState(base + ".name")?.val || "");
          setStateIfChanged(root + "edit.order",    getState(base + ".order")?.val || 0);
      }
      
      async function saveEditToSender(id) {
          const base = data + id;
      
          setStateIfChanged(base + ".active",   getState(root + "edit.active")?.val);
          setStateIfChanged(base + ".favorite", getState(root + "edit.favorite")?.val);
          setStateIfChanged(base + ".order",    getState(root + "edit.order")?.val);
      }
      
      async function createEditSenderList() {
          const result = [];
          const senderList = JSON.parse(getState(sender).val || "[]");
      
          for (const s of senderList) {
              const base  = data + s.internal_id;
      
              const name     = getState(base + ".name")?.val || "";
              const order    = Number(getState(base + ".order")?.val || 0);
              const favorite = getState(base + ".favorite")?.val === true;
              const active   = getState(base + ".active")?.val === true;
      
              result.push({
                  text: name,
                  value: s.internal_id,
                  order: order,
                  favorite: favorite,
                  active: active
              });
          }
      
          result.sort((a, b) => {
              const oa = a.order;
              const ob = b.order;
      
              if (oa > 0 && ob === 0) return -1;
              if (oa === 0 && ob > 0) return 1;
      
              if (oa > 0 && ob > 0) return oa - ob;
      
              return a.text.localeCompare(b.text);
          });
      
          return result;
      }
      
      async function initSenderEditList() {
          const list = await createEditSenderList();
          setStateIfChanged(root + "sender_edit_list", JSON.stringify(list));
      }
      
      async function loadChannelsAndProgrammes() {
          try {
              const ua = new UserAgent().toString();
      
              const response = await httpGetAsync("https://iptv-epg.org/files/epg-de.xml", { timeout: 20000, headers: { "User-Agent": ua } });
              if (!response || response.statusCode !== 200) return;
      
              const xml = response.data;
              const result = await xml2js.parseStringPromise(xml);
      
              const channels = result.tv.channel
                  .filter(ch => MAP_URL_TO_ID[ch.$.id])
                  .map(ch => ({
                      id: ch.$.id,
                      name: Array.isArray(ch["display-name"]) ? (typeof ch["display-name"][0] === "string" ? ch["display-name"][0] : ch["display-name"][0]._ || "") : "",
                      internal_id: MAP_URL_TO_ID[ch.$.id],
                      icon_url: ch.icon?.[0]?.$.src || ""
                  }))
                  .sort((a, b) => a.internal_id - b.internal_id);
      
              setStateIfChanged(root + "count", channels.length);
              setStateIfChanged(sender, JSON.stringify(channels.map(c => ({id: c.id, name: CONFIG[c.internal_id].name, internal_id: c.internal_id}))));
      
              const programmes = result.tv.programme
                  .filter(p => MAP_URL_TO_ID[p.$.channel])
                  .map(p => ({
                      internal_id: MAP_URL_TO_ID[p.$.channel],
                      start: parseXmltvTime(p.$.start),
                      stop:  parseXmltvTime(p.$.stop),
                      title: Array.isArray(p.title) ? (p.title[0]._ || p.title[0]) : "",
                      desc:  Array.isArray(p.desc)  ? (p.desc[0]._  || p.desc[0])  : "",
                      date:  Array.isArray(p.date)  ? p.date[0] : "",
                      episode: Array.isArray(p["episode-num"]) ? p["episode-num"][0] : "",
                      categories: Array.isArray(p.category) ? p.category.map(c => (typeof c === "string" ? c : c._ || "")) : [],
                      icon: p.icon?.[0]?.$.src || ""
                  }));
      
              const grouped = {};
              for (const p of programmes) {
                  if (!grouped[p.internal_id]) grouped[p.internal_id] = [];
                  grouped[p.internal_id].push(p);
              }
      
              for (const ch of channels) {
                  const list = grouped[ch.internal_id] || [];
                  const base = data + ch.internal_id;
      
                  const now = Date.now();
                  const filtered = list.filter(p => {
                      const stopTs = new Date(
                          p.stop.slice(6,10) + "-" + p.stop.slice(3,5) + "-" + p.stop.slice(0,2) + "T" +
                          p.stop.slice(11,19)
                      ).getTime();
                      return stopTs >= now;
                  });
      
                  // internal_id aus JSON entfernen
                  const cleaned = filtered.map(p => {
                      const { internal_id, ...rest } = p;
                      return rest;
                  });
      
                  await smartCreateState(base + ".broadcast", "[]", { name: "Sendungen", type: "string", read: true, write: false });
                  await smartCreateState(base + ".active", true, { name: "Aktiv", type: "boolean", read: true, write: true });
                  await smartCreateState(base + ".favorite", false, { name: "Favorit", type: "boolean", read: true, write: true });
                  await smartCreateState(base + ".icon_url", ch.icon_url, { name: "Icon URL", type: "string", read: true, write: true });
                  await smartCreateState(base + ".art", CONFIG[ch.internal_id].art, { name: "Art", type: "string", read: true, write: false });
                  await smartCreateState(base + ".typ", CONFIG[ch.internal_id].typ, { name: "Typ", type: "string", read: true, write: false });
                  await smartCreateState(base + ".name", CONFIG[ch.internal_id].name, { name: "Name", type: "string", read: true, write: true });
                  await smartCreateState(base + ".order", 0, {name: "Sender Reihenfolge", type: "number", read: true, write: true});
                  setStateIfChanged(base + ".broadcast", JSON.stringify(cleaned));
              }
          } catch (err) {
              log(err, "error");
          }
      }
      
      async function createSenderList(mode) {
          const result = [];
          const senderList = JSON.parse(getState(sender).val || "[]");
      
          for (const s of senderList) {
              const base = data + s.internal_id;
      
              if (mode === "favorite") {
                  const favorite = getState(base + ".favorite")?.val;
                  if (!favorite) continue;
              }
      
              const senderName = getState(base + ".name")?.val || "";
              result.push({text: senderName, value: s.internal_id
              });
          }
      
          if (mode === "favorite") {
              result.sort((a, b) => {
                  const orderA = getState(data + a.value + ".order")?.val || 0;
                  const orderB = getState(data + b.value + ".order")?.val || 0;
      
                  if (orderA > 0 && orderB === 0) return -1;
                  if (orderA === 0 && orderB > 0) return 1;
                  if (orderA > 0 && orderB > 0) return orderA - orderB;
      
                  return a.text.localeCompare(b.text);
              });
          } else {
              result.sort((a, b) => a.text.localeCompare(b.text));
          }
      
          if (mode === "active") {
              setStateIfChanged(root + "active_sender_list", JSON.stringify(result));
          } else if (mode === "favorite") {
              setStateIfChanged(root + "favorite_sender_list", JSON.stringify(result));
          }
      
          return result;
      }
      
      async function updateAllActiveBroadcasts() {
          const result = [];
          const now = Date.now();
      
          const senderList = JSON.parse(getState(sender).val || "[]");
          for (const s of senderList) {
              if (!senderPassesFilters(s.internal_id)) continue;
      
              const base  = data + s.internal_id;
              const order = getState(base + ".order")?.val || 0;
      
              const raw = getState(base + ".broadcast")?.val || "[]";
              let list = [];
      
              try {
                  list = JSON.parse(raw);
              } catch (e) {
                  log("Fehler beim JSON-Parse für Sender " + s.internal_id + ": " + e, "warn");
                  continue;
              }
      
              const senderIcon = getState(base + ".icon_url")?.val || "";
              const senderName = getState(base + ".name")?.val || "";
      
              for (const entry of list) {
                  const start_ts = parseGermanDateTime(entry.start);
                  const stop_ts  = parseGermanDateTime(entry.stop);
      
                  if (now >= start_ts && now < stop_ts) {
                      const startTime = entry.start.split(" ")[1].slice(0,5);
                      const stopTime  = entry.stop.split(" ")[1].slice(0,5);
      
                      result.push({
                          sender_icon_url: `<img style="max-width:80px; max-height:80px; object-fit:contain; vertical-align:middle;" src="${senderIcon}">`,
                          sender_name: senderName,
                          start: startTime,
                          stop: stopTime,
                          title: entry.title,
                          desc: entry.desc,
                          date: entry.date,
                          icon: entry.icon,
                          order: order
                      });
                      break;
                  }
              }
          }
      
          result.sort((a, b) => {
              const oa = a.order || 0;
              const ob = b.order || 0;
      
              if (oa > 0 && ob === 0) return -1;
              if (oa === 0 && ob > 0) return 1;
              if (oa > 0 && ob > 0) return oa - ob;
      
              return a.sender_name.localeCompare(b.sender_name);
          });
      
          setStateIfChanged(root + "broadcast_list", JSON.stringify(result));
          return result;
      }
      
      async function updateSelectedChannelBroadcast() {
          const result = [];
          const now = Date.now();
      
          let selected;
          if (select_channel_mode == 1) {
              selected = getState(root + "selected_channel")?.val;
          } else {
              selected = getState(root + "selected_channel_favorite")?.val;
          }
          if (!selected) return [];
      
          const base = data + selected;
          const raw = getState(base + ".broadcast")?.val || "[]";
          let list = [];
      
          try {
              list = JSON.parse(raw);
          } catch (e) {
              log("Fehler beim JSON-Parse für selected_channel " + selected + ": " + e, "warn");
              return [];
          }
      
          const senderIcon = getState(base + ".icon_url")?.val || "";
          const senderName = getState(base + ".name")?.val || "";
      
          for (const entry of list) {
              const stop_ts = parseGermanDateTime(entry.stop);
      
              if (stop_ts > now) {
                  const startTime = entry.start.split(" ")[1].slice(0,5);
                  const stopTime  = entry.stop.split(" ")[1].slice(0,5);
      
                  result.push({
                      sender_icon_url: `<img style="max-width:80px; max-height:80px; object-fit:contain; vertical-align:middle;" src="${senderIcon}">`,
                      sender_name: senderName,
                      start: startTime,
                      stop: stopTime,
                      title: entry.title,
                      desc: entry.desc,
                      date: entry.date,
                      icon: entry.icon});
              }
          }
      
          setStateIfChanged(root + "broadcast_list", JSON.stringify(result));
          return result;
      }
      
      schedule("0 3 * * *", async () => {
          await loadChannelsAndProgrammes();
          await initSenderEditList();
      });
      
      schedule("1 * * * * *", async () => {
          if (loading === true) return;
          const mode = getState(root + "broadcast_mode")?.val;
      
          if (mode === "selected") {
              await updateSelectedChannelBroadcast();
          } else {
              await updateAllActiveBroadcasts();
          }
      });
      
      function registerTriggers() {
          on({ id: root + "refresh", change: "ne" }, async (obj) => {
              if (obj.state && obj.state.ack === false && obj.state.val === true) {
                  try {
                      await loadChannelsAndProgrammes();
                      await createSenderList("active");
                      await createSenderList("favorite");
                      await initSenderEditList();
                      await updateMaxOrderNumber();
                  } catch (err) {}
                  setState(root + "refresh", false, true);
              }
          });
      
          on({ id: root + "edit.save", change: "ne" }, async (obj) => {
              if (obj.state && obj.state.ack === false && obj.state.val === true) {
                  try {
                      if (select_channel_mode == 1) {
                          await saveEditToSender(getState(root + "selected_channel").val);
                      } else if (select_channel_mode == 2) {
                          await saveEditToSender(getState(root + "selected_channel_favorite").val);
                      }
                      await createSenderList("active");
                      await createSenderList("favorite");
                  } catch (err) {}
                  setState(root + "edit.save", false, true);
              }
          });
      
          on({ id: root + "selected_channel", change: "ne" }, async obj => {
              const val = obj.state.val;
      
              if (!val) {
                  setStateIfChanged(root + "broadcast_mode", "all");
              } else {
                  select_channel_mode = 1;
                  setStateIfChanged(root + "broadcast_mode", "selected");
                  await updateSelectedChannelBroadcast();
                  await updateMaxOrderNumber();
                  await loadSenderIntoEdit(val);
              }
          });
      
          on({ id: root + "selected_channel_favorite", change: "ne" }, async obj => {
              const val = obj.state.val;
      
              if (!val) {
                  setStateIfChanged(root + "broadcast_mode", "all");
              } else {
                  select_channel_mode = 2;
                  setStateIfChanged(root + "broadcast_mode", "selected");
                  await updateSelectedChannelBroadcast();
                  await updateMaxOrderNumber();
                  await loadSenderIntoEdit(val);
              }
          });
      
          const TYPE_FILTERS = [root + "filter_favorite", root + "filter_free", root + "filter_pay", root + "filter_typ_film", root + "filter_typ_serie", root + "filter_typ_doku", root + "filter_typ_kinder", root + "filter_typ_musik", root + "filter_typ_shopping", root + "filter_typ_sport", root + "filter_typ_nachrichten", root + "filter_typ_vollprogramm"];
          on({ id: TYPE_FILTERS, change: "ne" }, async () => {
              await updateAllActiveBroadcasts();
          });
      
          on({ id: root + "broadcast_mode", change: "ne" }, async obj => {
              const val = obj.state.val;
      
              if (val === 'all') {
                  await updateAllActiveBroadcasts();
              }
          });
      
          on({ id: root + "sender_edit_list", change: "ne" }, async obj => {
              if (!obj || !obj.state || !obj.state.val) return;
      
              let list;
              try {
                  list = JSON.parse(obj.state.val);
              } catch (e) {
                  log("Fehler: sender_edit_list enthält kein gültiges JSON", "warn");
                  return;
              }
      
              for (const entry of list) {
                  const id = entry.value;
                  const base = data + id;
      
                  setStateIfChanged(base + ".order", Number(entry.order || 0));
                  setStateIfChanged(base + ".favorite", entry.favorite === true);
                  setStateIfChanged(base + ".active", entry.active === true);
              }
              
              await initSenderEditList();
          });
      }
      

      Viel Spaß und Erfolg bei der Umsetzung.

      Ro75.

      Änderung 1.0.1 - 24.06.2026

      • Start und Stop jetzt nur im klassischen Stil (HH:MM). Also 19:15, 20:15, etc.
      • Weiterer Datenpunkt "selected_channel_favorite" löst die selben Ereignisse wie "selected_channel" aus. Senderdetails für Visualisierung und in der Hauptanzeige alle Sendungen zum gewählten Kanal.
      • Zentrale Sendereditierung. Jetzt können über den Datenpunkt "sender_edit_list" die wichtigsten Einstellungen pro Sender zentral vorgenommen werden. Dazu wird der Inhalt des Datenpunktes (json) angepasst. Dazu kann der Sender den Favoriten (favorite) hinzugefügt, aktiviert oder deaktiviert (active) werden. Darüber hinaus sit es möglich, die Senderreihenfolge (order) festzulegen. Wenn alle Änderungen durchgeführt - einfach speichern und ein Trigger erledigt automatisch den Rest (Daten werden an Sender übergeben und Einstellungen werden sofort aktiv).
      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @Ro75

      sieht nicht schlecht aus.
      Aber wo ist jetzt das Script ?


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

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

        Nun die Datenbasis ist frei im Internet zugänglich. Bin mir nicht sicher ob ich es posten kann. Es ist nicht illegal aber auch nicht rein legal - schwierig. Letztlich wäre es jedem seine eigene Sache es zu nutzen. Aber da wäre es gut wenn jemand hier sein OK geben könnte.

        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

        bahnuhrB 1 Antwort Letzte Antwort
        0
        • Ro75R Ro75

          Nun die Datenbasis ist frei im Internet zugänglich. Bin mir nicht sicher ob ich es posten kann. Es ist nicht illegal aber auch nicht rein legal - schwierig. Letztlich wäre es jedem seine eigene Sache es zu nutzen. Aber da wäre es gut wenn jemand hier sein OK geben könnte.

          Ro75.

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @Ro75 sagte:

          Es ist nicht illegal aber auch nicht rein legal

          Versteh ich jetzt nicht.

          Du hast ein Script erstellt. Hilfe kam von KI.
          Warum kannst du dein produziertes Script nicht veröffentlichen dürfen.

          Ist das rechtlich ein Problem ?
          Dann dürftest du doch nie die KI zitieren.
          Rechtlich notwendig ist, dass du kund tust, dass die KI unterstützt hat.
          Aber mehr doch auch nicht.

          Zumindest kenne ich das so.


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

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

            Es geht um die Datenbasis. https://iptv-epg.org

            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

            bahnuhrB 1 Antwort Letzte Antwort
            0
            • Ro75R Ro75

              Es geht um die Datenbasis. https://iptv-epg.org

              Ro75.

              bahnuhrB Online
              bahnuhrB Online
              bahnuhr
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #6

              @Ro75 sagte:

              iptv-epg.org

              Lt.KI:
              5efcae07-1104-4753-bd15-387f2b2fea6a-image.jpeg

              frei zugänglich.

              Würde mich echt interessieren wo und warum du da ein Problem siehst?


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

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

                Ja das stimmt. Ich bereit mal alles auf.

                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

                bahnuhrB 1 Antwort Letzte Antwort
                1
                • Ro75R Ro75

                  Ja das stimmt. Ich bereit mal alles auf.

                  Ro75.

                  bahnuhrB Online
                  bahnuhrB Online
                  bahnuhr
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @Ro75
                  Ja, so ist doch gut.
                  Hast aus meiner Sicht alles wesentliche gesagt und darauf hingewiesen.


                  Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                  Danke.
                  gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                  ScreenToGif :https://www.screentogif.com/downloads.html

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

                    So Post #1 verfollständigt.

                    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

                    bahnuhrB 1 Antwort Letzte Antwort
                    0
                    • Ro75R Ro75

                      So Post #1 verfollständigt.

                      Ro75.

                      bahnuhrB Online
                      bahnuhrB Online
                      bahnuhr
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @Ro75
                      So, ausprobiert.

                      Script läuft.

                      Magst du noch die widgets bzw. view einstellen.
                      Wäre top.


                      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                      Danke.
                      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                      ScreenToGif :https://www.screentogif.com/downloads.html

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

                        Hier sind alle Widget auf der View (VIS1):

                        [{"tpl":"tplVis-materialdesign-Select","data":{"oid":"0_userdata.0.epg.selected_channel","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","inputType":"text","vibrateOnMobilDevices":"50","clickSoundVolume":"0.5","inputLayout":"filled","inputAlignment":"left","inputLayoutBorderColor":"#mdwTheme:vis-materialdesign.0.colors.input.border","inputLayoutBorderColorHover":"#mdwTheme:vis-materialdesign.0.colors.input.border_hover","inputLayoutBorderColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.border_selected","inputTextFontFamily":"InterVariable","inputTextFontSize":"20","inputTextColor":"rgba(255,255,255,0.8)","inputLabelColor":"#mdwTheme:vis-materialdesign.0.colors.input.label","inputLabelColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.label_selected","inputLabelFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.label","inputLabelFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.label","inputAppendixColor":"#mdwTheme:vis-materialdesign.0.colors.input.appendix","inputAppendixFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix","inputAppendixFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.appendix","showInputMessageAlways":false,"inputMessageFontFamily":"RobotoCondensed-Regular","inputMessageFontSize":"21","inputMessageColor":"#mdwTheme:vis-materialdesign.0.colors.input.message","showInputCounter":false,"inputCounterColor":"#mdwTheme:vis-materialdesign.0.colors.input.counter","inputCounterFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.counter","inputCounterFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.counter","clearIconShow":false,"clearIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_clear","collapseIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_collapse","listDataMethod":"jsonStringObject","countSelectItems":"0","listPosition":"auto","listItemBackgroundColor":"#000000","listItemBackgroundHoverColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.hover","listItemBackgroundSelectedColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.selected","listItemRippleEffectColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.effect","showSelectedIcon":"no","listIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.icon","listItemFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text","listItemFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text","listItemFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.text","listItemSubFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText","listItemSubFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText","listItemSubFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.subText","showValue":false,"listItemValueFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value","listItemValueFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value","listItemValueFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.value","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,"autoFocus":true,"jsonStringObject":"{0_userdata.0.epg.active_sender_list}","listItemHeight":"6","inputLayoutBackgroundColor":"#000000"},"style":{"left":"1037px","top":"869px","width":"376px","height":"40px","box-shadow":"3px 3px 8px 1px rgba(110, 70, 62, 0.45)","border-width":"1px","border-style":"solid","border-color":"rgba(110, 70, 62, 1)","border-radius":"5px","z-index":"999","margin-left":""},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-Table","data":{"oid":"0_userdata.0.epg.broadcast_list","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"countCols":"7","tableLayout":"standard","showHeader":false,"roundBorder":false,"headerTextSize":"13","headerFontFamily":"InterVariable","colorBackground":"transparent","colorHeaderRowBackground":"rgba(110, 70, 62, 0.25)","colorHeaderRowText":"rgba(255,255,255,0.8)","colorRowBackground":"transparent","colorRowBackgroundHover":"transparent","colorRowText":"rgba(255,255,255,0.8)","borderColor":"transparent","dividers":"#ffffff","showColumn0":true,"colType0":"text","textAlign0":"center","colTextSize0":"","fontFamily0":"RobotoCondensed-Regular","showColumn1":true,"colType1":"text","textAlign1":"left","colTextSize1":"20","fontFamily1":"InterVariable","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":"","padding_right0":"0","fixedHeader":true,"columnWidth0":"100","debug":false,"colTextColor0":"#ffffff","colNoWrap0":false,"padding_left0":"0","rowHeight":"120","columnWidth1":"150","colNoWrap1":false,"imageSize1":"50","padding_left1":"20","g_columnLayout_§6":true,"label0":" ","label1":"Sender","g_columnLayout_§2":true,"showColumn2":true,"colType2":"text","textAlign2":"center","colTextSize2":"20","fontFamily2":"InterVariable","g_columnLayout_§3":true,"showColumn3":"true","colType3":"text","textAlign3":"center","colTextSize3":"20","fontFamily3":"InterVariable","g_columnLayout_§4":true,"showColumn4":"true","colType4":"text","textAlign4":"left","colTextSize4":"20","fontFamily4":"InterVariable","g_columnLayout_§5":true,"showColumn5":true,"colType5":"text","textAlign5":"left","colTextSize5":"20","fontFamily5":"InterVariable","showColumn6":"true","colType6":"text","textAlign6":"center","colTextSize6":"20","fontFamily6":"InterVariable","colTextColor1":"rgba(255,255,255,0.8)","colTextColor2":"rgba(255,255,255,0.8)","suffix2":"","colTextColor3":"rgba(255,255,255,0.8)","suffix3":"","headerRowHeight":"0","padding_right1":"0","padding_left2":"0","padding_right2":"0","padding_left3":"0","padding_right3":"0","sortKey1":"","colTextColor4":"rgba(255,255,255,0.8)","padding_right4":"0","padding_right5":"0","colTextColor5":"rgba(255,255,255,0.8)","label2":"Start","label3":"Ende","label4":"Titel","label5":"Beschreibung","label6":"Jahr","columnWidth2":"100","columnWidth3":"100","colNoWrap3":false,"padding_left4":"20","columnWidth4":"200","padding_left5":"20","columnWidth5":"1000","padding_left6":"0","padding_right6":"0","columnWidth6":"80","suffix4":"","suffix5":"","showColumn7":"true","colType7":"image","textAlign7":"right","colTextSize7":"16","fontFamily7":"InterVariable","label7":" ","colTextColor6":"rgba(255,255,255,0.8)","padding_left7":"0","padding_right7":"20","colNoWrap5":false,"columnWidth7":"120","showColumn8":"true","colType8":"text","textAlign8":"right","colTextSize8":"12.5","fontFamily8":"InterVariable","colTextColor7":"","label8":"Tag","padding_left8":"0","padding_right8":"20","showColumn9":"true","colType9":"text","textAlign9":"center","colTextSize9":"12.5","fontFamily9":"InterVariable","label9":"€ / Tag","padding_left9":"0","padding_right9":"0","colTextColor8":"rgba(255,255,255,0.8)","imageSize2":"","imageSize0":"100","showColumn10":"true","colType10":"text","textAlign10":"left","colTextSize10":"12.5","fontFamily10":"InterVariable","padding_left10":"0","padding_right10":"0","colTextColor9":"rgba(255,255,255,0.8)","label10":"Zustand","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","colNoWrap2":false,"colTextColor10":"rgba(255,255,255,0.8)","prefix2":"","colNoWrap4":false,"imageSize7":"100"},"style":{"left":"31px","top":"99px","width":"1860px","height":"730px","z-index":"8","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px","border-radius":"10px","border-width":"1px","border-style":"solid","border-color":"transparent","background":"#202020","background-color":"#000000","opacity":"{0_userdata.0.HardwareInfo.DashBoard.Opacity}%"},"widgetSet":"materialdesign"},{"tpl":"tplValueStringImg","data":{"oid":"0_userdata.0.Bing.Bild","g_fixed":true,"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,"name":"Background","locked":true},"style":{"left":"0px","top":"94px","width":"1920px","height":"900px","z-index":"0","opacity":"30%"},"widgetSet":"basic"},{"tpl":"tplJquiButtonState","data":{"oid":"0_userdata.0.epg.broadcast_mode","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","buttontext":"Was läuft gerade jetzt?","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,"value":"all"},"style":{"left":"50px","top":"867px","width":"162px","height":"102px","z-index":"3"},"widgetSet":"jqui"},{"tpl":"tplHtml","data":{"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","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,"html":"alle Sender:"},"style":{"left":"880px","top":"873px","z-index":"7","color":"#ffffff","text-align":"left","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"26px","width":"140px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"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","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,"html":"Favoriten:"},"style":{"left":"879px","top":"927px","z-index":"7","color":"#ffffff","text-align":"left","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"26px","width":"140px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-Select","data":{"oid":"0_userdata.0.epg.selected_channel","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","inputType":"text","vibrateOnMobilDevices":"50","clickSoundVolume":"0.5","inputLayout":"filled","inputAlignment":"left","inputLayoutBorderColor":"#mdwTheme:vis-materialdesign.0.colors.input.border","inputLayoutBorderColorHover":"#mdwTheme:vis-materialdesign.0.colors.input.border_hover","inputLayoutBorderColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.border_selected","inputTextFontFamily":"InterVariable","inputTextFontSize":"20","inputTextColor":"rgba(255,255,255,0.8)","inputLabelColor":"#mdwTheme:vis-materialdesign.0.colors.input.label","inputLabelColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.label_selected","inputLabelFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.label","inputLabelFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.label","inputAppendixColor":"#mdwTheme:vis-materialdesign.0.colors.input.appendix","inputAppendixFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix","inputAppendixFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.appendix","showInputMessageAlways":false,"inputMessageFontFamily":"RobotoCondensed-Regular","inputMessageFontSize":"21","inputMessageColor":"#mdwTheme:vis-materialdesign.0.colors.input.message","showInputCounter":false,"inputCounterColor":"#mdwTheme:vis-materialdesign.0.colors.input.counter","inputCounterFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.counter","inputCounterFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.counter","clearIconShow":false,"clearIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_clear","collapseIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_collapse","listDataMethod":"jsonStringObject","countSelectItems":"0","listPosition":"auto","listItemBackgroundColor":"#000000","listItemBackgroundHoverColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.hover","listItemBackgroundSelectedColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.selected","listItemRippleEffectColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.effect","showSelectedIcon":"no","listIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.icon","listItemFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text","listItemFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text","listItemFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.text","listItemSubFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText","listItemSubFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText","listItemSubFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.subText","showValue":false,"listItemValueFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value","listItemValueFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value","listItemValueFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.value","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,"autoFocus":true,"jsonStringObject":"{0_userdata.0.epg.favorite_sender_list}","listItemHeight":"6","inputLayoutBackgroundColor":"#000000"},"style":{"left":"1037px","top":"923px","width":"376px","height":"40px","box-shadow":"3px 3px 8px 1px rgba(110, 70, 62, 0.45)","border-width":"1px","border-style":"solid","border-color":"rgba(110, 70, 62, 1)","border-radius":"5px","z-index":"999","margin-left":""},"widgetSet":"materialdesign"},{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"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},"style":{"left":"36px","top":"854px","border-width":"1px","border-style":"dashed","border-color":"#ffffff","border-radius":"10px","width":"806px","height":"130px","z-index":"1"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_favorite","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Favoriten","labelTrue":"Favoriten","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_free","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Free-TV","labelTrue":"Free-TV","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_pay","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Pay-TV","labelTrue":"Pay-TV","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_doku","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Doku","labelTrue":"Doku","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_film","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Film","labelTrue":"Film","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_serie","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Serie","labelTrue":"Serie","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_kinder","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Kinder","labelTrue":"Kinder","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_musik","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Musik","labelTrue":"Musik","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_nachrichten","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Nachrichten","labelTrue":"Nachrichten","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_shopping","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Shopping","labelTrue":"Shopping","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_sport","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Sport","labelTrue":"Sport","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_vollprogramm","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Vollprogramm","labelTrue":"Vollprogramm","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"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,"name":"Linie","filterkey":"","comment":"","class":""},"style":{"left":"35px","top":"841px","width":"950px","height":"1px","background":"linear-gradient(to left, rgba(110, 70, 62, 1) 5px, rgba(110, 70, 62, 0.2) 100%)","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"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,"name":"Linie","filterkey":"","comment":"","class":""},"style":{"left":"955px","top":"841px","width":"950px","height":"1px","background":"linear-gradient(to left, rgba(110, 70, 62, 0.2) 5px, rgba(110, 70, 62, 1) 100%)","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplJquiButtonState","data":{"oid":"0_userdata.0.epg.refresh","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","buttontext":"Daten und Listen manuell aktualisieren","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,"value":"true"},"style":{"left":"1715px","top":"867px","width":"174px","height":"102px","z-index":"3"},"widgetSet":"jqui"},{"tpl":"tplContainerIconDialog","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"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,"contains_view":"EPG_Channel","dialog_width":"780","dialog_height":"400","title":"Einstellungen","src":"","imageHeight":"0","invert_icon":false,"modal":true,"dialog_top":"","autoclose":"","dialog_left":"","noHeader":false,"text":"Details"},"style":{"left":"1437px","top":"889px","width":"98px","height":"42px","line-height":"2.4","z-index":"4","border-radius":"5px"},"widgetSet":"jqui"}]
                        

                        Wie schon gesagt:
                        943a72d1-1c7e-4007-bc28-e337136853b3-image.jpeg
                        wird benötigt.

                        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

                        bahnuhrB 1 Antwort Letzte Antwort
                        1
                        • Ro75R Ro75

                          Hier sind alle Widget auf der View (VIS1):

                          [{"tpl":"tplVis-materialdesign-Select","data":{"oid":"0_userdata.0.epg.selected_channel","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","inputType":"text","vibrateOnMobilDevices":"50","clickSoundVolume":"0.5","inputLayout":"filled","inputAlignment":"left","inputLayoutBorderColor":"#mdwTheme:vis-materialdesign.0.colors.input.border","inputLayoutBorderColorHover":"#mdwTheme:vis-materialdesign.0.colors.input.border_hover","inputLayoutBorderColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.border_selected","inputTextFontFamily":"InterVariable","inputTextFontSize":"20","inputTextColor":"rgba(255,255,255,0.8)","inputLabelColor":"#mdwTheme:vis-materialdesign.0.colors.input.label","inputLabelColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.label_selected","inputLabelFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.label","inputLabelFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.label","inputAppendixColor":"#mdwTheme:vis-materialdesign.0.colors.input.appendix","inputAppendixFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix","inputAppendixFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.appendix","showInputMessageAlways":false,"inputMessageFontFamily":"RobotoCondensed-Regular","inputMessageFontSize":"21","inputMessageColor":"#mdwTheme:vis-materialdesign.0.colors.input.message","showInputCounter":false,"inputCounterColor":"#mdwTheme:vis-materialdesign.0.colors.input.counter","inputCounterFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.counter","inputCounterFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.counter","clearIconShow":false,"clearIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_clear","collapseIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_collapse","listDataMethod":"jsonStringObject","countSelectItems":"0","listPosition":"auto","listItemBackgroundColor":"#000000","listItemBackgroundHoverColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.hover","listItemBackgroundSelectedColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.selected","listItemRippleEffectColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.effect","showSelectedIcon":"no","listIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.icon","listItemFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text","listItemFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text","listItemFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.text","listItemSubFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText","listItemSubFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText","listItemSubFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.subText","showValue":false,"listItemValueFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value","listItemValueFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value","listItemValueFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.value","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,"autoFocus":true,"jsonStringObject":"{0_userdata.0.epg.active_sender_list}","listItemHeight":"6","inputLayoutBackgroundColor":"#000000"},"style":{"left":"1037px","top":"869px","width":"376px","height":"40px","box-shadow":"3px 3px 8px 1px rgba(110, 70, 62, 0.45)","border-width":"1px","border-style":"solid","border-color":"rgba(110, 70, 62, 1)","border-radius":"5px","z-index":"999","margin-left":""},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-Table","data":{"oid":"0_userdata.0.epg.broadcast_list","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"countCols":"7","tableLayout":"standard","showHeader":false,"roundBorder":false,"headerTextSize":"13","headerFontFamily":"InterVariable","colorBackground":"transparent","colorHeaderRowBackground":"rgba(110, 70, 62, 0.25)","colorHeaderRowText":"rgba(255,255,255,0.8)","colorRowBackground":"transparent","colorRowBackgroundHover":"transparent","colorRowText":"rgba(255,255,255,0.8)","borderColor":"transparent","dividers":"#ffffff","showColumn0":true,"colType0":"text","textAlign0":"center","colTextSize0":"","fontFamily0":"RobotoCondensed-Regular","showColumn1":true,"colType1":"text","textAlign1":"left","colTextSize1":"20","fontFamily1":"InterVariable","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":"","padding_right0":"0","fixedHeader":true,"columnWidth0":"100","debug":false,"colTextColor0":"#ffffff","colNoWrap0":false,"padding_left0":"0","rowHeight":"120","columnWidth1":"150","colNoWrap1":false,"imageSize1":"50","padding_left1":"20","g_columnLayout_§6":true,"label0":" ","label1":"Sender","g_columnLayout_§2":true,"showColumn2":true,"colType2":"text","textAlign2":"center","colTextSize2":"20","fontFamily2":"InterVariable","g_columnLayout_§3":true,"showColumn3":"true","colType3":"text","textAlign3":"center","colTextSize3":"20","fontFamily3":"InterVariable","g_columnLayout_§4":true,"showColumn4":"true","colType4":"text","textAlign4":"left","colTextSize4":"20","fontFamily4":"InterVariable","g_columnLayout_§5":true,"showColumn5":true,"colType5":"text","textAlign5":"left","colTextSize5":"20","fontFamily5":"InterVariable","showColumn6":"true","colType6":"text","textAlign6":"center","colTextSize6":"20","fontFamily6":"InterVariable","colTextColor1":"rgba(255,255,255,0.8)","colTextColor2":"rgba(255,255,255,0.8)","suffix2":"","colTextColor3":"rgba(255,255,255,0.8)","suffix3":"","headerRowHeight":"0","padding_right1":"0","padding_left2":"0","padding_right2":"0","padding_left3":"0","padding_right3":"0","sortKey1":"","colTextColor4":"rgba(255,255,255,0.8)","padding_right4":"0","padding_right5":"0","colTextColor5":"rgba(255,255,255,0.8)","label2":"Start","label3":"Ende","label4":"Titel","label5":"Beschreibung","label6":"Jahr","columnWidth2":"100","columnWidth3":"100","colNoWrap3":false,"padding_left4":"20","columnWidth4":"200","padding_left5":"20","columnWidth5":"1000","padding_left6":"0","padding_right6":"0","columnWidth6":"80","suffix4":"","suffix5":"","showColumn7":"true","colType7":"image","textAlign7":"right","colTextSize7":"16","fontFamily7":"InterVariable","label7":" ","colTextColor6":"rgba(255,255,255,0.8)","padding_left7":"0","padding_right7":"20","colNoWrap5":false,"columnWidth7":"120","showColumn8":"true","colType8":"text","textAlign8":"right","colTextSize8":"12.5","fontFamily8":"InterVariable","colTextColor7":"","label8":"Tag","padding_left8":"0","padding_right8":"20","showColumn9":"true","colType9":"text","textAlign9":"center","colTextSize9":"12.5","fontFamily9":"InterVariable","label9":"€ / Tag","padding_left9":"0","padding_right9":"0","colTextColor8":"rgba(255,255,255,0.8)","imageSize2":"","imageSize0":"100","showColumn10":"true","colType10":"text","textAlign10":"left","colTextSize10":"12.5","fontFamily10":"InterVariable","padding_left10":"0","padding_right10":"0","colTextColor9":"rgba(255,255,255,0.8)","label10":"Zustand","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","colNoWrap2":false,"colTextColor10":"rgba(255,255,255,0.8)","prefix2":"","colNoWrap4":false,"imageSize7":"100"},"style":{"left":"31px","top":"99px","width":"1860px","height":"730px","z-index":"8","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px","border-radius":"10px","border-width":"1px","border-style":"solid","border-color":"transparent","background":"#202020","background-color":"#000000","opacity":"{0_userdata.0.HardwareInfo.DashBoard.Opacity}%"},"widgetSet":"materialdesign"},{"tpl":"tplValueStringImg","data":{"oid":"0_userdata.0.Bing.Bild","g_fixed":true,"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,"name":"Background","locked":true},"style":{"left":"0px","top":"94px","width":"1920px","height":"900px","z-index":"0","opacity":"30%"},"widgetSet":"basic"},{"tpl":"tplJquiButtonState","data":{"oid":"0_userdata.0.epg.broadcast_mode","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","buttontext":"Was läuft gerade jetzt?","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,"value":"all"},"style":{"left":"50px","top":"867px","width":"162px","height":"102px","z-index":"3"},"widgetSet":"jqui"},{"tpl":"tplHtml","data":{"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","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,"html":"alle Sender:"},"style":{"left":"880px","top":"873px","z-index":"7","color":"#ffffff","text-align":"left","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"26px","width":"140px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"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","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,"html":"Favoriten:"},"style":{"left":"879px","top":"927px","z-index":"7","color":"#ffffff","text-align":"left","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"26px","width":"140px","height":"29px"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-Select","data":{"oid":"0_userdata.0.epg.selected_channel","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","inputType":"text","vibrateOnMobilDevices":"50","clickSoundVolume":"0.5","inputLayout":"filled","inputAlignment":"left","inputLayoutBorderColor":"#mdwTheme:vis-materialdesign.0.colors.input.border","inputLayoutBorderColorHover":"#mdwTheme:vis-materialdesign.0.colors.input.border_hover","inputLayoutBorderColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.border_selected","inputTextFontFamily":"InterVariable","inputTextFontSize":"20","inputTextColor":"rgba(255,255,255,0.8)","inputLabelColor":"#mdwTheme:vis-materialdesign.0.colors.input.label","inputLabelColorSelected":"#mdwTheme:vis-materialdesign.0.colors.input.label_selected","inputLabelFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.label","inputLabelFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.label","inputAppendixColor":"#mdwTheme:vis-materialdesign.0.colors.input.appendix","inputAppendixFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.appendix","inputAppendixFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.appendix","showInputMessageAlways":false,"inputMessageFontFamily":"RobotoCondensed-Regular","inputMessageFontSize":"21","inputMessageColor":"#mdwTheme:vis-materialdesign.0.colors.input.message","showInputCounter":false,"inputCounterColor":"#mdwTheme:vis-materialdesign.0.colors.input.counter","inputCounterFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.counter","inputCounterFontFamily":"#mdwTheme:vis-materialdesign.0.fonts.input.counter","clearIconShow":false,"clearIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_clear","collapseIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.icon_collapse","listDataMethod":"jsonStringObject","countSelectItems":"0","listPosition":"auto","listItemBackgroundColor":"#000000","listItemBackgroundHoverColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.hover","listItemBackgroundSelectedColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.selected","listItemRippleEffectColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.effect","showSelectedIcon":"no","listIconColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.icon","listItemFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.text","listItemFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.text","listItemFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.text","listItemSubFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.subText","listItemSubFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.subText","listItemSubFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.subText","showValue":false,"listItemValueFontSize":"#mdwTheme:vis-materialdesign.0.fontSizes.input.dropdown.value","listItemValueFont":"#mdwTheme:vis-materialdesign.0.fonts.input.dropdown.value","listItemValueFontColor":"#mdwTheme:vis-materialdesign.0.colors.input.menu.value","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,"autoFocus":true,"jsonStringObject":"{0_userdata.0.epg.favorite_sender_list}","listItemHeight":"6","inputLayoutBackgroundColor":"#000000"},"style":{"left":"1037px","top":"923px","width":"376px","height":"40px","box-shadow":"3px 3px 8px 1px rgba(110, 70, 62, 0.45)","border-width":"1px","border-style":"solid","border-color":"rgba(110, 70, 62, 1)","border-radius":"5px","z-index":"999","margin-left":""},"widgetSet":"materialdesign"},{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"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},"style":{"left":"36px","top":"854px","border-width":"1px","border-style":"dashed","border-color":"#ffffff","border-radius":"10px","width":"806px","height":"130px","z-index":"1"},"widgetSet":"basic"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_favorite","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Favoriten","labelTrue":"Favoriten","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_free","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Free-TV","labelTrue":"Free-TV","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_pay","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Pay-TV","labelTrue":"Pay-TV","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"234px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_doku","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Doku","labelTrue":"Doku","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_film","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Film","labelTrue":"Film","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_serie","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Serie","labelTrue":"Serie","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"389px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_kinder","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Kinder","labelTrue":"Kinder","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_musik","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Musik","labelTrue":"Musik","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_nachrichten","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Nachrichten","labelTrue":"Nachrichten","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"544px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_shopping","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Shopping","labelTrue":"Shopping","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"869px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_sport","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Sport","labelTrue":"Sport","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"901px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplVis-materialdesign-CheckBox","data":{"oid":"0_userdata.0.epg.filter_typ_vollprogramm","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","toggleType":"boolean","stateIfNotTrueValue":"on","vibrateOnMobilDevices":"50","labelPosition":"right","labelClickActive":true,"valueFontFamily":"InterVariable","valueFontSize":"13","colorCheckBox":"rgba(110, 70, 62, 0.45)","colorCheckBoxBorder":"rgba(110, 70, 62, 1)","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":"Vollprogramm","labelTrue":"Vollprogramm","g_lock":false,"autoLockAfter":"10","lockIconTop":"5","lockIconLeft":"5","lockIconColor":"#mdwTheme:vis-materialdesign.0.colors.checkbox.lock_icon","lockFilterGrayscale":"30","clickSoundVolume":"0.5"},"style":{"left":"699px","top":"933px","width":"140px","height":"30px","z-index":"2","text-shadow":"3px 3px 4px #000","font-family":"InterVariable","font-style":"normal","font-variant":"normal","font-weight":"normal","font-size":"12.5px"},"widgetSet":"materialdesign"},{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"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,"name":"Linie","filterkey":"","comment":"","class":""},"style":{"left":"35px","top":"841px","width":"950px","height":"1px","background":"linear-gradient(to left, rgba(110, 70, 62, 1) 5px, rgba(110, 70, 62, 0.2) 100%)","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"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,"name":"Linie","filterkey":"","comment":"","class":""},"style":{"left":"955px","top":"841px","width":"950px","height":"1px","background":"linear-gradient(to left, rgba(110, 70, 62, 0.2) 5px, rgba(110, 70, 62, 1) 100%)","z-index":"3"},"widgetSet":"basic"},{"tpl":"tplJquiButtonState","data":{"oid":"0_userdata.0.epg.refresh","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","buttontext":"Daten und Listen manuell aktualisieren","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,"value":"true"},"style":{"left":"1715px","top":"867px","width":"174px","height":"102px","z-index":"3"},"widgetSet":"jqui"},{"tpl":"tplContainerIconDialog","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"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,"contains_view":"EPG_Channel","dialog_width":"780","dialog_height":"400","title":"Einstellungen","src":"","imageHeight":"0","invert_icon":false,"modal":true,"dialog_top":"","autoclose":"","dialog_left":"","noHeader":false,"text":"Details"},"style":{"left":"1437px","top":"889px","width":"98px","height":"42px","line-height":"2.4","z-index":"4","border-radius":"5px"},"widgetSet":"jqui"}]
                          

                          Wie schon gesagt:
                          943a72d1-1c7e-4007-bc28-e337136853b3-image.jpeg
                          wird benötigt.

                          Ro75.

                          bahnuhrB Online
                          bahnuhrB Online
                          bahnuhr
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @Ro75 sagte:

                          VIS1

                          na klar, was sonst ;-)

                          Danke.
                          Ich probiere es aus.


                          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                          Danke.
                          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                          ScreenToGif :https://www.screentogif.com/downloads.html

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

                            Favoriten verwalten

                            Jeder Sender besitzt eigene Datenpunkte:

                            data.<ID>.favorite
                            data.<ID>.order

                            Sender als Favorit markieren
                            data.<ID>.favorite = true

                            Der Sender erscheint anschließend automatisch in der favorite_sender_list.

                            Eigene Reihenfolge vergeben
                            data.<ID>.order = 1

                            Sender mit einer vergebenen Reihenfolge werden entsprechend sortiert angezeigt.

                            Beispiel:

                            data.72.favorite = true
                            data.72.order = 1

                            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

                            bahnuhrB 1 Antwort Letzte Antwort
                            0
                            • Ro75R Ro75

                              Favoriten verwalten

                              Jeder Sender besitzt eigene Datenpunkte:

                              data.<ID>.favorite
                              data.<ID>.order

                              Sender als Favorit markieren
                              data.<ID>.favorite = true

                              Der Sender erscheint anschließend automatisch in der favorite_sender_list.

                              Eigene Reihenfolge vergeben
                              data.<ID>.order = 1

                              Sender mit einer vergebenen Reihenfolge werden entsprechend sortiert angezeigt.

                              Beispiel:

                              data.72.favorite = true
                              data.72.order = 1

                              Ro75.

                              bahnuhrB Online
                              bahnuhrB Online
                              bahnuhr
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @Ro75 sagte:

                              Sender als Favorit markieren

                              Hat bei mir eben nicht geklappt.
                              Habe Sender 33 = Dmax mal auf true gesetzt.
                              Wird aber dann nicht als favorite angezeigt.

                              Im run kommt sowas:
                              31451f66-2a11-4948-a765-a2bc7155e460-image.jpeg


                              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                              Danke.
                              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                              ScreenToGif :https://www.screentogif.com/downloads.html

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

                                Hast du das so belassen?

                                const root = "0_userdata.0.epg.";

                                9dc0016a-4dfb-41bb-9759-466ce9305a4e-image.jpeg
                                ist das auch korrekt?

                                ggfs. das Script neu starten.

                                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

                                bahnuhrB 1 Antwort Letzte Antwort
                                0
                                • bahnuhrB bahnuhr

                                  @Ro75 sagte:

                                  Sender als Favorit markieren

                                  Hat bei mir eben nicht geklappt.
                                  Habe Sender 33 = Dmax mal auf true gesetzt.
                                  Wird aber dann nicht als favorite angezeigt.

                                  Im run kommt sowas:
                                  31451f66-2a11-4948-a765-a2bc7155e460-image.jpeg

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

                                  @bahnuhr ja, die Liste wird im Moment nur aktualisiert wenn

                                  • ein Refresh ausgelöst wird

                                  • das Script neu gestartet wird.

                                  Ich schaue es mir morgen an und bringe eine Aktualisierung.

                                  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 Ro75

                                    Hast du das so belassen?

                                    const root = "0_userdata.0.epg.";

                                    9dc0016a-4dfb-41bb-9759-466ce9305a4e-image.jpeg
                                    ist das auch korrekt?

                                    ggfs. das Script neu starten.

                                    Ro75.

                                    bahnuhrB Online
                                    bahnuhrB Online
                                    bahnuhr
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Ro75 sagte:

                                    const root = "0_userdata.0.epg.";

                                    Ne, hab ich geändert in
                                    const root = "javascript.0.Sonstige.EPG.";

                                    Habe aber auch die DP im widget entsprechend geändert.
                                    Komisch ist, dass der DP:
                                    be2509ac-f275-4dee-8fc1-7eb1783b7015-image.jpeg
                                    richtig ist, aber im DP
                                    abcfed79-aabe-4c5e-b09b-40d00ddd45b5-image.jpeg
                                    nix drin steht.


                                    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                    Danke.
                                    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                    ScreenToGif :https://www.screentogif.com/downloads.html

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

                                      Dann passt der Inhalt vom Widget nicht. Zeig mal bitte den JSON-String im Widget.

                                      Ro75.

                                      48aae455-a23d-4074-8e2a-18d2b8b326c8-image.jpeg
                                      Bei dir müsste drinstehen {javascript.0.Sonstige.EPG.favorite_sender_list}

                                      UND

                                      476c6b20-9e4b-4505-8357-c3bf63b3958c-image.jpeg

                                      javascript.0.Sonstige.EPG.selected_channel

                                      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

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

                                        Meinst du selected_channel ? Wenn ja, der bewirkt wenn dort zum beispiel die 33 eingetragen wird, dass du dann alle Sendungen von aktuell bis... von DMAX in der Liste bekommst.

                                        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

                                        bahnuhrB 1 Antwort Letzte Antwort
                                        0
                                        • Ro75R Ro75

                                          Dann passt der Inhalt vom Widget nicht. Zeig mal bitte den JSON-String im Widget.

                                          Ro75.

                                          48aae455-a23d-4074-8e2a-18d2b8b326c8-image.jpeg
                                          Bei dir müsste drinstehen {javascript.0.Sonstige.EPG.favorite_sender_list}

                                          UND

                                          476c6b20-9e4b-4505-8357-c3bf63b3958c-image.jpeg

                                          javascript.0.Sonstige.EPG.selected_channel

                                          bahnuhrB Online
                                          bahnuhrB Online
                                          bahnuhr
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #20

                                          @Ro75 sagte:

                                          Zeig mal bitte den JSON-String im Widget.

                                          Ro75.

                                          Ja, das wars.
                                          Jetzt klappt es.


                                          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                          Danke.
                                          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                          ScreenToGif :https://www.screentogif.com/downloads.html

                                          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

                                          511

                                          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