Navigation

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

    NEWS

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    SONOFF NSPanel mit Lovelace UI

    This topic has been deleted. Only users with topic management privileges can see it.
    • Armilar
      Armilar Most Active Forum Testing @australien last edited by

      @australien

      hier ist es etwas detaillierter beschrieben, wie das NSPanel-TFT direkt per Nextion Editor geflashed wird:

      https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/166#issue-1524561202

      Kleinheribert created this issue in Blackymas/NSPanel_HA_Blueprint

      closed Error: Model does not match-Nextion Display bricked-Solution #166

      A 1 Reply Last reply Reply Quote 1
      • W
        welli @Armilar last edited by

        @armilar
        Habe dies jetzt mit den 2 Panels gemacht, mal schauen ob dies den Fehler behebt.
        Danke noch mal für den Support.

        W 1 Reply Last reply Reply Quote 0
        • A
          australien @Armilar last edited by

          @armilar @teletapi
          leider bringt das auch nichts, ab es mit Geschwindigkeiten von 19200 bis 115200 versucht, bleibt immer beim gleichen Speicherwert hängen.
          😞

          1 Reply Last reply Reply Quote 0
          • V
            Venice last edited by

            Guten Morgen, ich habe seit einiger zeit diesen Fehler in meinem Log. Habt ihr eine Idee was das sein könnte?
            error: javascript.0 (3090) script.js.NS_Panels.Panel_Erdgeschoss_1_0: existsObject has been called with id of type "object" but expects a string

            T T 2 Replies Last reply Reply Quote 0
            • T
              ticaki Developer @Venice last edited by

              @venice
              version des scripts? Da müsste auch ne Zeilennummer hinter dem Fehler gestanden haben.

              arteck 1 Reply Last reply Reply Quote 0
              • T
                TT-Tom @Venice last edited by

                @venice
                Wann tritt der Fehler auf. Bei welcher Seite?
                Welche Script Version und welche TFT Version??

                1 Reply Last reply Reply Quote 0
                • W
                  welli @welli last edited by

                  @armilar,
                  Wollte dir noch mal Rückmeldung geben und dir sagen dass das Problem nicht mehr vorgekommen ist.
                  Danke für den Support.

                  1 Reply Last reply Reply Quote 0
                  • Marc Berg
                    Marc Berg Most Active last edited by

                    Meine Card für das Ein-/ Ausschalten des Gäste-WLAN-Zuganges und zur Darstellung des QR-Codes sieht so aus:

                    let WLAN:PageType=
                    {
                        'type': 'cardQR',
                        'heading': 'Gäste WLAN',
                        'subPage': true,
                        'parent': Start_Panel1,
                        'items': [
                    		{ id: "alias.0.NSPanel.1.GuestWifi",
                                hidePassword: true, // true = Switch; false = Password
                                hideEntity2: false // true = Switch or Password is hide
                            }
                    	]
                    };
                    

                    Gibt es eine Möglichkeit, beim Ein-/Ausschalter (hideEntity2) dynamisch festzulegen, ob der Schalter dargestellt werden soll oder nicht?

                    1 Reply Last reply Reply Quote 0
                    • arteck
                      arteck Developer Most Active @ticaki last edited by arteck

                      @ticaki sagemal ist es ein Bug oder soll so

                              { id: 'alias.0.NSPanel.Garten.horstOnline', name: 'Status', offColor: Red, onColor: MSGreen, useValue: true, fontSize: 3}
                      

                      der alias klann offline und online sein.. wird auch angezeigt allerdings immer in der Farbe MSGreen.. würde bei offline das ding gerne in Rot haben

                      so ist der alias definiert

                      {
                        "_id": "alias.0.NSPanel.Garten.horstOnline.ACTUAL",
                        "common": {
                          "name": "ACTUAL",
                          "role": "state",
                          "type": "mixed",
                          "read": true,
                          "write": false,
                          "alias": {
                            "id": "worx.0.2019501385029008727F.mower.online",
                            "read": "val==true?\"online\":val==false?\"offline\":null"
                          }
                        },
                        "native": {},
                        "type": "state",
                        "acl": {
                          "object": 1638,
                          "state": 1638,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        },
                        "from": "system.adapter.admin.1",
                        "user": "system.user.admin",
                        "ts": 1758280070290
                      }
                      
                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @arteck last edited by ticaki

                        @arteck

                        Kein Bug - bei dir ist das val = 'online' oder 'offline' das ist laut code... - ok also wenn nicht true ist es onColor

                        Codeausschnitt:

                                             case 'info':
                                                    iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button');
                                                    iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
                        
                                                    buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS';
                                                    if (existsState(pageItem.id + '.COLORDEC')) {
                                                        iconColor = getState(pageItem.id + '.COLORDEC').val;
                                                    } else {
                                                        if (val === true || val === 'true') {
                                                            iconColor = GetIconColor(pageItem, false, useColors);
                                                        } else {
                                                            iconColor = GetIconColor(pageItem, true, useColors);
                                                        }
                                                    }
                        

                        mit COLORDEC sollte es gehen, da muß aber die dec rein:

                        /**
                         * Converts an RGB color to a 16-bit 565 color format.
                         * 
                         * This function takes an RGB color object and converts it to a 16-bit 565 color format.
                         * 
                         * @function rgb_dec565
                         * @param {RGB} rgb - The RGB color object.
                         * @returns {number} The 16-bit 565 color value.
                         */
                        function rgb_dec565 (rgb: RGB): number {    //return ((Math.floor(rgb.red / 255 * 31) << 11) | (Math.floor(rgb.green / 255 * 63) << 5) | (Math.floor(rgb.blue / 255 * 31)));
                            return ((rgb.red >> 3) << 11) | ((rgb.green >> 2) << 5) | (rgb.blue >> 3);
                        }
                        

                        Also nen Alias anlegen der COLORDEC heißt und die Farbe vorgeben mit der read Funktion mit schalten.

                        hm COLORDEC muß beschrieben sein, wenn ACTUAL aktualisiert wird - da ist kein delay auf dem Pfad soweit ich sehe.

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

                          @ticaki
                          @arteck

                          Welche Rolle hat dein Channel? Vielleicht liegt da schon der Fehler.
                          Colordec muss ein Datenpunkt im Channel sein, der sollte auch triggern bei Änderung.

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @TT-Tom last edited by ticaki

                            @tt-tom

                            Dann passt es ja, ich hab nicht den Pfad von COLORDEC geguckt sondern nur den von ACTUAL.

                            das hier sieht aber "ist zwar falsch aber kompatible" aus:

                                                            if (val === true || val === 'true') {
                                                                iconColor = GetIconColor(pageItem, false, useColors);
                                                            } else {
                                                                iconColor = GetIconColor(pageItem, true, useColors);
                                                            }
                            

                            EDIT:

                            Welche Rolle hat dein Channel? Vielleicht liegt da schon der Fehler.

                            da kommt als Wert online und offline die sind bei einem üblichen true vergleich immer wahr und bei einem === true Vergleich immer false.

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

                              @ticaki

                              die Info rolle unterstütz nur Number und boolean.

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

                                @arteck
                                @TT-Tom

                                Sry ich hab im Navzweig geguckt - Im normalen Zeig ist das anders - sry

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

                                  @arteck
                                  So rumwühlen ergebnis - geht nicht

                                  Ändere hier den code:

                                  if (existsState(pageItem.id + '.ACTUAL') && pageItem.icon2 != undefined) {
                                                          // Read Alias Datapoint Objectdata
                                                          let obj = getObject(pageItem.id + ".ACTUAL");
                                                          // Read origin Datapoint Objectdata
                                                          if (existsState(obj.common.alias.id)) {
                                                              let obj2 = getObject(obj.common.alias.id);
                                                              // Register Origin Datapoint
                                                              RegisterEntityWatcher(obj.common.alias.id);
                                                              // Check Data-Type (This must be boolean)
                                                              if (obj2.type === 'state' && obj2.common.type == "boolean") {
                                                                  if (Debug) log(getState(obj.common.alias.id).val, 'info');
                                                                  if (getState(obj.common.alias.id).val) {
                                                                      iconId = pageItem.icon != undefined ? Icons.GetIcon(pageItem.icon) : iconId;
                                                                      iconColor = pageItem.onColor != undefined ? rgb_dec565(pageItem.onColor) : iconColor;
                                                                  } else {
                                                                      iconId = pageItem.icon2 != undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
                                                                      iconColor = pageItem.offColor != undefined ? rgb_dec565(pageItem.offColor) : iconColor;
                                                                  }
                                                              }
                                                          }
                                                      }
                                  

                                  EDIT - das ist Käse drunter ist besser

                                                    if (existsState(pageItem.id + '.ACTUAL') && (pageItem.icon2 != undefined || pageItem.useValue)) {
                                                          // Read Alias Datapoint Objectdata
                                                          let obj = getObject(pageItem.id + ".ACTUAL");
                                                          // Read origin Datapoint Objectdata
                                                          if (existsState(obj.common.alias.id)) {
                                                              let obj2 = getObject(obj.common.alias.id);
                                                              // Register Origin Datapoint
                                                              RegisterEntityWatcher(obj.common.alias.id);
                                                              // Check Data-Type (This must be boolean)
                                                              if (obj2.type === 'state' && obj2.common.type == "boolean") {
                                                                  if (Debug) log(getState(obj.common.alias.id).val, 'info');
                                                                  if (getState(obj.common.alias.id).val) {
                                                                      if (!pageItem.useValue) iconId = pageItem.icon != un defined ? Icons.GetIcon(pageItem.icon) : iconId;
                                                                      iconColor = pageItem.onColor != undefined ? rgb_dec565(pageItem.onColor) : iconColor;
                                                                  } else {
                                                                      if (!pageItem.useValue) iconId = pageItem.icon2 != undefined ? Icons.GetIcon(pageItem.icon2) : iconId;
                                                                      iconColor = pageItem.offColor != undefined ? rgb_dec565(pageItem.offColor) : iconColor;
                                                                  }
                                                              }
                                                          }
                                                      }
                                  

                                  Käse ende 😄

                                  Kopiere den if hier der aktuell oberhalb von ^der funktion steht, einfach drunter und füge das useValue in den If ^ wie da ein.

                                                  if (pageItem.useValue) {
                                                          if (pageItem.fontSize != undefined) {
                                                              if (pageItem.suffixName == undefined) {
                                                                  iconId = optVal + '¬' + pageItem.fontSize;
                                                              } else {
                                                                  iconId = optVal + pageItem.suffixName + '¬' + pageItem.fontSize;
                                                              }
                                                          } else {
                                                              iconId = optVal;
                                                          }
                                                      }
                                  

                                  EDIT2 - das müsste eigentlcih dann doch ein BUG sein - Armilar und TT-Tom sind da mehr drin als ich.

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

                                    @ticaki sagte in SONOFF NSPanel mit Lovelace UI:

                                    if (existsState(pageItem.id + '.ACTUAL') && pageItem.icon2 != undefined) {

                                    die Funktion lauft bei der Konfiguration nicht da kein icon2 definiert ist.

                                    { id: 'alias.0.NSPanel.Garten.horstOnline', name: 'Status', offColor: Red, onColor: MSGreen, useValue: true, fontSize: 3}
                                    

                                    also läuft das normal durch

                                                    if (pageItem.useValue) {
                                                            if (pageItem.fontSize != undefined) {
                                                                if (pageItem.suffixName == undefined) {
                                                                    iconId = optVal + '¬' + pageItem.fontSize;
                                                                } else {
                                                                    iconId = optVal + pageItem.suffixName + '¬' + pageItem.fontSize;
                                                                }
                                                            } else {
                                                                iconId = optVal;
                                                            }
                                                        }
                                    

                                    EDIT: Problem ist wirkliche der Text in ACTUAL
                                    EDIT2 bin jetzt am überlegen warum wir nicht COLORDEC da haben, ist doch die Info-rolle, diese Universell sein sollte.

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      ticaki Developer @TT-Tom last edited by

                                      @tt-tom

                                      Bei dem C&P Vorschlag müsste man noch icon2 definieren - richtig - aber dann würde es halt laufen - zum Colordec hab ich ja schon was im discord geschrieben 🙂

                                      Wurde gezwungen im adapter überall colordec und buttontext einzubauen ^^

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

                                        @ticaki

                                        if (existsState(pageItem.id + '.COLORDEC')) {
                                                                if (Debug) log('iconcolor von ' + pageItem.id + '.COLORDEC: ' + getState(pageItem.id + '.COLORDEC').val, 'info');
                                                                RegisterEntityWatcher(pageItem.id + '.COLORDEC');
                                                                iconColor = getState(pageItem.id + '.COLORDEC').val;
                                                            }
                                        

                                        ich würde das so ans Ende des Case setzen

                                        T 1 Reply Last reply Reply Quote 1
                                        • T
                                          ticaki Developer @TT-Tom last edited by

                                          @tt-tom Würde ich so ins Skript übernehmen, das ist auch kompatibel zum Adapter.

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

                                            Ich darf verkünden, das @TT-Tom in seiner Weisheit sich herabgelassen hat die Funktion für @arteck anzupassen

                                            Bitte die aktuell dev testen 🙂

                                            https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/DEV/NSPanelTs.ts

                                            FYI: @Armilar

                                            EDIT:
                                            COLORDEC geht jetzt da
                                            Sowie wenn useValue=true und wenn der State, der die Quelle des alias ist, vom common.type='boolean' ist - wird onColor, offColor verwendet.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            32.1k
                                            Users

                                            80.8k
                                            Topics

                                            1.3m
                                            Posts

                                            lovelace ui nspanel sonoff
                                            270
                                            7647
                                            6304938
                                            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