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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. SONOFF NSPanel mit Lovelace UI

NEWS

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

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

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

SONOFF NSPanel mit Lovelace UI

Geplant Angeheftet Gesperrt Verschoben Hardware
lovelace uinspanelsonoff
7.8k Beiträge 272 Kommentatoren 6.7m Aufrufe 254 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • U uSi

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

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

    @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

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

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

    U 1 Antwort Letzte Antwort
    0
    • ArmilarA Armilar

      @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

      U Offline
      U Offline
      uSi
      schrieb am zuletzt editiert von
      #193

      @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

      ArmilarA 1 Antwort Letzte Antwort
      0
      • U uSi

        @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

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

        @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

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

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

        U 1 Antwort Letzte Antwort
        0
        • ArmilarA Armilar

          @usi sagte in SONOFF NSPanel mit Lovelace UI:

          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

          @usi sagte in SONOFF NSPanel mit Lovelace UI:

          @armilar 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 Offline
          U Offline
          uSi
          schrieb am zuletzt editiert von
          #195

          @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

          ArmilarA 1 Antwort Letzte Antwort
          0
          • U uSi

            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

            @usi sagte in SONOFF NSPanel mit Lovelace UI:

            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

            @usi sagte in SONOFF NSPanel mit Lovelace UI:

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

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

            @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 = {

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

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

            U 1 Antwort Letzte Antwort
            0
            • ArmilarA Armilar

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

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

              Tausche die mal kurz aus durch

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

              und starte das Script erneut

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

              Zeige mal deine Einstellungen unter:

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

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

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

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

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

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

              U Offline
              U Offline
              uSi
              schrieb am zuletzt editiert von
              #197

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @usi sagte in SONOFF NSPanel mit Lovelace UI:

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

              Tausche die mal kurz aus durch

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

              und starte das Script erneut

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

              Zeige mal deine Einstellungen unter:

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

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

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

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

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

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

              Herzlichen Dank - Jetzt hat's geklappt!

              ArmilarA 1 Antwort Letzte Antwort
              0
              • ArmilarA Armilar

                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                Also ich steuere jetzt praktisch mit Pause und PowerIcon

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

                Kannst du auch gerne vorher testen...

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

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

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

                Also ich habe das bei mir mal soweit durchgespielt.

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

                Also mein Versuchsaufbau:

                Unter 0_userdata habe ich mal deinen Adapter nachgebildet.

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

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

                und im TS-Script so:

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

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

                0 = Pause

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

                1 = Play

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

                0 = Pause

                Kann ich beliebig oft wiederholen

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

                2 = Stop

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

                E Offline
                E Offline
                Elluminatus
                schrieb am zuletzt editiert von Elluminatus
                #198

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

                Also bei mir nicht unter userdata da installierter Adapter:

                LMS13.jpg

                der Alias:

                LMS14.jpg

                im TS-Script:

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

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

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

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

                ich drücke im NSPanel Pause und der Wert ist

                LMS15.jpg

                Ich drücke nochmal auf Pause und der Wert ist

                LMS16.jpg

                Nochmal auf Pause gedrückt

                LMS17.jpg

                Drücke ich auf den Power Button

                LMS18.jpg

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

                Ach und hier zur Vollständigkeit noch:

                LMS19.jpg

                LMS20.jpg

                LMS21.jpg

                Sorry für den ganzen Umstand. Gruß Elluminatus

                ArmilarA 1 Antwort Letzte Antwort
                0
                • U uSi

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

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

                  Tausche die mal kurz aus durch

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

                  und starte das Script erneut

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

                  Zeige mal deine Einstellungen unter:

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

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

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

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

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

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

                  Herzlichen Dank - Jetzt hat's geklappt!

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

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                  @usi sagte in SONOFF NSPanel mit Lovelace UI:

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

                  Tausche die mal kurz aus durch

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

                  und starte das Script erneut

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

                  Zeige mal deine Einstellungen unter:

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

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

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

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

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

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

                  Herzlichen Dank - Jetzt hat's geklappt!

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

                  Viel Spaß mit dem Panel

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

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

                  1 Antwort Letzte Antwort
                  0
                  • E Elluminatus

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

                    Also bei mir nicht unter userdata da installierter Adapter:

                    LMS13.jpg

                    der Alias:

                    LMS14.jpg

                    im TS-Script:

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

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

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

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

                    ich drücke im NSPanel Pause und der Wert ist

                    LMS15.jpg

                    Ich drücke nochmal auf Pause und der Wert ist

                    LMS16.jpg

                    Nochmal auf Pause gedrückt

                    LMS17.jpg

                    Drücke ich auf den Power Button

                    LMS18.jpg

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

                    Ach und hier zur Vollständigkeit noch:

                    LMS19.jpg

                    LMS20.jpg

                    LMS21.jpg

                    Sorry für den ganzen Umstand. Gruß Elluminatus

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

                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                    Also bei mir nicht unter userdata da installierter Adapter:

                    LMS13.jpg

                    der Alias:

                    LMS14.jpg

                    im TS-Script:

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

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

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

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

                    ich drücke im NSPanel Pause und der Wert ist

                    LMS15.jpg

                    Ich drücke nochmal auf Pause und der Wert ist

                    LMS16.jpg

                    Nochmal auf Pause gedrückt

                    LMS17.jpg

                    Drücke ich auf den Power Button

                    LMS18.jpg

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

                    Ach und hier zur Vollständigkeit noch:

                    LMS19.jpg

                    LMS20.jpg

                    LMS21.jpg

                    Sorry für den ganzen Umstand. Gruß Elluminatus

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

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

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

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

                    E 1 Antwort Letzte Antwort
                    0
                    • ArmilarA Armilar

                      @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                      Also bei mir nicht unter userdata da installierter Adapter:

                      LMS13.jpg

                      der Alias:

                      LMS14.jpg

                      im TS-Script:

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

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

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

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

                      ich drücke im NSPanel Pause und der Wert ist

                      LMS15.jpg

                      Ich drücke nochmal auf Pause und der Wert ist

                      LMS16.jpg

                      Nochmal auf Pause gedrückt

                      LMS17.jpg

                      Drücke ich auf den Power Button

                      LMS18.jpg

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

                      Ach und hier zur Vollständigkeit noch:

                      LMS19.jpg

                      LMS20.jpg

                      LMS21.jpg

                      Sorry für den ganzen Umstand. Gruß Elluminatus

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

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

                      E Offline
                      E Offline
                      Elluminatus
                      schrieb am zuletzt editiert von Elluminatus
                      #201

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

                      LMS22.jpg

                      Drücke ich Pause am NSPanel

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

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

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

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

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

                      Drücke ich auf Power

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

                      Drücke ich nochmal auf Power

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

                      Drücke ich jetzt auf Pause

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

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

                      ArmilarA 1 Antwort Letzte Antwort
                      0
                      • E Elluminatus

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

                        LMS22.jpg

                        Drücke ich Pause am NSPanel

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

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

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

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

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

                        Drücke ich auf Power

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

                        Drücke ich nochmal auf Power

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

                        Drücke ich jetzt auf Pause

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

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

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

                        @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                        LMS22.jpg

                        Drücke ich Pause am NSPanel

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

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

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

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

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

                        Drücke ich auf Power

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

                        Drücke ich nochmal auf Power

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

                        Drücke ich jetzt auf Pause

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

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

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

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

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

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

                        E 1 Antwort Letzte Antwort
                        0
                        • ArmilarA Armilar

                          @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                          LMS22.jpg

                          Drücke ich Pause am NSPanel

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

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

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

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

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

                          Drücke ich auf Power

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

                          Drücke ich nochmal auf Power

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

                          Drücke ich jetzt auf Pause

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

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

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

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

                          E Offline
                          E Offline
                          Elluminatus
                          schrieb am zuletzt editiert von
                          #203

                          @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                          @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                          LMS22.jpg

                          Drücke ich Pause am NSPanel

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

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

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

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

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

                          Drücke ich auf Power

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

                          Drücke ich nochmal auf Power

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

                          Drücke ich jetzt auf Pause

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

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

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

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

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

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

                          ArmilarA 2 Antworten Letzte Antwort
                          0
                          • E Elluminatus

                            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                            LMS22.jpg

                            Drücke ich Pause am NSPanel

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

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

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

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

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

                            Drücke ich auf Power

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

                            Drücke ich nochmal auf Power

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

                            Drücke ich jetzt auf Pause

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

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

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

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

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

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

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

                            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                            @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                            LMS22.jpg

                            Drücke ich Pause am NSPanel

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

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

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

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

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

                            Drücke ich auf Power

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

                            Drücke ich nochmal auf Power

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

                            Drücke ich jetzt auf Pause

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

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

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

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

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

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

                            Wir werden eine Lösung finden ;-)

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

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

                            1 Antwort Letzte Antwort
                            0
                            • E Elluminatus

                              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                              @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                              LMS22.jpg

                              Drücke ich Pause am NSPanel

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

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

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

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

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

                              Drücke ich auf Power

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

                              Drücke ich nochmal auf Power

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

                              Drücke ich jetzt auf Pause

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

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

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

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

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

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

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

                              @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                              @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                              LMS22.jpg

                              Drücke ich Pause am NSPanel

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

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

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

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

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

                              Drücke ich auf Power

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

                              Drücke ich nochmal auf Power

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

                              Drücke ich jetzt auf Pause

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

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

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

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

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

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

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

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

                              und

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

                              und die kannst du auch mal suchen und tauschen

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

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

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

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

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

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

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

                              E 1 Antwort Letzte Antwort
                              0
                              • ArmilarA Armilar

                                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

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

                                LMS22.jpg

                                Drücke ich Pause am NSPanel

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

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

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

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

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

                                Drücke ich auf Power

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

                                Drücke ich nochmal auf Power

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

                                Drücke ich jetzt auf Pause

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

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

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

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

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

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

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

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

                                und

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

                                und die kannst du auch mal suchen und tauschen

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

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

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

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

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

                                E Offline
                                E Offline
                                Elluminatus
                                schrieb am zuletzt editiert von Elluminatus
                                #206

                                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

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

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

                                }

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

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

                                Gruß Elluminatus

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

                                ArmilarA 2 Antworten Letzte Antwort
                                0
                                • E Elluminatus

                                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

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

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

                                  }

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

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

                                  Gruß Elluminatus

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

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

                                  @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                  @armilar sagte in SONOFF NSPanel mit Lovelace UI:

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

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

                                  }

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

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

                                  Gruß Elluminatus

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

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

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

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

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • E Elluminatus

                                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

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

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

                                    }

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

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

                                    Gruß Elluminatus

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

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

                                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

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

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

                                    }

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

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

                                    Gruß Elluminatus

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

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

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

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

                                    E 1 Antwort Letzte Antwort
                                    0
                                    • H Offline
                                      H Offline
                                      holgerwolf
                                      schrieb am zuletzt editiert von
                                      #209

                                      Hallo,

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

                                      Jetzt habe ich noch ein kleines Problem:

                                      Im Screensaver sind die Zahlen und Icons verrutscht:

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

                                      So sieht der entsprechende Teil im Script aus:

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

                                        Hallo,

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

                                        Jetzt habe ich noch ein kleines Problem:

                                        Im Screensaver sind die Zahlen und Icons verrutscht:

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

                                        So sieht der entsprechende Teil im Script aus:

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

                                        @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                                        Hallo,

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

                                        Jetzt habe ich noch ein kleines Problem:

                                        Im Screensaver sind die Zahlen und Icons verrutscht:

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

                                        So sieht der entsprechende Teil im Script aus:

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

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

                                        alternativeScreensaverLayout: true,
                                        

                                        auf

                                        alternativeScreensaverLayout: false,
                                        

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

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

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

                                        H 1 Antwort Letzte Antwort
                                        0
                                        • ArmilarA Armilar

                                          @holgerwolf sagte in SONOFF NSPanel mit Lovelace UI:

                                          Hallo,

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

                                          Jetzt habe ich noch ein kleines Problem:

                                          Im Screensaver sind die Zahlen und Icons verrutscht:

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

                                          So sieht der entsprechende Teil im Script aus:

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

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

                                          alternativeScreensaverLayout: true,
                                          

                                          auf

                                          alternativeScreensaverLayout: false,
                                          

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

                                          H Offline
                                          H Offline
                                          holgerwolf
                                          schrieb am zuletzt editiert von
                                          #211

                                          @armilar Stimmt :-)

                                          Dankeschön, das wars...

                                          ArmilarA 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          531

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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