Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Takahara @ticaki last edited by

      @ticaki

      TypeScript v4.4.0.11 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne

      • abgestimmt auf TFT 53 / v4.4.0 / BerryDriver 9 / Tasmota 14.3.0

      Ja, gibt es:

      2025-06-06 10_58_16-Window.png

      Danke schon mal für deine Rückmeldung.

      VG Takahara

      Neuschwansteini 1 Reply Last reply Reply Quote 0
      • Neuschwansteini
        Neuschwansteini @Takahara last edited by

        @takahara

        ich kann zwar die Fehlermeldung nicht lesen, da kleiner Screenshot (besser als Text in Codetags ), aber soweit ich mich erinnern kann, gabs mit dem Update auf die 8.9.x auch eine neue Version vom Script 4.5.x, das den Fehler behebt..

        Update Tasmota, Berrydriver und das Script dann sollte es mit 8.9.2 laufen.

        T 1 Reply Last reply Reply Quote 2
        • Armilar
          Armilar Most Active Forum Testing @Takahara last edited by Armilar

          @takahara

          gibt es irgendwelche Hinweise im Log?

          Bei mir schnurren alle Panels schon seit langer Zeit auf JS v.8.9.2 - an der Version kann es nicht wirklich liegen...

          Ah - mal wieder zu spät... diverse Sachen nicht gelesen 😉

          Wie in den vorherigen Beiträgen bereits des Öfteren erwähnt, ist der Fehler bereits in einer höhere Script Versionen im Zusammenhang mit dem JS-Adapter gefixt...

          1 Reply Last reply Reply Quote 2
          • T
            Takahara @Neuschwansteini last edited by

            @neuschwansteini said in SONOFF NSPanel mit Lovelace UI:

            Update Tasmota, Berrydriver und das Script dann sollte es mit 8.9.2 laufen.

            Gibt es dafür eine Anleitung im Forum? Das Script muss ich sicherlich herunterladen und dann meine persönlichen Änderungen (erneut) anpassen.

            Aber wie kann ich Tasmota / Berrydriver updaten?

            VG Takahara

            Neuschwansteini Armilar 2 Replies Last reply Reply Quote 0
            • Neuschwansteini
              Neuschwansteini @Takahara last edited by Neuschwansteini

              @takahara

              siehe Wiki auf Git, unter Update/Upgrade
              Link ist oben im ersten Beitrag

              T 1 Reply Last reply Reply Quote 2
              • Armilar
                Armilar Most Active Forum Testing @Takahara last edited by Armilar

                @takahara

                Der Berry ist immer noch aktuell und Tasmota muss nicht zwingend aktualisiert werden... Da hat sich für uns nicht wirklich viel getan...

                Falls Tasmota doch geupdatet werden soll, geht das entweder über das Service-Menü oder im Tasmota unter 289f4472-a540-4868-bf9e-da8ecf25737e-image.png

                1 Reply Last reply Reply Quote 2
                • T
                  Takahara @Neuschwansteini last edited by

                  @neuschwansteini said in SONOFF NSPanel mit Lovelace UI:

                  siehe Wiki auf Git, unter Update/Upgrade
                  Link ist oben im ersten Beitrag

                  Hallo. Wenn ich dich richtig verstehe, muss man das aktuelle Script https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/NsPanelTs.ts herunterladen und wieder alle spezifischen Anpassungen vornehmen, richtig?

                  Gibt es einen smarteren/ "einfacheren" Weg das aktuelle Script an die User-spezifischen Anforderungen anzupassen?

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

                    @takahara

                    ich habe zwar nicht mehr alle Ändeerungen ab der 4.4.X in meiner Erinnerung, aber meines Erachtens gab es im oberen Teil keine "Breaking Changes"...

                    Daher würde ich mir:

                    • zunächst das alte Script sichern
                    • dann den unteren Teil austauschen (ab: "DE: Ab hier keine Konfiguration mehr" bis ganz unten)

                    und das Script mal starten

                    Ebenfalls muss dann die TFT mit:

                    FlashNextion http://nspanel.de/nspanel-v4.7.1.tft
                    

                    auf die 4.7.1 angehoben werden... Da gab es Änderungen...

                    Falls dann keine Reaktion, dann der beschriebene längere Weg...

                    1 Reply Last reply Reply Quote 1
                    • M
                      Matzeit last edited by

                      ich habe meine Panels alle geupdatet (TFT direkt am Panel - musste dann aber wie woanders geschrieben meine Tasmota Version auch updaten da sich der Updatebalken am Display nicht bewegt hatte). Tasmota jetzt 14.6.0, Skripte auf 4.7.1.2.
                      Node.js habe ich auf 20.9.2. Javascript Adapter auf 8.9.2.

                      Laufen wieder.

                      1 Reply Last reply Reply Quote 1
                      • T
                        ticaki Developer @Takahara last edited by ticaki

                        @takahara

                        Ja gibt es, das steht alles in der Wiki.

                        1 Reply Last reply Reply Quote 3
                        • Nobody else
                          Nobody else last edited by

                          Hallo Zusammen,

                          Habe folgendes Problem, ist mir eher durch Zufall aufgefallen .
                          Ich habe node.js 20.19.2 aber mein Panel meint ich hätte 16.19.0

                          Ich habe heute das script, tft und tasmota auf aktuellen stand gebracht nur ändert das nix an der falschen node.js die das Panel liest.

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            TT-Tom @Nobody else last edited by TT-Tom

                            @nobody-else

                            Das Panel liest nur den DP vom Iobroker aus. Hast Du nach dem Node Update mal den iobroker neu gestartet? Bzw. Den ganzen Rechner.

                            Ggf kannst du dir mit

                            iob diag 
                            

                            dein System mal ansehen

                            Nobody else 1 Reply Last reply Reply Quote 0
                            • Nobody else
                              Nobody else @TT-Tom last edited by

                              @tt-tom

                              Seit den letzten Node update, hatte ich den Rechner schon mehrmals Neugestartet, es wird ja auch alles im iobroker richtig angezeigt.
                              Nur wenn ich das Ns Panel skript starte steht die Meldung in den Fenster unter dem skript.

                              *** NodeJS-Installation ***
                              
                              /usr/bin/nodejs         v20.19.2
                              /usr/bin/node           v20.19.2
                              /usr/bin/npm            10.8.2
                              /usr/bin/npx            10.8.2
                              /usr/bin/corepack       0.31.0
                              
                              nodejs:
                                Installed: 20.19.2-1nodesource1
                                Candidate: 20.19.2-1nodesource1
                                Version table:
                               *** 20.19.2-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                      100 /var/lib/dpkg/status
                                   20.19.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.19.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.18.3-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.18.2-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.18.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.18.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.17.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.16.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.15.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.15.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.14.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.13.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.13.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.12.2-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.12.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.12.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.11.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.11.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.10.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.9.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.8.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.8.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.7.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.6.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.6.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.5.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.5.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.4.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.3.1-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.3.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.2.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.1.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   20.0.0-1nodesource1 1001
                                      500 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages
                                   18.19.0+dfsg-6~deb12u2 500
                                      500 http://deb.debian.org/debian bookworm/main amd64 Packages
                                   18.19.0+dfsg-6~deb12u1 500
                                      500 http://security.debian.org/debian-security bookworm-security/main amd64 Packages
                              
                              
                              T 1 Reply Last reply Reply Quote 0
                              • T
                                TT-Tom @Nobody else last edited by TT-Tom

                                @nobody-else

                                stell bitte mal im Objektordner die Ansicht auf Experte um und zeige mal diesen Datenbaum

                                system.host.
                                
                                Nobody else GregorS 2 Replies Last reply Reply Quote 1
                                • Nobody else
                                  Nobody else @TT-Tom last edited by

                                  @tt-tom
                                  ich habe den Fehler gefunden, es war in diesen Datenbaum, da waren noch DP´s von alt Systemen drin, da ich mit den iobroker mehrmals umgezogen bin und da hat er sich die Version gezogen.
                                  Habe die DP´s gelöscht und jetzt passt es auch mit der Version.
                                  Danke für den Tipp mit den Datenbaum.

                                  1 Reply Last reply Reply Quote 2
                                  • GregorS
                                    GregorS @TT-Tom last edited by GregorS

                                    Hallo Zusammen,

                                    nach dem Update der Spriptausführung auf 8.9.2 haben sich mein e NSPanels aufgehangen.
                                    Bin zurück zu 8.8.3, jetzt funktionieren sie wieder.
                                    Nutze das Script V 4.4.0.1

                                    Habe mir das neue Script 4.7.1.2 heruntergeladen und angepasst.
                                    Beim Starten des Scripts bekomme ich folgende Fehlermeldungen:

                                    script.js.NSPanel_3_V4_7_1_2: TypeScript compilation failed: let, vwIconColor: number[] = [], ^ ERROR: An element access expression should take an argument. export const config: Config = { ^ ERROR: This expression is not callable. Type '{ pages: (PageEntities | PageGrid | PageQR)[]; subPages: (PageEntities | PageGrid)[]; leftScreensaverEntity: undefined[]; bottomScreensaverEntity: ({ ...; } | ... 3 more ... | { ...; })[]; ... 12 more ...; if(existsState: any): void; }' has no call signatures. const: scriptVersion, string = 'v4.7.1.2', ^ ERROR: Cannot find name 'scriptVersion'. Did you mean 'javaScriptVersion'? const: tft_version, string = 'v4.7.1', ^ ERROR: Cannot find name 'tft_version'. const: desired_display_firmware_version = 56, ^ ERROR: Cannot find name 'desired_display_firmware_version'. const: berry_driver_version = 9, ^ ERROR: Cannot find name 'berry_driver_version'. const: tasmotaOtaUrl, string = 'http://ota.tasmota.com/tasmota32/release/', ^ ERROR: Cannot find name 'tasmotaOtaUrl'. let, timeoutSlider: any, ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, timeoutSlider: any, ^ ERROR: 'any' only refers to a type, but is being used as a value here. let, vwIconColor: number[] = [], ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, vwIconColor: number[] = [], ^ ERROR: 'number' only refers to a type, but is being used as a value here. let, weatherForecast: boolean, ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, weatherForecast: boolean, ^ ERROR: 'boolean' only refers to a type, but is being used as a value here. let, pageCounter: number = 0, ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, pageCounter: number = 0, ^ ERROR: 'number' only refers to a type, but is being used as a value here. let, alwaysOn: boolean = false, ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, alwaysOn: boolean = false, ^ ERROR: 'boolean' only refers to a type, but is being used as a value here. let, valueHiddenCards: boolean = false, ^ ERROR: No value exists in scope for the shorthand property 'let'. Either declare one or provide an initializer. let, valueHiddenCards: boolean = false, ^ ERROR: 'boolean' only refers to a type, but is being used as a value here. await createStateAsync(NSPanel_Path + 'IoBroker.ScriptVersion', scriptVersion, { type: 'string', write: false }); ^ ERROR: Cannot find name 'scriptVersion'. setIfExists(NSPanel_Path + 'IoBroker.ScriptVersion', scriptVersion, null, true); ^ ERROR: Cannot find name 'scriptVersion'. await createStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, { type: 'number', write: false }); ^ ERROR: Cannot find name 'desired_display_firmware_version'. await setStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, true); ^ ERROR: Cannot find name 'desired_display_firmware_version'. log('Desired TFT Firmware: ' + desired_display_firmware_version + ' / ' + tft_version, 'info'); ^ ERROR: Cannot find name 'desired_display_firmware_version'. log('Desired TFT Firmware: ' + desired_display_firmware_version + ' / ' + tft_version, 'info'); ^ ERROR: Cannot find name 'tft_version'. await createStateAsync(NSPanel_Path + 'Display_Firmware.TFT.desiredVersion', String(desired_display_firmware_version), { type: 'string', write: false }); ^ ERROR: Cannot find name 'desired_display_firmware_version'. await setStateAsync(NSPanel_Path + 'Display_Firmware.TFT.desiredVersion', String(desired_display_firmware_version) + ' / ' + tft_version, true); ^ ERROR: Cannot find name 'desired_display_firmware_version'. await setStateAsync(NSPanel_Path + 'Display_Firmware.TFT.desiredVersion', String(desired_display_firmware_version) + ' / ' + tft_version, true); ^ ERROR: Cannot find name 'tft_version'. valueHiddenCards = obj.state.val; ^ ERROR: Cannot assign to 'valueHiddenCards' because it is a constant. alwaysOn = false; ^ ERROR: Cannot find name 'alwaysOn'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. alwaysOn = false; ^ ERROR: Cannot find name 'alwaysOn'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. alwaysOn = false; ^ ERROR: Cannot find name 'alwaysOn'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. notification = notification + '~' + v_popupNotifyFontIdText + '~' + Icons.GetIcon(v_popupNotifyIcon) + '~' + v_popupNotifyIconColor; ^ ERROR: Cannot find name 'Icons'. weatherForecast = obj.state.val; ^ ERROR: Cannot find name 'weatherForecast'. if (parseFloat(getState(NSPanel_Path + 'Berry_Driver.currentVersion').val) < berry_driver_version) { ^ ERROR: Cannot find name 'berry_driver_version'. 'Verfügbare Version: ' + String(berry_driver_version), ^ ERROR: Cannot find name 'berry_driver_version'. if (parseInt(getState(NSPanel_Path + 'Display_Firmware.currentVersion').val) < desired_display_firmware_version) { ^ ERROR: Cannot find name 'desired_display_firmware_version'. 'Verfügbare Version: ' + String(desired_display_firmware_version), ^ ERROR: Cannot find name 'desired_display_firmware_version'. desired_display_firmware_url = `http://nspanel.de/nspanel-us-l-${tft_version}.tft`; ^ ERROR: Cannot find name 'tft_version'. desired_display_firmware_url = `http://nspanel.de/nspanel-us-p-${tft_version}.tft`; ^ ERROR: Cannot find name 'tft_version'. desired_display_firmware_url = `http://nspanel.de/nspanel-${tft_version}.tft`; ^ ERROR: Cannot find name 'tft_version'. await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true }); ^ ERROR: Cannot find name 'tft_version'. let urlString = `http://${get_current_tasmota_ip_address()}/cm?cmnd=OtaUrl ${tasmotaOtaUrl}${tasmotaOtaVersion}`; ^ ERROR: Cannot find name 'tasmotaOtaUrl'. urlString = `http://${get_current_tasmota_ip_address()}/cm?user=${tasmota_web_admin_user}&password=${tasmota_web_admin_password}&cmnd=OtaUrl ${tasmotaOtaUrl}${tasmotaOtaVersion}`; ^ ERROR: Cannot find name 'tasmotaOtaUrl'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; ^ ERROR: Cannot find name 'Icons'. ? Icons.GetIcon(pageItem.icon) ^ ERROR: Cannot find name 'Icons'. ? Icons.GetIcon('thermometer') ^ ERROR: Cannot find name 'Icons'. : Icons.GetIcon('information-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon(getState(pageItem.id + '.USERICON').val); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. let icon_up = Icons.GetIcon('arrow-up'); ^ ERROR: Cannot find name 'Icons'. let icon_stop = Icons.GetIcon('stop'); ^ ERROR: Cannot find name 'Icons'. let icon_down = Icons.GetIcon('arrow-down'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('garage'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('garage'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('garage-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('garage-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('garage-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('garage-open'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('motion-sensor'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('motion-sensor'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('motion-sensor'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('motion-sensor'); ^ ERROR: Cannot find name 'Icons'. ? Icons.GetIcon(pageItem.icon) ^ ERROR: Cannot find name 'Icons'. ? Icons.GetIcon('thermometer') ^ ERROR: Cannot find name 'Icons'. : Icons.GetIcon('information-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon(getState(pageItem.id + '.USERICON').val); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('timer-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('timer-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('fan'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('fan'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lock'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lock'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lock'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lock'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lock-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lock-open-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('plus-minus-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('plus-minus-variant'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon('volume-low'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon('volume-medium'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon('volume-high'); ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon('volume-mute'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('alert-outline'); ^ ERROR: Cannot find name 'Icons'. iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('alert-outline'); ^ ERROR: Cannot find name 'Icons'. if (Icons.GetIcon(itemFahrzeug) != '') { ^ ERROR: Cannot find name 'Icons'. iconId = Icons.GetIcon(itemFahrzeug); ^ ERROR: Cannot find name 'Icons'. if (page.type == 'cardThermo' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) { ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. if (id && existsObject(id) && alwaysOn == false) { ^ ERROR: Cannot find name 'alwaysOn'. alwaysOn = true; ^ ERROR: Cannot find name 'alwaysOn'. else if (id && existsObject(id) && page.type == 'cardThermo' && pageCounter == 1) { ^ ERROR: Cannot find name 'pageCounter'. bt[i++] = Icons.GetIcon('alpha-a-circle') + '~' + rgb_dec565(On) + '~1~' + 'AUTT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('alpha-a-circle') + '~33840~1~' + 'AUTT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('alpha-m-circle') + '~' + rgb_dec565(On) + '~1~' + 'MANT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('alpha-m-circle') + '~33840~1~' + 'MANT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('party-popper') + '~' + rgb_dec565(On) + '~1~' + 'PART' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('party-popper') + '~33840~1~' + 'PART' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('palm-tree') + '~' + rgb_dec565(On) + '~1~' + 'VACT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('palm-tree') + '~33840~1~' + 'VACT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('fast-forward-60') + '~' + rgb_dec565(On) + '~1~' + 'BOOT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i++] = Icons.GetIcon('fast-forward-60') + '~33840~1~' + 'BOOT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('water-percent') + '~65504~1~' + 'HUM' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('water-percent') + '~63488~1~' + 'HUM' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('water-percent') + '~2016~1~' + 'HUM' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('water-percent') + '~65504~1~' + 'HUM' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('water-percent') + '~63488~1~' + 'HUM' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('battery-low') + '~63488~1~' + 'LBAT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('battery-high') + '~2016~1~' + 'LBAT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('account-wrench') + '~60897~1~' + 'MAIN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('account-wrench') + '~33840~1~' + 'MAIN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('wifi-off') + '~63488~1~' + 'WLAN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('wifi') + '~2016~1~' + 'WLAN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('power-standby') + '~2016~1~' + 'POWER' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('power-standby') + '~33840~1~' + 'POWER' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('alert-circle') + '~63488~1~' + 'ERR' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('alert-circle') + '~33840~1~' + 'ERR' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('briefcase-check') + '~2016~1~' + 'WORK' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('briefcase-check') + '~33840~1~' + 'WORK' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('window-open-variant') + '~63488~1~' + 'WIN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[i - 1] = Icons.GetIcon('window-closed-variant') + '~2016~1~' + 'WIN' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'AUTO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'AUTO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'COOL' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'COOL' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'HEAT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'HEAT' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'ECO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'ECO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'FAN_ONLY' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'FAN_ONLY' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'DRY' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'DRY' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'ECO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[iconIndex] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~0~' + 'ECO' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[7] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'SWING' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[7] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'SWING' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[0] = Icons.GetIcon(tempIcon) + '~' + tempIconOffColor + '~1~' + 'POWER' + '~'; ^ ERROR: Cannot find name 'Icons'. bt[0] = Icons.GetIcon(tempIcon) + '~' + tempIconOnColor + '~1~' + 'POWER' + '~'; ^ ERROR: Cannot find name 'Icons'. if (useMediaEvents && pageCounter == 1) { ^ ERROR: Cannot find name 'pageCounter'. if (useMediaEvents && pageCounter == 1) { ^ ERROR: Cannot find name 'pageCounter'. if (page.type == 'cardMedia' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) { ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. if (alwaysOn == false) { ^ ERROR: Cannot find name 'alwaysOn'. alwaysOn = true; ^ ERROR: Cannot find name 'alwaysOn'. else if (page.type == 'cardMedia' && pageCounter == 1) { ^ ERROR: Cannot find name 'pageCounter'. alwaysOn = true; ^ ERROR: Cannot find name 'alwaysOn'. else if (page.type == 'cardMedia' && pageCounter == -1) { ^ ERROR: Cannot find name 'pageCounter'. let media_icon = Icons.GetIcon('playlist-music'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('spotify'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('alpha-s-circle'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('alpha-b-circle'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('dlna'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('alpha-a-circle'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('clock-time-twelve-outline'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon('alpha-m-circle'); ^ ERROR: Cannot find name 'Icons'. media_icon = Icons.GetIcon(page.items[0].playerMediaIcon); ^ ERROR: Cannot find name 'Icons'. let iconplaypause = Icons.GetIcon('pause'); //pause ^ ERROR: Cannot find name 'Icons'. let shuffle_icon = Icons.GetIcon('shuffle-variant'); //shuffle ^ ERROR: Cannot find name 'Icons'. shuffle_icon = Icons.GetIcon('shuffle-disabled'); //shuffle ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('pause'); //pause ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('play'); //play ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('pause'); //pause ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('play'); //play ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('pause'); //pause ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('play'); //play ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('play'); //play ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('pause'); //pause ^ ERROR: Cannot find name 'Icons'. iconplaypause = Icons.GetIcon('play'); //play ^ ERROR: Cannot find name 'Icons'. speakerListString = 'input_sel' + '~' + tid + '?speakerlist' + '~' + Icons.GetIcon('speaker') + '~' + speakerListIconCol + '~' + findLocale('media', 'speaker') + '~' + 'media0~'; ^ ERROR: Cannot find name 'Icons'. Icons.GetIcon('playlist-play') + ^ ERROR: Cannot find name 'Icons'. 'input_sel' + '~' + tid + '?tracklist' + '~' + Icons.GetIcon('animation-play-outline') + '~' + trackListIconCol + '~' + findLocale('media', 'tracklist') + '~' + 'media2~'; ^ ERROR: Cannot find name 'Icons'. 'input_sel' + '~' + tid + '?equalizer' + '~' + Icons.GetIcon('equalizer-outline') + '~' + equalizerListIconCol + '~' + findLocale('media', 'equalizer') + '~' + 'media3~'; ^ ERROR: Cannot find name 'Icons'. 'input_sel' + '~' + tid + '?favorites' + '~' + Icons.GetIcon('playlist-star') + '~' + equalizerListIconCol + '~' + findLocale('media', 'favorites') + '~' + 'media3~'; ^ ERROR: Cannot find name 'Icons'. let repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-once'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-once'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-once'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-once'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-variant'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat'); ^ ERROR: Cannot find name 'Icons'. repeatIcon = Icons.GetIcon('repeat-once'); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon('shield-home'); //icon*~* ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon('shield-off'); //icon*~* ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon('shield'); //icon*~* ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon('bell-ring'); //iconcolor*~* ^ ERROR: Cannot find name 'Icons'. let icon = Icons.GetIcon('lock-remove'); //iconcolor*~* ^ ERROR: Cannot find name 'Icons'. let iconId1 = Icons.GetIcon('wifi'); ^ ERROR: Cannot find name 'Icons'. let iconId2 = Icons.GetIcon('key'); ^ ERROR: Cannot find name 'Icons'. iconId2 = getState(page.items[0].id + '.SWITCH').val ? Icons.GetIcon('router-wireless') : Icons.GetIcon('router-wireless-off'); ^ ERROR: Cannot find name 'Icons'. iconId2 = getState(page.items[0].id + '.SWITCH').val ? Icons.GetIcon('router-wireless') : Icons.GetIcon('router-wireless-off'); ^ ERROR: Cannot find name 'Icons'. if (page.type == 'cardPower' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) { ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. if (alwaysOn == false) { ^ ERROR: Cannot find name 'alwaysOn'. alwaysOn = true; ^ ERROR: Cannot find name 'alwaysOn'. else if (page.type == 'cardPower' && pageCounter == 1) { ^ ERROR: Cannot find name 'pageCounter'. power_string = power_string + Icons.GetIcon(array_icon[i + 1]) + '~'; // icon~ ^ ERROR: Cannot find name 'Icons'. Icons.GetIcon(array_icon[0]) + ^ ERROR: Cannot find name 'Icons'. if (alwaysOn == true) { ^ ERROR: Cannot find name 'alwaysOn'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. alwaysOn = false; ^ ERROR: Cannot find name 'alwaysOn'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 0; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. pageCounter = 1; ^ ERROR: Cannot find name 'pageCounter'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. if (timeoutSlider) { ^ ERROR: Cannot find name 'timeoutSlider'. clearTimeout(timeoutSlider); ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = null; ^ ERROR: Cannot find name 'timeoutSlider'. timeoutSlider = setTimeout(async function () { ^ ERROR: Cannot find name 'timeoutSlider'. navigationString = 'button~bUp~' + Icons.GetIcon(activePage.parentIcon); ^ ERROR: Cannot find name 'Icons'. navigationString = 'button~bUp~' + Icons.GetIcon('arrow-up-bold') + '~' + rgb_dec565(White); ^ ERROR: Cannot find name 'Icons'. navigationString = 'button~bSubPrev~' + Icons.GetIcon(activePage.prevIcon); ^ ERROR: Cannot find name 'Icons'. navigationString = 'button~bSubPrev~' + Icons.GetIcon('arrow-left-bold') + '~' + rgb_dec565(White); ^ ERROR: Cannot find name 'Icons'. navigationString += '~~~button~bHome~' + Icons.GetIcon(activePage!.homeIcon); ^ ERROR: Cannot find name 'Icons'. navigationString += '~~~button~bHome~' + Icons.GetIcon('home') + '~' + rgb_dec565(White) + '~~'; ^ ERROR: Cannot find name 'Icons'. navigationString += '~~~button~bSubNext~' + Icons.GetIcon(activePage.nextIcon); ^ ERROR: Cannot find name 'Icons'. navigationString += '~~~button~bSubNext~' + Icons.GetIcon('arrow-right-bold') + '~' + rgb_dec565(White) + '~~'; ^ ERROR: Cannot find name 'Icons'. const getNavigationStringForPage = (icon: string, color: number) => `button~bUp~${Icons.GetIcon(icon)}~${color} ~~~delete~~~~~`; ^ ERROR: Cannot find name 'Icons'. const prevIcon = activePage && activePage.prevIcon ? Icons.GetIcon(activePage!.prevIcon) : Icons.GetIcon('arrow-left-bold'); ^ ERROR: Cannot find name 'Icons'. const prevIcon = activePage && activePage.prevIcon ? Icons.GetIcon(activePage!.prevIcon) : Icons.GetIcon('arrow-left-bold'); ^ ERROR: Cannot find name 'Icons'. const nextIcon = activePage && activePage.nextIcon ? Icons.GetIcon(activePage!.nextIcon) : Icons.GetIcon('arrow-right-bold'); ^ ERROR: Cannot find name 'Icons'. const nextIcon = activePage && activePage.nextIcon ? Icons.GetIcon(activePage!.nextIcon) : Icons.GetIcon('arrow-right-bold'); ^ ERROR: Cannot find name 'Icons'. let icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. let icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. let icon2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. let icon2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('lightbulb-outline'); ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); ^ ERROR: Cannot find name 'Icons'. let icon_up = Icons.GetIcon('arrow-up'); ^ ERROR: Cannot find name 'Icons'. let icon_stop = Icons.GetIcon('stop'); ^ ERROR: Cannot find name 'Icons'. let icon_down = Icons.GetIcon('arrow-down'); ^ ERROR: Cannot find name 'Icons'. iconTiltLeft = Icons.GetIcon('arrow-top-right'); ^ ERROR: Cannot find name 'Icons'. iconTiltStop = Icons.GetIcon('stop'); ^ ERROR: Cannot find name 'Icons'. iconTiltRight = Icons.GetIcon('arrow-bottom-left'); ^ ERROR: Cannot find name 'Icons'. Icons.GetIcon(vIcon) + ^ ERROR: Cannot find name 'Icons'. icon = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : 'fan'; ^ ERROR: Cannot find name 'Icons'. weatherForecast = getState(NSPanel_Path + 'ScreensaverInfo.weatherForecast').val; ^ ERROR: Cannot find name 'weatherForecast'. entityIcon = Icons.GetIcon(GetDasWetterIcon(parseInt(icon))); ^ ERROR: Cannot find name 'Icons'. entityIcon = Icons.GetIcon(GetAccuWeatherIcon(parseInt(icon))); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(iconName); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOn); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(leftScreensaverEntity.ScreensaverEntityIconOff); ^ ERROR: Cannot find name 'Icons'. if (weatherForecast) { ^ ERROR: Cannot find name 'weatherForecast'. payloadString += '~' + '~' + Icons.GetIcon(sun) + '~' + rgb_dec565(MSYellow) + '~' + 'Sonne' + '~' + formatDate(getDateObject(arraySunEvent[nextSunEvent]), 'hh:mm') + '~'; ^ ERROR: Cannot find name 'Icons'. payloadString += '~' + '~' + Icons.GetIcon(WeatherIcon) + '~' + WheatherColor + '~' + DayOfWeek + '~' + tempMinMaxString + '~'; ^ ERROR: Cannot find name 'Icons'. Icons.GetIcon(config.bottomScreensaverEntity[4].ScreensaverEntityIconOn) + ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(iconName); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(entity.ScreensaverEntityIconOn); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(entity.ScreensaverEntityIconOff); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(iconName); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOn); ^ ERROR: Cannot find name 'Icons'. icon = Icons.GetIcon(indicatorScreensaverEntity.ScreensaverEntityIconOff); ^ ERROR: Cannot find name 'Icons'. ScreensaverEntityIconOn: config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn ? Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOn) : '', ^ ERROR: Cannot find name 'Icons'. ScreensaverEntityIconOff: config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff ? Icons.GetIcon(config.mrIcon1ScreensaverEntity.ScreensaverEntityIconOff) : '', ^ ERROR: Cannot find name 'Icons'. ScreensaverEntityIconOn: config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn ? Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOn) : '', ^ ERROR: Cannot find name 'Icons'. ScreensaverEntityIconOff: config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff ? Icons.GetIcon(config.mrIcon2ScreensaverEntity.ScreensaverEntityIconOff) : '', ^ ERROR: Cannot find name 'Icons'. payloadString += Icons.GetIcon(icon); ^ ERROR: Cannot find name 'Icons'. vwIcon[0] = vwIconColor[0]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[1] = vwIconColor[1]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[2] = vwIconColor[2]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[3] = vwIconColor[3]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[4] = vwIconColor[4]; ^ ERROR: Cannot find name 'vwIconColor'. if (weatherForecast) { ^ ERROR: Cannot find name 'weatherForecast'. vwIcon[1] = vwIconColor[1]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[2] = vwIconColor[2]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[3] = vwIconColor[3]; ^ ERROR: Cannot find name 'vwIconColor'. vwIcon[4] = vwIconColor[4]; ^ ERROR: Cannot find name 'vwIconColor'. return Icons.GetIcon(item.icon) || iconId; ^ ERROR: Cannot find name 'Icons'. return Icons.GetIcon(ss.ScreensaverEntityIconSelect[ss.ScreensaverEntityIconSelect.length - 1].icon) || iconId; ^ ERROR: Cannot find name 'Icons'. return ((iconKey && existsState(iconKey) && Icons.GetIcon(getState(iconKey).val)) || ^ ERROR: Cannot find name 'Icons'. Icons.GetIcon(iconKey) || ^ ERROR: Cannot find name 'Icons'. (def && defIndex !== undefined ? Icons.GetIcon(def[defIndex]) : undefined) || ^ ERROR: Cannot find name 
                                    

                                    Kann es an der Scriptversion liegen?
                                    Tasmota ist 14.6.0

                                    /usr/bin/nodejs v20.19.2
                                    /usr/bin/node v20.19.2
                                    /usr/bin/npm 10.8.2
                                    /usr/bin/npx 10.8.2
                                    /usr/bin/corepack 0.31.0

                                    js-controller: 7.0.6
                                    admin: 7.6.17
                                    javascript: 8.8.3

                                    Danke für Eure Hilfe

                                    Gregor

                                    Neuschwansteini T 2 Replies Last reply Reply Quote 0
                                    • Neuschwansteini
                                      Neuschwansteini @GregorS last edited by

                                      @gregors Klar, kann auch nicht funktionieren, bitte immer alles aktuell halten.
                                      Javascript Adapter und Scripte passen immer zueinander, eine alte Version mit einer neuen geht in dem Fall nicht.

                                      Lies hier doch mal durch, das Thema hatten wir jetzt so oft in den letzten Tagen..

                                      1 Reply Last reply Reply Quote 2
                                      • T
                                        TT-Tom @GregorS last edited by

                                        @gregors

                                        Im Wiki gibt es eine Anleitung zum Upgrade des Script. Grade bei großen Versionssprüngen, sollte so vorgegangen werden.
                                        update

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        1.1k
                                        Online

                                        31.7k
                                        Users

                                        79.7k
                                        Topics

                                        1.3m
                                        Posts

                                        lovelace ui nspanel sonoff
                                        261
                                        7179
                                        4890089
                                        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