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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Oliver Feld last edited by

      Hallo,

      brauche mal eure Hilfe:
      Ich bin Anfänger und habe es endlich geschafft das NS Panel einzurichten.

      Bei dem Screensaver habe ich ein kleine Problem:
      Bei der Windgeschwindigkeit wird mir der Wert in m/s umgerechnet angezeigt. Auch wenn im Skript km/h ausgewählt ist. Vom accuwether Adapter wird in den Objekten der Wert in km/h angezeigt.
      Hat Jemand ein Tip für mich wie der Wert in Km/h angezeigt wird?

      T 1 Reply Last reply Reply Quote 0
      • T
        TT-Tom @Oliver Feld last edited by

        @oliver-feld

        secondScreensaverEntity:  { ScreensaverEntity: 'accuweather.0.Current.WindSpeed', 
                                        ScreensaverEntityFactor: 1,                       //New
                                        ScreensaverEntityDecimalPlaces: 1,                          //New Anzahl Kommastellen
                                        ScreensaverEntityIcon: 'weather-windy', 
                                        ScreensaverEntityText: "Wind", 
                                        ScreensaverEntityUnitText: 'km/h', 
                                        ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35} // val_max anpassen, ab wann Icon Rot sein soll
                                      },
        
        R 1 Reply Last reply Reply Quote 0
        • R
          ronny130286 @TT-Tom last edited by ronny130286

          @TT-Tom @oliver-feld

          du musst dann aber auch die min max anpassen, weil mit max 35km/h kann man wenig anfangen 😉

          ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 35}
          

          @Armilar
          Heute wurde Tasmota 1.2.4.0 released => das Panel zeigt die Popupmessage auch an aber drückt man auf ja wird wird das update nicht getriggert auch im Debugmodus sieht man das die Funktion für das Update nicht gestartet wird . Ist das gewollt? Ich war der Meinung das ging schon mal.

          EDIT: habs gefunden => manually_Update muss true sein, aber ist das so richtig? Weil es ist ein manuelles Update, wenn ich noch die Wahl zwischen ja und nein habe und es mit Ja betätige, müsste er doch trotzdem ein Update machen oder nicht?

          on({ id: NSPanel_Path + 'popupNotify.popupNotifyAction', change: 'any' }, async function (obj) {
              try {
                  const val = obj.state ? obj.state.val : false;
                  if (!val) {
                      manually_Update = false;
                      if (Debug) {
                          console.log('Es wurde Button1 gedrückt');
                      }
                  } else if (val) {
                      
                      if (manually_Update) { => Entfernen?
                          const internalName = getState(NSPanel_Path + 'popupNotify.popupNotifyInternalName').val;
          
                          if (internalName == 'TasmotaFirmwareUpdate') {
                              update_tasmota_firmware();
                          } else if (internalName == 'BerryDriverUpdate') {
                              update_berry_driver_version();
                          } else if (internalName == 'TFTFirmwareUpdate') {
                              update_tft_firmware();
                          }
                      }
                      if (Debug) {
                          console.log('Es wurde Button2 gedrückt');
                      }
                  }
              } catch (err) {
                  console.warn('Trigger popupNotifyAction: ' + err.message);
              }
          });
          

          @Armilar
          EDIT2:
          Ich hab jetzt das manuelly_Update mal komplett aus dem Skript entfernt und prüfen einfach nur im im internalName das Word Update steht.

          on({ id: NSPanel_Path + 'popupNotify.popupNotifyAction', change: 'any' }, async function (obj) {
              try {
                  const val = obj.state ? obj.state.val : false;
                  if (!val) {
                      if (Debug) {
                          console.log('Es wurde Button1 gedrückt');
                      }
                  } else if (val) {
                      
                      const internalName: string = getState(NSPanel_Path + 'popupNotify.popupNotifyInternalName').val;
                      if (internalName.includes('Update')) {
                          if (internalName == 'TasmotaFirmwareUpdate') {
                              update_tasmota_firmware();
                          } else if (internalName == 'BerryDriverUpdate') {
                              update_berry_driver_version();
                          } else if (internalName == 'TFTFirmwareUpdate') {
                              update_tft_firmware();
                          }
                      }
                      if (Debug) {
                          console.log('Es wurde Button2 gedrückt');
                      }
                  }
              } catch (err) {
                  console.warn('Trigger popupNotifyAction: ' + err.message);
              }
          });
          
          O Armilar 2 Replies Last reply Reply Quote 1
          • O
            Oliver Feld @ronny130286 last edited by

            @ronny130286
            So sieht es bei mir aus, müsste doch passen oder?

            secondScreensaverEntity:  { ScreensaverEntity: 'accuweather.0.Current.WindSpeed', 
                                            ScreensaverEntityFactor: (1000/3600),                       //New
                                            ScreensaverEntityDecimalPlaces: 1,                          //New 
                                            ScreensaverEntityIcon: 'weather-windy', 
                                            ScreensaverEntityText: "Wind", 
                                            ScreensaverEntityUnitText: 'Km/h', 
                                            ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 90}
            

            IMG_4144.jpeg

            R 1 Reply Last reply Reply Quote 0
            • R
              ronny130286 @Oliver Feld last edited by ronny130286

              @oliver-feld

               ScreensaverEntityFactor: (1000/3600),                       //New
              

              Das muss auf 1 stehen nicht auf 1000/3600 => das wäre die Umrechnung in m/s

               ScreensaverEntityFactor: 1,                       //New
              
              O 1 Reply Last reply Reply Quote 0
              • O
                Oliver Feld @ronny130286 last edited by

                @ronny130286
                Danke! Das wars 🙂

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

                  @ronny130286

                  Hab es schon bemerkt. Das muss eigentlich auch gar nicht mehr eingeblendet werden, da die Funktionen auch über das Servicemenü ermöglicht werden.

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    ronny130286 @Armilar last edited by

                    @armilar
                    Also das es angezeigt wird finde ich gut, da man ansonsten keinerlei Hinweis hat das es ein Update gibt, aber er sollte dann auch updaten wenn man ja drückt 😉
                    Ich hab die Funktion wie oben ersetzt, somit kann man ja nein nutzen und zusätzlich kann man es auch im Servicemenu updaten, sofern man Autoupdate aus lässt.

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

                      @ronny130286

                      werde es nachher mal kurz übernehmen

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

                        @armilar
                        Hi,
                        hat einen Moment gedauert mich in die Struktur des TypeScripts einzuarbeiten aber langsam komme ich voran.
                        Ich habe eine erste Variante mit Squeezeboxrpc Unterstützung die bei mir soweit ganz gut funktioniert. Man kann die Speaker wechseln, die Favoriten Playlists auswählen, autoCreateAlias funktioniert, etc.
                        Das war bisher nicht möglich.
                        Allerdings musste ich für die Auswahl der Speaker leider recht große Anpassungen machen, da die Struktur einfach so verschieden ist zu den anderen Adaptern.

                        Hier der letzte große Commit in meinem Branch im Fork Repo:
                        https://github.com/bembelstemmer/nspanel-lovelace-ui/commit/5a2a95a7f7d0d6aa70589550484b6e423bba6c71
                        Wenn du willst, kannst du gerne mal drüber schauen. Wollte nicht einfach nen Pull-Request aufmachen, da das schon ne größere Anpassung ist und ich nicht sicher bin ob das so alles ins Konzept passt.
                        Zudem kann ich nicht testen ob ich die anderen Media Adapter vielleicht kaputt gemacht habe 🙈

                        Also gerne Kommentare oder so wie ich am besten vorgehen soll.

                        VG

                        0 bembelstemmer committed to bembelstemmer/nspanel-lovelace-ui
                        Basic Implementation of Squeezeboxrpc Speaker switching and also using Favorite Playlists
                        Armilar 2 Replies Last reply Reply Quote 1
                        • Armilar
                          Armilar Most Active Forum Testing @bembelstemmer last edited by

                          @bembelstemmer

                          Top, bekommen wir schon alle unter einen Hut. Ich teste übers Wochenende mal die anderen Adapter.

                          1 Reply Last reply Reply Quote 0
                          • O
                            Oliver Feld last edited by

                            Ich hänge beim Wlan QR-Code fest...

                            Ich habe folgendes im Skript:

                            let Test_WLAN = <PageQR> 
                            {
                                "type": "cardQR",
                                "heading": "Deine Überschrift",
                                "useColor": true,
                                "subPage": false,
                                "parent": undefined,
                                "items": [<PageItem>{ id: "alias.0.NSPanel_1.Guest_Wifi" }] // Beispiel
                            };
                            

                            Wenn ich diese Seite jetzt als erste Position bei den Seiten eintrage startet das Panel nicht (warten auf content).

                            Wenn ich diese Seite auf Position 2 setzte ruft er die Seite nicht auf.

                            Folgende Fehlermeldung kommen:

                            09:56:38.070	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Object "alias.0.NSPanel_1.Guest_Wifi" does not exist
                            09:56:38.073	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                            09:56:38.073	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                            09:56:38.073	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                            09:56:38.074	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                            09:56:38.074	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                            09:56:38.074	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                            09:56:38.074	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                            09:56:38.075	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                            09:56:38.075	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                            09:56:38.076	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                            09:56:38.077	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                            

                            Gruß Olli

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

                              @oliver-feld

                              In der ersten Zeile der Warnungen steht bereits die Lösung 😉

                              Der Alias aus dem PageItem existiert nicht...

                              https://github.com/joBr99/nspanel-lovelace-ui/wiki/ioBroker---FAQ-&-Anleitungen#5-qr-code-page

                              O 1 Reply Last reply Reply Quote 1
                              • O
                                Oliver Feld @Armilar last edited by

                                @armilar
                                Stimmt, aber auch mit dem Alias will das irgendwie nicht:

                                0:08:49.232	info	javascript.0 (970) Stop script script.js.NSPanels.NSPanel_Wohnzimmer
                                10:08:49.885	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: compiling TypeScript source...
                                10:08:55.586	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: TypeScript compilation successful
                                10:08:55.736	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Wetter-Alias für accuweather.0. existiert bereits
                                10:08:55.775	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: registered 31 subscriptions, 7 schedules, 0 messages, 0 logs and 0 file subscriptions
                                10:08:56.953	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Desired TFT Firmware: 49 / v3.9.0
                                10:08:56.953	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Installed TFT Firmware: 49 / v3.9.0
                                10:09:12.027	info	javascript.0 (970) Stop script script.js.NSPanels.NSPanel_Wohnzimmer
                                10:09:12.606	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: compiling TypeScript source...
                                10:09:17.648	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: TypeScript compilation successful
                                10:09:17.783	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Wetter-Alias für accuweather.0. existiert bereits
                                10:09:17.812	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: registered 31 subscriptions, 7 schedules, 0 messages, 0 logs and 0 file subscriptions
                                10:09:19.012	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                                10:09:19.012	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                                10:09:19.013	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                                10:09:19.013	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                                10:09:19.013	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                                10:09:19.014	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                                10:09:19.014	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                                10:09:19.014	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                                10:09:19.015	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                                10:09:19.021	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                                10:09:19.021	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                                10:09:19.104	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Desired TFT Firmware: 49 / v3.9.0
                                10:09:19.105	info	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: Installed TFT Firmware: 49 / v3.9.0
                                10:09:23.974	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                                10:09:23.974	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                                10:09:23.975	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                                10:09:23.975	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                                10:09:23.975	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                                10:09:23.975	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                                10:09:23.976	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                                10:09:23.976	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                                10:09:23.977	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                                10:09:23.979	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                                10:09:23.979	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                                10:09:29.983	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                                10:09:29.983	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                                10:09:29.984	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                                10:09:29.984	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                                10:09:29.985	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                                10:09:29.986	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                                10:09:29.986	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                                10:09:29.987	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                                10:09:29.988	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                                10:09:29.991	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                                10:09:29.992	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                                10:09:36.312	warn	javascript.0 (970) at GenerateQRPage (script.js.NSPanels.NSPanel_Wohnzimmer:5302:67)
                                10:09:36.313	warn	javascript.0 (970) at GeneratePage (script.js.NSPanels.NSPanel_Wohnzimmer:3495:29)
                                10:09:36.313	warn	javascript.0 (970) at HandleMessage (script.js.NSPanels.NSPanel_Wohnzimmer:3416:21)
                                10:09:36.313	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3357:25)
                                10:09:36.314	warn	javascript.0 (970) at step (script.js.NSPanels.NSPanel_Wohnzimmer:33:23)
                                10:09:36.314	warn	javascript.0 (970) at Object.next (script.js.NSPanels.NSPanel_Wohnzimmer:14:53)
                                10:09:36.314	warn	javascript.0 (970) at script.js.NSPanels.NSPanel_Wohnzimmer:8:71
                                10:09:36.314	warn	javascript.0 (970) at __awaiter (script.js.NSPanels.NSPanel_Wohnzimmer:4:12)
                                10:09:36.315	warn	javascript.0 (970) at Object.<anonymous> (script.js.NSPanels.NSPanel_Wohnzimmer:3349:12)
                                10:09:36.316	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function GenerateQRPage: Cannot read properties of null (reading 'split')
                                10:09:36.316	warn	javascript.0 (970) script.js.NSPanels.NSPanel_Wohnzimmer: function SendToPanel: Cannot read properties of undefined (reading 'payload')
                                

                                Das wäre der angelegte Datenpunkt. ist der so ok?

                                {
                                  "common": {
                                    "name": "WIFI:T:WPA;S:Gastzugang;P:47110815;H:;",
                                    "desc": "Manuell erzeugt",
                                    "role": "state",
                                    "type": "string",
                                    "read": true,
                                    "write": true,
                                    "def": ""
                                  },
                                  "type": "state",
                                  "native": {},
                                  "from": "system.adapter.admin.0",
                                  "user": "system.user.admin",
                                  "ts": 1676681985024,
                                  "_id": "0_userdata.0.WIFI:T:WPA_S:Gastzugang_P:47110815_H:_"
                                
                                1 Reply Last reply Reply Quote 0
                                • Armilar
                                  Armilar Most Active Forum Testing last edited by Armilar

                                  @oliver-feld

                                  nein

                                  Nicht der Name des Datenpunktes muss so heißen, sondern der Inhalt.

                                  Lege dir mal einen Datenpunkt (string) unter 0_userdata an. Name GuestWifi oder ähnlich.

                                  705fecd5-4c1d-4889-8939-1de6fc6678f1-image.png

                                  Da kommt dann der Inhalt WIFI:T:WPA..... rein

                                  Auf den DP GuestWifi legst du dann den Info Alias und trägst diesen ALIAS in den PageItem ein

                                  O 1 Reply Last reply Reply Quote 0
                                  • O
                                    Oliver Feld @Armilar last edited by Oliver Feld

                                    @armilar
                                    Bildschirm­foto 2023-02-18 um 10.31.50.png

                                    Ich habe den Wert jetzt hinten eingetragen.

                                    Alias aus diesem Datenpunkt erstellt und den Alias im Skript eingefügt.

                                    läuft leider immer noch nicht

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

                                      @oliver-feld

                                      Wie sieht denn der ALIAS vom Gerätetyp Info im Geräte-Manager dazu aus?

                                      O 1 Reply Last reply Reply Quote 0
                                      • O
                                        Oliver Feld @Armilar last edited by

                                        @armilar
                                        Bildschirm­foto 2023-02-18 um 10.42.39.png

                                        Muss bei fx noch was rein?

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

                                          @oliver-feld

                                          nein, aber du solltest auch kein "ä" im Namen verwenden

                                          Der alias.0.NSPanel_Geräte.Wlan

                                          muss dann im PageItem der Seitendefinition stehen

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

                                            @oliver-feld

                                            Dann fällt mir auf, dass du einen Datenpunkt unter:

                                            0_userdata.0.NSPanel.GuestWifi

                                            erstellt hast, aber

                                            0_userdata.0.GuestWifi

                                            im Alias verwendest. Der Datenpunkt existiert doch auch nicht... Nimm doch den Stift hinten zum auswählen...

                                            O 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            896
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            265
                                            7324
                                            5068421
                                            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