-
-
Notifications
You must be signed in to change notification settings - Fork 191
ioBroker Basisinstallation
Anleitung zur Einrichtung eines Sonoff NSPanel mit Lovelace UI unter ioBroker
1.) ioBroker Voraussetzungen
2.) NSPanel mit Tasmota flashen
3.) Berry-Treiber installieren
4.) MQTT (Tasmota) Config
5.) TFT-Firmware flashen
6.) MQTT (ioBroker) Config
- 6a) Standard-Variante mit MQTT Broker/Client Adapter
- 6b) Abweichende Variante mit extern betriebenem Mosquitto MQTT-Broker --> mit MQTT-Client Adapter
7.) CustomSend anlegen
8.) Einstellungen in JS-Adapter Instanz
9.) Icon "TypeScript" anlegen
10.) „NSPanelTs.ts“ anlegen
11.) „NSPanelTs.ts“ konfigurieren
12.) Aliase anlegen
13.) Seitengestaltung
Für den Betrieb benötigst du „keinen“ ioBroker-lovelace-Adapter. Die komplette lovelace-Integration erfolgt über die TFT-Firmware und die nachfolgenden ioBroker-Adapter.
Die Kommunikation zwischen dem NSPanel und ioBroker erfolgt mittels MQTT über Tasmota. Da der Datenpunkt „CustomSend“ erforderlich ist und dieser nicht im Sonoff-Adapter vorhanden ist und auch nicht durch das Skript angelegt werden kann, erfolgt die Kommunikation „nicht“ über den Sonoff-Adapter --> später mehr …
Es werden zwei Type-Skripte (TS = das etwas mächtigere Javascript) benötigt. Zum Einen ein Icon-Skript, da alle verwendeten Icons nicht als „echte Grafiken“ im Panel hinterlegt sind, sondern als Schriftzeichen-Symbole. Des Weiteren ein TS-Skript mit dem eigentlichen Laufzeit-Code, welches für jedes eingesetzte NSPanel vorhanden und konfiguriert sein sollte --> später mehr …
Über diesen Adapter sollten die Aliase später (mit Ausnahme des Media-Alias für Alexa & Co.) erstellt werden --> später mehr …
Spielt in erster Linie eine Rolle beim Screensaver-Wetter, da zum Ersten die Icons und die Temperatur-Informationen für den Forecast ausgelesen werden (falls genutzt) und zum Zweiten das aktuelle Wettericon für den Screensaver benötigt wird. Wer keine Wetterstation oder Außentemperatursensor hat, kann auch die Temperatur aus Accu-Weather importieren --> später mehr …
Zur Visualisierung des Media-Player‘s sollte der Alexa2-Adapter installiert sein. Wenn du statt Alexa-Devices andere Hersteller wie z.B. Google-Home-Geräte oder in erster Linie der Spotify-Premium-Adapter im Einsatz hast, so ist es auch möglich mit einem entsprechend, alternativen Media-Adapter den Media-Player zu betreiben --> später mehr …
Sollte das NSPanel bereits vor der Bereitstellung der Tasmota v13.0.X initial geflashed worden sein, kann es zu Partitionierungs-Problemen mit einer Version >= 13.0.X kommen. In diesem Fall muss das Partitionsschema geändert werden. Ein neues NSPanel kann mit der neuesten Tasmota-Version geflashed werden.
Dazu gibt es eine Anleitung hier im Wiki unter Tasmota FAQ.
Danach kann man auf Version 13.0 und höher updaten.
Matthias Kleine hat ein neues Video zum ganzen Installationsprozzes, vom flashen bis zum Anpassen der NSPanel-Script Datei, erstellt.
Neues Video Tutorial von haus-automatisierung.com https://www.youtube.com/watch?v=ZPLJk2ZLo_8 - NSPanel mit Lovelace UI - so habe ich mir das vorgestellt!
Altes Video mit der Beschreibung zum Flashen
Als Alternative zu den von Matthias gezeigten Tools zum Flashen des ESP32 kann man mittlerweile auch den Tasmota WebInstaller nutzen. Die Nutzung ist relativ selbsterklärend.
Nach dem Flashen solltest du bereits die grundsätzliche Tasmota Konfiguration vornehmen:
a) Unter „Sonstige Einstellungen“ trägst du im Feld Vorlage
{"NAME":"NSPanel","GPIO":[0,0,0,0,3872,0,0,0,0,0,32,0,0,0,0,225,0,480,224,1,0,0,0,33,0,0,0,0,0,0,0,0,0,0,4736,0],"FLAG":0,"BASE":1}
ein, hakst Aktivieren "an" und klickst auf Speichern. Du kannst natürlich auch noch Device und Friendly Name vergeben
b) Unter Logging fügst du die IP von deinem ioBroker unter Sys-Log Host () ein und klickst auf Speichern.
c) Unter Konsolen/Konsole kannst du natürlich auch noch weitere Einstellungen vornehmen (ipaddress1 192.168.X.X für statische IP’s, setOption’s, etc.)
d) Hinweis: Unter Umständen macht es Sinn, die NSPanel Temperatursensoren noch zu konfiguirieren/kalibrieren. Wir haben dies in einer eignen FAQ bereits erklärt.
Im Tasmota findest du unter „Konsolen“ den Button „Verwalte Dateisystem“. Wenn du diesen anklickst, siehst du einen weiteren Button „Datei erstellen und bearbeiten“. Du änderst den Dateinamen „neue-datei.txt“ in „autoexec.be“ und fügst den Inhalt aus dem folgenden Link ein: https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be
Danach klickst du auf „Speichern“ und dann solltest du Tasmota rebooten.
Wenn das Panel bereits unter einer anderen Variante (z.B. haus-automatisierung.com) installiert war, dann bitte alle Dateien (insbesondere autoexec.be und autoexec.bec) vorher über das Flammensymbol hinter dem Dateinamen löschen. Und von vorne mit dem Punkt 3 beginnen
Im Tasmota unter „Einstellungen/MQTT konfigurieren“:
a) Host -> die IP deines ioBrokers
b) Den Port deiner ioBroker-MQTT-Adapter-Instanz eingeben (für mqtt.0.). Wenn du noch keinen MQTT-Adapter installiert hast, dann verwende bitte nicht unbedingt den Standard-Port 1883. Dieser Port wird auch von anderen Pseudo-MQTT-Adaptern (Sonoff/Shelly/etc.) ebenfalls verwendet und führt im parallelen Betrieb mit anderen MQTT-Devices später unweigerlich zu Komplikationen. Verwende für die MQTT-Instanzen einen Port ab 1886 oder 1887 oder 1888 oder höher. Das Problem zeigt sich in der Regel ab dem Zeitpunkt, an dem der Topic „CustomSend“ nicht von deiner MQTT-Instanz abonniert wird.
c) Benutzer und Passwort aus der ioBroker-MQTT-Instanz eintragen
d) Bei Client und topic trage in der Regel „NSPanel_X“ ein. (X = 1, 2, 3 oder WZ für Wohnzimmer, etc.)
e) Für den full topic verwende in der Regel „SmartHome/%topic%/%prefix%/“.
f) Speichern klicken und Einstellungen verlassen
Important
Es gab Probleme mit der Tasmota-Version 14.2.X beim Flashen. Daher bitte vor dem Flashen des Displays (TFT) auf die Tasmota-Version >= 14.3.0 upgraden. Ansonsten kann es zu Fehlern beim FlashNextion kommen!
Achtung !!!
Zum Flashen ist es wichtig, dass Ihr die aktuelle TFT-Firmware-Version nutzt, sonst kann es zu ungewollten Fehlern kommen und ggf. müsst Ihr den Flashvorgang dann wiederholen. Ihr findet die aktuelle Version immer im aktuellen NsPanelTS.ts-Skript am Ende des ioBroker TypeScript Header:**
Zum Flashen müsst Ihr dann die Tasmota „Konsolen/Konsole“ öffnen und in die Kommandozeile
FlashNextion <Hier den Link aus dem NsPanelTS.ts-Skript einfügen, siehe Screenshot>
eingeben, mit Enter bestätigen. Das Panel installiert jetzt die TFT-Firmware (Kann beim ersten Mal ein paar Minuten dauern – Fortschritt beobachten – am Ende erfolgt ein Reboot und das Panel wechselt in einen Screen – „Waiting for Content“
Wenn du bereits eine Instanz des MQTT-Adapters (z.B. mqtt.0.) nutzt, dann bitte den Port der MQTT-Adapter-Instanz auch im Tasmota-MQTT verwenden. Bitte auch hier den Hinweis aus Punkt 4b beachten und ggf. einen anderen Port für die Kommunikation eintragen.
Ansonsten wählst du im ioBroker-Menü unter „Adapter“ den mqtt-Adapter aus und erstellst wie gewohnt eine Instanz des Adapters. Du kannst dir natürlich auch eine zusätzliche Instanz (z.B. mqtt.1. oder mqtt.2. etc.) erstellen.
Einstellungen im Reiter Verbindung
a) IP = Server/Broker
b) WebSockets benutzen (angehakt)
c) Zugriff von allen IPs zulassen auswählen
d) Port 1886 (analog Port aus Tasmota/MQTT)
e) Benutzer (analog Benutzer aus Tasmota/MQTT)
f) Kennwort + Kennwort wiederholen (analog Passwort aus Tasmota/MQTT)
Einstellungen im Reiter Server-Einstellungen
c) States bei subscribe publizieren (angehakt)
d) Leere Session erzwingen: Client-Einstellungen verwenden
Einstellungen im Reiter MQTT-Einstellungen
a) Maske zum Bekanntgeben eigener States: mqtt.0.* (Bei zusätzlicher Instanz entsprechend höher (mqtt.1.* etc.)
b) Eigene States beim Verbinden publizieren (angehakt)
!!! ACHTUNG: !!!
Der haken bei "Nur bei Änderungen publizieren" darf nicht aktiv sein, da es sonst zu Problemen in der Navigation kommen kann!
Es wird oft das Sternchen * hinter der Zahl vergessen mqtt.0.*
Note
Nur befolgen, wenn ein externer MQTT-Broker "außerhalb der ioBroker-Umgebung" betriebsbereit installiert wurde!
wird demnächst für dem MQTT-Client Adapter beschrieben...
Kurzanleitung mit dem MQTT-Client Adapter unter: https://forum.iobroker.net/post/1204391
Der MQTT Datenpunkt wird benötigt und muss vom MQTT-Adapter angelegt werden.
Es gibt drei Varianten um diesen Datenpunkt zu erzeugen:
Variante 1:
Du gehst in das Objeckt-Verzeichnis "mqtt.0.SmartHome.NSPanel_1.cmnd" und legst in diesem Verzeichnis mit Hilfe des "Expertenmodus" einen Datenpunkt CustomSend (Achtung auf korrekte Schreibweise achten) an. Nachdem der Datenpunkt angelegt wurde, sollte der Expertenmodus wieder deaktiviert werden.
Im Video wird die Variante 1 direkt in den Objekten des mqtt.0. gezeigt!
Variante 2:
Um den Datenpunkt zu erzeugen, öffnest du im Tasmota die Konsole und gibst
CustomSend time~12:00
ein.
Variante 3:
Alternativ kann auch der MQTT-Explorer (http://mqtt-explorer.com/) genutzt werden und ein payload unter .../cmnd abgesendet werden.
Danach sollte im MQTT-Adapter unter Objekte ein Datenpunkt: „SmartHome/NSPanel_X/cmnd/CustomSend“ erscheinen. Falls nicht, solange wiederholen bis dieser Datenpunkt abonniert wurde, oder ggfs. Nochmals die MQTT-Einstellungen überprüfen. In den Vergangenen Fragen dieses Topics ging es häufiger um diesen Punkt.
Achtung: Wenn man den MQTT-Client einsetzt, wird der Wert '12:00' NICHT im ioBroker gesetzt - dh. der MQTT-Pfad wird erzeugt, aber der Wert steht auf (null) und nicht auf '12:00'. Es muss zuerst für 'CustomSend' die Publish-Funktion aktiviert werden (Zahnrad rechte Seite) - erst jetzt kann man nochmal den Wert mit dem MQTT-Explorer publischen oder den Wert '12:00' direkt im ioBroker unter 'CustomSend' eingeben.
Für den erfolgreichen Start des NSPanelTs.ts (siehe Punkt 10) TypeScript sind noch nachfolgende Einstellungen in der JavaScript-Adapter-Instanz erforderlich:
- Hinzufügen der npm Module:
moment
undmoment-parseformat
- Hinzufügen des npm Moduls:
axios
- Aktivierung der Option
Kommando "setObject" erlauben
- Aktivierung der Option
Kommando "exec" erlauben
Wie bereits in der Einleitung erwähnt, werden zwei TypeScripts (TS) benötigt. Das erste ist das Icon-Skript. Das Icon-Skript dient zur Übersetzung von Schriftzeichensymbolen zwischen dem Skript und der TFT-Firmware.
Unter dem grünen Vezeichnisbaum „global“ im ioBroker-Menüpunkt Skripte erzeugst du ein Skript mit dem Namen „IconsSelector“ vom Typ: TypeScript (TS). Dort fügst du den Inhalt der Datei:
https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/icon_mapping.ts
ein und startest das Skript.
Nur zur Info:
Du kannst die einzelnen Icon-Symbolnamen (aktuell 6896 unterschiedliche Icon-Symbole) auf
https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html
einsehen und später (kommen wir bei der Alias-Erstellung noch zu) auch jedes Icon in deinem Panel an entsprechender Stelle verwenden. Für die Einbindung sind die „Namen“ der Icons wichtig.
Unter dem regulären Vezeichnisbaum „common“ im ioBroker-Menüpunkt Skripte erzeugst du (gerne auch in weiteren Unterverzeichnissen) ein weiteres TypeScript mit dem Inhalt:
https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/NsPanelTs.ts
Dieses Script enthält nur die Grundstruktur und ist nach der Parametereinstellung lauffähig.
Für jedes einzelne NSPanel das du konfigurieren möchtest, musst du dieses Skript anlegen und speziell für dieses jeweilige NSPanel entsprechende Einstellungen vornehmen. Für den Skriptnamen verwende in der Regel eine Kombination aus Panel und Skriptversion, wie z.B.: NSPANEL_1_3.9.0
(Es kommen in regelmäßigen Abständen weitere NSPanel-Features und Bug-Fixes in das GitHub-Skript in denen dann nur noch der untere Teil (--- ab hier keine Konfiguration mehr ---) ausgetauscht werden muss und die NSPanel-Parameter erhalten bleiben)
Im oberen Teil des Skripts sind die grundsätzlichen Teile der zu erstellenden Aliase, Konstanten und Variablen (auch Seiten) enthalten. An dieser Stelle ist zunächst wichtig, die Kommunikationsparameter für die MQTT-Kommunikation anzupassen, beginnend mit
/***** 1. Tasmota-Config *****/
// DE: Anpassen an die Verzeichnisse der MQTT-Adapter-Instanz
// EN: Adapt to the MQTT adapter instance directories
const NSPanelReceiveTopic: string = 'mqtt.0.SmartHome.NSPanel_1.tele.RESULT';
const NSPanelSendTopic: string = 'mqtt.0.SmartHome.NSPanel_1.cmnd.CustomSend';
....
/***** 2. Directories in 0_userdata.0... *****/
// DE: Anpassen an das jeweilige NSPanel
// EN: Adapt to the respective NSPanel
const NSPanel_Path = '0_userdata.0.NSPanel.1.';
Bitte starte das Skript. Alle weiteren Parameter stellen wir später ein. Ab jetzt sollte der Startup-Screen „Waiting for Connection“ in den Sreensaver wechseln und minütlich die Uhrzeit an den Screensaver übertragen und das Datum aktualisiert werden.
Im Punkt 9 haben wir zunächst die nur Kommunikation zwischen Panel und Skript über MQTT hergestellt. Jetzt kommen wir zum Inhalt des Panels:
a) Screensaver einstellen
das Aussehen des Screensaver kannst du ganz nach deinen Wüschen gestallten. Dafür haben wir im Wiki ein eigenes Thema erstellt, da sich im Laufe der Zeit die Möglichkeiten immer erweitert haben. Hier lang zu den Einstellungen
b) Diverse Datenpunkte
Beim ersten Start des Scripts erzeugt das Skript unter 0_userdata diverse Datenpunkte für Screensaver Dimmode, interne Sensoren, Tasmota-Statuswerte, etc.
Der Pfad kann im Skript unter „NSPanel_Path“ angepasst werden.
Achtung!
Ab TS-Script-Version 3.5.0.5 und mit installiertem JavaScript-Adapter ab Version v6.1.3 können auch weitere Alias automatisch erzeugt werden, wenn die Konstante autoCreateAlias auf true steht.
Jetzt kommt der eigentliche Teil der Seitengestaltung. Es werden keine Datenpunkte benötigt, sondern Aliase.
Ein Alias ist „kein“ Datenpunkt, sondern ein Objekt mit mehreren Datenpunkten.
Das Skript setzt entsprechende Trigger auf die Alias-Datenpunkte .SET, .GET, .ACTUAL usw. Deshalb werden deine Steuerelemente im Panel nicht greifen, wenn du mit einzelnen Datenpunkten aus den verschiedenen Adaptern arbeitest.
Ich habe im Verlauf diverse Aliase erzeugt und auch in den ChangeLogs der jeweiligen Skript-Version sind die möglichen Aliase aufgeführt, daher gehe ich hier nicht (würde die Anleitung hier auch sprengen) im Detail auf die Aliase ein. Eine genaue Beschreibung für die diversen Pages und Möglichkeiten findest du hier.
Die Seitengestaltung ist nun in einen eigenen Bereich hier in der Wiki gewandert.
Die unten aufgeführten Beispiele sind nicht mehr im Skript enthalten.
Der Folgende bereich stammt aus einer früheren Version der Wiki, bitte den Link oben beachten! Am Besten benutzt ihr die Beispiele im Skript und legt entsprechende Aliase hierzu an, die auch in diesem ioBroker-Community-Topic innerhalb der letzten Wochen beschrieben wurden.
cardEntities mit Alias Lampe/Dimmer/Switch
cardEntities mit RGB und HUE Aliasen (Color)
popupLight mit Farbtemperatur und Brightness
popupLight mit ColorWheel
cardGrid mit Radiosendern/Playlists (Alias Taste)
cardEntities mit Aliasen Lautstärke und Info
cardEntities mit Fenster, Tür, Jalousie und Verschluss
cardEntities mit Abfallkalender
cardMedia
cardAlarm
cardGrid
cardEntities
cardEntities als Subpage unter cardEntities (verschachtelt)
cardNotify
Steuerung von Klimageräten/Klimaanlagen
QR-Code für z.B. Gäste WLAN
Neues Design für Thermostate