Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

SONOFF NSPanel mit Lovelace UI

Scheduled Pinned Locked Moved Hardware
lovelace uinspanelsonoff
7.7k Posts 271 Posters 6.7m Views 253 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ArmilarA Armilar

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar Das ging ja rasend schnell - Danke!
    Das steht drin:
    {
    "Info2": {
    "WebServerMode": "Admin",
    "Hostname": "uSi-NSPanel1",
    "IPAddress": "192.168.2.114"
    }
    }

    Tausche die mal kurz aus durch

    function get_current_tasmota_ip_address() {
        try {
            const infoObjId = config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO2';
            const infoObj = JSON.parse(getState(infoObjId).val);
    
            console.log(`get_current_tasmota_ip_address: ${infoObj.Info2.IPAddress}`);
    
            return infoObj.Info2.IPAddress;
        } catch (err) {
            console.warn('function get_current_tasmota_ip_address: ' + err.message);
        }
    }
    

    und starte das Script erneut

    Super, keine Fehler nur noch Warnungen. In '0_userdata.0.NSPanel.1.NSPanel_ipAddress' steht aber keine IP-Adresse sondern '{"ack":true}'! Es sind viel mehr einträge in '0_userdata.0.NSPanel.1' vorhanden aber Panel wartet immer noch.
    e5ffd693-0dfd-466e-ad53-b3cdc9589432-grafik.png

    Zeige mal deine Einstellungen unter:

    export const config: Config = {
        panelRecvTopic: 'mqtt.0.SmartHome.NSPanel_1.tele.RESULT',       // anpassen
        panelSendTopic: 'mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend',   // anpassen
    

    und am besten noch einen Screenshot vom mqtt.0. , in dem man den gesamten Pfad sehen kann

    mach ich
    5e7461d1-99da-4bc6-95dc-5e7177da39ea-grafik.png

    3d7f1e54-0f80-4522-b6a2-f861edd6a486-grafik.png

    Ändere bitte mal deine Pfade im TS-Script auf "Smarthome" statt "SmartHome". Dann sollte es gehen... Der kann sonst wirklich nicht den Inhalt sehen. Groß- und Kleinschreibung ist sehr wichtig...

    Bei beiden Einträgen in der export const config: Config = {

    U Offline
    U Offline
    uSi
    wrote on last edited by
    #197

    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

    @usi sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar Das ging ja rasend schnell - Danke!
    Das steht drin:
    {
    "Info2": {
    "WebServerMode": "Admin",
    "Hostname": "uSi-NSPanel1",
    "IPAddress": "192.168.2.114"
    }
    }

    Tausche die mal kurz aus durch

    function get_current_tasmota_ip_address() {
        try {
            const infoObjId = config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO2';
            const infoObj = JSON.parse(getState(infoObjId).val);
    
            console.log(`get_current_tasmota_ip_address: ${infoObj.Info2.IPAddress}`);
    
            return infoObj.Info2.IPAddress;
        } catch (err) {
            console.warn('function get_current_tasmota_ip_address: ' + err.message);
        }
    }
    

    und starte das Script erneut

    Super, keine Fehler nur noch Warnungen. In '0_userdata.0.NSPanel.1.NSPanel_ipAddress' steht aber keine IP-Adresse sondern '{"ack":true}'! Es sind viel mehr einträge in '0_userdata.0.NSPanel.1' vorhanden aber Panel wartet immer noch.
    e5ffd693-0dfd-466e-ad53-b3cdc9589432-grafik.png

    Zeige mal deine Einstellungen unter:

    export const config: Config = {
        panelRecvTopic: 'mqtt.0.SmartHome.NSPanel_1.tele.RESULT',       // anpassen
        panelSendTopic: 'mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend',   // anpassen
    

    und am besten noch einen Screenshot vom mqtt.0. , in dem man den gesamten Pfad sehen kann

    mach ich
    5e7461d1-99da-4bc6-95dc-5e7177da39ea-grafik.png

    3d7f1e54-0f80-4522-b6a2-f861edd6a486-grafik.png

    Ändere bitte mal deine Pfade im TS-Script auf "Smarthome" statt "SmartHome". Dann sollte es gehen... Der kann sonst wirklich nicht den Inhalt sehen. Groß- und Kleinschreibung ist sehr wichtig...

    Bei beiden Einträgen in der export const config: Config = {

    Herzlichen Dank - Jetzt hat's geklappt!

    ArmilarA 1 Reply Last reply
    0
    • ArmilarA Armilar

      @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

      @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

      @armilar Ja die habe ich eingetragen. Also wenn ein Song spielt ist es 1, bei druck auf Pause wird es 0, das Icon ändert sich aber nicht vom Pausen Icon auf das Play Icon. Nochmaliger druck auf Pause bleibt bei 0. Wenn ich zwei daneben auf den Power Button drücke dann ändert es sich wieder auf 1. Status 2 also Stop habe ich noch nicht erreichen können...

      Also ich steuere jetzt praktisch mit Pause und PowerIcon

      Stop gibt es im Player auch nicht wirklich und wird bei einigen Adaptern synonym für Power benutzt. Der ist also in der Squeezebox ungenutzt.
      Habe aber soeben (denke ich) das Problem gefunden. Der Alias Datenpunkt STATE geht auf Power, aber Power geht mit Pause nicht auf "false" (wie in den anderen Adaptern der eigentliche state-DP). Dadurch geht der niemals in den Play-Status. Muss ich ebenfalls eine Änderung im Script machen. Würde noch eine Abfrage auf "PAUSE === false" einbauen - dann sollte es demnächst funktionieren.

      Kannst du auch gerne vorher testen...

      Du müsstest bei ca. Zeile 2920 diese Zeilen austauschen

                  case 'media-pause':
                      if (getState(id + '.STATE').val === true || getState(id + '.PAUSE').val === false) {
                          setIfExists(id + '.PAUSE', true);
                      } else {
                          setIfExists(id + '.PLAY', true);
                      }
                      setTimeout(function(){
                          GeneratePage(activePage);  
                      },3000)
                      break;
      

      Hi, das brachte leider noch nicht den gewünschten Erfolg. Der PowerIcon ist nach wie vor play und der PauseIcon ist Pause. Nochmaliger Druck auf Pause macht nichts. Habe allerdings herausgefunden, dass der State Datenpunkt auf True ist, wenn der ganze Player eingeschaltet ist. Bei der Ipeng App kann ich den gesamten Player aus-/ und einschalten. Damit ändere ich dann den Zustand im State von true auf false. Während des laufenden Betriebes bleibt der Punkt immer auf true.

      Also ich habe das bei mir mal soweit durchgespielt.

      Info Zum Icon (Play/Pause) - das wechselt aktuell nicht wirklich, da das erst mit dem Rendern (Versions Update) passiert. Aber der Zustand sollte sich ändern.

      Also mein Versuchsaufbau:

      Unter 0_userdata habe ich mal deinen Adapter nachgebildet.

      55ee4574-a906-4558-8801-7f9741bcbb92-image.png

      Unter alias.0. sieht das so aus
      a73ecc7b-e9ac-4c7e-84dc-4cffb8e732ab-image.png

      und im TS-Script so:

      var SqueezeboxRPC: PageMedia = 
      {
          "type": "cardMedia",
          "heading": "SqueezeboxRPC",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ 
                      id: "alias.0.NSPanel_1.Media.SqueezeBoxRPC", 
                      adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                      speakerList: ['KE_HWR']
                   }] 
      };
      

      Wenn ich jetzt auf den Pausen-Button drücke -->
      b001494d-58f7-4b8e-9992-e87a1fb54ec5-image.png

      0 = Pause

      Wenn ich nochmal drauf drücke (Bei mir gibt es mittlerweile sogar einen Icon-Wechsel)
      c1ca4688-c20a-4717-bef4-ba1919213a17-image.png

      1 = Play

      Wenn ich erneut drauf drücke
      6ded2161-5d0f-4ff2-a57e-45a05d1f4c1b-image.png

      0 = Pause

      Kann ich beliebig oft wiederholen

      Wenn ich auf Power drücke passiert das
      ce0b8858-a5a1-4bb9-bb32-edc34b14f704-image.png

      2 = Stop

      Was passiert bei dir? So ist es in der Beschreibung bei github doch auch beschrieben

      E Offline
      E Offline
      Elluminatus
      wrote on last edited by Elluminatus
      #198

      @armilar Hi ich ergänze mal mit meinem Aufbau in gleicher Art und Weise:

      Also bei mir nicht unter userdata da installierter Adapter:

      LMS13.jpg

      der Alias:

      LMS14.jpg

      im TS-Script:

      var SpotifyPremium: PageMedia = 
      {
          "type": "cardMedia",
          "heading": "Musikwiedergabe Küche",
          "useColor": true,
          "subPage": false,
          "parent": undefined,
          "items": [<PageItem>{ 
                      id: "alias.0.Media.LMS.KE_HWR", 
                      adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                      speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                   }] 
      };
      

      Hier noch kurz eine Frage. Die kleinen state Fotos sind aus dem Adapter, nicht die state aus dem alias?

      Den die state im Adapter sind nummerisch 0,1,2 und der state im alias ist wie gesagt ein und ausschalten und ist ja true /false

      Weiter geht es also mit den state im squeezeboxrpc.0.Players.piCoreKUE.state

      ich drücke im NSPanel Pause und der Wert ist

      LMS15.jpg

      Ich drücke nochmal auf Pause und der Wert ist

      LMS16.jpg

      Nochmal auf Pause gedrückt

      LMS17.jpg

      Drücke ich auf den Power Button

      LMS18.jpg

      So wie es bei Dir läuft kann ich es mit der Handy App Ipeng reproduzieren. Da ist Pause dann 0, erneuter Druck geht auf Play Icon und 1 und drücke ich den Power Button geht es auf 2. Aber eben nicht beim NSPanel.

      Ach und hier zur Vollständigkeit noch:

      LMS19.jpg

      LMS20.jpg

      LMS21.jpg

      Sorry für den ganzen Umstand. Gruß Elluminatus

      ArmilarA 1 Reply Last reply
      0
      • U uSi

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar Das ging ja rasend schnell - Danke!
        Das steht drin:
        {
        "Info2": {
        "WebServerMode": "Admin",
        "Hostname": "uSi-NSPanel1",
        "IPAddress": "192.168.2.114"
        }
        }

        Tausche die mal kurz aus durch

        function get_current_tasmota_ip_address() {
            try {
                const infoObjId = config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO2';
                const infoObj = JSON.parse(getState(infoObjId).val);
        
                console.log(`get_current_tasmota_ip_address: ${infoObj.Info2.IPAddress}`);
        
                return infoObj.Info2.IPAddress;
            } catch (err) {
                console.warn('function get_current_tasmota_ip_address: ' + err.message);
            }
        }
        

        und starte das Script erneut

        Super, keine Fehler nur noch Warnungen. In '0_userdata.0.NSPanel.1.NSPanel_ipAddress' steht aber keine IP-Adresse sondern '{"ack":true}'! Es sind viel mehr einträge in '0_userdata.0.NSPanel.1' vorhanden aber Panel wartet immer noch.
        e5ffd693-0dfd-466e-ad53-b3cdc9589432-grafik.png

        Zeige mal deine Einstellungen unter:

        export const config: Config = {
            panelRecvTopic: 'mqtt.0.SmartHome.NSPanel_1.tele.RESULT',       // anpassen
            panelSendTopic: 'mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend',   // anpassen
        

        und am besten noch einen Screenshot vom mqtt.0. , in dem man den gesamten Pfad sehen kann

        mach ich
        5e7461d1-99da-4bc6-95dc-5e7177da39ea-grafik.png

        3d7f1e54-0f80-4522-b6a2-f861edd6a486-grafik.png

        Ändere bitte mal deine Pfade im TS-Script auf "Smarthome" statt "SmartHome". Dann sollte es gehen... Der kann sonst wirklich nicht den Inhalt sehen. Groß- und Kleinschreibung ist sehr wichtig...

        Bei beiden Einträgen in der export const config: Config = {

        Herzlichen Dank - Jetzt hat's geklappt!

        ArmilarA Offline
        ArmilarA Offline
        Armilar
        Most Active Forum Testing
        wrote on last edited by
        #199

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

        @usi sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar Das ging ja rasend schnell - Danke!
        Das steht drin:
        {
        "Info2": {
        "WebServerMode": "Admin",
        "Hostname": "uSi-NSPanel1",
        "IPAddress": "192.168.2.114"
        }
        }

        Tausche die mal kurz aus durch

        function get_current_tasmota_ip_address() {
            try {
                const infoObjId = config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESULT'.length) + 'INFO2';
                const infoObj = JSON.parse(getState(infoObjId).val);
        
                console.log(`get_current_tasmota_ip_address: ${infoObj.Info2.IPAddress}`);
        
                return infoObj.Info2.IPAddress;
            } catch (err) {
                console.warn('function get_current_tasmota_ip_address: ' + err.message);
            }
        }
        

        und starte das Script erneut

        Super, keine Fehler nur noch Warnungen. In '0_userdata.0.NSPanel.1.NSPanel_ipAddress' steht aber keine IP-Adresse sondern '{"ack":true}'! Es sind viel mehr einträge in '0_userdata.0.NSPanel.1' vorhanden aber Panel wartet immer noch.
        e5ffd693-0dfd-466e-ad53-b3cdc9589432-grafik.png

        Zeige mal deine Einstellungen unter:

        export const config: Config = {
            panelRecvTopic: 'mqtt.0.SmartHome.NSPanel_1.tele.RESULT',       // anpassen
            panelSendTopic: 'mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend',   // anpassen
        

        und am besten noch einen Screenshot vom mqtt.0. , in dem man den gesamten Pfad sehen kann

        mach ich
        5e7461d1-99da-4bc6-95dc-5e7177da39ea-grafik.png

        3d7f1e54-0f80-4522-b6a2-f861edd6a486-grafik.png

        Ändere bitte mal deine Pfade im TS-Script auf "Smarthome" statt "SmartHome". Dann sollte es gehen... Der kann sonst wirklich nicht den Inhalt sehen. Groß- und Kleinschreibung ist sehr wichtig...

        Bei beiden Einträgen in der export const config: Config = {

        Herzlichen Dank - Jetzt hat's geklappt!

        Gerne - Die meisten Fehler sind eher banal - aber manchmal sieht man den Wald vor lauter Bäumen nicht 😉

        Viel Spaß mit dem Panel

        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 Reply Last reply
        0
        • E Elluminatus

          @armilar Hi ich ergänze mal mit meinem Aufbau in gleicher Art und Weise:

          Also bei mir nicht unter userdata da installierter Adapter:

          LMS13.jpg

          der Alias:

          LMS14.jpg

          im TS-Script:

          var SpotifyPremium: PageMedia = 
          {
              "type": "cardMedia",
              "heading": "Musikwiedergabe Küche",
              "useColor": true,
              "subPage": false,
              "parent": undefined,
              "items": [<PageItem>{ 
                          id: "alias.0.Media.LMS.KE_HWR", 
                          adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                          speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                       }] 
          };
          

          Hier noch kurz eine Frage. Die kleinen state Fotos sind aus dem Adapter, nicht die state aus dem alias?

          Den die state im Adapter sind nummerisch 0,1,2 und der state im alias ist wie gesagt ein und ausschalten und ist ja true /false

          Weiter geht es also mit den state im squeezeboxrpc.0.Players.piCoreKUE.state

          ich drücke im NSPanel Pause und der Wert ist

          LMS15.jpg

          Ich drücke nochmal auf Pause und der Wert ist

          LMS16.jpg

          Nochmal auf Pause gedrückt

          LMS17.jpg

          Drücke ich auf den Power Button

          LMS18.jpg

          So wie es bei Dir läuft kann ich es mit der Handy App Ipeng reproduzieren. Da ist Pause dann 0, erneuter Druck geht auf Play Icon und 1 und drücke ich den Power Button geht es auf 2. Aber eben nicht beim NSPanel.

          Ach und hier zur Vollständigkeit noch:

          LMS19.jpg

          LMS20.jpg

          LMS21.jpg

          Sorry für den ganzen Umstand. Gruß Elluminatus

          ArmilarA Offline
          ArmilarA Offline
          Armilar
          Most Active Forum Testing
          wrote on last edited by
          #200

          @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

          @armilar Hi ich ergänze mal mit meinem Aufbau in gleicher Art und Weise:

          Also bei mir nicht unter userdata da installierter Adapter:

          LMS13.jpg

          der Alias:

          LMS14.jpg

          im TS-Script:

          var SpotifyPremium: PageMedia = 
          {
              "type": "cardMedia",
              "heading": "Musikwiedergabe Küche",
              "useColor": true,
              "subPage": false,
              "parent": undefined,
              "items": [<PageItem>{ 
                          id: "alias.0.Media.LMS.KE_HWR", 
                          adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                          speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                       }] 
          };
          

          Hier noch kurz eine Frage. Die kleinen state Fotos sind aus dem Adapter, nicht die state aus dem alias?

          Den die state im Adapter sind nummerisch 0,1,2 und der state im alias ist wie gesagt ein und ausschalten und ist ja true /false

          Weiter geht es also mit den state im squeezeboxrpc.0.Players.piCoreKUE.state

          ich drücke im NSPanel Pause und der Wert ist

          LMS15.jpg

          Ich drücke nochmal auf Pause und der Wert ist

          LMS16.jpg

          Nochmal auf Pause gedrückt

          LMS17.jpg

          Drücke ich auf den Power Button

          LMS18.jpg

          So wie es bei Dir läuft kann ich es mit der Handy App Ipeng reproduzieren. Da ist Pause dann 0, erneuter Druck geht auf Play Icon und 1 und drücke ich den Power Button geht es auf 2. Aber eben nicht beim NSPanel.

          Ach und hier zur Vollständigkeit noch:

          LMS19.jpg

          LMS20.jpg

          LMS21.jpg

          Sorry für den ganzen Umstand. Gruß Elluminatus

          Versuche die wundersame Welt gerade zu verstehen. Aber so sehr ich mich auch anstrenge - es gelingt mir nicht. Analyse

          Fangen wir bei Power an:
          Sobald der gedrückt wird sendet das Panel über Tasmota ein on/off. Das TS-Skript wertet es aus und bedient den ALIAS-DP Stop mit true - Dein Alias Datenpunkt STOP hat eine Funktion die in den Datenpunkt eine 2 schreibt. Aber es steht eine 1 drin. Kann mir das einer erklären? 😕

          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.

          E 1 Reply Last reply
          0
          • ArmilarA Armilar

            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

            @armilar Hi ich ergänze mal mit meinem Aufbau in gleicher Art und Weise:

            Also bei mir nicht unter userdata da installierter Adapter:

            LMS13.jpg

            der Alias:

            LMS14.jpg

            im TS-Script:

            var SpotifyPremium: PageMedia = 
            {
                "type": "cardMedia",
                "heading": "Musikwiedergabe Küche",
                "useColor": true,
                "subPage": false,
                "parent": undefined,
                "items": [<PageItem>{ 
                            id: "alias.0.Media.LMS.KE_HWR", 
                            adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                            speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                         }] 
            };
            

            Hier noch kurz eine Frage. Die kleinen state Fotos sind aus dem Adapter, nicht die state aus dem alias?

            Den die state im Adapter sind nummerisch 0,1,2 und der state im alias ist wie gesagt ein und ausschalten und ist ja true /false

            Weiter geht es also mit den state im squeezeboxrpc.0.Players.piCoreKUE.state

            ich drücke im NSPanel Pause und der Wert ist

            LMS15.jpg

            Ich drücke nochmal auf Pause und der Wert ist

            LMS16.jpg

            Nochmal auf Pause gedrückt

            LMS17.jpg

            Drücke ich auf den Power Button

            LMS18.jpg

            So wie es bei Dir läuft kann ich es mit der Handy App Ipeng reproduzieren. Da ist Pause dann 0, erneuter Druck geht auf Play Icon und 1 und drücke ich den Power Button geht es auf 2. Aber eben nicht beim NSPanel.

            Ach und hier zur Vollständigkeit noch:

            LMS19.jpg

            LMS20.jpg

            LMS21.jpg

            Sorry für den ganzen Umstand. Gruß Elluminatus

            Versuche die wundersame Welt gerade zu verstehen. Aber so sehr ich mich auch anstrenge - es gelingt mir nicht. Analyse

            Fangen wir bei Power an:
            Sobald der gedrückt wird sendet das Panel über Tasmota ein on/off. Das TS-Skript wertet es aus und bedient den ALIAS-DP Stop mit true - Dein Alias Datenpunkt STOP hat eine Funktion die in den Datenpunkt eine 2 schreibt. Aber es steht eine 1 drin. Kann mir das einer erklären? 😕

            E Offline
            E Offline
            Elluminatus
            wrote on last edited by Elluminatus
            #201

            @armilar Und hier noch die Beschreibung was bei Alias passiert:

            LMS22.jpg

            Drücke ich Pause am NSPanel

            ist Pause true
            ist Play false
            ist Stop false
            ist State true

            Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

            ist Pause true
            ist Play false
            ist Stop false
            ist State true

            Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

            ist Pause true
            ist Play false
            ist Stop false
            ist State true

            Drücke ich auf Power

            ist Pause false
            ist Play false
            ist Stop true
            ist State true

            Drücke ich nochmal auf Power

            ist Pause false
            ist Play false
            ist Stop true
            ist State true

            Drücke ich jetzt auf Pause

            ist Pause true
            ist Play false
            ist Stop true
            ist State true

            Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

            ArmilarA 1 Reply Last reply
            0
            • E Elluminatus

              @armilar Und hier noch die Beschreibung was bei Alias passiert:

              LMS22.jpg

              Drücke ich Pause am NSPanel

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich auf Power

              ist Pause false
              ist Play false
              ist Stop true
              ist State true

              Drücke ich nochmal auf Power

              ist Pause false
              ist Play false
              ist Stop true
              ist State true

              Drücke ich jetzt auf Pause

              ist Pause true
              ist Play false
              ist Stop true
              ist State true

              Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

              ArmilarA Offline
              ArmilarA Offline
              Armilar
              Most Active Forum Testing
              wrote on last edited by Armilar
              #202

              @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

              @armilar Und hier noch die Beschreibung was bei Alias passiert:

              LMS22.jpg

              Drücke ich Pause am NSPanel

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

              ist Pause true
              ist Play false
              ist Stop false
              ist State true

              Drücke ich auf Power

              ist Pause false
              ist Play false
              ist Stop true
              ist State true

              Drücke ich nochmal auf Power

              ist Pause false
              ist Play false
              ist Stop true
              ist State true

              Drücke ich jetzt auf Pause

              ist Pause true
              ist Play false
              ist Stop true
              ist State true

              Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

              Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

              Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

              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.

              E 1 Reply Last reply
              0
              • ArmilarA Armilar

                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                @armilar Und hier noch die Beschreibung was bei Alias passiert:

                LMS22.jpg

                Drücke ich Pause am NSPanel

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich auf Power

                ist Pause false
                ist Play false
                ist Stop true
                ist State true

                Drücke ich nochmal auf Power

                ist Pause false
                ist Play false
                ist Stop true
                ist State true

                Drücke ich jetzt auf Pause

                ist Pause true
                ist Play false
                ist Stop true
                ist State true

                Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                E Offline
                E Offline
                Elluminatus
                wrote on last edited by
                #203

                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                @armilar Und hier noch die Beschreibung was bei Alias passiert:

                LMS22.jpg

                Drücke ich Pause am NSPanel

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                ist Pause true
                ist Play false
                ist Stop false
                ist State true

                Drücke ich auf Power

                ist Pause false
                ist Play false
                ist Stop true
                ist State true

                Drücke ich nochmal auf Power

                ist Pause false
                ist Play false
                ist Stop true
                ist State true

                Drücke ich jetzt auf Pause

                ist Pause true
                ist Play false
                ist Stop true
                ist State true

                Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                ArmilarA 2 Replies Last reply
                0
                • E Elluminatus

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar Und hier noch die Beschreibung was bei Alias passiert:

                  LMS22.jpg

                  Drücke ich Pause am NSPanel

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich auf Power

                  ist Pause false
                  ist Play false
                  ist Stop true
                  ist State true

                  Drücke ich nochmal auf Power

                  ist Pause false
                  ist Play false
                  ist Stop true
                  ist State true

                  Drücke ich jetzt auf Pause

                  ist Pause true
                  ist Play false
                  ist Stop true
                  ist State true

                  Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                  Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                  Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                  Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                  Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                  ArmilarA Offline
                  ArmilarA Offline
                  Armilar
                  Most Active Forum Testing
                  wrote on last edited by
                  #204

                  @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar Und hier noch die Beschreibung was bei Alias passiert:

                  LMS22.jpg

                  Drücke ich Pause am NSPanel

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                  ist Pause true
                  ist Play false
                  ist Stop false
                  ist State true

                  Drücke ich auf Power

                  ist Pause false
                  ist Play false
                  ist Stop true
                  ist State true

                  Drücke ich nochmal auf Power

                  ist Pause false
                  ist Play false
                  ist Stop true
                  ist State true

                  Drücke ich jetzt auf Pause

                  ist Pause true
                  ist Play false
                  ist Stop true
                  ist State true

                  Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                  Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                  Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                  Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                  Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                  Wir werden eine Lösung finden 😉

                  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 Reply Last reply
                  0
                  • E Elluminatus

                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                    @armilar Und hier noch die Beschreibung was bei Alias passiert:

                    LMS22.jpg

                    Drücke ich Pause am NSPanel

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich auf Power

                    ist Pause false
                    ist Play false
                    ist Stop true
                    ist State true

                    Drücke ich nochmal auf Power

                    ist Pause false
                    ist Play false
                    ist Stop true
                    ist State true

                    Drücke ich jetzt auf Pause

                    ist Pause true
                    ist Play false
                    ist Stop true
                    ist State true

                    Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                    Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                    Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                    Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                    Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                    ArmilarA Offline
                    ArmilarA Offline
                    Armilar
                    Most Active Forum Testing
                    wrote on last edited by Armilar
                    #205

                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                    @armilar Und hier noch die Beschreibung was bei Alias passiert:

                    LMS22.jpg

                    Drücke ich Pause am NSPanel

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                    ist Pause true
                    ist Play false
                    ist Stop false
                    ist State true

                    Drücke ich auf Power

                    ist Pause false
                    ist Play false
                    ist Stop true
                    ist State true

                    Drücke ich nochmal auf Power

                    ist Pause false
                    ist Play false
                    ist Stop true
                    ist State true

                    Drücke ich jetzt auf Pause

                    ist Pause true
                    ist Play false
                    ist Stop true
                    ist State true

                    Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                    Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                    Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                    Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                    Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                    Nächster Versuch... Bitte mal das nochmal austauschen...

                                case 'media-pause':
                                    let pageItemTemp = findPageItem(id);
                                    let adaInstanceSplit = pageItemTemp.adapterPlayerInstance.split('.');
                                    if (adaInstanceSplit[0] == 'squeezeboxrpc') {
                                        console.log(pageItemTemp.adapterPlayerInstance)
                                        let stateVal = getState(pageItemTemp.adapterPlayerInstance + 'state').val
                                        console.log(stateVal);
                                        if (stateVal == 0) {
                                            setState(pageItemTemp.adapterPlayerInstance + 'state', 1)
                                        } else if (stateVal == 1) {
                                            setState(pageItemTemp.adapterPlayerInstance + 'state', 0)
                                        } else if (stateVal == null) {
                                            setState(pageItemTemp.adapterPlayerInstance + 'state', 1)
                                        }
                                    } else {
                                        if (getState(id + '.STATE').val === true) {
                                            setIfExists(id + '.PAUSE', true);
                                        } else {
                                            setIfExists(id + '.PLAY', true);
                                        }
                                    }
                                    setTimeout(function(){
                                        GeneratePage(activePage);  
                                    },3000)
                                    break;
                    

                    und

                                case 'media-OnOff':
                                    let pageItemTem = findPageItem(id);
                                    let adaInstanceSpli = pageItemTem.adapterPlayerInstance.split('.');
                                    if (adaInstanceSpli[0] == 'squeezeboxrpc') {
                                        let stateVal = getState(pageItemTem.adapterPlayerInstance + 'Power').val
                                        if (stateVal === 0) {
                                            setState(pageItemTem.adapterPlayerInstance + 'Power', 1)
                                            setIfExists(id + '.STOP', false)
                                        } else {
                                            setState(pageItemTem.adapterPlayerInstance + 'Power', 0)
                                            setIfExists(id + '.STOP', true)
                                        }
                                    } else {
                                        setIfExists(id + '.STOP', true)
                                    }
                                    break;
                    

                    und die kannst du auch mal suchen und tauschen

                    function GenerateMediaPage(page: PageMedia): Payload[] {
                        try {
                            var id = page.items[0].id
                            
                            var out_msgs: Array<Payload> = [];
                    
                            out_msgs.push({ payload: 'pageType~cardMedia' });
                            if (existsObject(id)) {
                                let name = getState(id + '.ALBUM').val;
                                let title = getState(id + '.TITLE').val;
                                let author = getState(id + '.ARTIST').val;
                                
                                let vInstance = page.items[0].adapterPlayerInstance;
                                let v1Adapter = vInstance.split('.');
                                let v2Adapter = v1Adapter[0];
                    
                                //Alexa + neue Adpter/Player
                                let media_icon = Icons.GetIcon('playlist-music');
                    
                                //Spotify-Premium
                                if (v2Adapter == 'spotify-premium') {
                                    media_icon = Icons.GetIcon('spotify');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (name.substring(0,9) == 'Playlist:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Album:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Track') { 
                                        name = 'Spotify-Premium';
                                    }
                                    if (nameLenght == 0) {
                                        name = 'Spotify-Premium';
                                    }
                                    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 = 'no music to control';               
                                    }
                                }
                    
                                //Sonos
                                if (v2Adapter == 'sonos') {
                                    media_icon = Icons.GetIcon('music');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Sonos Player';
                                    } 
                                    author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                    if ((getState(id + '.ARTIST').val).length == 0) {
                                        author = 'no music to control';               
                                    }
                                }
                    
                                //Logitech Squeezebox RPC
                                if (v2Adapter == 'squeezeboxrpc') {
                                    media_icon = Icons.GetIcon('dlna');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Squeezebox RPC';
                                        author = 'no music to control';
                                    } 
                                }
                    
                                //Alexa2
                                if (v2Adapter == 'alexa2') {
                                    media_icon = Icons.GetIcon('playlist-music');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Alexa Player';
                                        author = 'no music to control';  
                                    } 
                                }
                                
                                let volume = getState(id + '.VOLUME').val;
                                var iconplaypause = Icons.GetIcon('pause'); //pause
                                var onoffbutton = 1374;
                    
                                //Für alle Player
                                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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                    onoffbutton = 65535;
                                    iconplaypause = Icons.GetIcon('pause'); //pause
                                } else {
                                    iconplaypause = Icons.GetIcon('play'); //play
                                }
                    
                                if (Debug) console.log(v2Adapter);
                    
                                let currentSpeaker = 'kein Speaker gefunden';
                    
                                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') {
                                    if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                        currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                    }
                                }
                                //-------------------------------------------------------------------------------------------------------------
                                // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                let speakerlist = '';
                                if (page.items[0].speakerList.length > 0) {
                                    for (let i_index in page.items[0].speakerList) {
                                        speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                    }
                                } 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('')))) {
                                            speakerlist = speakerlist + getState(i).val + '?';
                                        }
                                    }
                                }
                                speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                //--------------------------------------------------------------------------------------------------------------
                    
                                out_msgs.push({
                                    payload: 'entityUpd~' +                   //entityUpd
                                        name + '~' +                          //heading
                                        GetNavigationString(pageId) + '~' +   //navigation
                                        id + '~' +                            //internalNameEntiy
                                        media_icon + '~' +                    //icon
                                        title + '~' +                         //title
                                        author + '~' +                        //author
                                        volume + '~' +                        //volume
                                        iconplaypause + '~' +                 //playpauseicon
                                        currentSpeaker + '~' +                //currentSpeaker
                                        speakerlist + '~' +                   //speakerList-seperated-by-?
                                        onoffbutton
                                });                        //On/Off Button Color
                            }
                            if (Debug) console.log(out_msgs);
                            return out_msgs
                        } catch (err) {
                            console.warn('function GenerateMediaPage: ' + err.message);
                        }
                    }
                    
                    

                    und
                    c2ff4164-a6ec-4fa3-9b6f-93849710f02b-image.png

                    d77373b5-74a9-4bf5-839d-51fd876cdd6e-image.png

                    c848049f-3f50-4783-b40d-6ee57533732e-image.png

                    Ich verspeise einen Besen, wenn es jetzt nicht mit diesem hartnäckigen Adapter geht... 😊

                    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.

                    E 1 Reply Last reply
                    0
                    • ArmilarA Armilar

                      @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                      @armilar Und hier noch die Beschreibung was bei Alias passiert:

                      LMS22.jpg

                      Drücke ich Pause am NSPanel

                      ist Pause true
                      ist Play false
                      ist Stop false
                      ist State true

                      Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                      ist Pause true
                      ist Play false
                      ist Stop false
                      ist State true

                      Drücke ich wieder Pause lädt das Panel neu, aber im iobroker unter Alias

                      ist Pause true
                      ist Play false
                      ist Stop false
                      ist State true

                      Drücke ich auf Power

                      ist Pause false
                      ist Play false
                      ist Stop true
                      ist State true

                      Drücke ich nochmal auf Power

                      ist Pause false
                      ist Play false
                      ist Stop true
                      ist State true

                      Drücke ich jetzt auf Pause

                      ist Pause true
                      ist Play false
                      ist Stop true
                      ist State true

                      Also grundsätzlich wäre auch mein Tipp, das Status 2 bei Alias den State schaltet und nicht stop

                      Das wäre der "Rauchniedrighalter" - Also damit es bei dir funktioniert... und somit eine Sonderlocke im Skript...

                      Ich denke, die Lösung sollte so aussehen, dass der richtige Status mit der richtigen Aktion am richtigen Ort geschrieben wird... Dann wird es immer funktionieren... Da muss noch ein Fehler außerhalb des Skriptes sein, den ich momentan nicht sehe

                      Na ja es wäre insofern für den Adapter Squeezeboxrpc eine Sonderlocke. Da alle Anwender hier bei dem Druck auf Power Ihr jeweiliges Wiedergabegerät ausschalten würden. Und so geht es auch bei der Handy App. Ein Stop ginbt es dort auch nicht.

                      Ansonsten bin ich natürlich gerne bereit Dich mit weiteren Infos zu versorgen, Du musst nur sagen was Du haben willst, bzw. was Du an Infos brauchst.

                      Nächster Versuch... Bitte mal das nochmal austauschen...

                                  case 'media-pause':
                                      let pageItemTemp = findPageItem(id);
                                      let adaInstanceSplit = pageItemTemp.adapterPlayerInstance.split('.');
                                      if (adaInstanceSplit[0] == 'squeezeboxrpc') {
                                          console.log(pageItemTemp.adapterPlayerInstance)
                                          let stateVal = getState(pageItemTemp.adapterPlayerInstance + 'state').val
                                          console.log(stateVal);
                                          if (stateVal == 0) {
                                              setState(pageItemTemp.adapterPlayerInstance + 'state', 1)
                                          } else if (stateVal == 1) {
                                              setState(pageItemTemp.adapterPlayerInstance + 'state', 0)
                                          } else if (stateVal == null) {
                                              setState(pageItemTemp.adapterPlayerInstance + 'state', 1)
                                          }
                                      } else {
                                          if (getState(id + '.STATE').val === true) {
                                              setIfExists(id + '.PAUSE', true);
                                          } else {
                                              setIfExists(id + '.PLAY', true);
                                          }
                                      }
                                      setTimeout(function(){
                                          GeneratePage(activePage);  
                                      },3000)
                                      break;
                      

                      und

                                  case 'media-OnOff':
                                      let pageItemTem = findPageItem(id);
                                      let adaInstanceSpli = pageItemTem.adapterPlayerInstance.split('.');
                                      if (adaInstanceSpli[0] == 'squeezeboxrpc') {
                                          let stateVal = getState(pageItemTem.adapterPlayerInstance + 'Power').val
                                          if (stateVal === 0) {
                                              setState(pageItemTem.adapterPlayerInstance + 'Power', 1)
                                              setIfExists(id + '.STOP', false)
                                          } else {
                                              setState(pageItemTem.adapterPlayerInstance + 'Power', 0)
                                              setIfExists(id + '.STOP', true)
                                          }
                                      } else {
                                          setIfExists(id + '.STOP', true)
                                      }
                                      break;
                      

                      und die kannst du auch mal suchen und tauschen

                      function GenerateMediaPage(page: PageMedia): Payload[] {
                          try {
                              var id = page.items[0].id
                              
                              var out_msgs: Array<Payload> = [];
                      
                              out_msgs.push({ payload: 'pageType~cardMedia' });
                              if (existsObject(id)) {
                                  let name = getState(id + '.ALBUM').val;
                                  let title = getState(id + '.TITLE').val;
                                  let author = getState(id + '.ARTIST').val;
                                  
                                  let vInstance = page.items[0].adapterPlayerInstance;
                                  let v1Adapter = vInstance.split('.');
                                  let v2Adapter = v1Adapter[0];
                      
                                  //Alexa + neue Adpter/Player
                                  let media_icon = Icons.GetIcon('playlist-music');
                      
                                  //Spotify-Premium
                                  if (v2Adapter == 'spotify-premium') {
                                      media_icon = Icons.GetIcon('spotify');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (name.substring(0,9) == 'Playlist:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Album:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Track') { 
                                          name = 'Spotify-Premium';
                                      }
                                      if (nameLenght == 0) {
                                          name = 'Spotify-Premium';
                                      }
                                      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 = 'no music to control';               
                                      }
                                  }
                      
                                  //Sonos
                                  if (v2Adapter == 'sonos') {
                                      media_icon = Icons.GetIcon('music');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Sonos Player';
                                      } 
                                      author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                      if ((getState(id + '.ARTIST').val).length == 0) {
                                          author = 'no music to control';               
                                      }
                                  }
                      
                                  //Logitech Squeezebox RPC
                                  if (v2Adapter == 'squeezeboxrpc') {
                                      media_icon = Icons.GetIcon('dlna');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Squeezebox RPC';
                                          author = 'no music to control';
                                      } 
                                  }
                      
                                  //Alexa2
                                  if (v2Adapter == 'alexa2') {
                                      media_icon = Icons.GetIcon('playlist-music');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Alexa Player';
                                          author = 'no music to control';  
                                      } 
                                  }
                                  
                                  let volume = getState(id + '.VOLUME').val;
                                  var iconplaypause = Icons.GetIcon('pause'); //pause
                                  var onoffbutton = 1374;
                      
                                  //Für alle Player
                                  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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                      onoffbutton = 65535;
                                      iconplaypause = Icons.GetIcon('pause'); //pause
                                  } else {
                                      iconplaypause = Icons.GetIcon('play'); //play
                                  }
                      
                                  if (Debug) console.log(v2Adapter);
                      
                                  let currentSpeaker = 'kein Speaker gefunden';
                      
                                  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') {
                                      if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                          currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                      }
                                  }
                                  //-------------------------------------------------------------------------------------------------------------
                                  // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                  // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                  let speakerlist = '';
                                  if (page.items[0].speakerList.length > 0) {
                                      for (let i_index in page.items[0].speakerList) {
                                          speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                      }
                                  } 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('')))) {
                                              speakerlist = speakerlist + getState(i).val + '?';
                                          }
                                      }
                                  }
                                  speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                  //--------------------------------------------------------------------------------------------------------------
                      
                                  out_msgs.push({
                                      payload: 'entityUpd~' +                   //entityUpd
                                          name + '~' +                          //heading
                                          GetNavigationString(pageId) + '~' +   //navigation
                                          id + '~' +                            //internalNameEntiy
                                          media_icon + '~' +                    //icon
                                          title + '~' +                         //title
                                          author + '~' +                        //author
                                          volume + '~' +                        //volume
                                          iconplaypause + '~' +                 //playpauseicon
                                          currentSpeaker + '~' +                //currentSpeaker
                                          speakerlist + '~' +                   //speakerList-seperated-by-?
                                          onoffbutton
                                  });                        //On/Off Button Color
                              }
                              if (Debug) console.log(out_msgs);
                              return out_msgs
                          } catch (err) {
                              console.warn('function GenerateMediaPage: ' + err.message);
                          }
                      }
                      
                      

                      und
                      c2ff4164-a6ec-4fa3-9b6f-93849710f02b-image.png

                      d77373b5-74a9-4bf5-839d-51fd876cdd6e-image.png

                      c848049f-3f50-4783-b40d-6ee57533732e-image.png

                      Ich verspeise einen Besen, wenn es jetzt nicht mit diesem hartnäckigen Adapter geht... 😊

                      E Offline
                      E Offline
                      Elluminatus
                      wrote on last edited by Elluminatus
                      #206

                      @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                      function GenerateMediaPage(page: PageMedia): Payload[] {
                      try {
                      var id = page.items[0].id

                          var out_msgs: Array<Payload> = [];
                      
                          out_msgs.push({ payload: 'pageType~cardMedia' });
                          if (existsObject(id)) {
                              let name = getState(id + '.ALBUM').val;
                              let title = getState(id + '.TITLE').val;
                              let author = getState(id + '.ARTIST').val;
                              
                              let vInstance = page.items[0].adapterPlayerInstance;
                              let v1Adapter = vInstance.split('.');
                              let v2Adapter = v1Adapter[0];
                      
                              //Alexa + neue Adpter/Player
                              let media_icon = Icons.GetIcon('playlist-music');
                      
                              //Spotify-Premium
                              if (v2Adapter == 'spotify-premium') {
                                  media_icon = Icons.GetIcon('spotify');
                                  name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                  let nameLenght = name.length;
                                  if (name.substring(0,9) == 'Playlist:') {
                                      let nameLenght = name.length;
                                      name = name.slice(10, nameLenght);
                                  } else if (name.substring(0,6) == 'Album:') {
                                      let nameLenght = name.length;
                                      name = name.slice(10, nameLenght);
                                  } else if (name.substring(0,6) == 'Track') { 
                                      name = 'Spotify-Premium';
                                  }
                                  if (nameLenght == 0) {
                                      name = 'Spotify-Premium';
                                  }
                                  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 = 'no music to control';               
                                  }
                              }
                      
                              //Sonos
                              if (v2Adapter == 'sonos') {
                                  media_icon = Icons.GetIcon('music');
                                  name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                  let nameLenght = name.length;
                                  if (nameLenght == 0) {
                                      name = 'Sonos Player';
                                  } 
                                  author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                  if ((getState(id + '.ARTIST').val).length == 0) {
                                      author = 'no music to control';               
                                  }
                              }
                      
                              //Logitech Squeezebox RPC
                              if (v2Adapter == 'squeezeboxrpc') {
                                  media_icon = Icons.GetIcon('dlna');
                                  let nameLenght = name.length;
                                  if (nameLenght == 0) {
                                      name = 'Squeezebox RPC';
                                      author = 'no music to control';
                                  } 
                              }
                      
                              //Alexa2
                              if (v2Adapter == 'alexa2') {
                                  media_icon = Icons.GetIcon('playlist-music');
                                  let nameLenght = name.length;
                                  if (nameLenght == 0) {
                                      name = 'Alexa Player';
                                      author = 'no music to control';  
                                  } 
                              }
                              
                              let volume = getState(id + '.VOLUME').val;
                              var iconplaypause = Icons.GetIcon('pause'); //pause
                              var onoffbutton = 1374;
                      
                              //Für alle Player
                              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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                  onoffbutton = 65535;
                                  iconplaypause = Icons.GetIcon('pause'); //pause
                              } else {
                                  iconplaypause = Icons.GetIcon('play'); //play
                              }
                      
                              if (Debug) console.log(v2Adapter);
                      
                              let currentSpeaker = 'kein Speaker gefunden';
                      
                              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') {
                                  if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                      currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                  }
                              }
                              //-------------------------------------------------------------------------------------------------------------
                              // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                              // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                              let speakerlist = '';
                              if (page.items[0].speakerList.length > 0) {
                                  for (let i_index in page.items[0].speakerList) {
                                      speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                  }
                              } 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('')))) {
                                          speakerlist = speakerlist + getState(i).val + '?';
                                      }
                                  }
                              }
                              speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                              //--------------------------------------------------------------------------------------------------------------
                      
                              out_msgs.push({
                                  payload: 'entityUpd~' +                   //entityUpd
                                      name + '~' +                          //heading
                                      GetNavigationString(pageId) + '~' +   //navigation
                                      id + '~' +                            //internalNameEntiy
                                      media_icon + '~' +                    //icon
                                      title + '~' +                         //title
                                      author + '~' +                        //author
                                      volume + '~' +                        //volume
                                      iconplaypause + '~' +                 //playpauseicon
                                      currentSpeaker + '~' +                //currentSpeaker
                                      speakerlist + '~' +                   //speakerList-seperated-by-?
                                      onoffbutton
                              });                        //On/Off Button Color
                          }
                          if (Debug) console.log(out_msgs);
                          return out_msgs
                      } catch (err) {
                          console.warn('function GenerateMediaPage: ' + err.message);
                      }
                      

                      }

                      Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                      So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                      Gruß Elluminatus

                      P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                      ArmilarA 2 Replies Last reply
                      0
                      • E Elluminatus

                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                        function GenerateMediaPage(page: PageMedia): Payload[] {
                        try {
                        var id = page.items[0].id

                            var out_msgs: Array<Payload> = [];
                        
                            out_msgs.push({ payload: 'pageType~cardMedia' });
                            if (existsObject(id)) {
                                let name = getState(id + '.ALBUM').val;
                                let title = getState(id + '.TITLE').val;
                                let author = getState(id + '.ARTIST').val;
                                
                                let vInstance = page.items[0].adapterPlayerInstance;
                                let v1Adapter = vInstance.split('.');
                                let v2Adapter = v1Adapter[0];
                        
                                //Alexa + neue Adpter/Player
                                let media_icon = Icons.GetIcon('playlist-music');
                        
                                //Spotify-Premium
                                if (v2Adapter == 'spotify-premium') {
                                    media_icon = Icons.GetIcon('spotify');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (name.substring(0,9) == 'Playlist:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Album:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Track') { 
                                        name = 'Spotify-Premium';
                                    }
                                    if (nameLenght == 0) {
                                        name = 'Spotify-Premium';
                                    }
                                    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 = 'no music to control';               
                                    }
                                }
                        
                                //Sonos
                                if (v2Adapter == 'sonos') {
                                    media_icon = Icons.GetIcon('music');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Sonos Player';
                                    } 
                                    author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                    if ((getState(id + '.ARTIST').val).length == 0) {
                                        author = 'no music to control';               
                                    }
                                }
                        
                                //Logitech Squeezebox RPC
                                if (v2Adapter == 'squeezeboxrpc') {
                                    media_icon = Icons.GetIcon('dlna');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Squeezebox RPC';
                                        author = 'no music to control';
                                    } 
                                }
                        
                                //Alexa2
                                if (v2Adapter == 'alexa2') {
                                    media_icon = Icons.GetIcon('playlist-music');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Alexa Player';
                                        author = 'no music to control';  
                                    } 
                                }
                                
                                let volume = getState(id + '.VOLUME').val;
                                var iconplaypause = Icons.GetIcon('pause'); //pause
                                var onoffbutton = 1374;
                        
                                //Für alle Player
                                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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                    onoffbutton = 65535;
                                    iconplaypause = Icons.GetIcon('pause'); //pause
                                } else {
                                    iconplaypause = Icons.GetIcon('play'); //play
                                }
                        
                                if (Debug) console.log(v2Adapter);
                        
                                let currentSpeaker = 'kein Speaker gefunden';
                        
                                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') {
                                    if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                        currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                    }
                                }
                                //-------------------------------------------------------------------------------------------------------------
                                // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                let speakerlist = '';
                                if (page.items[0].speakerList.length > 0) {
                                    for (let i_index in page.items[0].speakerList) {
                                        speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                    }
                                } 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('')))) {
                                            speakerlist = speakerlist + getState(i).val + '?';
                                        }
                                    }
                                }
                                speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                //--------------------------------------------------------------------------------------------------------------
                        
                                out_msgs.push({
                                    payload: 'entityUpd~' +                   //entityUpd
                                        name + '~' +                          //heading
                                        GetNavigationString(pageId) + '~' +   //navigation
                                        id + '~' +                            //internalNameEntiy
                                        media_icon + '~' +                    //icon
                                        title + '~' +                         //title
                                        author + '~' +                        //author
                                        volume + '~' +                        //volume
                                        iconplaypause + '~' +                 //playpauseicon
                                        currentSpeaker + '~' +                //currentSpeaker
                                        speakerlist + '~' +                   //speakerList-seperated-by-?
                                        onoffbutton
                                });                        //On/Off Button Color
                            }
                            if (Debug) console.log(out_msgs);
                            return out_msgs
                        } catch (err) {
                            console.warn('function GenerateMediaPage: ' + err.message);
                        }
                        

                        }

                        Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                        So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                        Gruß Elluminatus

                        P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                        ArmilarA Offline
                        ArmilarA Offline
                        Armilar
                        Most Active Forum Testing
                        wrote on last edited by Armilar
                        #207

                        @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                        @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                        function GenerateMediaPage(page: PageMedia): Payload[] {
                        try {
                        var id = page.items[0].id

                            var out_msgs: Array<Payload> = [];
                        
                            out_msgs.push({ payload: 'pageType~cardMedia' });
                            if (existsObject(id)) {
                                let name = getState(id + '.ALBUM').val;
                                let title = getState(id + '.TITLE').val;
                                let author = getState(id + '.ARTIST').val;
                                
                                let vInstance = page.items[0].adapterPlayerInstance;
                                let v1Adapter = vInstance.split('.');
                                let v2Adapter = v1Adapter[0];
                        
                                //Alexa + neue Adpter/Player
                                let media_icon = Icons.GetIcon('playlist-music');
                        
                                //Spotify-Premium
                                if (v2Adapter == 'spotify-premium') {
                                    media_icon = Icons.GetIcon('spotify');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (name.substring(0,9) == 'Playlist:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Album:') {
                                        let nameLenght = name.length;
                                        name = name.slice(10, nameLenght);
                                    } else if (name.substring(0,6) == 'Track') { 
                                        name = 'Spotify-Premium';
                                    }
                                    if (nameLenght == 0) {
                                        name = 'Spotify-Premium';
                                    }
                                    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 = 'no music to control';               
                                    }
                                }
                        
                                //Sonos
                                if (v2Adapter == 'sonos') {
                                    media_icon = Icons.GetIcon('music');
                                    name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Sonos Player';
                                    } 
                                    author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                    if ((getState(id + '.ARTIST').val).length == 0) {
                                        author = 'no music to control';               
                                    }
                                }
                        
                                //Logitech Squeezebox RPC
                                if (v2Adapter == 'squeezeboxrpc') {
                                    media_icon = Icons.GetIcon('dlna');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Squeezebox RPC';
                                        author = 'no music to control';
                                    } 
                                }
                        
                                //Alexa2
                                if (v2Adapter == 'alexa2') {
                                    media_icon = Icons.GetIcon('playlist-music');
                                    let nameLenght = name.length;
                                    if (nameLenght == 0) {
                                        name = 'Alexa Player';
                                        author = 'no music to control';  
                                    } 
                                }
                                
                                let volume = getState(id + '.VOLUME').val;
                                var iconplaypause = Icons.GetIcon('pause'); //pause
                                var onoffbutton = 1374;
                        
                                //Für alle Player
                                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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                    onoffbutton = 65535;
                                    iconplaypause = Icons.GetIcon('pause'); //pause
                                } else {
                                    iconplaypause = Icons.GetIcon('play'); //play
                                }
                        
                                if (Debug) console.log(v2Adapter);
                        
                                let currentSpeaker = 'kein Speaker gefunden';
                        
                                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') {
                                    if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                        currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                    }
                                }
                                //-------------------------------------------------------------------------------------------------------------
                                // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                let speakerlist = '';
                                if (page.items[0].speakerList.length > 0) {
                                    for (let i_index in page.items[0].speakerList) {
                                        speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                    }
                                } 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('')))) {
                                            speakerlist = speakerlist + getState(i).val + '?';
                                        }
                                    }
                                }
                                speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                //--------------------------------------------------------------------------------------------------------------
                        
                                out_msgs.push({
                                    payload: 'entityUpd~' +                   //entityUpd
                                        name + '~' +                          //heading
                                        GetNavigationString(pageId) + '~' +   //navigation
                                        id + '~' +                            //internalNameEntiy
                                        media_icon + '~' +                    //icon
                                        title + '~' +                         //title
                                        author + '~' +                        //author
                                        volume + '~' +                        //volume
                                        iconplaypause + '~' +                 //playpauseicon
                                        currentSpeaker + '~' +                //currentSpeaker
                                        speakerlist + '~' +                   //speakerList-seperated-by-?
                                        onoffbutton
                                });                        //On/Off Button Color
                            }
                            if (Debug) console.log(out_msgs);
                            return out_msgs
                        } catch (err) {
                            console.warn('function GenerateMediaPage: ' + err.message);
                        }
                        

                        }

                        Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                        So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                        Gruß Elluminatus

                        P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                        Zum Fragenstellen ist das hier doch gedacht... immer heraus damit...

                        Harte Nuss - ich werde die Schritte morgen mal in die Wiki übertragen und wahrscheinlich auch ein Script-Upgrade planen...

                        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 Reply Last reply
                        0
                        • E Elluminatus

                          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                          function GenerateMediaPage(page: PageMedia): Payload[] {
                          try {
                          var id = page.items[0].id

                              var out_msgs: Array<Payload> = [];
                          
                              out_msgs.push({ payload: 'pageType~cardMedia' });
                              if (existsObject(id)) {
                                  let name = getState(id + '.ALBUM').val;
                                  let title = getState(id + '.TITLE').val;
                                  let author = getState(id + '.ARTIST').val;
                                  
                                  let vInstance = page.items[0].adapterPlayerInstance;
                                  let v1Adapter = vInstance.split('.');
                                  let v2Adapter = v1Adapter[0];
                          
                                  //Alexa + neue Adpter/Player
                                  let media_icon = Icons.GetIcon('playlist-music');
                          
                                  //Spotify-Premium
                                  if (v2Adapter == 'spotify-premium') {
                                      media_icon = Icons.GetIcon('spotify');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (name.substring(0,9) == 'Playlist:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Album:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Track') { 
                                          name = 'Spotify-Premium';
                                      }
                                      if (nameLenght == 0) {
                                          name = 'Spotify-Premium';
                                      }
                                      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 = 'no music to control';               
                                      }
                                  }
                          
                                  //Sonos
                                  if (v2Adapter == 'sonos') {
                                      media_icon = Icons.GetIcon('music');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Sonos Player';
                                      } 
                                      author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                      if ((getState(id + '.ARTIST').val).length == 0) {
                                          author = 'no music to control';               
                                      }
                                  }
                          
                                  //Logitech Squeezebox RPC
                                  if (v2Adapter == 'squeezeboxrpc') {
                                      media_icon = Icons.GetIcon('dlna');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Squeezebox RPC';
                                          author = 'no music to control';
                                      } 
                                  }
                          
                                  //Alexa2
                                  if (v2Adapter == 'alexa2') {
                                      media_icon = Icons.GetIcon('playlist-music');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Alexa Player';
                                          author = 'no music to control';  
                                      } 
                                  }
                                  
                                  let volume = getState(id + '.VOLUME').val;
                                  var iconplaypause = Icons.GetIcon('pause'); //pause
                                  var onoffbutton = 1374;
                          
                                  //Für alle Player
                                  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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                      onoffbutton = 65535;
                                      iconplaypause = Icons.GetIcon('pause'); //pause
                                  } else {
                                      iconplaypause = Icons.GetIcon('play'); //play
                                  }
                          
                                  if (Debug) console.log(v2Adapter);
                          
                                  let currentSpeaker = 'kein Speaker gefunden';
                          
                                  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') {
                                      if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                          currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                      }
                                  }
                                  //-------------------------------------------------------------------------------------------------------------
                                  // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                  // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                  let speakerlist = '';
                                  if (page.items[0].speakerList.length > 0) {
                                      for (let i_index in page.items[0].speakerList) {
                                          speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                      }
                                  } 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('')))) {
                                              speakerlist = speakerlist + getState(i).val + '?';
                                          }
                                      }
                                  }
                                  speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                  //--------------------------------------------------------------------------------------------------------------
                          
                                  out_msgs.push({
                                      payload: 'entityUpd~' +                   //entityUpd
                                          name + '~' +                          //heading
                                          GetNavigationString(pageId) + '~' +   //navigation
                                          id + '~' +                            //internalNameEntiy
                                          media_icon + '~' +                    //icon
                                          title + '~' +                         //title
                                          author + '~' +                        //author
                                          volume + '~' +                        //volume
                                          iconplaypause + '~' +                 //playpauseicon
                                          currentSpeaker + '~' +                //currentSpeaker
                                          speakerlist + '~' +                   //speakerList-seperated-by-?
                                          onoffbutton
                                  });                        //On/Off Button Color
                              }
                              if (Debug) console.log(out_msgs);
                              return out_msgs
                          } catch (err) {
                              console.warn('function GenerateMediaPage: ' + err.message);
                          }
                          

                          }

                          Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                          So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                          Gruß Elluminatus

                          P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                          ArmilarA Offline
                          ArmilarA Offline
                          Armilar
                          Most Active Forum Testing
                          wrote on last edited by
                          #208

                          @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                          function GenerateMediaPage(page: PageMedia): Payload[] {
                          try {
                          var id = page.items[0].id

                              var out_msgs: Array<Payload> = [];
                          
                              out_msgs.push({ payload: 'pageType~cardMedia' });
                              if (existsObject(id)) {
                                  let name = getState(id + '.ALBUM').val;
                                  let title = getState(id + '.TITLE').val;
                                  let author = getState(id + '.ARTIST').val;
                                  
                                  let vInstance = page.items[0].adapterPlayerInstance;
                                  let v1Adapter = vInstance.split('.');
                                  let v2Adapter = v1Adapter[0];
                          
                                  //Alexa + neue Adpter/Player
                                  let media_icon = Icons.GetIcon('playlist-music');
                          
                                  //Spotify-Premium
                                  if (v2Adapter == 'spotify-premium') {
                                      media_icon = Icons.GetIcon('spotify');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (name.substring(0,9) == 'Playlist:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Album:') {
                                          let nameLenght = name.length;
                                          name = name.slice(10, nameLenght);
                                      } else if (name.substring(0,6) == 'Track') { 
                                          name = 'Spotify-Premium';
                                      }
                                      if (nameLenght == 0) {
                                          name = 'Spotify-Premium';
                                      }
                                      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 = 'no music to control';               
                                      }
                                  }
                          
                                  //Sonos
                                  if (v2Adapter == 'sonos') {
                                      media_icon = Icons.GetIcon('music');
                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Sonos Player';
                                      } 
                                      author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                      if ((getState(id + '.ARTIST').val).length == 0) {
                                          author = 'no music to control';               
                                      }
                                  }
                          
                                  //Logitech Squeezebox RPC
                                  if (v2Adapter == 'squeezeboxrpc') {
                                      media_icon = Icons.GetIcon('dlna');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Squeezebox RPC';
                                          author = 'no music to control';
                                      } 
                                  }
                          
                                  //Alexa2
                                  if (v2Adapter == 'alexa2') {
                                      media_icon = Icons.GetIcon('playlist-music');
                                      let nameLenght = name.length;
                                      if (nameLenght == 0) {
                                          name = 'Alexa Player';
                                          author = 'no music to control';  
                                      } 
                                  }
                                  
                                  let volume = getState(id + '.VOLUME').val;
                                  var iconplaypause = Icons.GetIcon('pause'); //pause
                                  var onoffbutton = 1374;
                          
                                  //Für alle Player
                                  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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                      onoffbutton = 65535;
                                      iconplaypause = Icons.GetIcon('pause'); //pause
                                  } else {
                                      iconplaypause = Icons.GetIcon('play'); //play
                                  }
                          
                                  if (Debug) console.log(v2Adapter);
                          
                                  let currentSpeaker = 'kein Speaker gefunden';
                          
                                  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') {
                                      if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                          currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                      }
                                  }
                                  //-------------------------------------------------------------------------------------------------------------
                                  // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                  // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                  let speakerlist = '';
                                  if (page.items[0].speakerList.length > 0) {
                                      for (let i_index in page.items[0].speakerList) {
                                          speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                      }
                                  } 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('')))) {
                                              speakerlist = speakerlist + getState(i).val + '?';
                                          }
                                      }
                                  }
                                  speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                  //--------------------------------------------------------------------------------------------------------------
                          
                                  out_msgs.push({
                                      payload: 'entityUpd~' +                   //entityUpd
                                          name + '~' +                          //heading
                                          GetNavigationString(pageId) + '~' +   //navigation
                                          id + '~' +                            //internalNameEntiy
                                          media_icon + '~' +                    //icon
                                          title + '~' +                         //title
                                          author + '~' +                        //author
                                          volume + '~' +                        //volume
                                          iconplaypause + '~' +                 //playpauseicon
                                          currentSpeaker + '~' +                //currentSpeaker
                                          speakerlist + '~' +                   //speakerList-seperated-by-?
                                          onoffbutton
                                  });                        //On/Off Button Color
                              }
                              if (Debug) console.log(out_msgs);
                              return out_msgs
                          } catch (err) {
                              console.warn('function GenerateMediaPage: ' + err.message);
                          }
                          

                          }

                          Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                          So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                          Gruß Elluminatus

                          P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                          https://paypal.me/armilarDE
                          Dankeschön
                          VG
                          Armilar

                          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.

                          E 1 Reply Last reply
                          0
                          • H Offline
                            H Offline
                            holgerwolf
                            wrote on last edited by
                            #209

                            Hallo,

                            ich hab heute morgen teils erfolgreich von 3.1. auf 3.4.0.5 geupdatet.

                            Jetzt habe ich noch ein kleines Problem:

                            Im Screensaver sind die Zahlen und Icons verrutscht:

                            8e580b88-d0f6-4d28-b25d-8c6da77830e4-grafik.png

                            So sieht der entsprechende Teil im Script aus:

                            firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C", ScreensaverEntityIconColor: {'val_min': -5, 'val_max': 40} },
                                secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "Auto", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-panel", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 5000} },
                                alternativeScreensaverLayout: true,
                                autoWeatherColorScreensaverLayout: true,
                            
                            ArmilarA 1 Reply Last reply
                            0
                            • H holgerwolf

                              Hallo,

                              ich hab heute morgen teils erfolgreich von 3.1. auf 3.4.0.5 geupdatet.

                              Jetzt habe ich noch ein kleines Problem:

                              Im Screensaver sind die Zahlen und Icons verrutscht:

                              8e580b88-d0f6-4d28-b25d-8c6da77830e4-grafik.png

                              So sieht der entsprechende Teil im Script aus:

                              firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C", ScreensaverEntityIconColor: {'val_min': -5, 'val_max': 40} },
                                  secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                  thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "Auto", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                  fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-panel", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 5000} },
                                  alternativeScreensaverLayout: true,
                                  autoWeatherColorScreensaverLayout: true,
                              
                              ArmilarA Offline
                              ArmilarA Offline
                              Armilar
                              Most Active Forum Testing
                              wrote on last edited by
                              #210

                              @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                              Hallo,

                              ich hab heute morgen teils erfolgreich von 3.1. auf 3.4.0.5 geupdatet.

                              Jetzt habe ich noch ein kleines Problem:

                              Im Screensaver sind die Zahlen und Icons verrutscht:

                              8e580b88-d0f6-4d28-b25d-8c6da77830e4-grafik.png

                              So sieht der entsprechende Teil im Script aus:

                              firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C", ScreensaverEntityIconColor: {'val_min': -5, 'val_max': 40} },
                                  secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                  thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "Auto", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                  fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-panel", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 5000} },
                                  alternativeScreensaverLayout: true,
                                  autoWeatherColorScreensaverLayout: true,
                              

                              😊 Die ist nicht verrutscht. Du bist im alternativen Layout gelandet.
                              Schalte mal:

                              alternativeScreensaverLayout: true,
                              

                              auf

                              alternativeScreensaverLayout: false,
                              

                              Dann ist wieder alles wie früher, nur hübscher

                              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.

                              H 1 Reply Last reply
                              0
                              • ArmilarA Armilar

                                @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                                Hallo,

                                ich hab heute morgen teils erfolgreich von 3.1. auf 3.4.0.5 geupdatet.

                                Jetzt habe ich noch ein kleines Problem:

                                Im Screensaver sind die Zahlen und Icons verrutscht:

                                8e580b88-d0f6-4d28-b25d-8c6da77830e4-grafik.png

                                So sieht der entsprechende Teil im Script aus:

                                firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C", ScreensaverEntityIconColor: {'val_min': -5, 'val_max': 40} },
                                    secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "water-percent", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                    thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "Auto", ScreensaverEntityUnitText: "%", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} },
                                    fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-panel", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W", ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 5000} },
                                    alternativeScreensaverLayout: true,
                                    autoWeatherColorScreensaverLayout: true,
                                

                                😊 Die ist nicht verrutscht. Du bist im alternativen Layout gelandet.
                                Schalte mal:

                                alternativeScreensaverLayout: true,
                                

                                auf

                                alternativeScreensaverLayout: false,
                                

                                Dann ist wieder alles wie früher, nur hübscher

                                H Offline
                                H Offline
                                holgerwolf
                                wrote on last edited by
                                #211

                                @armilar Stimmt 🙂

                                Dankeschön, das wars...

                                ArmilarA 1 Reply Last reply
                                0
                                • H holgerwolf

                                  @armilar Stimmt 🙂

                                  Dankeschön, das wars...

                                  ArmilarA Offline
                                  ArmilarA Offline
                                  Armilar
                                  Most Active Forum Testing
                                  wrote on last edited by
                                  #212

                                  @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                                  @armilar Stimmt 🙂

                                  Dankeschön, das wars...

                                  https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver

                                  Hier gibt es auch Infos zum aktuellen Screensaver

                                  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.

                                  H 1 Reply Last reply
                                  0
                                  • ArmilarA Armilar

                                    @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                                    @armilar Stimmt 🙂

                                    Dankeschön, das wars...

                                    https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker-Config-Screensaver

                                    Hier gibt es auch Infos zum aktuellen Screensaver

                                    H Offline
                                    H Offline
                                    holgerwolf
                                    wrote on last edited by
                                    #213

                                    @armilar Schon gelesen und auch schon angepasst. Muss nur noch einen Zweck für das zweite Icon oben finden.
                                    Das Erste hab ich schonmal mit dem Status der Waschmaschine verknüpft. Frau wird begeistert sein 🙂

                                    E 1 Reply Last reply
                                    0
                                    • D Offline
                                      D Offline
                                      DirkS. 0
                                      wrote on last edited by DirkS. 0
                                      #214

                                      Hallo ,
                                      bin neu hier im Forum und habe dasselbe Problem, wie von @Skatbert etwas weiter oben geschildert, d.h.

                                      ich kann nur zwei Seiten schalten bzw. erreichen.
                                      Ich habe mittlerweile das 2. Panel ausprobiert und das Problem ist dasselbe.

                                      Gibt es da mittlerweile eine Lösung?
                                      Habe gerade die aktuelle Software aufgespielt (tasmota, berry treiber, display firmware).

                                      ArmilarA 1 Reply Last reply
                                      0
                                      • D DirkS. 0

                                        Hallo ,
                                        bin neu hier im Forum und habe dasselbe Problem, wie von @Skatbert etwas weiter oben geschildert, d.h.

                                        ich kann nur zwei Seiten schalten bzw. erreichen.
                                        Ich habe mittlerweile das 2. Panel ausprobiert und das Problem ist dasselbe.

                                        Gibt es da mittlerweile eine Lösung?
                                        Habe gerade die aktuelle Software aufgespielt (tasmota, berry treiber, display firmware).

                                        ArmilarA Offline
                                        ArmilarA Offline
                                        Armilar
                                        Most Active Forum Testing
                                        wrote on last edited by Armilar
                                        #215

                                        @dirks-0 sagte in SONOFF NSPanel mit Lovelace UI:

                                        Hallo ,
                                        bin neu hier im Forum und habe dasselbe Problem, wie von @Skatbert etwas weiter oben geschildert, d.h.

                                        ich kann nur zwei Seiten schalten bzw. erreichen.
                                        Ich habe mittlerweile das 2. Panel ausprobiert und das Problem ist dasselbe.

                                        Gibt es da mittlerweile eine Lösung?
                                        Habe gerade die aktuelle Software aufgespielt (tasmota, berry treiber, display firmware).

                                        Das Problem ist, das wir das wir die Ursache nicht nachvollziehen können... Da es bei 1000+ Usern funktioniert, schließe ich mal das Skript selbst kurz aus. Aber was ist bei euch (Setup/System/Doing) anders, als bei den restlichen (@Skatbert / und bei dir). Das gilt es zu finden - wird bestimmt keine einfache Analyse

                                        Eventuell kann man Ableitungen treffen, wenn wir mehr über System und Vorgehensweise bei der Installation (ggfs. externe Tools) kennen.

                                        Hast du eine Historie/SQL/influx - Adapter? Dann wäre es schon mal hilfreich, wenn man den CustomSend und den RESULT mitplottet. Die sollten einen Zeitstempel haben.

                                        Jede Aktion aus dem Panel sollte im Tasmota zu sehen sein, aber auch zum gleichen Zeitpunkt am RESULT ankommen. Dann beginnt die Verarbeitung im Skript und das Ergebnis wird über den CustomSend an das Panel übermittelt.

                                        Hatte (@Kuckuckmann ebenfalls) die Config von @Skatbert auch analysiert und nachgebildet. Bei uns trat der Fehler im Skript nicht auf. @Kuckuckmann hatte die Vermutung, dass durch Tools wie Notepad, etc. Unterschiede zur RAW-Version beim hin- und herkopieren entstehen. Wir sind aktuell zu weit von eurer Systemumgebung entfernt.

                                        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.

                                        S 1 Reply Last reply
                                        0
                                        • ArmilarA Armilar

                                          @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                          function GenerateMediaPage(page: PageMedia): Payload[] {
                                          try {
                                          var id = page.items[0].id

                                              var out_msgs: Array<Payload> = [];
                                          
                                              out_msgs.push({ payload: 'pageType~cardMedia' });
                                              if (existsObject(id)) {
                                                  let name = getState(id + '.ALBUM').val;
                                                  let title = getState(id + '.TITLE').val;
                                                  let author = getState(id + '.ARTIST').val;
                                                  
                                                  let vInstance = page.items[0].adapterPlayerInstance;
                                                  let v1Adapter = vInstance.split('.');
                                                  let v2Adapter = v1Adapter[0];
                                          
                                                  //Alexa + neue Adpter/Player
                                                  let media_icon = Icons.GetIcon('playlist-music');
                                          
                                                  //Spotify-Premium
                                                  if (v2Adapter == 'spotify-premium') {
                                                      media_icon = Icons.GetIcon('spotify');
                                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                                      let nameLenght = name.length;
                                                      if (name.substring(0,9) == 'Playlist:') {
                                                          let nameLenght = name.length;
                                                          name = name.slice(10, nameLenght);
                                                      } else if (name.substring(0,6) == 'Album:') {
                                                          let nameLenght = name.length;
                                                          name = name.slice(10, nameLenght);
                                                      } else if (name.substring(0,6) == 'Track') { 
                                                          name = 'Spotify-Premium';
                                                      }
                                                      if (nameLenght == 0) {
                                                          name = 'Spotify-Premium';
                                                      }
                                                      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 = 'no music to control';               
                                                      }
                                                  }
                                          
                                                  //Sonos
                                                  if (v2Adapter == 'sonos') {
                                                      media_icon = Icons.GetIcon('music');
                                                      name = getState(id + '.CONTEXT_DESCRIPTION').val;
                                                      let nameLenght = name.length;
                                                      if (nameLenght == 0) {
                                                          name = 'Sonos Player';
                                                      } 
                                                      author = getState(id + '.ARTIST').val + ' | ' + getState(id + '.ALBUM').val;
                                                      if ((getState(id + '.ARTIST').val).length == 0) {
                                                          author = 'no music to control';               
                                                      }
                                                  }
                                          
                                                  //Logitech Squeezebox RPC
                                                  if (v2Adapter == 'squeezeboxrpc') {
                                                      media_icon = Icons.GetIcon('dlna');
                                                      let nameLenght = name.length;
                                                      if (nameLenght == 0) {
                                                          name = 'Squeezebox RPC';
                                                          author = 'no music to control';
                                                      } 
                                                  }
                                          
                                                  //Alexa2
                                                  if (v2Adapter == 'alexa2') {
                                                      media_icon = Icons.GetIcon('playlist-music');
                                                      let nameLenght = name.length;
                                                      if (nameLenght == 0) {
                                                          name = 'Alexa Player';
                                                          author = 'no music to control';  
                                                      } 
                                                  }
                                                  
                                                  let volume = getState(id + '.VOLUME').val;
                                                  var iconplaypause = Icons.GetIcon('pause'); //pause
                                                  var onoffbutton = 1374;
                                          
                                                  //Für alle Player
                                                  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 (getState(id + '.PAUSE').val === false && v2Adapter == 'squeezeboxrpc') {
                                                      onoffbutton = 65535;
                                                      iconplaypause = Icons.GetIcon('pause'); //pause
                                                  } else {
                                                      iconplaypause = Icons.GetIcon('play'); //play
                                                  }
                                          
                                                  if (Debug) console.log(v2Adapter);
                                          
                                                  let currentSpeaker = 'kein Speaker gefunden';
                                          
                                                  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') {
                                                      if(existsObject(([page.items[0].adapterPlayerInstance, 'Playername'].join('')))) {
                                                          currentSpeaker = getState(([page.items[0].adapterPlayerInstance, 'Playername'].join(''))).val;
                                                      }
                                                  }
                                                  //-------------------------------------------------------------------------------------------------------------
                                                  // nachfolgend alle Alexa-Devices (ist Online / Player- und Commands-Verzeichnis vorhanden) auflisten und verketten
                                                  // Wenn Konstante alexaSpeakerList mind. einen Eintrag enthält, wird die Konstante verwendet - ansonsten Alle Devices aus dem Alexa Adapter
                                                  let speakerlist = '';
                                                  if (page.items[0].speakerList.length > 0) {
                                                      for (let i_index in page.items[0].speakerList) {
                                                          speakerlist = speakerlist + page.items[0].speakerList[i_index] + '?';
                                                      }
                                                  } 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('')))) {
                                                              speakerlist = speakerlist + getState(i).val + '?';
                                                          }
                                                      }
                                                  }
                                                  speakerlist = speakerlist.substring(0, speakerlist.length - 1);
                                                  //--------------------------------------------------------------------------------------------------------------
                                          
                                                  out_msgs.push({
                                                      payload: 'entityUpd~' +                   //entityUpd
                                                          name + '~' +                          //heading
                                                          GetNavigationString(pageId) + '~' +   //navigation
                                                          id + '~' +                            //internalNameEntiy
                                                          media_icon + '~' +                    //icon
                                                          title + '~' +                         //title
                                                          author + '~' +                        //author
                                                          volume + '~' +                        //volume
                                                          iconplaypause + '~' +                 //playpauseicon
                                                          currentSpeaker + '~' +                //currentSpeaker
                                                          speakerlist + '~' +                   //speakerList-seperated-by-?
                                                          onoffbutton
                                                  });                        //On/Off Button Color
                                              }
                                              if (Debug) console.log(out_msgs);
                                              return out_msgs
                                          } catch (err) {
                                              console.warn('function GenerateMediaPage: ' + err.message);
                                          }
                                          

                                          }

                                          Brauchst Du nicht. ES FUNKTIONIERT!! Power Button ist stop/ein/aus Kombi und Play und Pause mit Iconwechseln gehen.

                                          So jetzt bitte Paypal Adresse (per PN?) für ne doppelte Kaffeespende bitte...

                                          Gruß Elluminatus

                                          P.S. Darf ich jetzt jemals noch eine Frage stellen, oder muss ich mich abmelden 😊 , ich sehe da nämlich die nächste am Horizont...

                                          https://paypal.me/armilarDE
                                          Dankeschön
                                          VG
                                          Armilar

                                          E Offline
                                          E Offline
                                          Elluminatus
                                          wrote on last edited by
                                          #216

                                          @armilar Papal ist raus. Klein aber von Herzen!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          530

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe