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. Hardware
  4. SONOFF NSPanel mit Lovelace UI (TypeScript Version)

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    894

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

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

SONOFF NSPanel mit Lovelace UI (TypeScript Version)

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
8.1k Beiträge 280 Kommentatoren 8.3m Aufrufe 260 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.
  • SmartStuffCoyoteS SmartStuffCoyote

    @ticaki siehe oben, das hab ich noch gefunden und nachgetragen. Das ".SqueezePlay." im Datenpunkt-Pfad ist falsch. Das existiert schlicht nicht.

    Hab aber immer noch mein "undefined". heul

    author = lmstracklist[currentIndex].Artist + '|' + lmstracklist[currentIndex].Album;
    if (author == undefined || author == "undefined") {
          author = getState(id + '.ARTIST').val;
    }
    

    Das kann aber auch nicht klappen, author wird ja zugewiesen und kann nnicht undefined sein.

                          author = lmstracklist[currentIndex].Artist;
                            if (author == undefined || author == "undefined") {
                                author = getState(id + '.ARTIST').val;
                            } 
                            author = author + '|' + lmstracklist[currentIndex].Album;
    

    klappt bei mir.

    ArmilarA Offline
    ArmilarA Offline
    Armilar
    Most Active Forum Testing
    schrieb am zuletzt editiert von
    #8100

    @SmartStuffCoyote

    Wenn es jetzt funktioniert, dann bitte mal hier die komplette GenerateMediaPage reinwerfen. Dann kann ich mir das zusammensuchen sparen.

    Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
    https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

    SmartStuffCoyoteS 1 Antwort Letzte Antwort
    0
    • SmartStuffCoyoteS SmartStuffCoyote

      @ticaki siehe oben, das hab ich noch gefunden und nachgetragen. Das ".SqueezePlay." im Datenpunkt-Pfad ist falsch. Das existiert schlicht nicht.

      Hab aber immer noch mein "undefined". heul

      author = lmstracklist[currentIndex].Artist + '|' + lmstracklist[currentIndex].Album;
      if (author == undefined || author == "undefined") {
            author = getState(id + '.ARTIST').val;
      }
      

      Das kann aber auch nicht klappen, author wird ja zugewiesen und kann nnicht undefined sein.

                            author = lmstracklist[currentIndex].Artist;
                              if (author == undefined || author == "undefined") {
                                  author = getState(id + '.ARTIST').val;
                              } 
                              author = author + '|' + lmstracklist[currentIndex].Album;
      

      klappt bei mir.

      T Nicht stören
      T Nicht stören
      ticaki
      schrieb am zuletzt editiert von ticaki
      #8101

      @SmartStuffCoyote

      Das hier ist trotzdem nötig - da darf kein undefined auf length geprüft werden...

      if (name.length == 0) -> if (typeof name !== 'string' || name.length == 0)

      wobei das ist kürzer (aber auch unsicherer)
      if ((name ?? '').length == 0)

      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

      Spenden

      1 Antwort Letzte Antwort
      0
      • ArmilarA Armilar

        @SmartStuffCoyote

        Wenn es jetzt funktioniert, dann bitte mal hier die komplette GenerateMediaPage reinwerfen. Dann kann ich mir das zusammensuchen sparen.

        SmartStuffCoyoteS Offline
        SmartStuffCoyoteS Offline
        SmartStuffCoyote
        schrieb am zuletzt editiert von SmartStuffCoyote
        #8102

        @Armilar Hier, inklusive des Fix von @ticaki

        function GenerateMediaPage (page: NSPanel.PageMedia): NSPanel.Payload[] {
            try {
                unsubscribeMediaSubscriptions();
        
                if (!page.items[0].id) throw new Error('Missing page id for cardMedia!');
        
                let id = page.items[0].id;
                let tid = 0;
                let out_msgs: NSPanel.Payload[] = [];
        
                if (!page.items[0].adapterPlayerInstance!) throw new Error('page.items[0].adapterPlayerInstance is undefined!');
                let vInstance = page.items[0].adapterPlayerInstance!;
                let v1Adapter = vInstance.split('.');
                let v2Adapter: NSPanel.PlayerType = v1Adapter[0] as NSPanel.PlayerType;
        
                let vMediaDevice = page.items[0].mediaDevice != undefined ? page.items[0].mediaDevice : '';
        
                if (isPlayerWithMediaDevice(v2Adapter)) {
                    if (!vMediaDevice) throw new Error(`Error in cardMedia! mediaDevice is empty! Page: ${JSON.stringify(page)}`);
                }
                createAutoMediaAlias(id, vMediaDevice, page.items[0].adapterPlayerInstance!);
        
                // Leave the display on if the alwaysOnDisplay parameter is specified (true)
                if (page.type == 'cardMedia' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) {
                    out_msgs.push({payload: 'pageType~cardMedia'});
                    if (page.items[0].alwaysOnDisplay != undefined) {
                        if (page.items[0].alwaysOnDisplay) {
                            pageCounter = 1;
                            if (alwaysOn == false) {
                                alwaysOn = true;
                                SendToPanel({payload: 'timeout~0'});
                                subscribeMediaSubscriptions(page.items[0].id);
                                if (v2Adapter == 'sonos') {
                                    subscribeMediaSubscriptionsSonosAdd(page.items[0].id);
                                } else if (v2Adapter == 'spotify-premium') {
                                    setState(vInstance + 'getDevices', true);
                                    setState(vInstance + 'getPlaybackInfo', true);
                                    setState(vInstance + 'getPlaylists', true);
                                }
                            }
                        }
                    }
                } else if (page.type == 'cardMedia' && pageCounter == 1) {
                    alwaysOn = true;
                    subscribeMediaSubscriptions(page.items[0].id);
                    if (v2Adapter == 'sonos') {
                        subscribeMediaSubscriptionsSonosAdd(page.items[0].id);
                    }
                } else if (page.type == 'cardMedia' && pageCounter == -1) {
                    //Do Nothing
                } else {
                    out_msgs.push({payload: 'pageType~cardMedia'});
                }
        
                if (existsObject(id)) {
        
                    let name = "";
                    if (page.items[0].showOnlyPlayerHeadline && page.items[0].showOnlyPlayerHeadline != undefined) {
                        //name = getState(page.items[0].adapterPlayerInstance + "Players.SqueezePlay.Playername").val;
                        name = getState(page.items[0].adapterPlayerInstance + "Players." + page.items[0].mediaDevice + ".Playername").val;
                        //name = page.heading;
                    } else {
                        name = getState(id + '.ALBUM').val;
                        console.log("##### else name");
                    }
                    let title = getState(id + '.TITLE').val;
                    if (title && title.indexOf('~') !== -1) {
                        title = title.split('~')[0].trim();
                    }
        
                    if (title.length > 24) {
                        title = title.slice(0, 24) + '...';
                    }
                    if (existsObject(id + '.DURATION') && existsObject(id + '.ELAPSED')) {
                        if (v2Adapter == 'alexa2') {
                            if (Debug) log(getState(id + '.DURATION').val, 'info');
                            let Seconds = parseInt(getState(id + '.DURATION').val) % 60 < 10 ? '0' : '';
                            let Duration = Math.floor(getState(id + '.DURATION').val / 60) + ':' + Seconds + (getState(id + '.DURATION').val % 60);
                            let vElapsed = getState(id + '.ELAPSED').val;
        
                            if (vElapsed.length == 5) {
                                if (parseInt(vElapsed.slice(0, 2)) < 9) {
                                    vElapsed = vElapsed.slice(1);
                                }
                            }
                            if (vElapsed == 0) {
                                vElapsed = '0:00';
                            }
                            let vDuration = Duration;
                            if (vDuration.length == 5) {
                                if (parseInt(vDuration.slice(0, 2)) < 9) {
                                    vDuration = vDuration.slice(1);
                                }
                            }
                            if (vDuration != '0:00') {
                                title = title + ' (' + vElapsed + '|' + vDuration + ')';
                            } else {
                                title = title + ' (' + vElapsed + ')';
                            }
                            if (title == ' (0:00)') {
                                title = '';
                            }
                        } else if (v2Adapter == 'sonos' && getState(page.items[0].adapterPlayerInstance + 'root.' + page.items[0].mediaDevice + '.current_type').val == 0) {
                            let vElapsed = getState(id + '.ELAPSED').val;
                            if (vElapsed.length == 5) {
                                if (parseInt(vElapsed.slice(0, 2)) < 9) {
                                    vElapsed = vElapsed.slice(1);
                                }
                            } else if (vElapsed.length == 8) {
                                vElapsed = vElapsed.slice(4);
                            }
                            let vDuration = getState(id + '.DURATION').val;
                            if (vDuration.length == 5) {
                                if (parseInt(vDuration.slice(0, 2)) < 9) {
                                    vDuration = vDuration.slice(1);
                                }
                            } else if (vDuration.length == 8) {
                                vDuration = vDuration.slice(4);
                            }
                            title = title + ' (' + vElapsed + '|' + vDuration + ')';
                        } else if (v2Adapter == 'bosesoundtouch') {
                            if (Debug) log(getState(id + '.ELAPSED').val, 'info');
                            let elapsedSeconds = parseInt(getState(id + '.ELAPSED').val) % 60 < 10 ? '0' : '';
                            let vElapsed = Math.floor(getState(id + '.ELAPSED').val / 60) + ':' + elapsedSeconds + (getState(id + '.ELAPSED').val % 60);
                            if (Debug) log(getState(id + '.DURATION').val, 'info');
                            let durationSeconds = parseInt(getState(id + '.DURATION').val) % 60 < 10 ? '0' : '';
                            let vDuration = Math.floor(getState(id + '.DURATION').val / 60) + ':' + durationSeconds + (getState(id + '.DURATION').val % 60);
                            title = title + ' (' + vElapsed + '|' + vDuration + ')';
                        } else if (v2Adapter == 'mpd') {
                            let vElapsed: string = getState(id + '.ELAPSED').val;
                            let vDuration: string = getState(id + '.DURATION').val;
                            title = title + ' (' + vElapsed + '|' + vDuration + ')';
                            if (getState(id + '.STATE').val === 'stop') {
                                title = '(00:00|00:00)';
                            }
                        }
                    }
        
                    let author = getState(id + '.ARTIST').val;
        
                    if (v2Adapter == 'squeezeboxrpc' && author.length > 0) {
                        if (existsObject([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playlist'].join(''))) {
                            if (existsObject([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playlist'].join(''))) {
                                let lmstracklist = JSON.parse(getState([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playlist'].join('')).val);
                                let currentIndex: number = parseInt(getState([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.PlaylistCurrentIndex'].join('')).val);
                                
                                author = lmstracklist[currentIndex].Artist;
                                if (author == undefined || author == "undefined") {
                                    author = getState(id + '.ARTIST').val;
                                } 
                                author = author + '|' + lmstracklist[currentIndex].Album;
                                if (author.length > 37) {
                                    author = author.slice(0, 37) + '...';
                                }
                                let elapsedTime: number = parseInt(getState([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Time'].join('')).val);
                                let elapsedSeconds = elapsedTime % 60 < 10 ? '0' : '';
                                let vElapsed = Math.floor(elapsedTime / 60) + ':' + elapsedSeconds + (elapsedTime % 60);
        
                                let durationSeconds = parseInt(lmstracklist[currentIndex].Duration) % 60 < 10 ? '0' : '';
                                let vDuration = Math.floor(parseInt(lmstracklist[currentIndex].Duration) / 60) + ':' + durationSeconds + (parseInt(lmstracklist[currentIndex].Duration) % 60);
                                title = lmstracklist[currentIndex].title;
                                if (title.length > 25) {
                                    title = title.slice(0, 25) + '...';
                                }
                                title = title + ' (' + vElapsed + '|' + vDuration + ')';
                            }
                        }
                    }
        
                    // Settings >>Aktualisierungsintervall für Statusinformationen<< = 1 !
                    // If the refresh time is set to 1 second in the spotify-premium.X instance,
                    // the elapsed refresh bug '00:00' is not visible
                    if (v2Adapter == 'spotify-premium') {
                        let vElapsed: string = getState(id + '.ELAPSED').val;
                        if (vElapsed.substring(0, 1) == '0') {
                            vElapsed = vElapsed.slice(1);
                        }
                        let vDuration: string = getState(id + '.DURATION').val;
                        if (vDuration.substring(0, 1) == '0') {
                            vDuration = vDuration.slice(1);
                        }
                        title = title + ' (' + vElapsed + '|' + vDuration + ')';
                        if (title == ' (0:00|0:00)') {
                            title = '';
                        }
                    }
        
                    let shuffle = getState(id + '.SHUFFLE').val;
        
                    //New Adapter/Player
                    let media_icon = Icons.GetIcon('playlist-music');
        
                    //Spotify-Premium
                    if (v2Adapter == 'spotify-premium') {
                        media_icon = Icons.GetIcon('spotify');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-spotify') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        name = getState(id + '.CONTEXT_DESCRIPTION').val;
                        let nameLength = name.length;
                        if (name.substring(0, 17) == 'Playlist: This Is') {
                            name = name.slice(18, 34) + '...';
                        } else if (name.substring(0, 9) == 'Playlist:') {
                            name = name.slice(10, 26) + '...';
                        } else if (name.substring(0, 6) == 'Album:') {
                            name = name.slice(7, 23) + '...';
                        } else if (name.substring(0, 6) == 'Track:') {
                            name = name.slice(7, 23) + '...';
                        } else if (name.substring(0, 7) == 'Artist:') {
                            name = name.slice(8, 24) + '...';
                        }
                        if (nameLength == 0) {
                            name = 'Spotify-Premium';
                        }
                        author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                        if (author.length > 37) {
                            author = author.slice(0, 37) + '...';
                        }
                        if (getState(id + '.ARTIST').val.length == 0) {
                            author = findLocale('media', 'no_music_to_control');
                        }
                    }
        
                    //Sonos
                    if (v2Adapter == 'sonos') {
                        media_icon = Icons.GetIcon('alpha-s-circle');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-sonos') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        name = getState(id + '.CONTEXT_DESCRIPTION').val;
                        let nameLenght = name.length;
                        if (nameLenght == 0) {
                            name = page.heading;
                        } else if (nameLenght > 16) {
                            name = name.slice(0, 16) + '...';
                        }
                        if (getState(id + '.ALBUM').val.length > 0) {
                            author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                            if (author.length > 37) {
                                author = author.slice(0, 37) + '...';
                            }
                        } else {
                            author = getState(id + '.ARTIST').val;
                        }
                        if (getState(id + '.ARTIST').val.length == 0) {
                            author = findLocale('media', 'no_music_to_control');
                        }
                    }
        
                    //Bose Soundtouch
                    if (v2Adapter == 'bosesoundtouch') {
                        media_icon = Icons.GetIcon('alpha-b-circle');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-bose') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        name = page.heading;
        
                        if (getState(id + '.ALBUM').val.length > 0) {
                            author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                            if (author.length > 37) {
                                author = author.slice(0, 37) + '...';
                            }
                        } else {
                            author = getState(id + '.ARTIST').val;
                        }
                        if (getState(id + '.ARTIST').val.length == 0) {
                            author = findLocale('media', 'no_music_to_control');
                        }
                    }
        
                    //Logitech Squeezebox RPC
                    if (v2Adapter == 'squeezeboxrpc') {
                        media_icon = Icons.GetIcon('dlna');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-dnla') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        if (name.length == 0) {
                            name = page.heading;
                        } else if (name.length > 16) {
                            name = name.slice(0, 16) + '...';
                        }
                    }
        
                    //Alexa2
                    if (v2Adapter == 'alexa2') {
                        media_icon = Icons.GetIcon('alpha-a-circle');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-alexa') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        name = getState(id + '.ALBUM').val;
                        let nameLength = name.length;
                        if (name.substring(0, 9) == 'Playlist:') {
                            name = name.slice(10, 26) + '...';
                        } else if (name.substring(0, 6) == 'Album:') {
                            name = name.slice(7, 23) + '...';
                        } else if (name.substring(0, 6) == 'Track') {
                            name = 'Alexa Player';
                        }
                        if (nameLength == 0) {
                            name = 'Alexa Player';
                        } else {
                            name = name.slice(0, 16) + '...';
                        }
                        author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                        if (author.length > 30) {
                            author = getState(id + '.ARTIST').val;
                        }
                        if (getState(id + '.ARTIST').val.length == 0) {
                            author = findLocale('media', 'no_music_to_control');
                        }
                    }
        
                    //Volumio
                    if (v2Adapter == 'volumio') {
                        media_icon = Icons.GetIcon('clock-time-twelve-outline');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-volumio') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        if (name != undefined) {
                            author = author + ' | ' + name;
                        }
                        name = page.heading;
                    }
        
                    //MPD
                    if (v2Adapter == 'mpd') {
                        media_icon = Icons.GetIcon('alpha-m-circle');
                        if (page.items[0].playerMediaIcon !== undefined) {
                            if (page.items[0].playerMediaIcon == 'logo-mpd') {
                                media_icon = page.items[0].playerMediaIcon;
                            } else {
                                media_icon = Icons.GetIcon(page.items[0].playerMediaIcon);
                            }
                        }
                        if (getState(id + '.ALBUM').val.length > 0) {
                            author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                            if (author.length > 37) {
                                author = author.slice(0, 37) + '...';
                            }
                        } else {
                            author = getState(id + '.ARTIST').val;
                        }
                        if (getState(id + '.ARTIST').val.length == 0) {
                            author = findLocale('media', 'no_music_to_control');
                        }
                        name = page.heading;
                    }
        
                    let volume = scale(getState(id + '.VOLUME').val, activePage!.items[0]!.minValue ?? 0, activePage!.items[0]!.maxValue ?? 100, 100, 0);
                    let iconplaypause = Icons.GetIcon('pause'); //pause
                    let shuffle_icon = Icons.GetIcon('shuffle-variant'); //shuffle
                    let onoffbutton = 1374;
        
                    if (shuffle == 'off' || shuffle == false || shuffle == 0 || shuffle == 'false') {
                        shuffle_icon = Icons.GetIcon('shuffle-disabled'); //shuffle
                    }
        
                    // Todo: Refresh automatisieren und dafür wieder Shuffle nutzen
                    //if (v2Adapter == 'volumio') { shuffle_icon = Icons.GetIcon('shuffle-disabled'); } //Volumio: refresh playlist
        
                    //For all players
                    if (getState(id + '.STATE').val) {
                        onoffbutton = 65535;
                        iconplaypause = Icons.GetIcon('pause'); //pause
                    } else {
                        iconplaypause = Icons.GetIcon('play'); //play
                    }
        
                    //Ausnahme für squeezebox, da State = Power
                    if (v2Adapter == 'squeezeboxrpc') {
                        if (getState(id + '.PAUSE').val === false) {
                            onoffbutton = 65535;
                            iconplaypause = Icons.GetIcon('pause'); //pause
                        } else {
                            iconplaypause = Icons.GetIcon('play'); //play
                        }
                    }
        
                    //Ausnahme für mpd, da State = play, pause,....
                    if (v2Adapter == 'mpd') {
                        if (getState(id + '.STATE').val === 'play') {
                            onoffbutton = 65535;
                            iconplaypause = Icons.GetIcon('pause'); //pause
                        } else if (getState(id + '.STATE').val === 'pause') {
                            iconplaypause = Icons.GetIcon('play'); //play
                        } else if (getState(id + '.STATE').val === 'stop') {
                            onoffbutton = 1374;
                            iconplaypause = Icons.GetIcon('play'); //play
                        }
        
                    }
        
                    //Ausnahme Volumio: status = string: play, pause, stop usw.
                    if (v2Adapter == 'volumio') {
                        if (getState(id + '.status').val == 'play') {
                            onoffbutton = 65535;
                            iconplaypause = Icons.GetIcon('pause'); //pause
                        } else {
                            iconplaypause = Icons.GetIcon('play'); //play
                        }
                    }
        
                    let currentSpeaker: string = findLocale('media', 'no_speaker_found');
        
                    if (v2Adapter == 'alexa2') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'Echo-Devices.', page.items[0].mediaDevice, '.Info.name'].join('')).val;
                    } else if (v2Adapter == 'spotify-premium') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'player.device.name'].join('')).val;
                    } else if (v2Adapter == 'sonos') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'root.', page.items[0].mediaDevice, '.members'].join('')).val;
                    } else if (v2Adapter == 'squeezeboxrpc') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playername'].join('')).val;
                    } else if (v2Adapter == 'bosesoundtouch') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'deviceInfo.name'].join('')).val;
                    } else if (v2Adapter == 'volumio') {
                        currentSpeaker = getState([page.items[0].adapterPlayerInstance, 'info.name'].join('')).val;
                    } else if (v2Adapter == 'mpd') {
                        currentSpeaker = v1Adapter[0] + '.' + v1Adapter[1];
                    }
                    //-------------------------------------------------------------------------------------------------------------
                    // All Alexa devices (the online / player and commands directory is available) are listed and linked below
                    // If the constant alexaSpeakerList contains at least one entry, the constant is used - otherwise all devices from the Alexa adapter
                    let speakerListArray: string[] = [];
                    if (page.items[0].speakerList && page.items[0].speakerList.length > 0) {
                        for (let i_index in page.items[0].speakerList) {
                            speakerListArray.push(page.items[0].speakerList[i_index]);
                        }
                    } else if (v2Adapter == 'squeezeboxrpc') {
                        // Beim Squeezeboxrpc ist jeder Player ein eigener Knoten im Objektbaum. Somit werden einzelne Aliase benötigt.
                        const squeezeboxPlayerQuery: iobJS.QueryResult = $('channel[state.id=' + page.items[0].adapterPlayerInstance + '.Players.*.Playername]');
                        squeezeboxPlayerQuery.each((playerId: string, playerIndex: number) => {
                            speakerListArray.push(getState(playerId).val);
                            page.items[0].speakerList = speakerListArray;
                        });
                    } else if (v2Adapter == 'spotify-premium') {
                        // All possible Devices if page.items[0].speakerList empty
                        if (Debug) log(getState(page.items[0].adapterPlayerInstance + 'devices.availableDeviceListString').val);
                        speakerListArray = getState(page.items[0].adapterPlayerInstance + 'devices.availableDeviceListString').val.split(';');
                        page.items[0].speakerList = speakerListArray;
                    } else if (v2Adapter == 'mpd') {
                        // All possible Devices if page.items[0].speakerList empty
                        page.items[0].speakerList[0] = v1Adapter[0] + '.' + v1Adapter[1];
                    } else {
                        let i_list = Array.prototype.slice.apply($('[state.id="' + page.items[0].adapterPlayerInstance + 'Echo-Devices.*.Info.name"]'));
                        for (let i_index in i_list) {
                            let i = i_list[i_index];
                            let deviceId = i;
                            deviceId = deviceId.split('.');
                            if (
                                getState([page.items[0].adapterPlayerInstance, 'Echo-Devices.', deviceId[3], '.online'].join('')).val &&
                                existsObject([page.items[0].adapterPlayerInstance, 'Echo-Devices.', deviceId[3], '.Player'].join('')) &&
                                existsObject([page.items[0].adapterPlayerInstance, 'Echo-Devices.', deviceId[3], '.Commands'].join(''))
                            ) {
                                speakerListArray.push(getState(i).val);
                            }
                        }
                    }
                    //--------------------------------------------------------------------------------------------------------------
        
                    let colMediaIcon = page.items[0].colorMediaIcon != undefined ? page.items[0].colorMediaIcon : White;
                    let colMediaTitle = page.items[0].colorMediaTitle != undefined ? page.items[0].colorMediaTitle : White;
                    let colMediaArtist = page.items[0].colorMediaArtist != undefined ? page.items[0].colorMediaArtist : White;
        
                    //InSel Speaker
                    let speakerListString: string = '~~~~~~';
                    let speakerListIconCol = rgb_dec565(HMIOff);
                    if (speakerListArray.length > 0) {
                        speakerListIconCol = rgb_dec565(HMIOn);
                        speakerListString = 'input_sel' + '~' + tid + '?speakerlist' + '~' + Icons.GetIcon('speaker') + '~' + speakerListIconCol + '~' + findLocale('media', 'speaker') + '~' + 'media0~';
                    }
        
                    //InSel Playlist
                    let playListString: string = '~~~~~~';
                    let playListIconCol = rgb_dec565(HMIOff);
                    if (page.items[0].playList != undefined) {
                        /* Volumio: get actual playlist if empty */
                        if (v2Adapter == 'volumio') {
                            if (page.items[0].playList.length == 0) {
                                let urlString: string = `${getState(vInstance + 'info.host').val}/api/listplaylists`;
        
                                axios
                                    .get(urlString, {headers: {'User-Agent': 'ioBroker'}})
                                    .then(async function (response) {
                                        if (response.status === 200) {
                                            if (Debug) {
                                                log(JSON.stringify(response.data), 'info');
                                            }
                                            page.items[0].playList = JSON.parse(JSON.stringify(response.data));
                                            if (Debug) log('volumio-playlist: ' + page.items[0].playList, 'info');
                                        } else {
                                            log('Axios Status - get_volumio-playlist: ' + response.state, 'warn');
                                        }
                                    })
                                    .catch(function (error) {
                                        log(error, 'warn');
                                    });
                            }
                            /* Spotify: get all playlists if empty */
                        } else if (v2Adapter == 'spotify-premium') {
                            page.items[0].playList = getState(page.items[0].adapterPlayerInstance + 'playlists.playlistListString').val.split(';');
                        } else if (v2Adapter == 'mpd') {
                            let tempPL = getState(page.items[0].adapterPlayerInstance + 'listplaylists').val;
                            tempPL = tempPL.replace('[', '');
                            tempPL = tempPL.replace(']', '');
                            tempPL = tempPL.replaceAll('"', '');
                            page.items[0].playList = tempPL.split(',');
                        }
                        playListIconCol = rgb_dec565(HMIOn);
                        playListString =
                            'input_sel' +
                            '~' +
                            tid +
                            '?playlist' +
                            '~' +
                            Icons.GetIcon('playlist-play') +
                            '~' +
                            playListIconCol +
                            '~' +
                            //'PlayL ' + page.heading + '~' +
                            findLocale('media', 'playlist') +
                            '~' +
                            'media1~';
                    }
        
                    //InSel Tracklist
                    globalTracklist = '';
        
                    let trackListString: string = '~~~~~~';
                    let trackListIconCol = rgb_dec565(HMIOff);
                    if (v2Adapter == 'volumio') {
                        /* Volumio: get queue */
                        setTimeout(async function () {
                            let urlString: string = `${getState(vInstance + 'info.host').val}/api/getQueue`;
        
                            axios
                                .get(urlString, {headers: {'User-Agent': 'ioBroker'}})
                                .then(async function (response) {
                                    if (response.status === 200) {
                                        if (Debug) {
                                            log(JSON.stringify(response.data), 'info');
                                        }
                                        const QUEUELIST = JSON.parse(JSON.stringify(response.data));
                                        page.items[0].globalTracklist = QUEUELIST.queue;
                                        if (Debug) {
                                            for (let i_index in QUEUELIST.queue) {
                                                log('volumio-queue: ' + QUEUELIST.queue[i_index], 'info');
                                            }
                                        }
                                    } else {
                                        log('Axios Status - get_volumio-queue: ' + response.state, 'warn');
                                    }
                                })
                                .catch(function (error) {
                                    log(error, 'warn');
                                });
                        }, 2000);
                        globalTracklist = page.items[0].globalTracklist;
                    } else if (v2Adapter == 'squeezeboxrpc' && existsObject([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playlist'].join(''))) {
                        let lmstracklist = JSON.parse(getState([page.items[0].adapterPlayerInstance, 'Players.', page.items[0].mediaDevice, '.Playlist'].join('')).val);
                        globalTracklist = lmstracklist;
                    } else if (v2Adapter == 'sonos' && existsObject([page.items[0].adapterPlayerInstance, 'root.', page.items[0].mediaDevice, '.playlist_set'].join(''))) {
                        let lmstracklist = getState([page.items[0].adapterPlayerInstance, 'root.', page.items[0].mediaDevice, '.queue'].join('')).val;
                        lmstracklist = lmstracklist.replace(/\s*[\[{(].*?[)}\]]\s*/g, '');
                        let lmstracklistTemp = lmstracklist.split(', ');
                        let trackList: string = '[';
                        if (getState(page.items[0].adapterPlayerInstance + 'root.' + page.items[0].mediaDevice + '.current_type').val == 0) {
                            for (let i = 0; i < lmstracklistTemp.length; i++) {
                                let trackTemp = lmstracklistTemp[i].split(' - ');
                                trackList = trackList + '{"id":"' + i + '","name":"' + trackTemp[0] + '","title":"' + trackTemp[1] + '"}';
                                if (i < lmstracklistTemp.length - 1) {
                                    trackList = trackList + ',';
                                }
                            }
                        }
                        trackList = trackList + ']';
                        if (Debug) log(trackList, 'info');
                        globalTracklist = trackList;
                    } else if (v2Adapter == 'spotify-premium') {
                        try {
                            let tempTrackList = JSON.parse(getState(page.items[0].adapterPlayerInstance + 'player.playlist.trackListArray').val);
                            globalTracklist = tempTrackList;
                        } catch {
                            log('Hello Mr. Developer something went wrong in tracklist!', 'debug');
                        }
                    } else if (v2Adapter == 'mpd') {
                        try {
                            let tempTrackList = JSON.parse(getState(page.items[0].adapterPlayerInstance + 'playlist_list').val);
                            globalTracklist = tempTrackList;
                        } catch {
                            log('Hello Mr. Developer something went wrong in tracklist!', 'debug');
                        }
                    }
        
                    if (globalTracklist != null && globalTracklist.length != 0) {
                        trackListIconCol = rgb_dec565(HMIOn);
                        trackListString =
                            'input_sel' + '~' + tid + '?tracklist' + '~' + Icons.GetIcon('animation-play-outline') + '~' + trackListIconCol + '~' + findLocale('media', 'tracklist') + '~' + 'media2~';
                    }
        
                    // InSel/Slider EQ
                    let equalizerListString: string = '~~~~~~';
                    let equalizerListIconCol = rgb_dec565(HMIOff);
        
                    if (page.items[0].equalizerList != undefined) {
                        equalizerListIconCol = rgb_dec565(HMIOn);
                        equalizerListString =
                            'input_sel' + '~' + tid + '?equalizer' + '~' + Icons.GetIcon('equalizer-outline') + '~' + equalizerListIconCol + '~' + findLocale('media', 'equalizer') + '~' + 'media3~';
                    } else if (page.items[0].equalizerSlider != undefined && v2Adapter == 'alexa2') {
                        equalizerListIconCol = rgb_dec565(HMIOn);
                        equalizerListString =
                            'slider' + '~' + tid + '~' + Icons.GetIcon('equalizer-outline') + '~' + equalizerListIconCol + '~' + findLocale('media', 'equalizer') + '~' + 'media3~';
                    } else if (page.items[0].equalizerList == undefined && v2Adapter == 'sonos') {
                        let equalizerListIconCol = rgb_dec565(HMIOn);
                        //equalizerListString is used for favariteList
                        equalizerListString =
                            'input_sel' + '~' + tid + '?favorites' + '~' + Icons.GetIcon('playlist-star') + '~' + equalizerListIconCol + '~' + findLocale('media', 'favorites') + '~' + 'media3~';
                    }
        
                    //Repeat Control Button
                    let repeatIcon = Icons.GetIcon('repeat-variant');
                    let repeatIconCol = rgb_dec565(HMIOff);
                    let repeatButtonString: string = '~~~~~~';
        
                    if (v2Adapter == 'spotify-premium') {
                        if (getState(id + '.REPEAT').val == 'context') {
                            repeatIcon = Icons.GetIcon('repeat-variant');
                            repeatIconCol = rgb_dec565(HMIOn);
                        } else if (getState(id + '.REPEAT').val == 'track') {
                            repeatIcon = Icons.GetIcon('repeat-once');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'alexa2') {
                        if (getState(id + '.REPEAT').val == true) {
                            repeatIcon = Icons.GetIcon('repeat-variant');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'sonos') {
                        if (getState(id + '.REPEAT').val == 1) {
                            repeatIcon = Icons.GetIcon('repeat-variant');
                            repeatIconCol = rgb_dec565(HMIOn);
                        } else if (getState(id + '.REPEAT').val == 2) {
                            repeatIcon = Icons.GetIcon('repeat-once');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'bosesoundtouch') {
                        if (getState(id + '.REPEAT').val == 'REPEAT_ALL') {
                            repeatIcon = Icons.GetIcon('repeat-variant');
                            repeatIconCol = rgb_dec565(HMIOn);
                        } else if (getState(id + '.REPEAT').val == 'REPEAT_ONE') {
                            repeatIcon = Icons.GetIcon('repeat-once');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'squeezeboxrpc') {
                        if (getState(id + '.REPEAT').val == 1) {
                            repeatIcon = Icons.GetIcon('repeat-once');
                            repeatIconCol = rgb_dec565(HMIOn);
                        } else if (getState(id + '.REPEAT').val == 2) {
                            repeatIcon = Icons.GetIcon('repeat');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'volumio') {
                        /* Volumio: only Repeat true/false with API */
                        if (getState(id + '.REPEAT').val == true) {
                            repeatIcon = Icons.GetIcon('repeat-variant');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    } else if (v2Adapter == 'mpd') {
                        if (getState(id + '.REPEAT').val == true && getState(id + '.SINGLE').val == 0) {
                            repeatIcon = Icons.GetIcon('repeat');
                            repeatIconCol = rgb_dec565(HMIOn);
                        } else if (getState(id + '.REPEAT').val == true && getState(id + '.SINGLE').val == 1) {
                            repeatIcon = Icons.GetIcon('repeat-once');
                            repeatIconCol = rgb_dec565(HMIOn);
                        }
                    }
        
                    if (v2Adapter == 'spotify-premium' || v2Adapter == 'alexa2' || v2Adapter == 'sonos' || v2Adapter == 'bosesoundtouch' || v2Adapter == 'volumio' || v2Adapter == 'squeezeboxrpc' || v2Adapter == 'mpd') {
                        repeatButtonString = 'button' + '~' + tid + '?repeat' + '~' + repeatIcon + '~' + repeatIconCol + '~' + 'Repeat' + '~' + 'media4';
                    }
        
                    //popUp Tools
                    let toolsString: string = '~~~~~~';
                    let toolsIconCol = rgb_dec565(colMediaIcon);
                    if (v2Adapter == 'sonos' || v2Adapter == 'mpd') {
                        if (page.items[0].crossfade == undefined || page.items[0].crossfade == false) {
                            toolsString = 'input_sel' + '~' + tid + '?seek' + '~' + media_icon + '~' + toolsIconCol + '~' + findLocale('media', 'seek') + '~' + 'media5~';
                        } else {
                            toolsString = 'input_sel' + '~' + tid + '?crossfade' + '~' + media_icon + '~' + toolsIconCol + '~' + findLocale('media', 'crossfade') + '~' + 'media5~';
                        }
                    } else if (v2Adapter == 'squeezeboxrpc') {
                        if (page.items[0].crossfade == undefined || page.items[0].crossfade == false) {
                            toolsString = 'input_sel' + '~' + tid + '?seek' + '~' + media_icon + '~' + toolsIconCol + '~' + findLocale('media', 'seek') + '~' + 'media5~';
                        }
                    } else if (v2Adapter == 'spotify-premium') {
                        if (page.items[0].crossfade == undefined || page.items[0].crossfade == false) {
                            toolsString = 'input_sel' + '~' + tid + '?seek' + '~' + media_icon + '~' + toolsIconCol + '~' + findLocale('media', 'seek') + '~' + 'media5~';
                        }
                    } else {
                        toolsString = 'button' + '~' + tid + '' + '~' + media_icon + '~' + toolsIconCol + '~' + findLocale('media', 'tools') + '~' + 'media5~';
                    }
        
                    out_msgs.push({
                        payload:
                            'entityUpd~' + //entityUpd
                            name +
                            '~' + //heading
                            getNavigationString(pageId) +
                            '~' + //navigation
                            tid +
                            '~' + //internalNameEntiy
                            title +
                            '~' + //title
                            rgb_dec565(colMediaTitle) +
                            '~' + //titleColor
                            author +
                            '~' + //author
                            rgb_dec565(colMediaArtist) +
                            '~' + //authorColor
                            volume +
                            '~' + //volume
                            iconplaypause +
                            '~' + //playpauseicon
                            onoffbutton +
                            '~' + //On/Off Button Color
                            shuffle_icon +
                            '~' + //iconShuffle                     --> Code
                            toolsString +
                            speakerListString +
                            playListString +
                            trackListString +
                            equalizerListString +
                            repeatButtonString,
                    });
                }
                if (Debug) {
                    log('GenerateMediaPage payload: ' + JSON.stringify(out_msgs), 'info');
                }
                return out_msgs;
            } catch (err: any) {
                log('error at function GenerateMediaPage: ' + err.message, 'warn');
                return [];
            }
        }
        

        Danke euch!

        1 Antwort Letzte Antwort
        1
        • A Offline
          A Offline
          australien
          schrieb am zuletzt editiert von australien
          #8103

          da ich seit geraumer Zeit folgende Fehlermelungen bekomme:

          javascript.0	14:13:02.803	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:02.804	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:11.799	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:11.800	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:20.907	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:20.907	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:29.924	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:29.924	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:38.948	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:38.948	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:47.996	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          
          javascript.0	14:13:47.996	warn	
          
          Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
          

          hab ich von 5_1_1_1 auf 5_1_1_7 upgedatet, leider noch immer alles beim allten.

          Tasmota 15.0.1

          javascript.0	14:15:29.238	info	
          
          --- start of NsPanelTs: 0_userdata.0.NSPanel.Kueche. ---
          
          javascript.0	14:15:29.250	info	
          
          setObjects enabled - create Alias Channels possible
          
          javascript.0	14:15:29.254	info	
          
          weather alias for pirate-weather.0. already exists
          
          javascript.0	14:15:29.271	info	
          
          registered 41 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          
          javascript.0	14:15:29.276	info	
          
          Updates for NSPanel available
          
          javascript.0	14:15:29.365	info	
          
          Desired TFT Firmware: 61 / v5.1.1
          
          javascript.0	14:15:29.365	info	
          
          Installed TFT Firmware: 61 / v5.1.1
          
          javascript.0	14:15:29.479	info	
          
          Debug mode disabled
          
          javascript.0	14:15:30.108	info	
          
          hidden Cards disabled
          
          javascript.0	14:15:32.279	info	
          
          Start MQTT-Port-Check -------------------------------------
          
          javascript.0	14:15:32.279	info	
          
          -- admin.0                   - 8081
          
          javascript.0	14:15:32.279	info	
          
          -- influxdb.0                - 8086
          
          javascript.0	14:15:32.279	info	
          
          -- mqtt.0                    - 1886
          
          javascript.0	14:15:32.279	info	
          
          -- mqtt.1                    - 1883
          
          javascript.0	14:15:32.279	info	
          
          -- proxmox.0                 - 8006
          
          javascript.0	14:15:32.279	info	
          
          -- shelly.0                  - 1882
          
          javascript.0	14:15:32.279	info	
          
          -- simple-api.0              - 8087
          
          javascript.0	14:15:32.279	info	
          
          -- sonoff.0                  - 1884
          
          javascript.0	14:15:32.279	info	
          
          -- telegram.0                - 8443
          
          javascript.0	14:15:32.279	info	
          
          -- unifi-network.0           - 1144
          
          javascript.0	14:15:32.279	info	
          
          -- web.0                     - 8082
          
          javascript.0	14:15:32.279	info	
          
          - MQTT-Port-Check OK: Instance of Adapter: mqtt.0 is running on Port:1886
          
          javascript.0	14:15:32.279	info	
          
          End MQTT-Port-Check ---------------------------------------
          
          ArmilarA 1 Antwort Letzte Antwort
          0
          • A australien

            da ich seit geraumer Zeit folgende Fehlermelungen bekomme:

            javascript.0	14:13:02.803	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:02.804	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:11.799	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:11.800	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:20.907	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:20.907	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:29.924	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:29.924	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:38.948	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:38.948	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:47.996	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            
            javascript.0	14:13:47.996	warn	
            
            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.
            

            hab ich von 5_1_1_1 auf 5_1_1_7 upgedatet, leider noch immer alles beim allten.

            Tasmota 15.0.1

            javascript.0	14:15:29.238	info	
            
            --- start of NsPanelTs: 0_userdata.0.NSPanel.Kueche. ---
            
            javascript.0	14:15:29.250	info	
            
            setObjects enabled - create Alias Channels possible
            
            javascript.0	14:15:29.254	info	
            
            weather alias for pirate-weather.0. already exists
            
            javascript.0	14:15:29.271	info	
            
            registered 41 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            
            javascript.0	14:15:29.276	info	
            
            Updates for NSPanel available
            
            javascript.0	14:15:29.365	info	
            
            Desired TFT Firmware: 61 / v5.1.1
            
            javascript.0	14:15:29.365	info	
            
            Installed TFT Firmware: 61 / v5.1.1
            
            javascript.0	14:15:29.479	info	
            
            Debug mode disabled
            
            javascript.0	14:15:30.108	info	
            
            hidden Cards disabled
            
            javascript.0	14:15:32.279	info	
            
            Start MQTT-Port-Check -------------------------------------
            
            javascript.0	14:15:32.279	info	
            
            -- admin.0                   - 8081
            
            javascript.0	14:15:32.279	info	
            
            -- influxdb.0                - 8086
            
            javascript.0	14:15:32.279	info	
            
            -- mqtt.0                    - 1886
            
            javascript.0	14:15:32.279	info	
            
            -- mqtt.1                    - 1883
            
            javascript.0	14:15:32.279	info	
            
            -- proxmox.0                 - 8006
            
            javascript.0	14:15:32.279	info	
            
            -- shelly.0                  - 1882
            
            javascript.0	14:15:32.279	info	
            
            -- simple-api.0              - 8087
            
            javascript.0	14:15:32.279	info	
            
            -- sonoff.0                  - 1884
            
            javascript.0	14:15:32.279	info	
            
            -- telegram.0                - 8443
            
            javascript.0	14:15:32.279	info	
            
            -- unifi-network.0           - 1144
            
            javascript.0	14:15:32.279	info	
            
            -- web.0                     - 8082
            
            javascript.0	14:15:32.279	info	
            
            - MQTT-Port-Check OK: Instance of Adapter: mqtt.0 is running on Port:1886
            
            javascript.0	14:15:32.279	info	
            
            End MQTT-Port-Check ---------------------------------------
            
            ArmilarA Offline
            ArmilarA Offline
            Armilar
            Most Active Forum Testing
            schrieb am zuletzt editiert von Armilar
            #8104

            @australien sagte:

            Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.

            Das Skript prüft mit dem Start korrekt und sendet die auch, dass es keine Portüberschneidungen gibt (unterer Log-Auszug)

            Da der Fehler aber mit Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet. ausgegeben wird, gehe ich mal von einer fehlerhaften Seiten-Konfiguration aus, da diese Meldung im Seitenaufbau der function GeneratePage eigentlich ein abgefangener Error: Cannot read properties of undefined (reading 'type') ist und als nur Warnung ausgegeben wird.

            Die Fehlermeldung Cannot read properties of undefined (reading 'type') ist ein JavaScript-Fehler. Er bedeutet, dass der Code versucht, auf die Eigenschaft .type eines Objekts zuzugreifen, dieses Objekt zu diesem Zeitpunkt aber überhaupt nicht existiert (es ist undefined).

            Also kein Zeitproblem, sondern eine fehlerhafte oder fehlende Seitendefinition (oder fehlender Datenpunkt) führt zu deinem Problem.

            Kannst du die Seite eingrenzen und sehen, wann der Fehler passiert? Dann wäre das der Anhaltspunkt zur Suche in der Seiten-Konfiguration.

            Den Screensaver würde ich aktuell ausschließen, da der andere Funktionen durchläuft...

            Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

            1 Antwort Letzte Antwort
            0
            • SmartStuffCoyoteS Offline
              SmartStuffCoyoteS Offline
              SmartStuffCoyote
              schrieb am zuletzt editiert von SmartStuffCoyote
              #8105

              Ich brauch nochmal eure Hilfe. Ich versuche, die stundenaktuellen Strompreise per ChardCard anzuzeigen. Ich hab aber ein Problem mit der Skalierung. Die Preise hab ich im Original in Euro, ich hätte aber gerne Cent. Deswegen multipliziere ich sie mit Faktor 1000 (100 * 10 für den Panel-Skalierungsfaktor). Dann sieht das so aus:

              20260626_171130_resized.jpg

              Der Wert oben ist richtig und die Balken sind falsch.

              javascript.0	17:11:11.351	info	
              ChartPayload: entityUpd~Strompreis~button~bPrev~~65535~~~button~bNext~~65535~~~65504~Preis [Ct]~0:50:100~335^00h~317~303~301^03h~300~313~332^06h~341~317~294^09h~286~259~226^12h~204~221~262^15h~295~311~405^18h~596~636~635^21h~460~363
              
              let Strompreis: PageType = {
                  "type": "cardChart",
                  "heading": "Strompreis",
                  "subPage": false,
                  "parent": undefined,
                  'items': [{ 
                              id: 'alias.0.NSPanel.Strompreis',
                              yAxis: 'Preis [Ct]',
                              yAxisTicks: [0, 50, 100],
                              onColor: Yellow
                           }]
              };
              

              Skaliere ich nur mit 100 oder weniger, ist der Wert oben natürlich falsch und die Balken richtig:

              20260626_171558_resized.jpg

              javascript.0	17:17:19.055	info	
              ChartPayload: entityUpd~Strompreis~button~bPrev~~65535~~~button~bNext~~65535~~~65504~Preis [Ct]~0:500:1000~33^00h~32~30~30^03h~30~31~33^06h~34~32~29^09h~29~26~23^12h~20~22~26^15h~30~31~41^18h~60~64~63^21h~46~36
              

              Wie mache ich das mit den Ticks (sollte es da nicht ein Auto-Skalieren geben?) und der Skalierung richtig?

              Mit den yAxisTicks stehe ich auch auf Kriegsfuß. Lasse ich die leer wie beschrieben, erscheint "no data" im Display.

              1 Antwort Letzte Antwort
              0
              • SmartStuffCoyoteS Offline
                SmartStuffCoyoteS Offline
                SmartStuffCoyote
                schrieb am zuletzt editiert von SmartStuffCoyote
                #8106

                Nach etwas rumprobieren: CardChart verkraftet keine Werte > 211 und die Ticks müssen ebenfalls mit Faktor 10 skaliert angegeben werden. Gleichzeitig rundet es dummerweise nur auf eine Nachkommastelle, sodass ich bei Strompreisen weder Cent (27 Ct -> 270 -> Anzeigefehler) noch Euro (wird auf volle 10 Cent gerundet --> zu ungenau) angeben kann. Man könnte es ja skalieren, aber dann stimmen die Werte natürlich hinten und vorne nicht mehr.

                1 Antwort Letzte Antwort
                0
                • icebearI Online
                  icebearI Online
                  icebear
                  schrieb zuletzt editiert von
                  #8107

                  Ich hab heute den Javascript-Adapter von v9.3.1 auf v10.0.0 geupdatet, danach liefen die Scripte für die NSPanel nicht mehr.
                  Bin mit den NSPanel auf den aktuellen Versionen. Mit dem Javascript-Adapter kommen beim Start des Script die Fehlermeldungen:

                  Compiling TypeScript source
                  javascript.0	14:58:53.843	error	
                  TypeScript compilation failed:
                                  .then(async function (response) {
                                                        ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                  .catch(function (error) {
                                                   ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                  function addDimTime(strTime) {
                                      ^
                  ERROR: Parameter 'strTime' implicitly has an 'any' type.
                  
                  function isDimTimeInRange(strLower, strUpper) {
                                            ^
                  ERROR: Parameter 'strLower' implicitly has an 'any' type.
                  
                  function isDimTimeInRange(strLower, strUpper) {
                                                      ^
                  ERROR: Parameter 'strUpper' implicitly has an 'any' type.
                  
                          .concat(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'ScreensaverInfo.activeBrightness')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'Relay.1')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'Relay.2')
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                          .concat(NSPanel_Path + 'ActivePage.id0'),
                                  ^
                  ERROR: No overload matches this call.
                    Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                      Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                  
                                      .then(async function (response) {
                                                            ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                      .catch(function (error) {
                                                       ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              on({ id: config.mrIcon1ScreensaverEntity.ScreensaverEntity, change: 'ne' }, async function () {
                              ^
                  ERROR: No overload matches this call.
                    Overload 1 of 4, '(pattern: string | RegExp | string[], handler: StateChangeHandler<any, any>): any', gave the following error.
                      Object literal may only specify known properties, and 'id' does not exist in type 'RegExp | string[]'.
                    Overload 2 of 4, '(astroOrScheduleOrOptions: AstroSchedule | SubscribeTime | SubscribeOptions, handler: StateChangeHandler<any, any>): any', gave the following error.
                      Type 'string | null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                        Type 'null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                    Overload 3 of 4, '(id1: string, id2: string): void', gave the following error.
                      Argument of type '{ id: string | null; change: string; }' is not assignable to parameter of type 'string'.
                  
                              on({ id: config.mrIcon2ScreensaverEntity.ScreensaverEntity, change: 'ne' }, async function () {
                              ^
                  ERROR: No overload matches this call.
                    Overload 1 of 4, '(pattern: string | RegExp | string[], handler: StateChangeHandler<any, any>): any', gave the following error.
                      Object literal may only specify known properties, and 'id' does not exist in type 'RegExp | string[]'.
                    Overload 2 of 4, '(astroOrScheduleOrOptions: AstroSchedule | SubscribeTime | SubscribeOptions, handler: StateChangeHandler<any, any>): any', gave the following error.
                      Type 'string | null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                        Type 'null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                    Overload 3 of 4, '(id1: string, id2: string): void', gave the following error.
                      Argument of type '{ id: string | null; change: string; }' is not assignable to parameter of type 'string'.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                          .then(async function (response) {
                                                ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                          .catch(function (error) {
                                           ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              .then(async function (response) {
                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                              .catch(function (error) {
                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                              .then(async function (response) {
                                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                              .catch(function (error) {
                                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                      .then(async function (response) {
                                                            ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                      .catch(function (error) {
                                                       ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                      .then(async function (response) {
                                                            ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                      .catch(function (error) {
                                                       ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                              tempId = activePage!.items[tempPageItem[0]].id;
                                                                         ^
                  ERROR: Element implicitly has an 'any' type because index expression is not of type 'number'.
                  
                          let buttonConfig: NSPanel.ConfigButtonFunction = config[method];
                                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'EventMethod' can't be used to index type 'Config'.
                    Property 'startup' does not exist on type 'Config'.
                  
                  function GeneratePageElements(page: PageType): string {
                                                                 ^
                  ERROR: Function lacks ending return statement and return type does not include 'undefined'.
                  
                              let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                     ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                              let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                             ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                              let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                                                          ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                              let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                                                                             ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                              let modeStatus = obj.common['states'][getState(page.thermoItems[3].id).val] ?? '';
                                               ^
                  ERROR: 'obj.common' is possibly 'undefined'.
                  
                              let modeStatus = obj.common['states'][getState(page.thermoItems[3].id).val] ?? '';
                                               ^
                  ERROR: Element implicitly has an 'any' type because expression of type '"states"' can't be used to index type 'InstanceCommon | AdapterCommon | (InstanceCommon & Record<string, any>) | (AdapterCommon & Record<string, any>) | ... 24 more ... | SystemConfigCommon'.
                    Property 'states' does not exist on type 'InstanceCommon | AdapterCommon | (InstanceCommon & Record<string, any>) | (AdapterCommon & Record<string, any>) | ... 24 more ... | SystemConfigCommon'.
                  
                                  page.items[0].speakerList[0] = v1Adapter[0] + '.' + v1Adapter[1];
                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                              .then(async function (response) {
                                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                              .catch(function (error) {
                                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                          .then(async function (response) {
                                                                ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                          .catch(function (error) {
                                                           ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                              heading = page.heading !== undefined ? page.heading : typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                              ^
                  ERROR: Type 'string | undefined' is not assignable to type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                  const color = obj[obji].iconColor !== '' ? obj[obji].iconColor : 0;
                                                ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                                  const color = obj[obji].iconColor !== '' ? obj[obji].iconColor : 0;
                                                                             ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                                  array_icon[obji] = obj[obji].icon;
                                                     ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                                  array_powerspeed[obji] = obj[obji].speed;
                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                                  array_powerstate[obji] = obj[obji].value + ' ' + obj[obji].unit;
                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                                  array_powerstate[obji] = obj[obji].value + ' ' + obj[obji].unit;
                                                                                   ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                    No index signature with a parameter of type 'number' was found on type '{}'.
                  
                              array_icon[0] = obj[0].icon;
                                              ^
                  ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                    Property '0' does not exist on type '{}'.
                  
                              array_powerstate[0] = obj[0].value + ' ' + obj[0].unit;
                                                    ^
                  ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                    Property '0' does not exist on type '{}'.
                  
                              array_powerstate[0] = obj[0].value + ' ' + obj[0].unit;
                                                                         ^
                  ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                    Property '0' does not exist on type '{}'.
                  
                              array_icon_color[0] = arrayColorScale[obj[0].iconColor];
                                                                    ^
                  ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                    Property '0' does not exist on type '{}'.
                  
                                          log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info');
                                                                                                                      ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                      const role = o.common.role as NSPanel.roles;
                                                   ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                          log(o.common.role);
                                              ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                      switch (o.common.role as NSPanel.roles) {
                                              ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                                                  .then(async function (response) {
                                                                                        ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                                                  .catch(function (error) {
                                                                                   ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                  if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                      ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                      ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      toggleState(pageItemShutterButton1.shutterIcons[0].id);
                                                  ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      toggleState(pageItemShutterButton1.shutterIcons[0].id);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                           ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                           ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                                                                                             ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                                                                                             ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      setIfExists(pageItemShutterButton1.shutterIcons[0].id, true);
                                                  ^
                  ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      setIfExists(pageItemShutterButton1.shutterIcons[0].id, true);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                      ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                      ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      toggleState(pageItemShutterButton2.shutterIcons[1].id);
                                                  ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      toggleState(pageItemShutterButton2.shutterIcons[1].id);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                           ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                           ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                                                                                             ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                                                                                             ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      setIfExists(pageItemShutterButton2.shutterIcons[1].id, true);
                                                  ^
                  ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      setIfExists(pageItemShutterButton2.shutterIcons[1].id, true);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                      ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                      ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                                                                                        ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      toggleState(pageItemShutterButton3.shutterIcons[2].id);
                                                  ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      toggleState(pageItemShutterButton3.shutterIcons[2].id);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                           ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                           ^
                  ERROR: Object is possibly 'undefined'.
                  
                                  else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                                                                                             ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                  else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                                                                                             ^
                  ERROR: Object is possibly 'undefined'.
                  
                                      setIfExists(pageItemShutterButton3.shutterIcons[2].id, true);
                                                  ^
                  ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                  
                                      setIfExists(pageItemShutterButton3.shutterIcons[2].id, true);
                                                  ^
                  ERROR: Object is possibly 'undefined'.
                  
                                          const role = o.common.role as NSPanel.roles;
                                                       ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                  switch (o.common.role as NSPanel.roles) {
                                          ^
                  ERROR: 'o.common' is possibly 'undefined'.
                  
                                              .then(async function (response) {
                                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                              .catch(function (error) {
                                                               ^
                  ERROR: Parameter 'error' implicitly has an 'any' type.
                  
                                              .then(async function (response) {
                                                                    ^
                  ERROR: Parameter 'response' implicitly has an 'any' type.
                  
                                  switch (nobj.common.role as NSPanel.roles) {
                                          ^
                  ERROR: 'nobj.common' is possibly 'undefined'.
                  
                                          let tSlider1: string = pageItem.equalizerSlider[0].Slider1.heading ?? "Bass";
                                                                 ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS1M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider1.icon1 ?? "minus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS1P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider1.icon2 ?? "plus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider1MinVal: number = pageItem.equalizerSlider[0].Slider1.minValue ?? 0;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider1MaxVal: number = pageItem.equalizerSlider[0].Slider1.maxValue ?? 12;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider1ZeroVal: number = pageItem.equalizerSlider[0].Slider1.zeroValue ?? 6;
                                                                        ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider1Step: number = pageItem.equalizerSlider[0].Slider1.stepValue ?? 1;
                                                                     ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tSlider2: string = pageItem.equalizerSlider[0].Slider2.heading ?? "MidRange";
                                                                 ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS2M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider2.icon1 ?? "minus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS2P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider2.icon2 ?? "plus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider2MinVal: number = pageItem.equalizerSlider[0].Slider2.minValue ?? 0;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider2MaxVal: number = pageItem.equalizerSlider[0].Slider2.maxValue ?? 12;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider2ZeroVal: number = pageItem.equalizerSlider[0].Slider2.zeroValue ?? 6;
                                                                        ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider2Step: number = pageItem.equalizerSlider[0].Slider2.stepValue ?? 1;
                                                                     ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tSlider3: string = pageItem.equalizerSlider[0].Slider3.heading ?? "Treble";
                                                                 ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS3M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider3.icon1 ?? "minus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let tIconS3P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider3.icon2 ?? "plus-box");
                                                                               ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider3MinVal: number = pageItem.equalizerSlider[0].Slider3.minValue ?? 0;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider3MaxVal: number = pageItem.equalizerSlider[0].Slider3.maxValue ?? 12;
                                                                       ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider3ZeroVal: number = pageItem.equalizerSlider[0].Slider3.zeroValue ?? 6;
                                                                        ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                          let hSlider3Step: number = pageItem.equalizerSlider[0].Slider3.stepValue ?? 1;
                                                                     ^
                  ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                  
                                              bEntity1Color = rgb_dec565(pageItem.shutterIcons[0].iconOnColor) ?? bEntity1Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              bEntity1Icon = Icons.GetIcon(pageItem.shutterIcons[0].icon2) ?? bEntity1Icon;
                                                                           ^
                  ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                              bEntity1Color = rgb_dec565(pageItem.shutterIcons[0].iconOffColor) ?? bEntity1Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              bEntity2Color = rgb_dec565(pageItem.shutterIcons[1].iconOnColor) ?? bEntity2Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              bEntity2Icon = Icons.GetIcon(pageItem.shutterIcons[1].icon2) ?? bEntity2Icon;
                                                                           ^
                  ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                              bEntity2Color = rgb_dec565(pageItem.shutterIcons[1].iconOffColor) ?? bEntity2Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              bEntity3Color = rgb_dec565(pageItem.shutterIcons[2].iconOnColor) ?? bEntity3Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              bEntity3Icon = Icons.GetIcon(pageItem.shutterIcons[2].icon2) ?? bEntity3Icon;
                                                                           ^
                  ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                              bEntity3Color = rgb_dec565(pageItem.shutterIcons[2].iconOffColor) ?? bEntity3Color;
                                                                         ^
                  ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                    Type 'undefined' is not assignable to type 'RGB'.
                  
                                              icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOn);
                                                                   ^
                  ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                                  ? GetOpenWeatherMapIconColor(String(getState('openweathermap.' + weatherAdapterInstanceNumber + '.forecast.day' + String(i - 1) + '.icon').val).split('/').pop().split('.').shift())
                                                                               ^
                  ERROR: Object is possibly 'undefined'.
                  
                                                  ? GetOpenWeatherMapIconColor(String(getState('openweathermap.' + weatherAdapterInstanceNumber + '.forecast.day' + String(i - 1) + '.icon').val).split('/').pop().split('.').shift())
                                                                               ^
                  ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                              Icons.GetIcon(config.bottomScreensaverEntity[4].ScreensaverEntityIconOn) +
                                                            ^
                  ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                          icon = Icons.GetIcon(entity.ScreensaverEntityIconOn);
                                                               ^
                  ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                                          icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOn);
                                                               ^
                  ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                              if (iconData[a].ScreensaverEntityValue !== null) {
                                  ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  switch (typeof iconData[a].ScreensaverEntityValue) {
                                                 ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          if (iconData[a].ScreensaverEntityValue === '' || isNaN(iconData[a].ScreensaverEntityValue))
                                              ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          if (iconData[a].ScreensaverEntityValue === '' || isNaN(iconData[a].ScreensaverEntityValue))
                                                                                                 ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                          ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                                                                      ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                                                                                                                  ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          iconData[a].ScreensaverEntityValue = null;
                                          ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                              let hwBtn1Col: RGB = iconData[a].ScreensaverEntityOffColor;
                                                   ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                              if (iconData[a].ScreensaverEntity != null || iconData[a].ScreensaverEntityValue != null) {
                                  ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                              if (iconData[a].ScreensaverEntity != null || iconData[a].ScreensaverEntityValue != null) {
                                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  if (iconData[a].ScreensaverEntity != null) {
                                      ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      if (typeof iconData[a].ScreensaverEntity == 'string') {
                                                 ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          switch (String(iconData[a].ScreensaverEntity).toUpperCase()) {
                                                         ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                                  hwBtn1Col = iconData[a].ScreensaverEntityOnColor;
                                                              ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                              log('Value: ' + iconData[a].ScreensaverEntity + ' Color: ' + JSON.stringify(hwBtn1Col), 'info');
                                                              ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          if (!!iconData[a].ScreensaverEntity) {
                                                ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                              hwBtn1Col = iconData[a].ScreensaverEntityOnColor;
                                                          ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  if (iconData[a].ScreensaverEntityIconSelect && iconData[a].ScreensaverEntity != null) {
                                      ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  if (iconData[a].ScreensaverEntityIconSelect && iconData[a].ScreensaverEntity != null) {
                                                                                 ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      const icon = iconData[a].ScreensaverEntityIconSelect[iconData[a].ScreensaverEntity];
                                                   ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      const icon = iconData[a].ScreensaverEntityIconSelect[iconData[a].ScreensaverEntity];
                                                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  else if (iconData[a].ScreensaverEntity) {
                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      payloadString += iconData[a].ScreensaverEntityIconOn;
                                                       ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      if (iconData[a].ScreensaverEntityIconOff) {
                                          ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          payloadString += iconData[a].ScreensaverEntityIconOff;
                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                          payloadString += iconData[a].ScreensaverEntityIconOn;
                                                           ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                  if (iconData[a].ScreensaverEntityValue != null) {
                                      ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      payloadString += iconData[a].ScreensaverEntityValue;
                                                       ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      payloadString += iconData[a].ScreensaverEntityValueUnit == null ? '' : iconData[a].ScreensaverEntityValueUnit;
                                                       ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                                      payloadString += iconData[a].ScreensaverEntityValueUnit == null ? '' : iconData[a].ScreensaverEntityValueUnit;
                                                                                                             ^
                  ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                  
                  function rad2deg(rad): number {
                                   ^
                  ERROR: Parameter 'rad' implicitly has an 'any' type.
                  
                  function ColorToHex(color): string {
                                      ^
                  ERROR: Parameter 'color' implicitly has an 'any' type.
                  
                              Icons.GetIcon(iconKey) ||
                                            ^
                  ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                    Type 'undefined' is not assignable to type 'string'.
                  
                  } | undefined | number, ref: number, repeatTime: number, callback, init: boolean = false) {
                                                                           ^
                  ERROR: Parameter 'callback' implicitly has an 'any' type.
                  

                  Bin dann wieder zurück auf die v9.3.1 vom Javascript-Adapter, da läuft es dann wieder.

                  T 1 Antwort Letzte Antwort
                  0
                  • icebearI icebear

                    Ich hab heute den Javascript-Adapter von v9.3.1 auf v10.0.0 geupdatet, danach liefen die Scripte für die NSPanel nicht mehr.
                    Bin mit den NSPanel auf den aktuellen Versionen. Mit dem Javascript-Adapter kommen beim Start des Script die Fehlermeldungen:

                    Compiling TypeScript source
                    javascript.0	14:58:53.843	error	
                    TypeScript compilation failed:
                                    .then(async function (response) {
                                                          ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                    .catch(function (error) {
                                                     ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                    function addDimTime(strTime) {
                                        ^
                    ERROR: Parameter 'strTime' implicitly has an 'any' type.
                    
                    function isDimTimeInRange(strLower, strUpper) {
                                              ^
                    ERROR: Parameter 'strLower' implicitly has an 'any' type.
                    
                    function isDimTimeInRange(strLower, strUpper) {
                                                        ^
                    ERROR: Parameter 'strUpper' implicitly has an 'any' type.
                    
                            .concat(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'ScreensaverInfo.activeBrightness')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'Relay.1')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'Relay.2')
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                            .concat(NSPanel_Path + 'ActivePage.id0'),
                                    ^
                    ERROR: No overload matches this call.
                      Overload 1 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                      Overload 2 of 2, '(...items: ConcatArray<never>[]): never[]', gave the following error.
                        Argument of type 'string' is not assignable to parameter of type 'ConcatArray<never>'.
                    
                                        .then(async function (response) {
                                                              ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                        .catch(function (error) {
                                                         ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                on({ id: config.mrIcon1ScreensaverEntity.ScreensaverEntity, change: 'ne' }, async function () {
                                ^
                    ERROR: No overload matches this call.
                      Overload 1 of 4, '(pattern: string | RegExp | string[], handler: StateChangeHandler<any, any>): any', gave the following error.
                        Object literal may only specify known properties, and 'id' does not exist in type 'RegExp | string[]'.
                      Overload 2 of 4, '(astroOrScheduleOrOptions: AstroSchedule | SubscribeTime | SubscribeOptions, handler: StateChangeHandler<any, any>): any', gave the following error.
                        Type 'string | null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                          Type 'null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                      Overload 3 of 4, '(id1: string, id2: string): void', gave the following error.
                        Argument of type '{ id: string | null; change: string; }' is not assignable to parameter of type 'string'.
                    
                                on({ id: config.mrIcon2ScreensaverEntity.ScreensaverEntity, change: 'ne' }, async function () {
                                ^
                    ERROR: No overload matches this call.
                      Overload 1 of 4, '(pattern: string | RegExp | string[], handler: StateChangeHandler<any, any>): any', gave the following error.
                        Object literal may only specify known properties, and 'id' does not exist in type 'RegExp | string[]'.
                      Overload 2 of 4, '(astroOrScheduleOrOptions: AstroSchedule | SubscribeTime | SubscribeOptions, handler: StateChangeHandler<any, any>): any', gave the following error.
                        Type 'string | null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                          Type 'null' is not assignable to type 'string | RegExp | string[] | SubscribeOptions[] | RegExp[] | undefined'.
                      Overload 3 of 4, '(id1: string, id2: string): void', gave the following error.
                        Argument of type '{ id: string | null; change: string; }' is not assignable to parameter of type 'string'.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                            .then(async function (response) {
                                                  ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                            .catch(function (error) {
                                             ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                .then(async function (response) {
                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                .catch(function (error) {
                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                                .then(async function (response) {
                                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                                .catch(function (error) {
                                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                        .then(async function (response) {
                                                              ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                        .catch(function (error) {
                                                         ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                        .then(async function (response) {
                                                              ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                        .catch(function (error) {
                                                         ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                                tempId = activePage!.items[tempPageItem[0]].id;
                                                                           ^
                    ERROR: Element implicitly has an 'any' type because index expression is not of type 'number'.
                    
                            let buttonConfig: NSPanel.ConfigButtonFunction = config[method];
                                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'EventMethod' can't be used to index type 'Config'.
                      Property 'startup' does not exist on type 'Config'.
                    
                    function GeneratePageElements(page: PageType): string {
                                                                   ^
                    ERROR: Function lacks ending return statement and return type does not include 'undefined'.
                    
                                let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                       ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                               ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                                                            ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                let name = page.heading !== undefined ? page.heading : o.common.name && typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                                                                                                                                               ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                let modeStatus = obj.common['states'][getState(page.thermoItems[3].id).val] ?? '';
                                                 ^
                    ERROR: 'obj.common' is possibly 'undefined'.
                    
                                let modeStatus = obj.common['states'][getState(page.thermoItems[3].id).val] ?? '';
                                                 ^
                    ERROR: Element implicitly has an 'any' type because expression of type '"states"' can't be used to index type 'InstanceCommon | AdapterCommon | (InstanceCommon & Record<string, any>) | (AdapterCommon & Record<string, any>) | ... 24 more ... | SystemConfigCommon'.
                      Property 'states' does not exist on type 'InstanceCommon | AdapterCommon | (InstanceCommon & Record<string, any>) | (AdapterCommon & Record<string, any>) | ... 24 more ... | SystemConfigCommon'.
                    
                                    page.items[0].speakerList[0] = v1Adapter[0] + '.' + v1Adapter[1];
                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                                .then(async function (response) {
                                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                                .catch(function (error) {
                                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                            .then(async function (response) {
                                                                  ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                            .catch(function (error) {
                                                             ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                heading = page.heading !== undefined ? page.heading : typeof o.common.name === 'object' ? o.common.name.de : o.common.name;
                                ^
                    ERROR: Type 'string | undefined' is not assignable to type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                    const color = obj[obji].iconColor !== '' ? obj[obji].iconColor : 0;
                                                  ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                    const color = obj[obji].iconColor !== '' ? obj[obji].iconColor : 0;
                                                                               ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                    array_icon[obji] = obj[obji].icon;
                                                       ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                    array_powerspeed[obji] = obj[obji].speed;
                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                    array_powerstate[obji] = obj[obji].value + ' ' + obj[obji].unit;
                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                    array_powerstate[obji] = obj[obji].value + ' ' + obj[obji].unit;
                                                                                     ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
                      No index signature with a parameter of type 'number' was found on type '{}'.
                    
                                array_icon[0] = obj[0].icon;
                                                ^
                    ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                      Property '0' does not exist on type '{}'.
                    
                                array_powerstate[0] = obj[0].value + ' ' + obj[0].unit;
                                                      ^
                    ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                      Property '0' does not exist on type '{}'.
                    
                                array_powerstate[0] = obj[0].value + ' ' + obj[0].unit;
                                                                           ^
                    ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                      Property '0' does not exist on type '{}'.
                    
                                array_icon_color[0] = arrayColorScale[obj[0].iconColor];
                                                                      ^
                    ERROR: Element implicitly has an 'any' type because expression of type '0' can't be used to index type '{}'.
                      Property '0' does not exist on type '{}'.
                    
                                            log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info');
                                                                                                                        ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                        const role = o.common.role as NSPanel.roles;
                                                     ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                            log(o.common.role);
                                                ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                        switch (o.common.role as NSPanel.roles) {
                                                ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                                                    .then(async function (response) {
                                                                                          ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                                                    .catch(function (error) {
                                                                                     ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                    if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                        ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                        ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        toggleState(pageItemShutterButton1.shutterIcons[0].id);
                                                    ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        toggleState(pageItemShutterButton1.shutterIcons[0].id);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                             ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                             ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                                                                                               ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton1.shutterIcons[0].buttonType != undefined && pageItemShutterButton1.shutterIcons[0].buttonType == 'press') {
                                                                                                               ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        setIfExists(pageItemShutterButton1.shutterIcons[0].id, true);
                                                    ^
                    ERROR: 'pageItemShutterButton1.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        setIfExists(pageItemShutterButton1.shutterIcons[0].id, true);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                        ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                        ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        toggleState(pageItemShutterButton2.shutterIcons[1].id);
                                                    ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        toggleState(pageItemShutterButton2.shutterIcons[1].id);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                             ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                             ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                                                                                               ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton2.shutterIcons[1].buttonType != undefined && pageItemShutterButton2.shutterIcons[1].buttonType == 'press') {
                                                                                                               ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        setIfExists(pageItemShutterButton2.shutterIcons[1].id, true);
                                                    ^
                    ERROR: 'pageItemShutterButton2.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        setIfExists(pageItemShutterButton2.shutterIcons[1].id, true);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                        ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                        ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'toggle') {
                                                                                                          ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        toggleState(pageItemShutterButton3.shutterIcons[2].id);
                                                    ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        toggleState(pageItemShutterButton3.shutterIcons[2].id);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                             ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                             ^
                    ERROR: Object is possibly 'undefined'.
                    
                                    else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                                                                                               ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                    else if (pageItemShutterButton3.shutterIcons[2].buttonType != undefined && pageItemShutterButton3.shutterIcons[2].buttonType == 'press') {
                                                                                                               ^
                    ERROR: Object is possibly 'undefined'.
                    
                                        setIfExists(pageItemShutterButton3.shutterIcons[2].id, true);
                                                    ^
                    ERROR: 'pageItemShutterButton3.shutterIcons' is possibly 'null' or 'undefined'.
                    
                                        setIfExists(pageItemShutterButton3.shutterIcons[2].id, true);
                                                    ^
                    ERROR: Object is possibly 'undefined'.
                    
                                            const role = o.common.role as NSPanel.roles;
                                                         ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                    switch (o.common.role as NSPanel.roles) {
                                            ^
                    ERROR: 'o.common' is possibly 'undefined'.
                    
                                                .then(async function (response) {
                                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                                .catch(function (error) {
                                                                 ^
                    ERROR: Parameter 'error' implicitly has an 'any' type.
                    
                                                .then(async function (response) {
                                                                      ^
                    ERROR: Parameter 'response' implicitly has an 'any' type.
                    
                                    switch (nobj.common.role as NSPanel.roles) {
                                            ^
                    ERROR: 'nobj.common' is possibly 'undefined'.
                    
                                            let tSlider1: string = pageItem.equalizerSlider[0].Slider1.heading ?? "Bass";
                                                                   ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS1M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider1.icon1 ?? "minus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS1P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider1.icon2 ?? "plus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider1MinVal: number = pageItem.equalizerSlider[0].Slider1.minValue ?? 0;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider1MaxVal: number = pageItem.equalizerSlider[0].Slider1.maxValue ?? 12;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider1ZeroVal: number = pageItem.equalizerSlider[0].Slider1.zeroValue ?? 6;
                                                                          ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider1Step: number = pageItem.equalizerSlider[0].Slider1.stepValue ?? 1;
                                                                       ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tSlider2: string = pageItem.equalizerSlider[0].Slider2.heading ?? "MidRange";
                                                                   ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS2M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider2.icon1 ?? "minus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS2P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider2.icon2 ?? "plus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider2MinVal: number = pageItem.equalizerSlider[0].Slider2.minValue ?? 0;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider2MaxVal: number = pageItem.equalizerSlider[0].Slider2.maxValue ?? 12;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider2ZeroVal: number = pageItem.equalizerSlider[0].Slider2.zeroValue ?? 6;
                                                                          ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider2Step: number = pageItem.equalizerSlider[0].Slider2.stepValue ?? 1;
                                                                       ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tSlider3: string = pageItem.equalizerSlider[0].Slider3.heading ?? "Treble";
                                                                   ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS3M: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider3.icon1 ?? "minus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let tIconS3P: string = Icons.GetIcon(pageItem.equalizerSlider[0].Slider3.icon2 ?? "plus-box");
                                                                                 ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider3MinVal: number = pageItem.equalizerSlider[0].Slider3.minValue ?? 0;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider3MaxVal: number = pageItem.equalizerSlider[0].Slider3.maxValue ?? 12;
                                                                         ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider3ZeroVal: number = pageItem.equalizerSlider[0].Slider3.zeroValue ?? 6;
                                                                          ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                            let hSlider3Step: number = pageItem.equalizerSlider[0].Slider3.stepValue ?? 1;
                                                                       ^
                    ERROR: 'pageItem.equalizerSlider' is possibly 'undefined'.
                    
                                                bEntity1Color = rgb_dec565(pageItem.shutterIcons[0].iconOnColor) ?? bEntity1Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                bEntity1Icon = Icons.GetIcon(pageItem.shutterIcons[0].icon2) ?? bEntity1Icon;
                                                                             ^
                    ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                                bEntity1Color = rgb_dec565(pageItem.shutterIcons[0].iconOffColor) ?? bEntity1Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                bEntity2Color = rgb_dec565(pageItem.shutterIcons[1].iconOnColor) ?? bEntity2Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                bEntity2Icon = Icons.GetIcon(pageItem.shutterIcons[1].icon2) ?? bEntity2Icon;
                                                                             ^
                    ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                                bEntity2Color = rgb_dec565(pageItem.shutterIcons[1].iconOffColor) ?? bEntity2Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                bEntity3Color = rgb_dec565(pageItem.shutterIcons[2].iconOnColor) ?? bEntity3Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                bEntity3Icon = Icons.GetIcon(pageItem.shutterIcons[2].icon2) ?? bEntity3Icon;
                                                                             ^
                    ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                                bEntity3Color = rgb_dec565(pageItem.shutterIcons[2].iconOffColor) ?? bEntity3Color;
                                                                           ^
                    ERROR: Argument of type 'RGB | undefined' is not assignable to parameter of type 'RGB'.
                      Type 'undefined' is not assignable to type 'RGB'.
                    
                                                icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOn);
                                                                     ^
                    ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                                    ? GetOpenWeatherMapIconColor(String(getState('openweathermap.' + weatherAdapterInstanceNumber + '.forecast.day' + String(i - 1) + '.icon').val).split('/').pop().split('.').shift())
                                                                                 ^
                    ERROR: Object is possibly 'undefined'.
                    
                                                    ? GetOpenWeatherMapIconColor(String(getState('openweathermap.' + weatherAdapterInstanceNumber + '.forecast.day' + String(i - 1) + '.icon').val).split('/').pop().split('.').shift())
                                                                                 ^
                    ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                                Icons.GetIcon(config.bottomScreensaverEntity[4].ScreensaverEntityIconOn) +
                                                              ^
                    ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                            icon = Icons.GetIcon(entity.ScreensaverEntityIconOn);
                                                                 ^
                    ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                            icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOn);
                                                                 ^
                    ERROR: Argument of type 'string | null | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                                if (iconData[a].ScreensaverEntityValue !== null) {
                                    ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    switch (typeof iconData[a].ScreensaverEntityValue) {
                                                   ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            if (iconData[a].ScreensaverEntityValue === '' || isNaN(iconData[a].ScreensaverEntityValue))
                                                ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            if (iconData[a].ScreensaverEntityValue === '' || isNaN(iconData[a].ScreensaverEntityValue))
                                                                                                   ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                            ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                                                                        ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            iconData[a].ScreensaverEntityValue = Number(iconData[a].ScreensaverEntityValue).toFixed(iconData[a].ScreensaverEntityValueDecimalPlace);
                                                                                                                                    ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            iconData[a].ScreensaverEntityValue = null;
                                            ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                let hwBtn1Col: RGB = iconData[a].ScreensaverEntityOffColor;
                                                     ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                if (iconData[a].ScreensaverEntity != null || iconData[a].ScreensaverEntityValue != null) {
                                    ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                if (iconData[a].ScreensaverEntity != null || iconData[a].ScreensaverEntityValue != null) {
                                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    if (iconData[a].ScreensaverEntity != null) {
                                        ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        if (typeof iconData[a].ScreensaverEntity == 'string') {
                                                   ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            switch (String(iconData[a].ScreensaverEntity).toUpperCase()) {
                                                           ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                                    hwBtn1Col = iconData[a].ScreensaverEntityOnColor;
                                                                ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                                log('Value: ' + iconData[a].ScreensaverEntity + ' Color: ' + JSON.stringify(hwBtn1Col), 'info');
                                                                ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            if (!!iconData[a].ScreensaverEntity) {
                                                  ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                                hwBtn1Col = iconData[a].ScreensaverEntityOnColor;
                                                            ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    if (iconData[a].ScreensaverEntityIconSelect && iconData[a].ScreensaverEntity != null) {
                                        ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    if (iconData[a].ScreensaverEntityIconSelect && iconData[a].ScreensaverEntity != null) {
                                                                                   ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        const icon = iconData[a].ScreensaverEntityIconSelect[iconData[a].ScreensaverEntity];
                                                     ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        const icon = iconData[a].ScreensaverEntityIconSelect[iconData[a].ScreensaverEntity];
                                                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    else if (iconData[a].ScreensaverEntity) {
                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        payloadString += iconData[a].ScreensaverEntityIconOn;
                                                         ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        if (iconData[a].ScreensaverEntityIconOff) {
                                            ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            payloadString += iconData[a].ScreensaverEntityIconOff;
                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                            payloadString += iconData[a].ScreensaverEntityIconOn;
                                                             ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                    if (iconData[a].ScreensaverEntityValue != null) {
                                        ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        payloadString += iconData[a].ScreensaverEntityValue;
                                                         ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        payloadString += iconData[a].ScreensaverEntityValueUnit == null ? '' : iconData[a].ScreensaverEntityValueUnit;
                                                         ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                                        payloadString += iconData[a].ScreensaverEntityValueUnit == null ? '' : iconData[a].ScreensaverEntityValueUnit;
                                                                                                               ^
                    ERROR: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                      No index signature with a parameter of type 'string' was found on type 'Record<"mrIcon1" | "mrIcon2", ScreenSaverMRDataElement>'.
                    
                    function rad2deg(rad): number {
                                     ^
                    ERROR: Parameter 'rad' implicitly has an 'any' type.
                    
                    function ColorToHex(color): string {
                                        ^
                    ERROR: Parameter 'color' implicitly has an 'any' type.
                    
                                Icons.GetIcon(iconKey) ||
                                              ^
                    ERROR: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
                      Type 'undefined' is not assignable to type 'string'.
                    
                    } | undefined | number, ref: number, repeatTime: number, callback, init: boolean = false) {
                                                                             ^
                    ERROR: Parameter 'callback' implicitly has an 'any' type.
                    

                    Bin dann wieder zurück auf die v9.3.1 vom Javascript-Adapter, da läuft es dann wieder.

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb zuletzt editiert von
                    #8108

                    @icebear
                    Die 10 Version scheint Typscript noch weiter zu implementieren. Heißt die Typenprüfung wird immer schärfer. Das Script muss dahingehend angepasst werden.

                    Wir melden uns, wenn es eine angepasste Version gibt.

                    Das große Ding an der ganze Sache ist die Umstellung des Admin auf Version 8.x, das bedeutet neue Testumgebungen erstellen und zum Teil dann zweigleisig fahren.

                    Also bitte Geduld, ist ja auch noch Beta Stadium.

                    Gruß Tom

                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    Public Transport
                    https://github.com/tt-tom17/ioBroker.public-transport
                    https://github.com/tt-tom17/ioBroker.public-transport/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    icebearI T 2 Antworten Letzte Antwort
                    1
                    • T TT-Tom

                      @icebear
                      Die 10 Version scheint Typscript noch weiter zu implementieren. Heißt die Typenprüfung wird immer schärfer. Das Script muss dahingehend angepasst werden.

                      Wir melden uns, wenn es eine angepasste Version gibt.

                      Das große Ding an der ganze Sache ist die Umstellung des Admin auf Version 8.x, das bedeutet neue Testumgebungen erstellen und zum Teil dann zweigleisig fahren.

                      Also bitte Geduld, ist ja auch noch Beta Stadium.

                      icebearI Online
                      icebearI Online
                      icebear
                      schrieb zuletzt editiert von
                      #8109

                      @TT-Tom sagte:

                      Also bitte Geduld, ist ja auch noch Beta Stadium.

                      Ist ja kein Problem, wie du schon gesagt hast ist der JavaScript-Adapter ja noch ganz frisch.

                      Die Frage die ich mir dabei gestellt habe, ob das dann in solchen Fällen auch den NSPanel-Adapter betrifft und ob es nicht langsam Zeit wird auf den Adapter umzusteigen, wenn die Probleme damit nicht auftreten?

                      1 Antwort Letzte Antwort
                      0
                      • T TT-Tom

                        @icebear
                        Die 10 Version scheint Typscript noch weiter zu implementieren. Heißt die Typenprüfung wird immer schärfer. Das Script muss dahingehend angepasst werden.

                        Wir melden uns, wenn es eine angepasste Version gibt.

                        Das große Ding an der ganze Sache ist die Umstellung des Admin auf Version 8.x, das bedeutet neue Testumgebungen erstellen und zum Teil dann zweigleisig fahren.

                        Also bitte Geduld, ist ja auch noch Beta Stadium.

                        T Nicht stören
                        T Nicht stören
                        ticaki
                        schrieb zuletzt editiert von
                        #8110

                        @TT-Tom sagte:

                        @icebear
                        Die 10 Version scheint Typscript noch weiter zu implementieren. Heißt die Typenprüfung wird immer schärfer. Das Script muss dahingehend angepasst werden.

                        im code sind gefühlt ne millionen impilzierte any - das wir spassig :D

                        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                        Spenden

                        ArmilarA 1 Antwort Letzte Antwort
                        1
                        • GarganoG Offline
                          GarganoG Offline
                          Gargano
                          schrieb zuletzt editiert von
                          #8111

                          Ich würde ja gerne auf den Adapter wechseln, der hat aber noch ein Problem mit dem neuen Admin

                          1 Antwort Letzte Antwort
                          0
                          • T ticaki

                            @TT-Tom sagte:

                            @icebear
                            Die 10 Version scheint Typscript noch weiter zu implementieren. Heißt die Typenprüfung wird immer schärfer. Das Script muss dahingehend angepasst werden.

                            im code sind gefühlt ne millionen impilzierte any - das wir spassig :D

                            ArmilarA Offline
                            ArmilarA Offline
                            Armilar
                            Most Active Forum Testing
                            schrieb zuletzt editiert von Armilar
                            #8112

                            @ticaki
                            @icebear

                            Bitte die 5.1.1.10 von Github installieren. Das Fix für den JS-Adapter v10.0.0 ist schon seit heute Online...

                            https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts

                            399a9801-11aa-4aef-92e5-1435c155a9d1-image.jpeg

                            Wie immer den unteren Teil ab:

                            // _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________
                            // _________________________________ EN:  No more configuration from here _____________________________________
                            

                            ersetzten. 😊

                            Das TFT muss nicht aktualisiert werden.

                            Dieses Skript ist auf die neuen Restriktionen des JS-Adapters (TypeScript 6) bereits vollständig abgestimmt. Und ja, es ist sehr viel restriktiver als die Vorversionen...

                            Kurzer Tipp:
                            Wenn ihr weitere TypeScript habt, dann solltet ihr in die oberste Zeile ein

                            //@ts-nocheck
                            

                            schreiben. Dann funktionieren erstmal alle Skripte wieder wie gewohnt und man kann eines nach dem anderen überarbeiten und migrieren. 😏

                            Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                            https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                            1 Antwort Letzte Antwort
                            0

                            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

                            373

                            Online

                            33.0k

                            Benutzer

                            83.5k

                            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