Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. SONOFF NSPanel mit Lovelace UI

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @uSi last edited by 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 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

      U 1 Reply Last reply Reply Quote 0
      • U
        uSi @Armilar last edited by

        @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

        Armilar 1 Reply Last reply Reply Quote 0
        • Armilar
          Armilar Most Active Forum Testing @uSi last edited by 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 1 Reply Last reply Reply Quote 0
          • U
            uSi @Armilar last edited by

            @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!

            Armilar 1 Reply Last reply Reply Quote 0
            • E
              Elluminatus @Armilar last edited by 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

              Armilar 1 Reply Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @uSi last edited by

                @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

                1 Reply Last reply Reply Quote 0
                • Armilar
                  Armilar Most Active Forum Testing @Elluminatus last edited by

                  @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 1 Reply Last reply Reply Quote 0
                  • E
                    Elluminatus @Armilar last edited by 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

                    Armilar 1 Reply Last reply Reply Quote 0
                    • Armilar
                      Armilar Most Active Forum Testing @Elluminatus last edited by 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 1 Reply Last reply Reply Quote 0
                      • E
                        Elluminatus @Armilar last edited by

                        @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.

                        Armilar 2 Replies Last reply Reply Quote 0
                        • Armilar
                          Armilar Most Active Forum Testing @Elluminatus last edited by

                          @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 😉

                          1 Reply Last reply Reply Quote 0
                          • Armilar
                            Armilar Most Active Forum Testing @Elluminatus last edited by 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 1 Reply Last reply Reply Quote 0
                            • E
                              Elluminatus @Armilar last edited by 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...

                              Armilar 2 Replies Last reply Reply Quote 0
                              • Armilar
                                Armilar Most Active Forum Testing @Elluminatus last edited by 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...

                                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...

                                1 Reply Last reply Reply Quote 0
                                • Armilar
                                  Armilar Most Active Forum Testing @Elluminatus last edited by

                                  @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 1 Reply Last reply Reply Quote 0
                                  • H
                                    holgerwolf last edited by

                                    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,
                                    
                                    Armilar 1 Reply Last reply Reply Quote 0
                                    • Armilar
                                      Armilar Most Active Forum Testing @holgerwolf last edited by

                                      @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 1 Reply Last reply Reply Quote 0
                                      • H
                                        holgerwolf @Armilar last edited by

                                        @armilar Stimmt 🙂

                                        Dankeschön, das wars...

                                        Armilar 1 Reply Last reply Reply Quote 0
                                        • Armilar
                                          Armilar Most Active Forum Testing @holgerwolf last edited by

                                          @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 1 Reply Last reply Reply Quote 0
                                          • H
                                            holgerwolf @Armilar last edited by

                                            @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 Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            884
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            260
                                            7128
                                            4492661
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo