Navigation

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

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

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

    Sonoff NSPanel

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

      @a200

      ansonsten noch die mqtt-Adapter Einstellungen prüfen?

      24920f7b-9cb7-4924-bd16-800756249a33-image.png

      Maske zum Bekanntgeben eigener States sollte dann mqtt.1.* lauten - sonst landet es in der falschen Instanz

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

        @armilar f8a1ead1-3179-4479-98d3-bee4a4a4fa46-grafik.png

        F*CK ist das frustrierend! Sollte ich mit nen anderen FW probieren?

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

          @a200 sagte in Sonoff NSPanel:

          F*CK ist das frustrierend! Sollte ich mit nen anderen FW probieren?

          Nee, hängt zwischen Tasmota und Mqtt-Adapter. Ich denke mal das du ioBroker und Tasmota schon rebootet hast? Nur so ne Idee, da ich das auch in dieser Form noch nicht kenne - das die MQTT-Kommunikation nicht mitspielt.

          Eventuell doch auf tasmota-nspanel.bin via OTA ändern?

          Vielleicht hat @britzelpuf noch ne Idee, oder jemand anderes?

          Panel lauscht auf Kommunikation mit dem CustomSend, danach wären auch die Warnungen weg

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

            @a200

            Glaube zwar nicht, dass es daran liegt aber ein Versuch wäre es ebenfalls Wert:

            DEV-Version mit - FlashNextion http://nspanel.pky.eu/lui.tft - über Tasmota-Konsole

            Dann nochmal "CustomSend time~14:32" absetzten oder mit dem MQTT-Explorer

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

              @armilar Tasmota schon gefühlte 100 mal und IoBroker 1 Mal.
              Ich hatte vorher schon eine nspanel version von Tasmota. Jetzt ist sie etwas aktueller, aber immer noch nix.
              Aber auch der mqtt-Explorer zeigt mir (trotz CustomSend time~11:35) kein CustomSend unter cmnd

              016aac74-edda-4ea0-9311-534e27744b3d-grafik.png

              FlashNextion http://nspanel.pky.eu/lui.tft läuft... Ich melde mich wenn er durch ist.

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

                @a200

                Ist im Javascript-Adapter diese Einstellung gesetzt?

                c35f5c56-bcef-4462-a791-76ae2efe737e-image.png

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

                  @armilar nee, das ist neu. Habe ich gerade. FW ist bei 56%

                  Update ist durch.

                  MQTT.1 läuft
                  c11c4b65-22f9-45c5-abd6-b31f9d75c5c0-grafik.png

                  CustomSend time~14:32 ausgeführt.

                  aber kein CustomSend 😠

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

                    @a200

                    Verstehe ich echt nicht.

                    Ist der Port 1885 wirklich frei? sonst mal einen anderen in Tasmota und MQTT-Adapter einstellen
                    Sind die MQTT-IP's in Tasmota und MQTT-Adapter korrekt?

                    3a727202-e3ba-4a4f-a0a5-919eb5882595-image.png

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

                      @armilar Ich habe den mqtt.1. Adapter gestoppt. Dann in Objekte den ganzen Unterbaum von mqtt.1 gelöscht. Wenn ich jetzt den Adapter neu starte, dann werden die ganzen DP angelegt.

                      Und wenn ich mqqt auf dem Panel auf den mqqt-Explorer umbiege, dann bekomme ich auch die Verbindung.

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

                        @a200 sagte in Sonoff NSPanel:

                        @armilar Ich habe den mqtt.1. Adapter gestoppt. Dann in Objekte den ganzen Unterbaum von mqtt.1 gelöscht. Wenn ich jetzt den Adapter neu starte, dann werden die ganzen DP angelegt.

                        Und wenn ich mqqt auf dem Panel auf den mqqt-Explorer umbiege, dann bekomme ich auch die Verbindung.

                        Das heißt es läuft jetzt alles?

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

                          @armilar leider nicht. ich meine nur, dass der mqtt-Adapter und mein nspnael kommunizieren. Die custom commands werden vom Panel zwar akzeptiert, aber es wird kein DP in IoBroker erzeugt. Wo kann man da noch was falsch machen und wieso bin ich der erster?

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

                            @a200 sagte in Sonoff NSPanel:

                            @armilar leider nicht. ich meine nur, dass der mqtt-Adapter und mein nspnael kommunizieren. Die custom commands werden vom Panel zwar akzeptiert, aber es wird kein DP in IoBroker erzeugt. Wo kann man da noch was falsch machen und wieso bin ich der erster?

                            Weiß nicht, warum dein MQTT-Adapter das nicht will. Sonst werfe mal die Adapter-Instanz weg und lege die komplett neu an. Wie bereits erwähnt, evtl. mit komplett neuem Port auf beiden Seiten. Gibt viele Adapter mit MQTT-Kommunikation (Sonoff/Shelly/WLED/MQTT.0/etc.) nicht das der belegt ist??????

                            1 Reply Last reply Reply Quote 1
                            • a200
                              a200 last edited by

                              @armilar die 1er Instanz war speziell für nspanel erstellt worden. Trotzdem habe ich eine neu Instanz erstellt (1886) und auf nspanel angepasst und sogar umbenannt.

                              cc8a3ccc-f283-487b-a8e9-eb9a058f6dfa-grafik.png

                              Verstehe ich das richtig, dass spätestens "CustomSend time~11:35" auf der Console, den Eintrag im mqtt erzeugen sollte?

                              Mikewolf 1 Reply Last reply Reply Quote 0
                              • Mikewolf
                                Mikewolf @a200 last edited by

                                @a200
                                Ja sollte , ging aber bei damals auch nicht, habe daher mit mqtt explorer angelegt , und dann auch noch schreibbar gemacht,erst dann hat es bei mir funktioniert!
                                mfg
                                mikewolf

                                a200 1 Reply Last reply Reply Quote 1
                                • a200
                                  a200 @Mikewolf last edited by a200

                                  @mikewolf

                                  3b9e4a34-d159-4c3a-b830-3984bfd7f3fa-grafik.png

                                  Mit mqtt-Explorer kann ich ein CustomSend Abschicken. Aber Wie mach ich den jetzt schreibbar?

                                  Ja!

                                  11de3771-c208-4822-a7b6-697406be3174-grafik.png

                                  @Armilar

                                  Jungs! Ihr seid die Besten! Jetzt geht es!

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

                                    @armilar said in Sonoff NSPanel:

                                    @a200 sagte in Sonoff NSPanel:

                                    @armilar @Mikewolf

                                    648b1ac6-62af-4973-b403-b7eff42bcee0-grafik.png

                                    Klappt leider nicht. Über mqtt-Explorer sehe ich den Datenpunkt aber in IoBroker nicht.

                                    6068ae70-47a0-46c0-92e9-565e8880b3e7-grafik.png

                                    Weitere Ideen?

                                    hmmm - für mich sieht das so aus, als wenn da noch NSPSend mit der Sonoff-Firmware arbeitet. Hast du denn die folgenden Schritte gemacht?

                                    • Tasmota Konsole/Verwaltung Dateisystem: autoexec.be und autoexec.bec löschen

                                    • autoexec.be mit Inhalt von https://github.com/joBr99/nspanel-lovelace-ui/blob/main/tasmota/autoexec.be neu anlegen

                                    • Restart

                                    • In Tasmota Konsole "FlashNextion http://nspanel.pky.eu/lui-release.tft" ausführen
                                      13799aaa-3167-4d86-a2c0-af25986c2451-image.png

                                    • Wenn du das siehst, bist du schon fast am Ziel:
                                      985c9b0c-4abb-4caa-969b-0a2e9d966d65-image.png

                                    • Jetzt TypeScript in ioBroker unter "global" anlegen und Inhalt icon_mapping.ts: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts reinkopieren und speichern.

                                    • TypeScript anlegen und letzte Version Code1/Code2 aus Forum reinkopieren. Alternativ hierzu die letzte Version (ist in der Regel aber nicht so weit wie die hier im Thread) aus der https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts verwenden.

                                    • Beide TypeScript-Skripte aktivieren nicht vergessen

                                    • Im TypeScript MQTT-Parameter und ggfs. andere Parameter anpassen, später dann irgendwann ALIASE erzeugen

                                    • Jetzt den CustomSend time~11:35 absenden

                                    • Mit der Tasmota Version sollte es laufen. Es wird zwar empfohlen, die tasmota32-nspanel.bin zu verwenden, jedoch habe ich auch die deutsche tasmota32-DE.bin am laufen

                                    Wenn alles korrekt befolgt, dann sollte der Screensaver (ggfs. noch nicht alle Werte drin, da ja noch Aliase fehlen) erscheinen:
                                    1a6928ff-3c2e-478d-b57b-43c95ba126da-image.png

                                    P.S.: Die Anleitung weicht stark von denen im Internet ab - quasi ab anlegen der autoexec.be, welche schon einen komplett anderen Inhalt hat, als die in den Videos.

                                    Wenn die o.a. Anleitung befolgt wird, kann jederzeit ein Upgrade auf neuere Firmware (Berry-Driver/TFT-Firmware) mit folgenden Befehlen erfolgen:

                                    Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1
                                    
                                    FlashNextion http://nspanel.pky.eu/lui-release.tft
                                    

                                    FYI:
                                    Tasmota generiert beim ersten ausführen eines Berry Skripts eine .bec datei. Wenn nach dem austauschen von der autoexec.be immernoch der alte code ausgeführt wird, dann liegt es daran, dass tasmota die bec datei nicht aktualisiert und die alte bec lädt, dann hilft es die autoexec.bec zu löschen. Kann vorkommen, wenn man von blakadder oder nxpanel zu lovelace wechselt

                                    a200 H 2 Replies Last reply Reply Quote 1
                                    • a200
                                      a200 @joBr99 last edited by

                                      @jobr99

                                      Jetzt würde ich gerne einen Homematic-Schalter steuern:

                                      var Buero_Seite_1: PageEntities =
                                      {
                                          "type": "cardEntities",
                                          "heading": "Büro",
                                          "useColor": true,
                                          "items": [
                                              <PageItem>{ id: "alias.0.NSPanel.Buero_Drucker", icon: "switch", name: "Drucker", offColor: MSRed, onColor: MSGreen}
                                          ]
                                      };
                                      

                                      alias.0.NSPanel.Buero_Drucker = der DP des Schalters (false/true)

                                      aber die Büroseite bleibt leer. Habt ihr da einen Tipp?

                                      J Armilar 2 Replies Last reply Reply Quote 0
                                      • J
                                        joBr99 @Armilar last edited by

                                        @armilar said in Sonoff NSPanel:

                                        @jobr99 sagte in Sonoff NSPanel:

                                        @Armilar fyi, wenn du noch nen esp32 nodemcu development board rumliegen hast kannst du das auch am pc testen / screenshots machen

                                        Hab ich noch rumliegen. Was bauche ich dafür alles?

                                        1. ESP32 mit Tasmota Flashen
                                        2. MQTT und apps.yaml konfigurieren
                                        3. RX und TX auf None setzen (hab vergessen was da default ist, aber damit das berry skript die serial ports benutzen kann dürfen die nicht in tasmota konfiguriert sein)
                                          d4ffe3c8-0232-4e54-9146-5a2f95e10284-image.png
                                        4. folgenden Berry Treiber installieren, wichtigste Änderung zur Version im Repo sind die geänderten serial ports

                                        self.ser = serial(3, 1, 115200, serial.SERIAL_8N1)

                                        (ansonsten fehlt auch noch der kram fürs flashen der firmware etc. den man hier nicht braucht, aber das wäre vermutlich nicht besonders schlimm wenn's drin wär)

                                        # Nextion Serial Protocol driver by joBr99 + nextion upload protocol 1.2 (the fast one yay) implementation using http range and tcpclient
                                        # based on;
                                        # Sonoff NSPanel Tasmota driver v0.47 | code by blakadder and s-hadinger
                                        
                                        class Nextion : Driver
                                        
                                            var ser
                                        	var flash_size
                                        	var flash_mode
                                        	var flash_skip
                                        	var flash_current_byte
                                        	var tftd
                                        	var progress_percentage_last
                                        	static header = bytes('55BB')
                                        
                                            def init()
                                                log("NSP: Initializing Driver")
                                                self.ser = serial(3, 1, 115200, serial.SERIAL_8N1)
                                                self.flash_mode = 0
                                        		self.flash_skip = false
                                        		tasmota.add_driver(self)
                                            end
                                        	
                                            def crc16(data, poly)
                                              if !poly  poly = 0xA001 end
                                              # CRC-16 MODBUS HASHING ALGORITHM
                                              var crc = 0xFFFF
                                              for i:0..size(data)-1
                                                crc = crc ^ data[i]
                                                for j:0..7
                                                  if crc & 1
                                                    crc = (crc >> 1) ^ poly
                                                  else
                                                    crc = crc >> 1
                                                  end
                                                end
                                              end
                                              return crc
                                            end
                                        	
                                            def split_55(b)
                                              var ret = []
                                              var s = size(b)   
                                              var i = s-2   # start from last
                                              while i > 0
                                                if b[i] == 0x55 && b[i+1] == 0xBB           
                                                  ret.push(b[i..s-1]) # push last msg to list
                                                  b = b[(0..i-1)]   # write the rest back to b
                                                end
                                                i -= 1
                                              end
                                              ret.push(b)
                                              return ret
                                            end
                                        
                                        	# encode using custom protocol 55 BB [payload length] [payload] [crc] [crc]
                                            def encode(payload)
                                              var b = bytes()
                                              b += self.header
                                              b.add(size(payload), 2)   # add size as 1 byte
                                              b += bytes().fromstring(payload)
                                              var msg_crc = self.crc16(b)
                                              b.add(msg_crc, 2)       # crc 2 bytes, little endian
                                              return b
                                            end
                                        	
                                        	# send a nextion payload
                                        	def encodenx(payload)
                                        		var b = bytes().fromstring(payload)
                                        		b += bytes('FFFFFF')
                                        		return b
                                        	end
                                        	
                                        	def sendnx(payload)
                                        		var payload_bin = self.encodenx(payload)
                                        		self.ser.write(payload_bin)
                                        		 print("NSP: Sent =", payload_bin)
                                        		log("NSP: Nextion command sent = " + str(payload_bin), 3)
                                        	end
                                          
                                            def send(payload)
                                                var payload_bin = self.encode(payload)
                                                if self.flash_mode==1
                                                    log("NSP: skipped command becuase still flashing", 3)
                                                else 
                                                    self.ser.write(payload_bin)
                                                    log("NSP: payload sent = " + str(payload_bin), 3)
                                                end
                                            end
                                        		
                                        	def every_100ms()
                                                import string
                                                if self.ser.available() > 0
                                                    var msg = self.ser.read()
                                                    if size(msg) > 0
                                                        print("NSP: Received Raw =", msg)
                                                        if self.flash_mode==1
                                                            log("no flashing in this version")
                                                        else
                                        					# Recive messages using custom protocol 55 BB [payload length] [payload length] [payload] [crc] [crc]
                                        					if msg[0..1] == self.header
                                        						var lst = self.split_55(msg)
                                        						for i:0..size(lst)-1
                                        							msg = lst[i]
                                        							#var j = msg[2]+2
                                        							var j = size(msg) - 3
                                        							msg = msg[4..j]
                                        							if size(msg) > 2
                                        								var jm = string.format("{\"CustomRecv\":\"%s\"}",msg.asstring())
                                        								tasmota.publish_result(jm, "RESULT")
                                        							end
                                        						end
                                        					elif msg == bytes('000000FFFFFF88FFFFFF')
                                        						log("NSP: Screen Initialized")
                                        					else
                                                                var jm = string.format("{\"nextion\":\"%s\"}",str(msg[0..-4]))
                                        						tasmota.publish_result(jm, "RESULT")
                                        					end       			
                                                        end
                                                    end
                                                end
                                            end
                                        end
                                        
                                        var nextion = Nextion()
                                        
                                        def send_cmd(cmd, idx, payload, payload_json)
                                            nextion.sendnx(payload)
                                            tasmota.resp_cmnd_done()
                                        end
                                        
                                        tasmota.add_cmd('Nextion', send_cmd)
                                        
                                        def send_cmd2(cmd, idx, payload, payload_json)
                                            nextion.send(payload)
                                            tasmota.resp_cmnd_done()
                                        end
                                        
                                        tasmota.add_cmd('CustomSend', send_cmd2)
                                        
                                        1. HMI Datei aus dem repo runterladen und im nextion editor öffnen und auf debug klicken
                                          (tft datei aus dem repo geht auch, wenn man auf debug klickt ohne nen projekt offen zu haben)

                                        2. Unten auf User MCU Input umstellen, COM Port vom ESP32 auswählen und auf start drücken. (und dann nen paar sekunden warten bis die nächste startupEvent Nachricht kommt)

                                        ede7dea1-582e-4c37-9f58-407a5b6f718a-image.png

                                        1 Reply Last reply Reply Quote 0
                                        • J
                                          joBr99 @a200 last edited by

                                          @a200 zu ioBroker und dem TypeScript Backend kann ich dir nix sagen

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

                                            @a200

                                            Wie sieht dein Alias aus? Switch bekommst du am schnellsten mit Alias "Steckdose" oder "Licht" hin

                                            0854cf54-29ff-489d-b945-89e29b3a697d-image.png

                                            Manchmal Haken die Aliase. Dann einfach mal den Homatic Datenpunkt per Hand umschalten, dann zieht der Alias nach

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            78
                                            1548
                                            391254
                                            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