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

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

NEWS

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

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

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

SONOFF NSPanel mit Lovelace UI

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

    @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

    @armilar @wendy2702

    Dann passt -2500 als min und +2500 als max.

    Ich habe das mal so eingetragen. Habe jetz aber ein anderes Problem festgestellt.

    Der Wert wird solange aktualisiert bis ich das Panel einmal an tippe. Dann friert er ein und verändert sich nicht mehr.

    VIDEO-2023-02-03-09-29-55.mp4

    Kann das daran liegen das ich direkten Datenpunkt verwende und keinen Alias?

    Wenn nicht, was könnte sonst die Ursache sein bzw. welche logs/infos benötigt ihr noch?

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

    @wendy2702

    Nein, die Werte werden unabhängig von einem Datenpunkt oder Alias (ist die einzige Ausnahme, in der Datenpunkte ja möglich sind) im Script eigentlich getriggert. Muss ich mir detailliert ansehen, ob da etwas verloren gegangen ist.

    Habe den Wechsel zwischen Wetter und Werten eingeschaltet, da werden die Werte sowieso alle 15 Sekunden neu ermittelt und aktualisiert.

    Sehe ich mir an

    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.

    wendy2702W 1 Reply Last reply
    0
    • ArmilarA Armilar

      @wendy2702

      Nein, die Werte werden unabhängig von einem Datenpunkt oder Alias (ist die einzige Ausnahme, in der Datenpunkte ja möglich sind) im Script eigentlich getriggert. Muss ich mir detailliert ansehen, ob da etwas verloren gegangen ist.

      Habe den Wechsel zwischen Wetter und Werten eingeschaltet, da werden die Werte sowieso alle 15 Sekunden neu ermittelt und aktualisiert.

      Sehe ich mir an

      wendy2702W Offline
      wendy2702W Offline
      wendy2702
      wrote on last edited by
      #2043

      @armilar Danke und keinen Stress.

      Bitte keine Fragen per PN, die gehören ins Forum!

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

      1 Reply Last reply
      1
      • N niiccooo1

        @armilar
        Nochmal ein Feedback zum SpotifyMediaPlayer.

        Ich habe den Aliaspath gegen eine constante Variable ersetzt und den MediaPlayer ein paar eben nach oben geschoben.
        Anschließend hatte ich Einträge in der Speakerlist.

        Das Problem was jetzt vorliegt (liegt höchstwahrscheinlich am Adapter selbst), ich kann die Geräte nicht ändern. Über die DeviceList werden alle möglichen Geräte angezeigt. Bei Auswahl eines anderen abzuspielenden Gerätes springt der Eintrag wieder auf das aktuelle Gerät zurück.

        Kann das jemand nachvollziehen?

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

        @niiccooo1

        Es kann beim Spotify-Premium nur auf Devices umgeschaltet werden, die auch in der Liste vorhanden sind:

        spotify-premium.0.devices.availableDeviceListString

        Bitte prüfen

        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.

        N 1 Reply Last reply
        1
        • ArmilarA Armilar

          @niiccooo1

          Es kann beim Spotify-Premium nur auf Devices umgeschaltet werden, die auch in der Liste vorhanden sind:

          spotify-premium.0.devices.availableDeviceListString

          Bitte prüfen

          N Offline
          N Offline
          niiccooo1
          wrote on last edited by niiccooo1
          #2045

          @armilar
          Danke für den Tipp.

          Die Sonos Geräte bekommen zwar einen eigenen Ordner mit Datenpunkten,
          tauchen aber im Datenpunkt

          spotify-premium.0.devices.availableDeviceListString

          nicht auf.

          Werde ich später testen.

          1 Reply Last reply
          0
          • ArmilarA Armilar

            @carlos

            Habe jetzt mal ein neues Blocky-Beispiel für die cardPower zum spielen und ausprobieren gebaut.

            "cardPower simple example"

            Das Blockly:
            bb839e1f-3429-4677-8ff1-ab8b921c3b18-cardPower_simple_Example.jpg

            https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/cardPower_simple_example.xml

            Beim ersten Aufruf sollte die card so aussehen:
            49d009ad-aac1-4780-a179-ce596eceb073-image.png

            Die restlichen Variablen können analog der id: 1 verändert werden, oder durch Datenpunkte mit echter Logik ersetzt werden.

            Ich denke das wird dem allgemeinen Verständnis helfen...

            PS.:

            • direction wurde im Script noch nie abgefragt und ist deshalb im Beispiel auch nicht mehr enthalten
            • speed_id_1-6 kann auch negative Werte enthalten und kehrt somit die Laufrichtung des Punktes um (Empfehlung -5 bis +5)
            • Der mittlere größere Block hat kein Speed
            • Ich habe einen Timer eingebaut, der jede Minute das JSONzusammenbaut und in den Datenpunkt schreibt. Bei Bedarf die Zeit ändern oder durch einen Trigger ersetzten
            • Die Farben gehen von 0=weiß, 1=grün bis 10=rot
            H Online
            H Online
            holgerwolf
            wrote on last edited by holgerwolf
            #2046

            @armilar Muss in dem Script der Trigger nicht auch um die Variablen Erstellung drumrum?

            Siehe nächsten Beitrag.

            1 Reply Last reply
            0
            • ArmilarA Armilar

              @carlos

              Habe jetzt mal ein neues Blocky-Beispiel für die cardPower zum spielen und ausprobieren gebaut.

              "cardPower simple example"

              Das Blockly:
              bb839e1f-3429-4677-8ff1-ab8b921c3b18-cardPower_simple_Example.jpg

              https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/cardPower_simple_example.xml

              Beim ersten Aufruf sollte die card so aussehen:
              49d009ad-aac1-4780-a179-ce596eceb073-image.png

              Die restlichen Variablen können analog der id: 1 verändert werden, oder durch Datenpunkte mit echter Logik ersetzt werden.

              Ich denke das wird dem allgemeinen Verständnis helfen...

              PS.:

              • direction wurde im Script noch nie abgefragt und ist deshalb im Beispiel auch nicht mehr enthalten
              • speed_id_1-6 kann auch negative Werte enthalten und kehrt somit die Laufrichtung des Punktes um (Empfehlung -5 bis +5)
              • Der mittlere größere Block hat kein Speed
              • Ich habe einen Timer eingebaut, der jede Minute das JSONzusammenbaut und in den Datenpunkt schreibt. Bei Bedarf die Zeit ändern oder durch einen Trigger ersetzten
              • Die Farben gehen von 0=weiß, 1=grün bis 10=rot
              H Online
              H Online
              holgerwolf
              wrote on last edited by
              #2047

              @armilar

              @armilar sagte in SONOFF NSPanel mit Lovelace UI:

              @carlos

              Habe jetzt mal ein neues Blocky-Beispiel für die cardPower zum spielen und ausprobieren gebaut.

              "cardPower simple example"

              Das Blockly:
              bb839e1f-3429-4677-8ff1-ab8b921c3b18-cardPower_simple_Example.jpg

              https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/cardPower_simple_example.xml

              Beim ersten Aufruf sollte die card so aussehen:
              49d009ad-aac1-4780-a179-ce596eceb073-image.png

              Die restlichen Variablen können analog der id: 1 verändert werden, oder durch Datenpunkte mit echter Logik ersetzt werden.

              Ich denke das wird dem allgemeinen Verständnis helfen...

              PS.:

              • direction wurde im Script noch nie abgefragt und ist deshalb im Beispiel auch nicht mehr enthalten
              • speed_id_1-6 kann auch negative Werte enthalten und kehrt somit die Laufrichtung des Punktes um (Empfehlung -5 bis +5)
              • Der mittlere größere Block hat kein Speed
              • Ich habe einen Timer eingebaut, der jede Minute das JSONzusammenbaut und in den Datenpunkt schreibt. Bei Bedarf die Zeit ändern oder durch einen Trigger ersetzten
              • Die Farben gehen von 0=weiß, 1=grün bis 10=rot

              Muss in dem Script der Trigger nicht auch um die Variablen Erstellung drumrum. Ich habe immer alte Werte zum Zeitpunkt des Scriptspeicherns.

              ArmilarA 2 Replies Last reply
              0
              • H holgerwolf

                @armilar

                @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                @carlos

                Habe jetzt mal ein neues Blocky-Beispiel für die cardPower zum spielen und ausprobieren gebaut.

                "cardPower simple example"

                Das Blockly:
                bb839e1f-3429-4677-8ff1-ab8b921c3b18-cardPower_simple_Example.jpg

                https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/cardPower_simple_example.xml

                Beim ersten Aufruf sollte die card so aussehen:
                49d009ad-aac1-4780-a179-ce596eceb073-image.png

                Die restlichen Variablen können analog der id: 1 verändert werden, oder durch Datenpunkte mit echter Logik ersetzt werden.

                Ich denke das wird dem allgemeinen Verständnis helfen...

                PS.:

                • direction wurde im Script noch nie abgefragt und ist deshalb im Beispiel auch nicht mehr enthalten
                • speed_id_1-6 kann auch negative Werte enthalten und kehrt somit die Laufrichtung des Punktes um (Empfehlung -5 bis +5)
                • Der mittlere größere Block hat kein Speed
                • Ich habe einen Timer eingebaut, der jede Minute das JSONzusammenbaut und in den Datenpunkt schreibt. Bei Bedarf die Zeit ändern oder durch einen Trigger ersetzten
                • Die Farben gehen von 0=weiß, 1=grün bis 10=rot

                Muss in dem Script der Trigger nicht auch um die Variablen Erstellung drumrum. Ich habe immer alte Werte zum Zeitpunkt des Scriptspeicherns.

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

                @holgerwolf

                Welcher Trigger?

                Das abgebildete Blockly arbeitet zyklisch (so wie eingestellt jede Minute)

                83d60365-b105-4d14-9a36-ae20d559c3cf-image.png

                Das heißt, was auch immer dort verarbeitet wird erzeigt jede Minute einen cardPower-String

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

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

                H 1 Reply Last reply
                0
                • ArmilarA Armilar

                  @holgerwolf

                  Welcher Trigger?

                  Das abgebildete Blockly arbeitet zyklisch (so wie eingestellt jede Minute)

                  83d60365-b105-4d14-9a36-ae20d559c3cf-image.png

                  Das heißt, was auch immer dort verarbeitet wird erzeigt jede Minute einen cardPower-String

                  H Online
                  H Online
                  holgerwolf
                  wrote on last edited by
                  #2049

                  @armilar Die Werte für die Variablen"value_ID_XX" werden doch drüber gesetzt.
                  Der Zeitplan stellt dann jede Minute den gleichen String zusammen.

                  Habe den Zeitplan jetzt mal komplett um alles gelegt und schon passt es.

                  1 Reply Last reply
                  1
                  • H holgerwolf

                    @armilar

                    @armilar sagte in SONOFF NSPanel mit Lovelace UI:

                    @carlos

                    Habe jetzt mal ein neues Blocky-Beispiel für die cardPower zum spielen und ausprobieren gebaut.

                    "cardPower simple example"

                    Das Blockly:
                    bb839e1f-3429-4677-8ff1-ab8b921c3b18-cardPower_simple_Example.jpg

                    https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/cardPower_simple_example.xml

                    Beim ersten Aufruf sollte die card so aussehen:
                    49d009ad-aac1-4780-a179-ce596eceb073-image.png

                    Die restlichen Variablen können analog der id: 1 verändert werden, oder durch Datenpunkte mit echter Logik ersetzt werden.

                    Ich denke das wird dem allgemeinen Verständnis helfen...

                    PS.:

                    • direction wurde im Script noch nie abgefragt und ist deshalb im Beispiel auch nicht mehr enthalten
                    • speed_id_1-6 kann auch negative Werte enthalten und kehrt somit die Laufrichtung des Punktes um (Empfehlung -5 bis +5)
                    • Der mittlere größere Block hat kein Speed
                    • Ich habe einen Timer eingebaut, der jede Minute das JSONzusammenbaut und in den Datenpunkt schreibt. Bei Bedarf die Zeit ändern oder durch einen Trigger ersetzten
                    • Die Farben gehen von 0=weiß, 1=grün bis 10=rot

                    Muss in dem Script der Trigger nicht auch um die Variablen Erstellung drumrum. Ich habe immer alte Werte zum Zeitpunkt des Scriptspeicherns.

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

                    @holgerwolf

                    921d2d01-1af2-41db-8f19-c1084943af46-image.png

                    Für jeden Wert muss natürlich ein Datenpunkt zugewiesen werden. Die Scheduler sollte die Variablen umschließen, da sie sonst nicht erneut abgerufen werden --> ja

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

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

                    1 Reply Last reply
                    0
                    • wendy2702W wendy2702

                      @tt-tom sagte in SONOFF NSPanel mit Lovelace UI:

                      @armilar @wendy2702

                      Dann passt -2500 als min und +2500 als max.

                      Ich habe das mal so eingetragen. Habe jetz aber ein anderes Problem festgestellt.

                      Der Wert wird solange aktualisiert bis ich das Panel einmal an tippe. Dann friert er ein und verändert sich nicht mehr.

                      VIDEO-2023-02-03-09-29-55.mp4

                      Kann das daran liegen das ich direkten Datenpunkt verwende und keinen Alias?

                      Wenn nicht, was könnte sonst die Ursache sein bzw. welche logs/infos benötigt ihr noch?

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

                      @wendy2702

                      3f1086b1-0f48-497f-9d5a-89674fde0b94-Nextion_Editor_eWhFTF2uXG.gif

                      Habe in der Emulation (das gleiche im Original-Panel) mal nachgestellt und einfach unterschiedliche Werte in den Datenpunkt eingegeben. Ich habe das Verhalten nicht...

                      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.

                      wendy2702W 1 Reply Last reply
                      0
                      • ArmilarA Armilar

                        @wendy2702

                        3f1086b1-0f48-497f-9d5a-89674fde0b94-Nextion_Editor_eWhFTF2uXG.gif

                        Habe in der Emulation (das gleiche im Original-Panel) mal nachgestellt und einfach unterschiedliche Werte in den Datenpunkt eingegeben. Ich habe das Verhalten nicht...

                        wendy2702W Offline
                        wendy2702W Offline
                        wendy2702
                        wrote on last edited by
                        #2052

                        @armilar das heißt auch nach antippen des displays (Dimmer aus) wird weiterhin aktualisiert?

                        Gibt es irgendwo logs die ich mir ansehen kann vom/im Display?

                        Sonst werden die Daten ja vom Mqtt Adapter übertragen, wenn da keine aktuellen Werte mehr übertragen werden läge am Server. Sonst eher am Display, oder?

                        Bitte keine Fragen per PN, die gehören ins Forum!

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

                        ArmilarA 1 Reply Last reply
                        0
                        • wendy2702W wendy2702

                          @armilar das heißt auch nach antippen des displays (Dimmer aus) wird weiterhin aktualisiert?

                          Gibt es irgendwo logs die ich mir ansehen kann vom/im Display?

                          Sonst werden die Daten ja vom Mqtt Adapter übertragen, wenn da keine aktuellen Werte mehr übertragen werden läge am Server. Sonst eher am Display, oder?

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

                          @wendy2702

                          519f5034-0ec6-4c46-8fdf-b661fe11a813-image.png

                          Ja die werden kontinuierlich getriggert. Die Funktionalität ist seit der ersten Version des Scriptes drin. Ist auch völlig egal, ob ein Screensaver an ist oder nicht. Die werden befüllt...

                          Kannst zwischen die Zeilen auch mit:

                          console.log("Was auch immer");
                          

                          Logs einbauen.

                          • Das Script triggert die Datenpunkte und Sendet ein Update der Werte über die function HandleScreensaverUpdate()
                            Damit werden alle Statuswerte der unteren Zeile aktualisiert.
                          • Danach wird ein Payload zur Aktualisierung via MQTT an das Panel gesendet...

                          Das gleiche passiert aber auch an anderer Stelle mit der Zeit und dem Datum.

                          Was mich mal interessieren würde ist, passiert das permanent oder wirklich immer?

                          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.

                          wendy2702W 1 Reply Last reply
                          0
                          • ArmilarA Armilar

                            @wendy2702

                            519f5034-0ec6-4c46-8fdf-b661fe11a813-image.png

                            Ja die werden kontinuierlich getriggert. Die Funktionalität ist seit der ersten Version des Scriptes drin. Ist auch völlig egal, ob ein Screensaver an ist oder nicht. Die werden befüllt...

                            Kannst zwischen die Zeilen auch mit:

                            console.log("Was auch immer");
                            

                            Logs einbauen.

                            • Das Script triggert die Datenpunkte und Sendet ein Update der Werte über die function HandleScreensaverUpdate()
                              Damit werden alle Statuswerte der unteren Zeile aktualisiert.
                            • Danach wird ein Payload zur Aktualisierung via MQTT an das Panel gesendet...

                            Das gleiche passiert aber auch an anderer Stelle mit der Zeit und dem Datum.

                            Was mich mal interessieren würde ist, passiert das permanent oder wirklich immer?

                            wendy2702W Offline
                            wendy2702W Offline
                            wendy2702
                            wrote on last edited by
                            #2054

                            @armilar ok.

                            Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

                            Bitte keine Fragen per PN, die gehören ins Forum!

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

                            ArmilarA 2 Replies Last reply
                            0
                            • wendy2702W wendy2702

                              @armilar ok.

                              Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

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

                              @wendy2702

                              Versuche mal den Ereignisschwellenwert in der Admin-Instanz hochzusetzen.

                              1b932394-f656-4183-b85e-a3ab861d125a-image.png

                              Hat mir bei einigen Tests schon den Tag versaut, weil einige Adapter so viele Ereignisse in einer Sekunde produzieren wie nichts gutes.

                              Bestes Beispiel für solche Adapter sind Börsen, Corona, Binance, etc.

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

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

                              1 Reply Last reply
                              0
                              • wendy2702W wendy2702

                                @armilar ok.

                                Gerade noch kurz mal probiert. Wenn der Wert eingefroren ist, ich dann den screensaver verlasse. Warte bis er wieder zurück zum screensaver springt wird der Wert wieder aktualisiert.

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

                                @wendy2702

                                ff843b09-7ad5-488f-a581-5549b9c65e71-image.png

                                Der Haken "Nur bei Änderungen publizieren" ist bei dir ebenfalls nicht gesetzt?

                                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.

                                wendy2702W 1 Reply Last reply
                                0
                                • ArmilarA Armilar

                                  @wendy2702

                                  ff843b09-7ad5-488f-a581-5549b9c65e71-image.png

                                  Der Haken "Nur bei Änderungen publizieren" ist bei dir ebenfalls nicht gesetzt?

                                  wendy2702W Offline
                                  wendy2702W Offline
                                  wendy2702
                                  wrote on last edited by wendy2702
                                  #2057

                                  @armilar Den haken habe ich nicht drin.

                                  Wert im Admin hoch gesetzt.

                                  Gleich Mal schnell testen

                                  EDIT: Hat leider nichts geändert.

                                  Bitte keine Fragen per PN, die gehören ins Forum!

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

                                  ArmilarA 1 Reply Last reply
                                  0
                                  • wendy2702W wendy2702

                                    @armilar Den haken habe ich nicht drin.

                                    Wert im Admin hoch gesetzt.

                                    Gleich Mal schnell testen

                                    EDIT: Hat leider nichts geändert.

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

                                    @wendy2702

                                    Kannst du mal kurz die Einstellungen vom Screensaver-Wetter senden? Servicepage...

                                    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.

                                    wendy2702W 1 Reply Last reply
                                    0
                                    • ArmilarA Armilar

                                      @wendy2702

                                      Kannst du mal kurz die Einstellungen vom Screensaver-Wetter senden? Servicepage...

                                      wendy2702W Offline
                                      wendy2702W Offline
                                      wendy2702
                                      wrote on last edited by wendy2702
                                      #2059

                                      @armilar bin unterwegs.

                                      Kommt spätestens morgen.

                                      Edit:

                                      @Armilar : meinst du das?

                                       Parameter - Bitte anpassen - siehe auch Wiki
                                          firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                      ScreensaverEntityIcon: 'solar-power', 
                                                                      ScreensaverEntityText: 'Leistung', 
                                                                      ScreensaverEntityUnitText: ' W', 
                                                                      ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                                    },
                                          secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                                      ScreensaverEntityFactor: (1000/3600),                       //New
                                                                      ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                                      ScreensaverEntityIcon: 'weather-windy', 
                                                                      ScreensaverEntityText: "Wind", 
                                                                      ScreensaverEntityUnitText: 'km/h', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                                    },
                                          thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                                      ScreensaverEntityIcon: 'solar-power', 
                                                                      ScreensaverEntityText: 'UV', 
                                                                      ScreensaverEntityUnitText: '', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                                    },
                                          fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                                      ScreensaverEntityFactor: 1,                                 //New
                                                                      ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                      ScreensaverEntityIcon: 'water-percent', 
                                                                      ScreensaverEntityText: 'Luft', 
                                                                      ScreensaverEntityUnitText: '%', 
                                                                      ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                                    },
                                      
                                      

                                      Bitte keine Fragen per PN, die gehören ins Forum!

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

                                      T 2 Replies Last reply
                                      1
                                      • wendy2702W wendy2702

                                        @armilar bin unterwegs.

                                        Kommt spätestens morgen.

                                        Edit:

                                        @Armilar : meinst du das?

                                         Parameter - Bitte anpassen - siehe auch Wiki
                                            firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                                        ScreensaverEntityFactor: 1,                                 //New
                                                                        ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                        ScreensaverEntityIcon: 'solar-power', 
                                                                        ScreensaverEntityText: 'Leistung', 
                                                                        ScreensaverEntityUnitText: ' W', 
                                                                        ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                                      },
                                            secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                                        ScreensaverEntityFactor: (1000/3600),                       //New
                                                                        ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                                        ScreensaverEntityIcon: 'weather-windy', 
                                                                        ScreensaverEntityText: "Wind", 
                                                                        ScreensaverEntityUnitText: 'km/h', 
                                                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                                      },
                                            thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                                        ScreensaverEntityFactor: 1,                                 //New
                                                                        ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                                        ScreensaverEntityIcon: 'solar-power', 
                                                                        ScreensaverEntityText: 'UV', 
                                                                        ScreensaverEntityUnitText: '', 
                                                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                                      },
                                            fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                                        ScreensaverEntityFactor: 1,                                 //New
                                                                        ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                        ScreensaverEntityIcon: 'water-percent', 
                                                                        ScreensaverEntityText: 'Luft', 
                                                                        ScreensaverEntityUnitText: '%', 
                                                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                                      },
                                        
                                        
                                        T Offline
                                        T Offline
                                        TT-Tom
                                        wrote on last edited by
                                        #2060

                                        @wendy2702

                                        ich kann es bei mir jetzt nachstellen, wir arbeiten an der Problemlösung.

                                        Gruß Tom
                                        https://github.com/tt-tom17
                                        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                        NSPanel Script Wiki
                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

                                        1 Reply Last reply
                                        0
                                        • wendy2702W wendy2702

                                          @armilar bin unterwegs.

                                          Kommt spätestens morgen.

                                          Edit:

                                          @Armilar : meinst du das?

                                           Parameter - Bitte anpassen - siehe auch Wiki
                                              firstScreensaverEntity:   { ScreensaverEntity: 'modbus.3.holdingRegisters.20498_Wirkenergie_Total',
                                                                          ScreensaverEntityFactor: 1,                                 //New
                                                                          ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                          ScreensaverEntityIcon: 'solar-power', 
                                                                          ScreensaverEntityText: 'Leistung', 
                                                                          ScreensaverEntityUnitText: ' W', 
                                                                          ScreensaverEntityIconColor: {'val_min': -2500, 'val_max': 2500} 
                                                                        },
                                              secondScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.windgusts_value', 
                                                                          ScreensaverEntityFactor: (1000/3600),                       //New
                                                                          ScreensaverEntityDecimalPlaces: 1,                          //New 
                                                                          ScreensaverEntityIcon: 'weather-windy', 
                                                                          ScreensaverEntityText: "Wind", 
                                                                          ScreensaverEntityUnitText: 'km/h', 
                                                                          ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} 
                                                                        },
                                              thirdScreensaverEntity:   { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.uv_index_value',
                                                                          ScreensaverEntityFactor: 1,                                 //New
                                                                          ScreensaverEntityDecimalPlaces: 0,                          //New  
                                                                          ScreensaverEntityIcon: 'solar-power', 
                                                                          ScreensaverEntityText: 'UV', 
                                                                          ScreensaverEntityUnitText: '', 
                                                                          ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 9} 
                                                                        },
                                              fourthScreensaverEntity:  { ScreensaverEntity: 'daswetter.0.NextHours.Location_1.Day_1.current.humidity_value', 
                                                                          ScreensaverEntityFactor: 1,                                 //New
                                                                          ScreensaverEntityDecimalPlaces: 0,                          //New 
                                                                          ScreensaverEntityIcon: 'water-percent', 
                                                                          ScreensaverEntityText: 'Luft', 
                                                                          ScreensaverEntityUnitText: '%', 
                                                                          ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100, 'val_best': 65} 
                                                                        },
                                          
                                          
                                          T Offline
                                          T Offline
                                          TT-Tom
                                          wrote on last edited by TT-Tom
                                          #2061

                                          @wendy2702

                                          so wir haben eine Lösung gefunden, bitte als Hotfix die Funktion HandleButtonEvent komplett austauschen mit folgendem Code im Spoiler

                                          function HandleButtonEvent(words: any): void {
                                             try {
                                                 let tempid = words[2].split('?');
                                                 let id = tempid[0];
                                                 let buttonAction = words[3];
                                          
                                                 if (Debug) {
                                                     console.log(words[0] + ' - ' + words[1] + ' - ' + words[2] + ' - ' + words[3] + ' - ' + words[4] + ' - PageId: ' + pageId);
                                                 }
                                          
                                                 if ((words[2]).substring(0, 8) == 'navigate') {
                                                     GeneratePage(eval((words[2]).substring(9, (words[2]).length)));
                                                     return;
                                                 }
                                          
                                                 if (words[2] == 'bNext' || words[2] == 'bPrev' || words[2] == 'bUp' || words[2] == 'bHome' || words[2] == 'bSubNext' || words[2] == 'bSubPrev' ) {
                                                     buttonAction = words[2];
                                                 }
                                          
                                                 if (Debug) {
                                                     console.log(buttonAction);
                                                 }
                                          
                                                 let pageNum:number = 0;
                                          
                                                 if (buttonAction.startsWith('swipe')) {
                                                     buttonAction = 'bExit';
                                                 }
                                                 switch (buttonAction) {
                                          
                                                     case 'bUp':
                                                         if (pageId < 0) { // Prüfen, ob button1page oder button2page
                                                             pageId = 0;
                                                             UnsubscribeWatcher();
                                                             GeneratePage(config.pages[pageId]);
                                                         } else {
                                                             pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                                             pageId = pageNum;
                                                             UnsubscribeWatcher();
                                                             if (activePage != undefined && activePage.parent != undefined) {
                                                                 //update pageID
                                                                 for (let i = 0; i < config.pages.length; i++) {
                                                                     if (config.pages[i] == activePage.parent) {
                                                                         pageId = i;
                                                                         break;
                                                                     }
                                                                 }
                                                                 GeneratePage(activePage.parent);
                                                             }
                                                             else {
                                                                 GeneratePage(config.pages[pageId]);
                                                             }
                                                             break;
                                                         }
                                                         break;
                                                     case 'bNext':
                                                         pageNum = (((pageId + 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                                         pageId = pageNum;
                                                         UnsubscribeWatcher();
                                                         GeneratePage(config.pages[pageId]);
                                                         break;
                                                     case 'bSubNext':
                                                         UnsubscribeWatcher();
                                                         GeneratePage(eval(activePage.next));
                                                         break;
                                                     case 'bPrev':
                                                         pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
                                                         pageId = pageNum;
                                                         UnsubscribeWatcher();
                                                         if (activePage != undefined && activePage.parent != undefined) {
                                                             //update pageID
                                                             for (let i = 0; i < config.pages.length; i++) {
                                                                 if (config.pages[i] == activePage.parent) {
                                                                     pageId = i;
                                                                     break;
                                                                 }
                                                             }
                                                             GeneratePage(activePage.parent);
                                                         }
                                                         else {
                                                             GeneratePage(config.pages[pageId]);
                                                         }
                                                         break;
                                                     case 'bSubPrev':          
                                                         UnsubscribeWatcher();
                                                         GeneratePage(eval(activePage.prev));
                                                         break;
                                                     case 'bExit':
                                                         if (getState(NSPanel_Path + 'Config.Screensaver.screenSaverDoubleClick').val && words[2] == 'screensaver') {
                                                             if (words[4] >= 2) {
                                                                 setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                                                 setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                                                 if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                                                     pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val;
                                                                     activePage = config.pages[pageId];
                                                                     GeneratePage(activePage);
                                                                 } else {
                                                                     GeneratePage(activePage);
                                                                 }
                                                             } else {
                                                                 setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                                                 setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                                                 screensaverEnabled = true;
                                                                 break;
                                                             }
                                                         } else {
                                                             if (Debug) {
                                                                 console.log('bExit: ' + words[4] + ' - ' + pageId);
                                                             }
                                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyHeading', '');
                                                             setIfExists(NSPanel_Path + 'ScreensaverInfo.popupNotifyText', '');
                                                             if (existsObject(NSPanel_Path + 'ScreensaverInfo.bExitPage') && getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val != null) {
                                                                 pageId = getState(NSPanel_Path + 'ScreensaverInfo.bExitPage').val
                                                                 activePage = config.pages[pageId];
                                                                 GeneratePage(activePage);
                                                             } else {
                                                                 GeneratePage(activePage);
                                                             }    
                                                         }
                                                         break;
                                                     case 'bHome':
                                                         if (Debug) {
                                                             console.log('bExit: ' + words[4] + ' - ' + pageId);
                                                         }
                                                         UnsubscribeWatcher();
                                                         if (activePage.home != undefined) {
                                                             GeneratePage(eval(activePage.home));
                                                         } else {
                                                             GeneratePage(config.pages[0]);
                                                         }
                                                         break;
                                                     case 'notifyAction':
                                                         if (words[4] == 'yes') {
                                                             setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                             setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true });
                                                         } else if (words[4] == 'no') {
                                                             setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                             setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true });
                                                         }
                                          
                                                         setIfExists(config.panelSendTopic, 'exitPopup');
                                          
                                                         break;
                                                     case 'OnOff':
                                                         if (existsObject(id)) {
                                                             let action = false;
                                                             if (words[4] == '1')
                                                                 action = true;
                                                             let o = getObject(id);
                                                             switch (o.common.role) {
                                                                 case 'level.mode.fan':
                                                                 case 'socket':
                                                                 case 'light':
                                                                     let pageItem = findPageItem(id);	
                                             						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                                             							triggerButton(id + ".SET");
                                             						}	
                                             						else {	
                                             							setIfExists(id + '.SET', action);
                                             						}		
                                             						break;
                                                                 case 'dimmer':
                                                                     setIfExists(id + '.ON_SET', action) ? true : setIfExists(id + '.ON_ACTUAL', action);
                                                                     break;
                                                                 case 'ct':
                                                                     setIfExists(id + '.ON', action);
                                                                     break;
                                                                 case 'rgb':
                                                                 case 'rgbSingle':
                                                                 case 'hue':
                                                                     setIfExists(id + '.ON_ACTUAL', action);
                                                             }
                                                         }
                                                         break;
                                                     case 'button':
                                                         if (existsObject(id)) {
                                                             let action = false;
                                                             if (words[4] == '1')
                                                                 action = true;
                                                             let o = getObject(id);
                                                             switch (o.common.role) {
                                                                 case 'lock':
                                                                 case 'button':
                                                                     toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
                                                                     break; 
                                                                 case 'buttonSensor':
                                                                     if (existsObject(id + '.ACTUAL')) {
                                                                         toggleState(id + '.ACTUAL');
                                                                     }
                                                                     break;
                                                                 case 'socket':
                                                                 case 'light':
                                                                     // Änderung für Monobutton	
                                                                     let pageItem = findPageItem(id);	
                                             						if(pageItem.monobutton != undefined && pageItem.monobutton == true){	
                                             							triggerButton(id + ".SET");
                                             						}	
                                             						else {	
                                             							toggleState(id + ".SET") ? true : toggleState(id + ".ON_SET");
                                             						}	
                                             						break;	
                                                                 case 'dimmer':
                                                                     toggleState(id + '.ON_SET') ? true : toggleState(id + '.ON_ACTUAL');
                                                                     break;
                                                                 case 'ct':
                                                                     toggleState(id + '.ON');
                                                                     break;
                                                                 case 'rgb':
                                                                 case 'rgbSingle':
                                                                 case 'hue': // Armilar
                                                                     toggleState(id + '.ON_ACTUAL');
                                                                 case 'media':
                                                                     if (tempid[1] == 'repeat') {
                                                                         let pageItemRepeat = findPageItem(id);
                                                                         let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance;
                                                                         let adapterRepeat = adapterInstanceRepeat.split('.');
                                                                         let deviceAdapterRP = adapterRepeat[0];
                                          
                                                                         switch (deviceAdapterRP) {
                                                                             case 'spotify-premium':
                                                                                 let stateSpotifyRepeat = getState(id + '.REPEAT').val
                                                                                 if (stateSpotifyRepeat == 'off') {
                                                                                     setIfExists(id + '.REPEAT', 'context');
                                                                                 } else if (stateSpotifyRepeat == 'context') {
                                                                                     setIfExists(id + '.REPEAT', 'track');
                                                                                 } else if (stateSpotifyRepeat == 'track') {
                                                                                     setIfExists(id + '.REPEAT', 'off');
                                                                                 }
                                                                                 break;
                                                                             case 'alexa2':
                                                                                 try {
                                                                                     if (getState(id + '.REPEAT').val == 'false') {
                                                                                         setIfExists(id + '.REPEAT', true);
                                                                                     } else {
                                                                                         setIfExists(id + '.REPEAT', false);
                                                                                     }
                                                                                 } catch (err) {
                                                                                     console.log('Repeat kann nicht verändert werden');
                                                                                 }
                                                                                 break;
                                                                             case 'volumio':
                                                                                 request({ url:`${getState(adapterInstanceRepeat+'info.host').val}/api/commands/?cmd=repeat`, headers: {'User-Agent': 'ioBroker'} }, 
                                                                                     async (error, response, result)=>{}); /* nothing todo @ error */
                                                                                 break;
                                                                         }
                                                                     }
                                                             }
                                                         }
                                                         break;
                                                     case 'up':
                                                         setIfExists(id + '.OPEN', true);
                                                         break;
                                                     case 'stop':
                                                         setIfExists(id + '.STOP', true);
                                                         break;
                                                     case 'down':
                                                         setIfExists(id + '.CLOSE', true);
                                                         break;
                                                     case 'positionSlider':
                                                         (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                         timeoutSlider = setTimeout(async function () {
                                                             setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                                         }, 250);
                                                         break;
                                                     case 'tiltOpen':
                                                         setIfExists(id + '.TILT_OPEN', true);
                                                         break;
                                                     case 'tiltStop':
                                                         setIfExists(id + '.TILT_STOP', true);
                                                         break;
                                                     case 'tiltClose':
                                                         setIfExists(id + '.TILT_CLOSE', true);
                                                         break;
                                                     case 'tiltSlider':
                                                         (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                         timeoutSlider = setTimeout(async function () {
                                                             setIfExists(id + '.TILT_SET', parseInt(words[4])) ? true : setIfExists(id + '.TILT_ACTUAL', parseInt(words[4]));
                                                         }, 250);
                                                         break;
                                                     case 'brightnessSlider':
                                                         (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                         timeoutSlider = setTimeout(async function () {
                                                             if (existsObject(id)) {
                                                                 let o = getObject(id);
                                                                 let pageItem = findPageItem(id);
                                          
                                                                 switch (o.common.role) {
                                                                     case 'dimmer':
                                                                         if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                                             let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                                             setIfExists(id + '.SET', sliderPos) ? true : setIfExists(id + '.ACTUAL', sliderPos);
                                                                         } else {
                                                                             setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                                                         }
                                                                         break;
                                                                     case 'rgb':
                                                                     case 'ct':
                                                                     case 'rgbSingle':
                                                                     case 'hue':
                                                                         if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
                                                                             let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
                                                                             setIfExists(id + '.DIMMER', sliderPos);
                                                                         } else {
                                                                             setIfExists(id + '.DIMMER', parseInt(words[4]));
                                                                         }
                                                                         break;
                                                                 }
                                                             }
                                                         }, 250);
                                                         break;
                                                     case 'colorTempSlider': // Armilar - Slider tickt verkehrt - Hell = 0 / Dunkel = 100 -> Korrektur
                                                         (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                         timeoutSlider = setTimeout(async function () {
                                                             let pageItem = findPageItem(id);
                                                             if (pageItem.minValueColorTemp !== undefined && pageItem.maxValueColorTemp !== undefined) {
                                                                 let colorTempK = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.minValueColorTemp, pageItem.maxValueColorTemp));
                                                                 setIfExists(id + '.TEMPERATURE', (colorTempK));
                                                             } else {
                                                                 setIfExists(id + '.TEMPERATURE', 100 - words[4]);
                                                             }
                                                         }, 250);
                                                         break;
                                                     case 'colorWheel':
                                                         let colorCoordinates = words[4].split('|');
                                                         let rgb = pos_to_color(colorCoordinates[0], colorCoordinates[1]);
                                                         if (Debug) {
                                                             console.log(rgb);
                                                         }
                                                         if (Debug) {
                                                             console.log(getHue(rgb.red, rgb.green, rgb.blue));
                                                         }
                                                         let o = getObject(id);
                                                         switch (o.common.role) {
                                                             case 'hue':
                                                                 setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
                                                                 break;
                                                             case 'rgb':
                                                                 setIfExists(id + '.RED', rgb.red);
                                                                 setIfExists(id + '.GREEN', rgb.green);
                                                                 setIfExists(id + '.BLUE', rgb.blue);
                                                                 break;
                                                             case 'rgbSingle':
                                                                 let pageItem = findPageItem(id);
                                                                 if (pageItem.colormode == "xy") {
                                                                     //Für z.B. Deconz XY
                                                                     setIfExists(id + ".RGB", rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                                     if (Debug) {
                                                                         console.log(rgb_to_cie(rgb.red, rgb.green, rgb.blue));
                                                                     }
                                                                 }
                                                                 else {
                                                                     //Für RGB
                                                                     setIfExists(id + ".RGB", ConvertRGBtoHex(rgb.red, rgb.green, rgb.blue));
                                                                 }
                                                                 break;
                                                         }
                                                         break;
                                                     case 'tempUpd':
                                                         setIfExists(id + '.SET', parseInt(words[4]) / 10);
                                                         break;
                                                     case 'media-back':
                                                         setIfExists(id + '.PREV', true);
                                                         break;
                                                     case 'media-pause':
                                                         let pageItemTemp = findPageItem(id);
                                                         let adaInstanceSplit = pageItemTemp.adapterPlayerInstance.split('.');
                                                         if (adaInstanceSplit[0] == 'squeezeboxrpc') {
                                                             let stateVal = getState(pageItemTemp.adapterPlayerInstance + 'state').val;
                                                             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);
                                                             }
                                                         }
                                                         break;
                                                     case 'media-next':
                                                         setIfExists(id + '.NEXT', true);
                                                         break;
                                                     case 'media-shuffle':
                                                         if ((findPageItem(id).adapterPlayerInstance).startsWith("volumio")) { findPageItem(id).playList = []; break; } //Volumio: empty playlist $uha-20230103
                                                         if (getState(id + '.SHUFFLE').val == 'off') {
                                                             setIfExists(id + '.SHUFFLE', 'on');
                                                         } else {
                                                             setIfExists(id + '.SHUFFLE', 'off');
                                                         }
                                                         break;
                                                     case 'volumeSlider':
                                                         setIfExists(id + '.VOLUME', parseInt(words[4]))
                                                         break;
                                                     case 'mode-speakerlist':
                                                         let pageItem = findPageItem(id);
                                                         let adapterInstance = pageItem.adapterPlayerInstance;
                                                         let adapter = adapterInstance.split('.');
                                                         let deviceAdapter = adapter[0];
                                          
                                                         switch (deviceAdapter) {
                                                             case 'spotify-premium':
                                                                 let strDevicePI = pageItem.speakerList[words[4]];
                                                                 let strDeviceID = spotifyGetDeviceID(strDevicePI);
                                                                 setState(adapterInstance + 'devices.' + strDeviceID + ".useForPlayback", true);
                                                                 break;
                                                             case 'alexa2':
                                                                 let i_list = Array.prototype.slice.apply($('[state.id="' + adapterInstance + 'Echo-Devices.*.Info.name"]'));
                                                                 for (let i_index in i_list) {
                                                                     let i = i_list[i_index];
                                                                     if ((getState(i).val) === pageItem.speakerList[words[4]]) {
                                                                         console.log(getState(i).val + ' - ' + pageItem.speakerList[words[4]]);
                                                                         let deviceId = i;
                                                                         deviceId = deviceId.split('.');
                                                                         setIfExists(adapterInstance + 'Echo-Devices.' + pageItem.mediaDevice + '.Commands.textCommand', 'Schiebe meine Musik auf ' + pageItem.speakerList[words[4]]);
                                                                         pageItem.mediaDevice = deviceId[3];
                                                                     } 
                                                                 }
                                                                 break;
                                                             case 'sonos':
                                                                 break;
                                                             case 'chromecast':
                                                                 break;
                                                         }
                                                         break;
                                                     case 'mode-playlist':
                                                         let pageItemPL = findPageItem(id);
                                                         let adapterInstancePL = pageItemPL.adapterPlayerInstance;
                                                         let adapterPL = adapterInstancePL.split('.');
                                                         let deviceAdapterPL = adapterPL[0];
                                          
                                                         switch (deviceAdapterPL) {
                                                             case 'spotify-premium':
                                                                 let strDevicePI = pageItemPL.playList[words[4]];
                                                                 console.log(strDevicePI);
                                                                 let playlistListString = (getState(adapterInstancePL + 'playlists.playlistListString').val).split(';');
                                                                 let playlistListIds = (getState(adapterInstancePL + 'playlists.playlistListIds').val).split(';');
                                                                 let playlistIndex = playlistListString.indexOf(strDevicePI);
                                                                 setState(adapterInstancePL + 'playlists.playlistList', playlistListIds[playlistIndex]);
                                                                 setTimeout(async function () {
                                                                     globalTracklist = (function () { try {return JSON.parse(getState(adapterInstancePL + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                                                 }, 2000);
                                                                 break;
                                                             case 'alexa2':
                                                                 let tempListItem = pageItemPL.playList[words[4]].split('.');
                                                                 setState(adapterInstancePL + 'Echo-Devices.' + pageItemPL.mediaDevice + '.Music-Provider.' + tempListItem[0], tempListItem[1]);
                                                                 break;
                                                             case 'volumio':
                                                                 let strDevicePL = pageItemPL.playList[words[4]];
                                                                 request({ url:`${getState(adapterInstancePL+'info.host').val}/api/commands/?cmd=playplaylist&name=${strDevicePL}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                                           async (error, response, result)=>{}); /* nothing todo @ error */
                                                                 break;
                                                         }
                                                         break;
                                                     case 'mode-tracklist':
                                                         let pageItemTL = findPageItem(id);
                                                         let adapterInstanceTL = pageItemTL.adapterPlayerInstance;
                                                         let adapterTL = adapterInstanceTL.split('.')
                                                         let deviceAdapterTL = adapterTL[0];
                                          
                                                         switch (deviceAdapterTL) {
                                                             case 'spotify-premium':
                                                                 let trackArray = (function () { try {return JSON.parse(getState(pageItemTL.adapterPlayerInstance + 'player.playlist.trackListArray').val);} catch(e) {return {};}})();
                                                                 setState(adapterInstanceTL + 'player.trackId', getAttr(trackArray, words[4] + '.id'));
                                                                 break;
                                                             case 'alexa2':
                                                                 if (Debug) console.log('Aktuell hat alexa2 keine Tracklist');
                                                                 break;
                                                             case 'volumio':
                                                                 request({ url:`${getState(adapterInstanceTL+'info.host').val}/api/commands/?cmd=play&N=${words[4]}`, headers: {'User-Agent': 'ioBroker'} }, 
                                                                     async (error, response, result)=>{}); /* nothing todo @ error */
                                                                 break;
                                                         }
                                                         break;
                                                     case 'mode-repeat':
                                                         let pageItemRP = findPageItem(id);
                                                         let adapterInstanceRP = pageItemRP.adapterPlayerInstance;
                                                         let adapterRP = adapterInstanceRP.split('.');
                                                         let deviceAdapterRP = adapterRP[0];
                                          
                                                         switch (deviceAdapterRP) {
                                                             case 'spotify-premium':
                                                                 setIfExists(id + '.REPEAT', pageItemRP.repeatList[words[4]]);
                                                                 break;
                                                             case 'alexa2':
                                                                 break;
                                                         }
                                                         break;
                                                     case 'mode-equalizer':
                                                         let pageItemEQ = findPageItem(id);
                                                         if (Debug) console.log(id);
                                                         let lastIndex = (id.split('.')).pop();
                                                         setState(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode', pageItemEQ.equalizerList[words[4]]);
                                                         setTimeout(async function () {
                                                             GenerateDetailPage('popupInSel','equalizer', pageItemEQ);
                                                         }, 2000);
                                                         break;
                                                     case 'mode-insel':
                                                         setIfExists(id + '.VALUE', parseInt(words[4]));
                                                         break;
                                                     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);
                                                                 setIfExists(id + '.STATE', 1);
                                                             } else {
                                                                 setState(pageItemTem.adapterPlayerInstance + 'Power', 0);
                                                                 setIfExists(id + '.STOP', true);
                                                                 setIfExists(id + '.STATE', 0);
                                                             }
                                                         } else {
                                                             setIfExists(id + '.STOP', true);
                                                         }
                                                         break;
                                                     case 'timer-start':
                                                         if (words[4] != undefined) {
                                                             let timer_panel = words[4].split(':');
                                                             setIfExists(id + '.ACTUAL', (parseInt(timer_panel[1]) * 60) + parseInt(timer_panel[2]));
                                                         }
                                                         setIfExists(id + '.STATE', 'active');
                                                         break;
                                                     case 'timer-pause':
                                                         setIfExists(id + '.STATE', 'paused');
                                                         break;
                                                     case 'timer-cancle':
                                                         setIfExists(id + '.STATE', 'idle');
                                                         setIfExists(id + '.ACTUAL', 0);
                                                         break;
                                                     case 'timer-finish':
                                                         setIfExists(id + '.STATE', 'idle');
                                                         setIfExists(id + '.ACTUAL', 0);
                                                         break;
                                                     case 'hvac_action':
                                                         if (words[4] == 'BOOT' || words[4] == 'PART' || words[4] == 'AUTT' || words[4] == 'MANT' || words[4] == 'VACT') {
                                          
                                                             switch (words[4]) {
                                                                 case 'BOOT':
                                                                     setIfExists(words[2] + '.' + 'BOOST', !getState(words[2] + '.' + 'BOOST').val);
                                                                     break;
                                                                 case 'PART':
                                                                     setIfExists(words[2] + '.' + 'PARTY', !getState(words[2] + '.' + 'PARTY').val);
                                                                     break;
                                                                 case 'AUTT':
                                                                     setIfExists(words[2] + '.' + 'AUTOMATIC', !getState(words[2] + '.' + 'AUTOMATIC').val);
                                                                     break;
                                                                 case 'MANT':
                                                                     setIfExists(words[2] + '.' + 'MANUAL', !getState(words[2] + '.' + 'MANUAL').val);
                                                                     break;
                                                                 case 'VACT':
                                                                     setIfExists(words[2] + '.' + 'VACATION', !getState(words[2] + '.' + 'VACATION').val);
                                                                     break;
                                                             }
                                                             let modes = ['BOOT', 'PART', 'AUTT', 'MANT', 'VACT'];
                                                             let modesDP = ['BOOST', 'PARTY', 'AUTOMATIC', 'MANUAL', 'VACATION'];
                                                             for (let mode=0; mode < 5; mode++) {
                                                                 if (words[4] != modes[mode]) {
                                                                     setIfExists(words[2] + '.' + modesDP[mode], false);
                                                                 }
                                                             }
                                                             GeneratePage(config.pages[pageId]);
                                                         } else {
                                                             let HVACMode = 0;
                                                             switch (words[4]) {
                                                                 case 'POWER':
                                                                     HVACMode = 0;
                                                                     setIfExists(words[2] + '.' + words[4], !getState(words[2] + '.' + words[4]).val);
                                                                     if (getState(words[2] + '.' + words[4]).val) {
                                                                         HVACMode = 1;
                                                                     }
                                                                     break;
                                                                 case 'AUTO':
                                                                     HVACMode = 1;
                                                                     break;
                                                                 case 'COOL':
                                                                     HVACMode = 2;
                                                                     break;
                                                                 case 'HEAT':
                                                                     HVACMode = 3;
                                                                     break;
                                                                 case 'ECO':
                                                                     HVACMode = 4;
                                                                     break;
                                                                 case 'FAN':
                                                                     HVACMode = 5;
                                                                     break;
                                                                 case 'DRY':
                                                                     HVACMode = 6;
                                                                     break;
                                                                 case 'SWING':
                                                                     HVACMode = getState(words[2] + '.MODE').val;
                                                                     if (getState(words[2] + '.SWING').val == 0) {
                                                                         setIfExists(words[2] + '.SWING', 1);
                                                                     } else {
                                                                         setIfExists(words[2] + '.' + 'SWING', 0);
                                                                     }
                                                                     break;
                                                             }
                                                             setIfExists(words[2] + '.' + 'MODE', HVACMode);
                                                             GeneratePage(config.pages[pageId]);
                                                         }
                                                         break;
                                                     case 'mode-modus1':
                                                         let pageItemT1 = findPageItem(id);
                                                         setIfExists(id + '.' + pageItemT1.setThermoAlias[0], pageItemT1.popupThermoMode1[parseInt(words[4])]);
                                                         break;
                                                     case 'mode-modus2':
                                                         let pageItemT2 = findPageItem(id);
                                                         setIfExists(id + '.' + pageItemT2.setThermoAlias[1], pageItemT2.popupThermoMode2[parseInt(words[4])]);
                                                         break;
                                                     case 'mode-modus3':
                                                         let pageItemT3 = findPageItem(id);
                                                         setIfExists(id + '.' + pageItemT3.setThermoAlias[2], pageItemT3.popupThermoMode3[parseInt(words[4])]);
                                                         break;
                                                     case 'number-set':
                                                         let nobj = getObject(id);
                                                         switch (nobj.common.role) {
                                                             case 'level.mode.fan':
                                                                 (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                                 timeoutSlider = setTimeout(async function () {
                                                                     setIfExists(id + '.SPEED', parseInt(words[4]));
                                                                 }, 250);
                                                                 break;
                                                             default:    
                                                                 (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
                                                                 timeoutSlider = setTimeout(async function () {
                                                                     setIfExists(id + '.SET', parseInt(words[4])) ? true : setIfExists(id + '.ACTUAL', parseInt(words[4]));
                                                                 }, 250);
                                                                 break;
                                                         }
                                                         break;
                                                     case 'mode-preset_modes':
                                                         setIfExists(id + '.MODE', parseInt(words[4]));
                                                         break; 
                                                     case 'A1': // Alarm-Page Alarm 1 aktivieren
                                                         if (words[4] != '') {
                                                             setIfExists(id + '.TYPE', 'A1');
                                                             setIfExists(id + '.PIN', words[4]);
                                                             setIfExists(id + '.ACTUAL', 'arming');
                                                             setIfExists(id + '.PANEL', NSPanel_Path);
                                                         }
                                                         setTimeout(function(){
                                                             GeneratePage(activePage);
                                                         },250);
                                                         break;
                                                     case 'A2': // Alarm-Page Alarm 2 aktivieren
                                                         if (words[4] != '') {
                                                             setIfExists(id + '.TYPE', 'A2');
                                                             setIfExists(id + '.PIN', words[4]);
                                                             setIfExists(id + '.ACTUAL', 'arming');
                                                             setIfExists(id + '.PANEL', NSPanel_Path);
                                                         }
                                                         setTimeout(function(){
                                                             GeneratePage(activePage);
                                                         },250);
                                                         break;
                                                     case 'A3': // Alarm-Page Alarm 3 aktivieren
                                                         if (words[4] != '') {
                                                             setIfExists(id + '.TYPE', 'A3');
                                                             setIfExists(id + '.PIN', words[4]);
                                                             setIfExists(id + '.ACTUAL', 'arming');
                                                             setIfExists(id + '.PANEL', NSPanel_Path);
                                                         }
                                                         setTimeout(function(){
                                                             GeneratePage(activePage);
                                                         },250);
                                                         break;
                                                     case 'A4': // Alarm-Page Alarm 4 aktivieren
                                                         if (words[4] != '') {
                                                             setIfExists(id + '.TYPE', 'A4');
                                                             setIfExists(id + '.PIN', words[4]);
                                                             setIfExists(id + '.ACTUAL', 'arming');
                                                             setIfExists(id + '.PANEL', NSPanel_Path);
                                                         }
                                                         setTimeout(function(){
                                                             GeneratePage(activePage);
                                                         },250);
                                                         break;
                                                     case 'D1': // Alarm-Page Alarm Deaktivieren
                                                         if (Debug) {
                                                             console.log('D1: ' + getState(id + '.PIN').val);
                                                         }
                                                         if (Debug) {
                                                             console.log(words[4]);
                                                         }
                                                         if (words[4] != '') {
                                                             if (getState(id + '.PIN').val == words[4]) {
                                                                 setIfExists(id + '.PIN', '0000');
                                                                 setIfExists(id + '.TYPE', 'D1');
                                                                 setIfExists(id + '.ACTUAL', 'pending');
                                                                 setIfExists(id + '.PIN_Failed', 0);
                                                             } else {
                                                                 setIfExists(id + '.PIN_Failed', getState(id + '.PIN_Failed').val + 1);
                                                                 setIfExists(id + '.ACTUAL', 'triggered');
                                                             }
                                                             setIfExists(id + '.PANEL', NSPanel_Path);
                                                             setTimeout(function(){
                                                                 GeneratePage(activePage);
                                                             },500);
                                                         }
                                                         break;
                                                     default:
                                                         break;
                                                 }
                                             } catch (err) {
                                                 console.log('function HandleButtonEvent: ' + err.message);
                                             }
                                          }
                                          

                                          EDIT: Hotfix ist jetzt auch auf Github verfügbar v3.9.0.2

                                          Gruß Tom
                                          https://github.com/tt-tom17
                                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                          NSPanel Script Wiki
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          689

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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