NEWS
SONOFF NSPanel mit Lovelace UI
SONOFF NSPanel mit Lovelace UI
-
Der Fehler tritt bei meinem NSPanel auch wieder mit der Tasmota 14.6.0 auf. Folgende Vorgehensweise funktioniert aber:
Bei mir funktionieren 4.7.1 und 4.7.2 (ist die DEV und aktuell nur eu-Version)
Falls mal bei 99% schluss, dann durchstarten und neu flashen...
-
Der Fehler tritt bei meinem NSPanel auch wieder mit der Tasmota 14.6.0 auf. Folgende Vorgehensweise funktioniert aber:
Bei mir funktionieren 4.7.1 und 4.7.2 (ist die DEV und aktuell nur eu-Version)
Falls mal bei 99% schluss, dann durchstarten und neu flashen...
-
Hallo Zusammen ich habe mal eine Frage bezüglich den Screensaver. Ich möchte gerne folgendes darstellen. Ich möchte gerne meinen Ladestand visualisieren in dem das Batteriesymbol sich ändert aufgrund
-Ladestand,
-ist Auto an der Wallbox angeschlossen und
-wird das Auto gerade geladen.Des Weiteren soll noch die Farbe am Batterie Level sich orientieren.
Leider funktioniert es nicht so wie ich es will. Entweder funktioniert die Farbe nicht. Oder das Icon wird nicht gewechselt.
Wie schaffe ich es, dass dieser Punkt auf 2 Datenpunkte reagiert. (Ladestand, Status).
// indicatorScreensaverEntity 5 (only Advanced Screensaver) { ScreensaverEntity: 'vw-connect.0.VSSZZZK12SP019939.charging.status.battery.currentSOC_pct', ScreensaverEntityFactor: 1, ScreensaverEntityDecimalPlaces: 1, ScreensaverEntityIconOn: Icon_Batterie(), ScreensaverEntityIconOff: Icon_Batterie(), ScreensaverEntityText: 'Auto Batterie', ScreensaverEntityUnitText: '%', ScreensaverEntityIconColor: {'val_min': 0, 'val_max': 100} //getBatteryColor(getState('vw-connect.0.VSSZZZK12SP019939.charging.status.battery.currentSOC_pct').val) }function Icon_Batterie() { const verbunden = getState('mqtt.0.evcc.loadpoints.1.connected').val; const laden = getState('vw-connect.0.VSSZZZK12SP019939.status.services.charging.active').val; const soc = getState('vw-connect.0.VSSZZZK12SP019939.charging.status.battery.currentSOC_pct').val; let iconPrefix = 'battery-'; if (laden && verbunden) { iconPrefix = 'battery-charging-'; } else if (verbunden) { iconPrefix = 'battery-charging-wireless-'; } const iconLevel = soc === 0 ? 10 : Math.ceil(soc / 10) * 10; const fullIcon = iconPrefix + iconLevel; if (fullIcon === 'battery-100') return 'battery'; if (fullIcon === 'battery-charging-wireless-100') return 'battery-charging-wireless'; //console.warn(fullIcon) return fullIcon; } function getBatteryColor(percent) { console.warn(percent) const level = 10 - Math.round(percent / 10); console.warn(level) switch (level) { case 0: return colorScale0; case 1: return colorScale1; case 2: return colorScale2; case 3: return colorScale3; case 4: return colorScale4; case 5: return colorScale5; case 6: return colorScale6; case 7: return colorScale7; case 8: return colorScale8; case 9: return colorScale9; case 10: return colorScale10; }https://forum.iobroker.net/post/1244117
@ticaki hatte Ende Januar zwei Möglichkeit beschrieben, wie die Icons dynamisch geändert werden können. Betrifft dann auch die Farben.
Die aufgebohrte Temperaturanzeige (unteres Beispiel) sollte adaptiert auch eine Batterie abbilden können...
Im oberen Beispiel kannst du das ebenfalls über ein "externes Skript" realisieren und die Icons entsprechend deines Lade-Status steuern.
Eigene Funktionen in das Backend zu implementieren ist aufgrund der Wartbarkeit nicht wirklich zu empfehlen, es sei denn diese sind so ausgereift, dass sie den Funktionsumfang erweitern... Auch fällt es mir schwer, bei Fehlern aus solchen Funktionen später support zu leisten....

-
https://forum.iobroker.net/post/1244117
@ticaki hatte Ende Januar zwei Möglichkeit beschrieben, wie die Icons dynamisch geändert werden können. Betrifft dann auch die Farben.
Die aufgebohrte Temperaturanzeige (unteres Beispiel) sollte adaptiert auch eine Batterie abbilden können...
Im oberen Beispiel kannst du das ebenfalls über ein "externes Skript" realisieren und die Icons entsprechend deines Lade-Status steuern.
Eigene Funktionen in das Backend zu implementieren ist aufgrund der Wartbarkeit nicht wirklich zu empfehlen, es sei denn diese sind so ausgereift, dass sie den Funktionsumfang erweitern... Auch fällt es mir schwer, bei Fehlern aus solchen Funktionen später support zu leisten....

-
Habe den Link schon mal im Wiki unter Screensaver verankert. Werde die Tage noch etwas Text dazu schreiben.
Ha, ich bin net der einzige der so bekloppt mit seiner Batterie ist

@Snigga
Wenn der Adapter mal soweit ist, geht das mit wenigen handgriffen. Das schöne Wetter und meine mangelnde Lust bei diesem in der Bude zu sitzen, verzögern das jedoch.
Alternative Möglichkeit:
Du erzeugt einen State für Zeichenketten. Dazu ein Skript (typescript). Musst die 3 Datenpunkt ids anpassen.
bydhvs.0.State.SOC: Ladestand
bydhvs.0.State.Power_Delivery: positive zahl -> es wird geladen
0_userdata.0.zuhause.k.technik.Battery_NsPanel_Icon: da wird das icon hingeschriebenAnpassen der 5 im Skript - mein Akku ist bei einem ladestand von 5% "leer".
on({id:'bydhvs.0.State.SOC', change:'any'}, (dp)=> { setTimeout((dp) => setBatteryIcon(dp.state.val),100, dp) }) setBatteryIcon(getState('bydhvs.0.State.SOC').val); function setBatteryIcon(val: number): void { const power = getState('bydhvs.0.State.Power_Delivery').val > 0; let result = 'battery' if (power) result += '-charging' if (val <= 5) result += '-outline'; else if (val < 95) result += '-'+String(Math.round(val /10) * 10) setState('0_userdata.0.zuhause.k.technik.Battery_NsPanel_Icon', result, true); }Das erzeugt 19 verschiedene icons je nach laden, entladen und füllstand - 18 von 0 - 90 und 1 für 100 - da kann man ja nicht mehr laden.
Wird nur aktualisiert wenn die SOC sich ändern.
EDIT: Ach die Datenpunkt-ID in die du das icon schreibst mußt du dann bei IconOn oder wie das beim Screensaver heißt eintragen, bei OFF muß null stehen - letzteres glaube ich nur.
-
Der Fehler tritt bei meinem NSPanel auch wieder mit der Tasmota 14.6.0 auf. Folgende Vorgehensweise funktioniert aber:
Bei mir funktionieren 4.7.1 und 4.7.2 (ist die DEV und aktuell nur eu-Version)
Falls mal bei 99% schluss, dann durchstarten und neu flashen...
@armilar das hat leider bei mir nicht funktioniert. Auch glaube ich, dass ich die EU Version habe (jedenfalls war mir der Unterscheid nicht klar und ich hab es hier bestellt). Habe beide Befehle ausprobiert. Wäre der Befehl für die EU Version korrekt?
FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.7.2.tftBei mir beginnt der Flashvorgang aber auch erst gar nicht... jedenfalls bewegt sich da kein Balken und kein Fortschritt wird angezeigt.
Hier nochmal mit Versuch 4.7.1 der Log vom Panel:00:05:05.186 CMD: FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.7.1.tft 00:05:05.194 MQT: SmartHome/NSPanel_1/stat/RESULT = {"FlashNextion":"Done"} 00:05:05.218 FLH: host: nspanel.pky.eu, port: 80, get: /lovelace-ui/github/nspanel-v4.7.1.tft 00:05:07.387 FLH: Send (High Speed) flash start 00:05:07.740 BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'Und hier noch das Bild vom Panel, dass sofort beim Flashvorgang erscheint... aber ohne Änderung:

-
@armilar das hat leider bei mir nicht funktioniert. Auch glaube ich, dass ich die EU Version habe (jedenfalls war mir der Unterscheid nicht klar und ich hab es hier bestellt). Habe beide Befehle ausprobiert. Wäre der Befehl für die EU Version korrekt?
FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.7.2.tftBei mir beginnt der Flashvorgang aber auch erst gar nicht... jedenfalls bewegt sich da kein Balken und kein Fortschritt wird angezeigt.
Hier nochmal mit Versuch 4.7.1 der Log vom Panel:00:05:05.186 CMD: FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v4.7.1.tft 00:05:05.194 MQT: SmartHome/NSPanel_1/stat/RESULT = {"FlashNextion":"Done"} 00:05:05.218 FLH: host: nspanel.pky.eu, port: 80, get: /lovelace-ui/github/nspanel-v4.7.1.tft 00:05:07.387 FLH: Send (High Speed) flash start 00:05:07.740 BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'Und hier noch das Bild vom Panel, dass sofort beim Flashvorgang erscheint... aber ohne Änderung:

Das ist der falsche Link.
http://nspanel.de/nspanel-v4.7.2.tft
iobroker hat ein weiter entwickeltes TFT.
-
Das ist der falsche Link.
http://nspanel.de/nspanel-v4.7.2.tft
iobroker hat ein weiter entwickeltes TFT.
@ticaki sagte in SONOFF NSPanel mit Lovelace UI:
Das will auch nicht. Habe sogar ein Downgrade auf tasmota 13.4.0. durchgeführt.
00:01:23.762 CMD: FlashNextion http://nspanel.de/nspanel-v4.7.2.tft 00:01:23.775 MQT: SmartHome/NSPanel_1/stat/RESULT = {"FlashNextion":"Done"} 00:01:23.820 FLH: host: nspanel.de, port: 80, get: /nspanel-v4.7.2.tft 00:01:25.997 FLH: Send (High Speed) flash start 00:01:26.350 BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int' -
@ticaki sagte in SONOFF NSPanel mit Lovelace UI:
Das will auch nicht. Habe sogar ein Downgrade auf tasmota 13.4.0. durchgeführt.
00:01:23.762 CMD: FlashNextion http://nspanel.de/nspanel-v4.7.2.tft 00:01:23.775 MQT: SmartHome/NSPanel_1/stat/RESULT = {"FlashNextion":"Done"} 00:01:23.820 FLH: host: nspanel.de, port: 80, get: /nspanel-v4.7.2.tft 00:01:25.997 FLH: Send (High Speed) flash start 00:01:26.350 BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'Mal vom strom getrennt? Das Display an sich wird nur so "resetet".
-
@ticaki habe ich auch schon dran gedacht. Das könnte klappen... zumal die IP bisher immer gleich geblieben ist... probiere ich aus.
Edit.: ohne Erfolg. Ich bleibe erstmal bei Version 53. Vorgeschlagen wird 56 V4.7.2So müsste es aber bei deinem Tasmota-Fehler
BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'funktionieren:
Das tritt in der Regel nur auf, wenn statische IP's vergeben sind
-
IP des Panels merken
-
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1 -
nach dem Reboot:
FlashNextion http://nspanel.de/nspanel-v4.7.2.tft -
wenn erfolgreich geflasht, dann:
backlog savedata 1; ipaddress1 <gemerkte-IP>; savedata 0; restart 1
-
-
Gibt es die Möglichkeit in "cardPower" mehr als 6 Icon's/Objekte anzuzeigen? Das JSON mit 8 habe ich fertig. Es werden aber nur 6 angezeigt. Die letzten beiden werden abgeschnitten.
-
Gibt es die Möglichkeit in "cardPower" mehr als 6 Icon's/Objekte anzuzeigen? Das JSON mit 8 habe ich fertig. Es werden aber nur 6 angezeigt. Die letzten beiden werden abgeschnitten.
Die cardPower hatte immer nur 6 Elemente und den mittleren Bereich... 8 sind nicht möglich...
-
Moin, kann ich die Info, dass es eine neue Firmware gibt ausschalten? Verwirrt hier im Haushalt die anderen Familienmitglieder

Gruß Timo
ja, im Servicemenü unter Firmware die Auto-Updates abschalten...
-
Mal was ganz anderes, ich würde mir gerne für das Sonoff NSPanel (US-Version) ein Gehäuse (Aufputz) drucken. Hat jemand da was passendes?

@tolkin sagte in SONOFF NSPanel mit Lovelace UI:
Mal was ganz anderes, ich würde mir gerne für das Sonoff NSPanel (US-Version) ein Gehäuse (Aufputz) drucken. Hat jemand da was passendes?
https://makerworld.com/de/models/1294461-sonoff-nspanel-pro-120-case-wall-mount#profileId-1325332
-
So müsste es aber bei deinem Tasmota-Fehler
BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'funktionieren:
Das tritt in der Regel nur auf, wenn statische IP's vergeben sind
-
IP des Panels merken
-
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1 -
nach dem Reboot:
FlashNextion http://nspanel.de/nspanel-v4.7.2.tft -
wenn erfolgreich geflasht, dann:
backlog savedata 1; ipaddress1 <gemerkte-IP>; savedata 0; restart 1
@armilar Danke für das nochmalige Rausschreiben der Befehle. Aber die habe ich bereits getestet. Eben noch einmal. Für mein Verständnis... muss das Panel sich eine andere IP holen nach dem Neustart? Ich denke mal nicht... auch wenn ich die IP nicht mehr zwingend über den Router vorgebe, wird die freie IP wieder genommen.
Ich schalte erstmal den Hinweis auf neue Firmware ab... vielleicht ist der Fehler bei mir mit tasmota 14.6.0. und bei der nächsten wieder weg?
Was vorher bereits nicht funktionierte war das Update von 14.5.0 auf 14.6.0 über das Panel. Ich habe dann manuell die Firmware runtergeladen und aufgespielt. Das hat funktioniert. -
-
@armilar Danke für das nochmalige Rausschreiben der Befehle. Aber die habe ich bereits getestet. Eben noch einmal. Für mein Verständnis... muss das Panel sich eine andere IP holen nach dem Neustart? Ich denke mal nicht... auch wenn ich die IP nicht mehr zwingend über den Router vorgebe, wird die freie IP wieder genommen.
Ich schalte erstmal den Hinweis auf neue Firmware ab... vielleicht ist der Fehler bei mir mit tasmota 14.6.0. und bei der nächsten wieder weg?
Was vorher bereits nicht funktionierte war das Update von 14.5.0 auf 14.6.0 über das Panel. Ich habe dann manuell die Firmware runtergeladen und aufgespielt. Das hat funktioniert.@lobomau sagte in SONOFF NSPanel mit Lovelace UI:
Danke für das nochmalige Rausschreiben der Befehle. Aber die habe ich bereits getestet. Eben noch einmal. Für mein Verständnis... muss das Panel sich eine andere IP holen nach dem Neustart? Ich denke mal nicht... auch wenn ich die IP nicht mehr zwingend über den Router vorgebe, wird die freie IP wieder genommen.
Das kann natürlich sein, dass der Router über ein DHCP-Binding verfügt und dieses auch von dir genutzt wird. In diesem Fall bekommt das Gerät immer noch die IP aufgrund der Lease-Time. In der Regel ist eine statische IP im router-definierten Bereich unter (LAN). Wenn man von statisch auf dynamisch (DHCP) wechselt muss das Gerät zwingend den Bereich wechseln und eine andere IP vergeben.
Was die Meldung angeht, kannst du auch im NSPanelTs.ts nach den Zeilen suchen und sie entsprechend anpassen.
// _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________ // _________________________________ EN: No more configuration from here _____________________________________ const scriptVersion: string = 'v4.7.1.2'; const tft_version: string = 'v4.7.1';Es liegt ja daran, dass du eine niedrigere TFT (v4.7.1) mit einer höheren DEV-Script-Version (v4.7.2.1) nutzt...

Entscheidend dabei ist nur diese Zeile, da das Startup des Panels die Versionsnummer sendet und mit der Script-TFT-Version vergleicht.
const tft_version: string = 'v4.7.1'; -
SONOFF NSPanel Touch Display Switch
mit Lovelace UI und TASMOTA Firmware

Das Thema https://forum.iobroker.net/topic/50888/sonoff-nspanel/1542 wird hier jetzt fortgesetzt...
An alle begeisterten NSPanel'er
Dieser Thread soll sich jetzt ausschließlich mit den Fragen und Themen rund um das SONOFF NSPanel mit Lovelace UI beschäftigen.
Wie alles begann:
- 22.10.2021
Blakadder's Dokumentation der Dekodierung des NSPanel-Kommunikationsprotokolls und Einrichtung der Steuerung des Nextion-Bildschirms mit benutzerdefinierter Firmware.
https://blakadder.com/nspanel-hacking/ - 01.01.2022
Erste Gehversuche mit Blockly-Scripts auf der Original-Firmware nach einer ersten coolen Anleitung für den ioBroker von @haus-automatisierung. - ...
Funkstille auf allen Kanälen, da das Panel in der Originalsoftware einfach zu wenig Funktionalität hat. Ein Vergleich mit "Jugend forscht" wäre maßlos übertrieben... - 15.01.2022
@jobr99 Erstes POC von Lovelace Konzept mit ESPhome Komponente, da Nextion Upload Protcol unter tasmota nicht umsetzbar ist (berry tcpclient crashed ESP, HTTP Libary ist auf viel zu kleine Dateien limitiert) - 17.01.2022
peepshow-21 Erste implementierung von Nextion Upload Protocol 1.1 mit Workaround für HTTP Libary über Java Converter um tft files für tasmota vorzubereiten - 20.01.2022
s-hadinger fixt bug in berry tcpclient - 31.01.2022
Erste Version für HomeAssistant mit Nodered und Tasmota - 08.02.2022
@joBr99 Erste Implementierung von Nextion Upload Protokoll 1.2 in Berry basiertend auf HTTP Range Header Requests und lokalem Buffer (funktioniert nur mit -nspanel tasmota build uns PSRAM Support) - 12.02.2022
peepshow-21 Implementierung von Nextion Upload Protocol 1.2 mit vollständigem Download und "streaming" zum Nextion Screen während dem Download - 05.03.2022
@joBr99 Portierung von Node-Red Flow zu AppDaemon, da AppDaemon sich besser eignet zur Implementierung vom Backend - 13.03.2022
@joBr99 Erste Version von Lovelace Berry Driver basierend auf Upload Protocol Implementierung von peepshow-21, da diese etwas stabiler läuft mit zusätzlichem Error Handling - 30.03.2022
@joBr99 kommt mit der Info um die Ecke, dass es ein erstes Script v1.9.0 für den ioBroker von @Britzelpuf gibt. Zu diesem Zeitpunkt gab es bereits den Screensaver die Seitennavigation und die Möglichkeit eine Lampe, einen Dimmer eine Taste und eine Info, sowie die popUps für Licht (Brightness) und Shutter (Position) und einen Thermostaten zur Steuerung einzubinden. - 10.04.2022
@joBr99 Firmware got bigger and bigger with >15 Minutes Flashing Time for the tft file
Increased Flashing Speed of Berry Driver from 115200 to 921600 and added skipping to the End with HTTP Range Headers, resulted in faster display flashing - 11.04.2022
@Armilar macht seine ersten Änderungen auf github und hört seit dem nicht mehr auf, weitere Funktionen in das TSScript hinzuzufügen...
@joBr99 entwickelt die HMI und neue Funktionen für Home Assistant schneller als der Wind - und macht das Panel zur echten Bereicherung für jedes Smart Home

heute
- Eine der besten Community's die ich jemals erlebt habe. Hilfsbereit und kompetent wird jeder mit Hilfestellungen und Problemlösungen in kürzester Zeit versorgt.
Es macht großen Spaß zusammen mit euch...
VG
Armilar
Beispiele:










Features:
- cardEntities für die Unterstützung diverser Steuerelemente (siehe Beispiele)
- cardGrid (3x2-Raster) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
- cardGrid2 (4x2) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
- cardGrid3 (2x2) für die Unterstützung diverser Steuerelemente (siehe Beispiele)
- cardPower zur Visualisierung der Energieverteilung
- cardAlarm als Seite für Alarmanlagen
- cardMedia - der Media-Player (Diverse Adapter)
- cardThermo - Seite für Thermostat oder Klimaanlage
- cardQR - Seite mit QRCode zur Anzeige von WLAN-Informationen
- cardChart - Balkendiagramme
- Detailseiten für Leuchtmittel (Helligkeit, Temperatur und Farbe)
- Detailseite für Jalousien/Rollos (Position und Tilt)
- Detailseite für Ventilatoren
- Detailseite für Timer
- Auswahl Detailseite für Werteliste
- Bildschirmschonerseite mit Uhrzeit, Datum und Wetterinformationen oder/und Infos
- Multilingual (unterstützt über 40 Sprachen)
- Unbegrenzte Anzahl an Seiten und Unterseiten
- Abfallkalender
- Favoritenseiten
- etc.
NsPanel Lovelace UI ist eine Firmware für den Nextion-Bildschirm innerhalb des NSPanel.
Die allgemeine Idee ist, dass das Nextion-Display einen Seitenzähler durchläuft und der ESP32 dem Display sagt, was zu tun ist. Alles ist dynamisch durch Alias-Erstellung konfigurierbar, es ist nicht erforderlich, Nextion Editor zu programmieren. Neben der Seiten-Definition sind im ioBroker keine Programmierkenntnisse erforderlich. Es ist im ioBroker ebenfalls kein Lovelace-Adapter erforderlich.
Das Panel arbeitet mit Tasmota und MQTT. Um das Panel zu steuern und mit Inhalten von ioBroker zu aktualisieren, gibt es ein vordefiniertes TypeScript (TS) für den JavaScript-Adapter.
Aktuelle Wiki (Anleitung) für den ioBroker
https://github.com/joBr99/nspanel-lovelace-ui/wiki by @Kuckuckmann
NsPanelTs.ts (TypeScript) für ioBroker v4.9.3.X
zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar und @TT-Tom
https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
abgestimmt auf:- TFT 58 / v4.9.3 ( by @joBr99 / Armilar > 4.4.0)
- BerryDriver 9 ( by peepshow-21 (based on code by blakadder and s-hadinger))
- Tasmota 15.1.0 ( by Theo Arends ) --> Theo-Arends-Sonoff-MQTT-OTA
Projekt:
by @joBr99
- main (Home Assistant - Version und Nextion HMI): https://github.com/joBr99/nspanel-lovelace-ui by @joBr99
- ioBroker: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker by @Armilar (HA - Adaption)
Icon-Mapper:
- icon_mapping.ts:
https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts
(TypeScript muss in global liegen)
Icons:
unter: https://docs.nspanel.pky.eu/icon-cheatsheet.html
Video-Tutorial:
https://www.youtube.com/watch?v=ZPLJk2ZLo_8 by @haus-automatisierung
- 22.10.2021