Navigation

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

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      Elluminatus @Armilar last edited by Elluminatus

      @armilar Ich bekomme einen Fehler. Den Pfad squeezeboxrpc.0.Players.piCoreKUE gibt es aber, habe gerade nachgeschaut, hmm

      00:10:22.196	info	javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS
      00:10:22.207	warn	javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist
      00:10:22.208	info	javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      00:10:22.210	error	javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common')
      00:10:22.210	error	javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35)
      00:10:22.210	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1
      00:10:22.211	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
      

      Der Haken bei SetObject ist bereits gesetzt

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

        @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

        @armilar Ich bekomme einen Fehler. Den Pfad squeezeboxrpc.0.Players.piCoreKUE gibt es aber, habe gerade nachgeschaut, hmm

        00:10:22.196	info	javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS
        00:10:22.207	warn	javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist
        00:10:22.208	info	javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
        00:10:22.210	error	javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common')
        00:10:22.210	error	javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35)
        00:10:22.210	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1
        00:10:22.211	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
        

        Der Haken bei SetObject ist bereits gesetzt

        Kopier es nochmal. Habe noch Änderungen in den Rollen gemacht. Kann es ja leider nicht selbst testen

        E 1 Reply Last reply Reply Quote 0
        • E
          Elluminatus @Armilar last edited by Elluminatus

          @armilar Hab es nochmal kopiert, leider derselbe Fehler:

          00:27:57.980	info	javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS
          00:27:57.991	warn	javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist
          00:27:57.992	info	javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          00:27:57.994	error	javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common')
          00:27:57.995	error	javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35)
          00:27:57.995	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1
          00:27:57.995	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
          

          Hier nochmal zur Kontrolle was ich eingefügt habe:

          const aliasPath = 'alias.0.Media.WT_KE_HWR';  // ggfs. Anpassen
          const aliasDevice = 'SqueezeBoxRPC';       // ggfs. Anpassen
          //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC
          
          const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0
          const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device
          
          var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom;
          
          function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) {
            if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
            else {
               var obj = {};
               obj.type = idType;
               obj.common = getObject(idSrc).common;
               obj.common.alias = {};
               if(idRd) {
                   obj.common.alias.id = {};
                   obj.common.alias.id.read = idRd;
                   obj.common.alias.id.write = idSrc;
                   obj.common.read = true;
               } else obj.common.alias.id = idSrc;
               obj.common.type = idAliasType;
               if(obj.common.read !== false && read) obj.common.alias.read = read;
               if(obj.common.write !== false && write) obj.common.alias.write = write;
               obj.common.name = idName;
               obj.common.role = idRole;
               obj.common.desc = idDst;
               if(min !== undefined) obj.common.min = min;
               if(max !== undefined) obj.common.max = max;
               if(unit) obj.common.unit = unit;
               obj.common.states = states;
               if(custom && obj.common.custom) obj.common.custom = custom;
               obj.native = {};
               setObject(idDst, obj);
            } 
          }
          
          createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string');
          createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM',  squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string');
          createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string');
          createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string');
          createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.forward', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.reverse', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.Power', '', 'state', 'switch', 'boolean');
          createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number');
          createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
          
          Armilar 1 Reply Last reply Reply Quote 0
          • Armilar
            Armilar Most Active Forum Testing @Elluminatus last edited by Armilar

            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

            @armilar Hab es nochmal kopiert, leider derselbe Fehler:

            00:27:57.980	info	javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS
            00:27:57.991	warn	javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist
            00:27:57.992	info	javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            00:27:57.994	error	javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common')
            00:27:57.995	error	javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35)
            00:27:57.995	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1
            00:27:57.995	error	javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
            

            Hier nochmal zur Kontrolle was ich eingefügt habe:

            const aliasPath = 'alias.0.Media.WT_KE_HWR';  // ggfs. Anpassen
            const aliasDevice = 'SqueezeBoxRPC';       // ggfs. Anpassen
            //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC
            
            const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0
            const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device
            
            var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom;
            
            function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) {
              if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
              else {
                 var obj = {};
                 obj.type = idType;
                 obj.common = getObject(idSrc).common;
                 obj.common.alias = {};
                 if(idRd) {
                     obj.common.alias.id = {};
                     obj.common.alias.id.read = idRd;
                     obj.common.alias.id.write = idSrc;
                     obj.common.read = true;
                 } else obj.common.alias.id = idSrc;
                 obj.common.type = idAliasType;
                 if(obj.common.read !== false && read) obj.common.alias.read = read;
                 if(obj.common.write !== false && write) obj.common.alias.write = write;
                 obj.common.name = idName;
                 obj.common.role = idRole;
                 obj.common.desc = idDst;
                 if(min !== undefined) obj.common.min = min;
                 if(max !== undefined) obj.common.max = max;
                 if(unit) obj.common.unit = unit;
                 obj.common.states = states;
                 if(custom && obj.common.custom) obj.common.custom = custom;
                 obj.native = {};
                 setObject(idDst, obj);
              } 
            }
            
            createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string');
            createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM',  squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string');
            createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string');
            createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string');
            createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.forward', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.reverse', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.Power', '', 'state', 'switch', 'boolean');
            createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number');
            createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
            

            kommentiere das erste createAlias´mal aus (Zeile 39)

            //createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string');
            
            E 1 Reply Last reply Reply Quote 0
            • E
              Elluminatus @Armilar last edited by

              @armilar Das ist jetzt ohne Fehler durchgelaufen. Kannst Du mir kurz helfen, was als nächstes gemacht werden muss? Muss ich jetzt einenAlias mit Media anlegen oder im Vorfeld den Erfolg nochmal überprüfen? Danke für Deinen Einsatz.

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

                @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                @armilar Das ist jetzt ohne Fehler durchgelaufen. Kannst Du mir kurz helfen, was als nächstes gemacht werden muss? Muss ich jetzt einenAlias mit Media anlegen oder im Vorfeld den Erfolg nochmal überprüfen? Danke für Deinen Einsatz.

                Unter Objekte Alias findest du deinen neuen Media-Alias (der im Moment aber keiner ist)
                46debdc3-f39f-456d-82d3-23be11c139f4-image.png

                Gehe mal in den Ordner (hier im Bild blau) und klicke auf den Stift am Ende. Im ersten Tab sollte "media" unter Rolle eingetragen werden

                5035ccf8-20a0-4353-bc06-ed02c32d88fc-image.png

                Jetzt ist es ein Media-Alias

                Im Anschluss folgst du der Beschreibung von gestern:
                https://forum.iobroker.net/post/867924

                Das hatten wir aber auch schon einfacher 😉

                E 1 Reply Last reply Reply Quote 0
                • E
                  Elluminatus @Armilar last edited by

                  @armilar Jetzt muss ich doch nochmal nachfragen, also ich habe da in den Alias jetzt die ganzen Einträge wie bspw. Album etc.

                  Aber ich sehe den von Dir benannten Stift nicht am Ende?

                  LMS5.jpg

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

                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                    @armilar Jetzt muss ich doch nochmal nachfragen, also ich habe da in den Alias jetzt die ganzen Einträge wie bspw. Album etc.

                    Aber ich sehe den von Dir benannten Stift nicht am Ende?

                    LMS5.jpg

                    Schalte mal in den Expertenmodus...

                    Kannst du wahrscheinlich dann auch schon mit klick auf den Bereich erledigen

                    e27cd8f0-5913-432b-87df-15937b1a2f75-image.png

                    oder unter Objektdaten wäre es dann in etwa so:

                    {
                      "type": "channel",
                      "common": {
                        "name": "",
                        "alias": {
                          "id": "squeezeboxrpc.0.Players.piCoreKUE"
                        },
                        "type": "string",
                        "role": "media",
                        "desc": "alias.0.NSPanel_1.Media.SqueezeBoxRPC"
                      },
                      "native": {},
                      "from": "system.adapter.javascript.0",
                      "user": "system.user.admin",
                      "ts": 1664852646982,
                      "_id": "alias.0.NSPanel_1.Media.SqueezeBoxRPC",
                      "acl": {
                        "object": 1636,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator"
                      }
                    }
                    

                    Dann kannst du auch gleich als type "channel" mitgeben.

                    E 1 Reply Last reply Reply Quote 0
                    • E
                      Elluminatus @Armilar last edited by

                      @armilar
                      Ich kann leider nichts davon machen, ich habe kein Zahnrad, keinen Stift und kann nicht auf die Objektdaten zugreifen und auch nicht direkt auf den State. Bei den anderen geht es...?

                      LMS6.jpg

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

                        @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                        @armilar
                        Ich kann leider nichts davon machen, ich habe kein Zahnrad, keinen Stift und kann nicht auf die Objektdaten zugreifen und auch nicht direkt auf den State. Bei den anderen geht es...?

                        LMS6.jpg

                        64ae6eaa-f86a-4847-ab96-67026caa706f-image.png Der ist an?

                        E 1 Reply Last reply Reply Quote 0
                        • E
                          Elluminatus @Armilar last edited by

                          @armilar ja ist er

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

                            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                            @armilar ja ist er

                            Bist du von den Berechtigungen limitiert?

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

                              @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                              @armilar ja ist er

                              Könntest du mal versuchen den Alias mit dem Alias-Manager zu öffnen?

                              40300510-08b5-45bb-a4e7-b538afdd4b8f-image.png

                              Da dürfte es auch gehen

                              1 Reply Last reply Reply Quote 0
                              • E
                                Elluminatus @Armilar last edited by

                                @armilar Wie kann ich dies erkennen, bzw. wo kann ich dies überprüfen?

                                E 1 Reply Last reply Reply Quote 0
                                • E
                                  Elluminatus @Elluminatus last edited by Elluminatus

                                  @elluminatus Dort ist er nicht angelegt

                                  LMS7.jpg

                                  Das Bild ist dort auch zuende.

                                  Hab jetzt nochmal eine neue Struktur angelegt

                                  LMS8.jpg

                                  Kann aber trotzdem nicht mehr sehen oder machen

                                  LMS9.jpg

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

                                    @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                    @elluminatus Dort ist er nicht angelegt

                                    LMS7.jpg

                                    Das Bild ist dort auch zuende.

                                    Hab jetzt nochmal eine neue Struktur angelegt

                                    LMS8.jpg

                                    Kann aber trotzdem nicht mehr sehen oder machen

                                    LMS9.jpg

                                    Da bist du richtig. Jetzt nach Aktionen wie in meinem Bild oben "Gewählter Alias". Unter common.role media wählen und dann speichern

                                    E 2 Replies Last reply Reply Quote 0
                                    • E
                                      Elluminatus @Armilar last edited by

                                      @armilar So das hat jetzt geklappt wenn ich das richtig sehe:

                                      LMS10.jpg

                                      1 Reply Last reply Reply Quote 0
                                      • I
                                        icemanmw @Armilar last edited by

                                        @armilar
                                        vielen Dank. Das probiere ich gleich aus.
                                        Super erklärt und verständlich
                                        Ich melde mich wenn es alles klappt.
                                        Grüße

                                        I 1 Reply Last reply Reply Quote 0
                                        • E
                                          Elluminatus @Armilar last edited by Elluminatus

                                          @armilar So es ist fast geschafft! Anzeige läuft:
                                          IMG_1243.jpg

                                          Jetzt ist lediglich noch die letzte Einstellung:

                                          "items": [<PageItem>{ 
                                                          id: "alias.0.Media.LMS.KE_HWR", 
                                                          adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                                                          speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                                                       }] 
                                          

                                          Was muss ich unten in der Speaker List eintragen? Den Playernamen? piCoreKUE bspw?

                                          Und was hat im Display das Icon mit den drei Strichen und der Note normalerweise für eine Funktion?

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

                                            @elluminatus sagte in SONOFF NSPanel mit Lovelace UI:

                                            @armilar So es ist fast geschafft! Anzeige läuft:
                                            IMG_1243.jpg

                                            Jetzt ist lediglich noch die letzte Einstellung:

                                            "items": [<PageItem>{ 
                                                            id: "alias.0.Media.LMS.KE_HWR", 
                                                            adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.",
                                                            speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero']
                                                         }] 
                                            

                                            Was muss ich unten in der Speaker List eintragen? Den Playernamen? piCoreKUE bspw?

                                            Und was hat im Display das Icon mit den drei Strichen und der Note normalerweise für eine Funktion?

                                            Das sieht doch schon ganz ordentlich aus...

                                            Unter Speaker würde ich mal nachsehen, wenn etwas abspielt, welcher Datenpunkt mit sinnvollen Geräten gefüllt ist. Das könntest du dann ebenfalls mal posten. Ebenfalls würde mich interessieren, wie der Wechsel von einem Raum zum anderen funktioniert. Dann könnte der Fall squeezeboxrpc das später korrekt verarbeiten. Aktuell gibt es ja keine Umschaltlogik für squeezebox im TS-Script. Aber ich denke fürs erste könnte da piCoreKUE drinstehen. Falls du so eine Umschaltlogik z.B. in Blockly hast, dann einfach hier posten. Falls du weißt welcher Datenpunkt mit welchem Inhalt gefüllt werden muss, könnte ich dir dabei ebenfalls helfen.

                                            Ja die Note mit einer Liste ist eine Note mit einer Liste. Einfach nur ein Icon ohne Funktion. Bei Spotitfy ist es das SpotifyLogo, bei Alexa gab es auch mal ein icon, heute nicht mehr und das Sonos Logo gibt es auch nicht. Wenn du ein passendes Logo in den 6500 icons findest, könnte ich das reinsetzen.

                                            E 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            998
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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