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

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

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

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

SONOFF NSPanel mit Lovelace UI (TypeScript Version)

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
8.1k Beiträge 280 Kommentatoren 7.9m Aufrufe 261 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

    Ja, genau den. Die Card lässt mich den ja sogar wählen, aber ich sehe den dann nirgendwo. Ich würd aber gern wissen, ob ich Bad oder Esszimmer steuere. :)

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

    @SmartStuffCoyote

    Noch mal den unteren Teil aus dem DEV Script ersetzen:

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

    Danach sollte der Player und der Artist angezeigt werden...

    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 Online
      SmartStuffCoyoteS Online
      SmartStuffCoyote
      schrieb am zuletzt editiert von SmartStuffCoyote
      #8097
      javascript.0	01:03:40.994	warn	
      error at function GenerateMediaPage: Cannot read properties of null (reading 'length')
      javascript.0	01:03:41.959	warn	
          at GenerateMediaPage (script.js.common.NSPanel:9087:26)
      javascript.0	01:03:41.959	warn	
          at GeneratePage (script.js.common.NSPanel:6065:29)
      javascript.0	01:03:41.959	warn	
          at Object.<anonymous> (script.js.common.NSPanel:8421:21)
      javascript.0	01:03:41.959	warn	
          at step (script.js.common.NSPanel:33:23)
      javascript.0	01:03:41.959	warn	
          at Object.next (script.js.common.NSPanel:14:53)
      javascript.0	01:03:41.959	warn	
          at script.js.common.NSPanel:8:71
      javascript.0	01:03:41.959	warn	
          at __awaiter (script.js.common.NSPanel:4:12)
      

      Die Seite wird jetzt nicht mehr angezeigt.

      Ich kann aber grad nicht sagen, wo genau das auftaucht - im squeezeboxrpc-Block sind sowohl author.length als auch title.length immer vorhanden.

      Nachtrag: mit showOnlyPlayerHeadline: false tritt es nicht auf. Ich kriegs auf die Schnelle im Code aber nicht eingegrenzt. @armilar

      Nachtrag 2:

      	
      {
        id: 'alias.0.NSPanel.1.Media.PlayerSqueezeboxRPC',
        adapterPlayerInstance: 'squeezeboxrpc.0.',
        speakerList: [ 'Heartbeat_4', 'Squeezebox' ],
        mediaDevice: 'Heartbeat_4',
        playList: [],
        colorMediaIcon: { red: 0, green: 255, blue: 0 },
        colorMediaArtist: { red: 255, green: 255, blue: 0 },
        colorMediaTitle: { red: 255, green: 255, blue: 0 },
        alwaysOnDisplay: true,
        autoCreateALias: true,
        showOnlyPlayerHeadline: true
      }
      

      Ich habe

      name = getState(page.items[0].adapterPlayerInstance + "Players.SqueezePlay.Playername").val;
      

      mal so geändert, dann klappts:

      name = getState(page.items[0].adapterPlayerInstance + "Players." + page.items[0].mediaDevice + ".Playername").val;
      
      1 Antwort Letzte Antwort
      0
      • T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von ticaki
        #8098

        Ich bin da nicht drin daher:

        ergibt das bei dir eine gültige id? adapterPlayerInstance + "Players.SqueezePlay.Playername"

        aber nicht wichtig - hier if (name.length == 0) muß ein if (typeOf name !== 'string' || name.length == 0) rein.
        https://github.com/joBr99/nspanel-lovelace-ui/blob/b8649caa2714e0594d14c334550e2ba8e33f8cfb/ioBroker/DEV/NSPanelTs.ts#L7884

        EDIT: du benutzt doch squeezeboxrpc

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        1 Antwort Letzte Antwort
        0
        • SmartStuffCoyoteS Online
          SmartStuffCoyoteS Online
          SmartStuffCoyote
          schrieb am zuletzt editiert von SmartStuffCoyote
          #8099

          @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 T 2 Antworten 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.

            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 Online
                SmartStuffCoyoteS Online
                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 Online
                  A Online
                  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 Online
                      SmartStuffCoyoteS Online
                      SmartStuffCoyote
                      schrieb 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

                      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

                      319

                      Online

                      33.0k

                      Benutzer

                      83.3k

                      Themen

                      1.3m

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

                      • Du hast noch kein Konto? Registrieren

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