🇬🇧 english version of this description
Und wenn du meine Arbeit unterstützen möchtest, kannst auch folgendes nutzen
Steuerung von Jarolift(TM) TDEF 433MHz Funkrollläden über ESP32 und CC1101 Transceiver Modul im asynchronen Modus.
-
Webbasierte Benutzeroberfläche (WebUI):
Eine moderne, mobilfreundliche Schnittstelle für einfache Konfiguration und Steuerung. -
MQTT-Unterstützung:
Die Kommunikation und Steuerung der Geräte erfolgt über MQTT, ein leichtgewichtiges und zuverlässiges Messaging-Protokoll. -
HomeAssistant-Integration:
Automatische Geräteerkennung in HomeAssistant durch MQTT Auto Discovery für nahtlose Integration. -
Unterstützung für bis zu 16 Rollläden:
Steuern von bis zu 16 Rollläden, die alle über die WebUI und MQTT verwaltet werden. -
Unterstützung für bis zu 6 Rollladengruppen:
Definiere bis zu 6 Rollladengruppen, um mehrere Rollläden auf einmal zu steuern
Die Verwendung erfolgt auf eigene Gefahr. Nur für den privaten/schulischen Gebrauch. (Keeloq-Algorithmus ist nur für TI-Mikrocontroller lizenziert) Dieses Projekt ist in keiner Weise mit dem Hersteller der Jarolift-Komponenten verbunden. Jarolift ist ein Warenzeichen der Schöneberger Rolladenfabrik GmbH & Co. KG
Diese Version ist für einen ESP32 und basiert auf Ideen und Code von madmartin/Jarolift_MQTT.
Der ursprüngliche Steuercode wurde von Steffen Hille im Nov. 2017 geschrieben.
Die Homepage des Projekts ist hier: Project Home
Die WebUI ist responsiv und bietet auch ein mobiles Layout.
(Mobile Version)
eine Standard-SPI-GPIO-Konfiguration für den CC1101 und den ESP32 ist folgende:
CC1101-PIN | CC1101-Signal | ESP-GPIO |
---|---|---|
2 | VCC | -- |
1 | GND | -- |
3 | GD0 | 21 |
8 | GD2 | 22 |
5 | SCK/CLK | 18 |
6 | MOSI | 23 |
7 | MISO | 19 |
4 | CS(N) | 5 |
Beispiel mit ESP32-Mini und CC1101
Beispiel für direkten Austausch mit ESP32-Mini und dem Custom Board von M. Maywald (vermutlich nicht mehr verfügbar)
Es ist auch möglich, ein W5500 Ethernet-Modul an das Board oder einen generischen ESP32 anzuschließen.
Important
Das Anschlusskabel sollte so kurz wie möglich sein (ca. 10 cm).
Beispiel für einen generischen ESP32-Mini (Standard SPI Port wird vom CC1101 verwendet)
Signal | GPIO |
---|---|
CLK | 25 |
MOSI | 26 |
MISO | 27 |
CS | 32 |
INT | 33 |
RST | 17 |
Die Software wurde mit Visual Studio Code und dem PlatformIO-Plugin erstellt.
Nach der Installation der Software kannst du das Projekt von GitHub klonen oder als zip herunterladen und in PlatformIO öffnen.
Dann noch den upload_port
und die entsprechenden Einstellungen in platformio.ini
an deinen USB-zu-Seriell-Adapter anpassen den Code auf den ESP hochladen.
Note
Python muss ebenfalls installiert sein, um das Projekt vollständig zu kompilieren. Der Ordner scripts enthält beispielsweise Skripte für die Erstellung der Webseiten, die beim Kompilieren des Projekts aufgerufen werden.
In den Veröffentlichungen (Releases) befinden sich auch die Binärdatei der Software. Wenn du PlatformIO nicht verwenden willst, kannst du auch die Datei esp32_jarolift_controller_flash_vx.x.x.bin
verwenden und direkt auf den ESP flashen. Diese bin-Datei ist bereits ein Fertig mit bootloader.bin, partitions.bin und der application.bin. Du kannst dieses Image auf den ESP an Adresse 0x00 flashen.
Windows
Es gibt verschiedene Tools, um Binärdateien auf den ESP zu übertragen.
Eines davon ist espressif-flash-download-tool
macOS/Linux
Für Mac ist es schwierig, ein Tool mit einer grafischen Benutzeroberfläche zu finden, aber es kann einfach das esptool.py verwendet werden:
- Terminal öffnen
- esptool installieren:
pip install esptool
- optional den Installationspfad abfragen:
welches esptool.py
- Pfad setzen:
export PATH=„$PATH:/<Pfad>/esptool.py“
(<- ändere mit Ergebnis aus 3.) - Gehe zu dem Pfad, in dem sich die bin-Datei befindet
- Device String abfragen:
ls /dev/tty* | grep usb
(verwende dies im nächsten Schritt für ) - Upload:
esptool.py -p <UPLOAD-PORT> write_flash 0x00 esp32_jarolift_controller_flash_vx.x.x.bin
Eine Möglichkeit ist, die OTA-Update-Datei von der neuesten Version auf GitHub herunterzuladen. Nachdem man diese auf seinen Computer heruntergeladen hat, kann man ein Update mit dem eingebetteten WebUI OTA-Update durchführen. Die Update Funktion befindet sich auf der Registerkarte „Tools“ der WebUI.
Hier kannst du einfach die Datei esp32_jarolift_controller_ota_update_vx.x.x.bin
aus dem Release-Bereich auswählen und das Update starten.
Seit Version 1.4.0 ist es auch möglich, den Controller direkt in der WebUI zu aktualisieren, ohne vorher die .bin-Datei herunterzuladen. Wenn man auf die Versionsinfo unten links klickt, öffnet sich ein Dialog. Wenn eine neue Version verfügbar ist, kann man das Update hier direkt anstoßen. Es wird dann automatisch die neueste Version von github heruntergeladen und installiert!
Aber es ist auch möglich, die Software drahtlos mit Platformio herunterzuladen.
Du musst nur die upload_port
Einstellungen in der platformio.ini
ändern.
Es gibt zwei vordefinierte Optionen:
- OPTION 1: direct cable upload
- OPTION 2: wireless OTA Update
Es gibt einen „Setup Mode“. Der „Setup Mode“ wird aktiviert, wenn der „Reset-Knopf“ des ESP zweimal innerhalb von 3 Sekunden gedrückt wird. Der „Setup Mode“ wird auch aktiviert, wenn (zu Beginn) keine WLAN-Verbindung konfiguriert ist.
Wenn der ESP in den „Setup Mode“ geht, erstellt er automatisch einen eigenen Netzwerk Accesspoint mit der ssid
📶 "ESP32_Jarolift"
Nachdem du mit diesem Netzwerk verbunden bist, kannst du die WebUI übernachfolgende Adresse öffnen
http://192.168.4.1
Hier können alle Konfigurationen vorgenommen werden, die zu der Heizungsanlage und der Infrastruktur passen.
-
WiFi
Gib im Feld „WiFi“ deine WLAN Anmeldedaten ein, um den ESP mit Ihrem Netzwerk zu verbinden. -
Ethernet W5500
Verwende optional die Ethernet-Verbindung auf Basis des W5500, um den ESP mit dem Netzwerk zu verbinden. -
Authentifizierung
Hier kann optional die Authentifizierungsfunktion aktiviert werden und Benutzer und Passwort konfiguriert werden. -
NTP-Server
Der ESP kann sich mit einem NTP-Server verbinden, um die richtigen Zeitinformationen zu erhalten. Die voreingestellte Zeitzone sollte passen, wenn du dich in Deutschland befindest. Andernfalls können diese manuell geändert werden. -
MQTT
hier können Sie die MQTT-Kommunikation aktivieren und obligatorische Parameter eingeben. -
GPIO
Hier kann man die GPIO konfigurieren, um den CC1101 mit dem ESP32 zu verbinden -
Jarolift
Hier müssen bestimmte Jarolift-spezifische Protokolleinstellungen vorgenommen werden -
Shutter
hier können die einzelnen Rollläden mit individuellen Namen konfiguriert werden -
Group
Hier können wahlweise Rollladengruppen definiert werden -
Language
Es sind zwei Sprachen verfügbar. Wählen deine bevorzugte Sprache.
Note
Alle Einstellungen werden automatisch gespeichert, wenn Änderungen vorgenommen werden.
Important
Changes to GPIO or Jarolift settings require a restart!
Es gibt es auch einen eingebauten Dateimanager zum Öffnen (anzeigen), Herunterladen (exportieren) und Hochladen (importieren) der Konfigurationsdatei.
Die Konfiguration wird in der Datei config.json
gespeichert. Zur Sicherung und Wiederherstellung der Konfiguration kannst du diese Datei herunterladen und hochladen.
Es ist möglich, von einer vorherigen Version von madmartin/Jarolift_MQTT zu diesem Projekt zu migrieren.
- eine funktionierende Version dieses Projekts zum Laufen zu bringen
- die richtigen GPIO-Einstellungen für den CC1101 setzen
- die Master Keys setzen (entweder hat man die oder man findet sie)
- den Log-Level im Logger der WebUI auf „Debug“ setzen
- Führe einen Shutter HOCH Befehl des „alten“ Setups
(madmartin/Jarolift_MQTT)
für Kanal 0! aus. - Du solltest nun eine Debug-Meldung dieses Befehls im Logger der WebUI sehen.
Sie enthält eine Meldung mitD (APP-JARO): (INF1) serial: 0xaabbcc00,
Die ersten 6 Ziffern sind die Seriennummer, die für dieses Projekt verwenden werden kann (in diesem Beispiel: aabbcc). Dies sollte die gleiche sein, die in der WebUI des „alten“ Setups konfiguriert wurde, aber jetzt sind wir sicher, dass wir die richtige haben. - Setze diese Seriennummer in der WebUI dieses Projekts in den Einstellungen.
- den aktuellen Gerätezähler der „alten“ Konfiguration auf der System-Seite der WebUI ablesen.
- den gleichen Wert für den Gerätezähler in den Einstellungen dieses Projekts einstellen.
- Definiere die gleichen Rolläden in der gleichen Reihenfolge wie in der „alten“ Einstellung und aktiviere diese.
fertig!
Starte nun den ESP neu und teste.
Prüfe nach dem Neustart zunächst, ob der Gerätezähler korrekt aus dem EEPROM gelesen wurde. Nur wenn dies der Fall ist, fahre mit dem Test fort.
Wenn alles richtig gemacht wurde, sollten alle Rollläden wie vorher funktionieren. Wenn nicht, ist eine Einstellung falsch oder du hast zuletzt nicht die neueste Version von (madmartin/Jarolift_MQTT)
verwendet. In diesem Fall würde ich es vorziehen, eine neue Seriennummer zu setzen, den Gerätezähler zurückzusetzen und die Rolläden neu einzulernen.
Zur Steuerung der Rollläden können die folgenden mqtt-Befehle verwendet werden. {UP, OPEN, 0} bedeutet, dass man einen der aufgeführten Payload-Befehle verwenden kann.
command: Neustart ESP
topic: ../cmd/restart
payload: none
command: Rolladen hoch
topic: ../cmd/shutter/1 ... cmd/shutter/16
payload: {UP, OPEN, 0}
command: Rolladen runter
topic: ../cmd/shutter/1 ... cmd/shutter/16
payload: {DOWN, CLOSE, 1}
command: Rolladen stopp
topic: ../cmd/shutter/1 ... cmd/shutter/16
payload: {STOP, 2}
command: Rolladen Schatten
topic: ../cmd/shutter/1 ... cmd/shutter/16
payload: {SHADE, 3}
Zur Steuerung der Rollläden über eine vordefinierte Gruppe, können die folgenden mqtt-Befehle verwendet werden. {UP, OPEN, 0} bedeutet, dass man einen der aufgeführten Payload-Befehle verwenden kann.
command: Gruppe hoch
topic: ../cmd/group/1 ... cmd/group/6
payload: {UP, OPEN, 0}
command: Gruppe runter
topic: ../cmd/group/1 ... cmd/group/6
payload: {DOWN, CLOSE, 1}
command: Gruppe stopp
topic: ../cmd/group/1 ... cmd/group/6
payload: {STOP, 2}
command: Gruppe Schatten
topic: ../cmd/group/1 ... cmd/group/6
payload: {SHADE, 3}
Man kann auch einen generischen Gruppenbefehl verwenden und die Bitmaske angeben, um die Rollläden direkt auszuwählen.
Die Bitmaske ist eine 16-Bit-Zahl, wobei das niedrigstwertige Bit (rechts) für Kanal 1 steht.
Ein gesetztes Bit bedeutet, dass der Kanal zu dieser Gruppe gehört.
Beispiel: 0000000000010101
bedeutet, dass die Kanäle 1, 3 und 5 zu dieser Gruppe gehören.
Als Nutzdaten können Sie drei verschiedene Formate verwenden, um die gleiche Bitmaske darzustellen:
- Binary:
0b0000000000010101
- Hex:
0x15
- Decimal:
21
command: Gruppe hoch
topic: ../cmd/group/up
payload: {0b0000000000010101, 0x15, 21}
command: Gruppe runter
topic: ../cmd/group/down
payload: {0b0000000000010101, 0x15, 21}
command: Gruppe stopp
topic: ../cmd/group/stop
payload: {0b0000000000010101, 0x15, 21}
command: Gruppe Schatten
topic: ../cmd/group/shade
payload: {0b0000000000010101, 0x15, 21}
Der Controller sendet auch einen Status, basierend auf den empfangenen Kommandos.
Important
Aber es ist wichtig zu beachten, dass dieser Status nicht dem tatsächlichen Zustand des Rollladens entspricht, denn leider sendet der Rolladen selbst keinen Status den man dazu auswerten könnte. Wenn also der Rolladen z.B. über die originale Fernbedienung bedient wird oder über eine vor Ort Bedienung, oder während der Bewegung gestoppt wird, dann stimmt dieser Status hier nicht mehr!
Status: Rolladen OFFEN
topic: ../status/shutter/1 ... status/shutter/16
payload: {0}
Status: Rolladen GESCHLOSSEN
topic: ../status/shutter/1 ... status/shutter/16
payload: {100}
Status: Rolladen SCHATTEN
topic: ../status/shutter/1 ... status/shutter/16
payload: {90}
Note
< ../ > ist der Platzhalter für das MQTT-Topic, das in den Einstellungen angegeben ist.
Statusinformationen über WiFi:
Topic: ESP32-Jarolift-Controller/wifi = {
"status":"online",
"rssi":"-50",
"signal":"90",
"ip":"192.168.1.1",
"date-time":"01.01.2022 - 10:20:30"
}
MQTT Discovery für Home Assistant macht es einfach, alle Werte in Home Assistant zu erhalten. Die konfigurierten Rollläden werden automatisch als mqtt-Gerät in Home Assistant angezeigt, wenn HomeAssistant aktiviert ist.
siehe auch die: offizielle Dokumentation
In den mqtt-Einstellungen können die Funktion zur Erkennung aktiviert sowie das mqtt-Topic und der Gerätename für den Home Assistant festgelegt werden.
Zusätzlich zu mqtt gibt es weitere Kommunikationsmöglichkeiten.
Außerdem gibt es eine Log-Funktion, mit der je nach Filter verschiedene Meldungen aufgezeichnet und über die WebUI angezeigt werden können. Dies kann für das eigene Debugging und auch für die Weiterentwicklung der Software nützlich sein.
Neben der WebUI und MQTT gibt es auch eine Telnet-Schnittstelle zur Kommunikation mit dem ESP. Die Schnittstelle bietet mehrere Befehle, um Informationen auszulesen und Befehle zu senden. Eine Übersicht über die Befehle kann mit dem Befehl „help“ aufgerufen werden. Um eine Verbindung herzustellen, kann eine einfache Telnet-Verbindung über die entsprechende IP-Adresse des ESP gestartet werden.
Beispiel:
> telnet 192.168.178.193