Das geht inzwischen glücklicherweise ganz einfach.
Man braucht
- PyBecker
- die HomeAssistant-Komponente dazu
- und den passenden Centronic-Stick
PyBecker kann man via pip installieren : pip3 install pybecker
Die hass-becker-component muss von Hand in die custom components kopiert werden. Dieser Ordner gehört in das Verzeichnis in dem die Konfiguration (u.a. die configuration.yml) abgelegt ist. Bei mir ist das /home/homeassistant/.homeassistant/custom_components/.
- sofern er noch nicht existiert, den Ordner erstellen:
mkdir custom_components
- in den neuen Ordner wechseln und die Komponente auschecken:
git clone https://github.com/nicolasberthel/hass-becker-component.git
Nach dem Auschecken befindet sich das Modul im Order hass-becker-component. In diesem Ordner muss in der Datei const.py noch der Wert für DOMAIN angepasst werden damit alles korrekt geladen werden kann.
Update: Wesentlich unproblematischer ist es, den Ordner nach dem Auschecken in becker umzubennen, damit spart man sich die Anpassung der Domain in der const.py und in der manifest-Datei.
Zusätzlich habe ich die Komponentenabhängigkeit in der manifest.json noch angepasst (Update: ist Stand Januar 2022 nicht mehr nötig).
@@ -2,7 +2,7 @@ "domain": "becker", "name": "Becker", "documentation": "", - "requirements": ["pybecker==1.0.3"], + "requirements": ["pybecker==1.0.5"], "version": "0.0.1", "dependencies": [], "codeowners": ["@nicolasberthel"] }
- anschließend die Rechte korrekt setzen
sudo chown -R homeassistant:homeassistant ./custom_components
die Komponente in der Konfiguration aktivieren, in dem in der configuration.yml eine Zeile mitUpdate: nicht mehr nötigbecker:
(ohne führende Leerzeichen!) eingefügt wird- den Dienst neu starten
sudo systemctl restart home-assistant@homeassistant.service
- Wenn im Protokoll kein Fehler auftaucht wurde alles korrekt geladen
Einen Rollladen einlernen
Nach der Installation von pybecker befindet sich das Paket (bei mir) unter /home/pi/.local/lib/python3.7/site-packages , in diesen Ordner muss man wechseln um das Skript auf der Kommandozeile ausführen zu können.
Nach dem Upgrade auf Python 3.9 waren bei mir pip3 und python3 in verschiedenen Pfaden. (which python3 / which pip3). Daher unbedingt den vollständigen Pfad zur richtigen pip-Installation verwenden (/usr/bin/pip3
)
Anschließend das entsprechende Gerät auf der vorhandenen Becker-Fernbedienung auswählen und die Programmier-Taste betätigen. Nach dem Bestätigungs-Zucken des Rollladens kann mit python3 pybecker -a PAIR -c 1
der Rollladen (hier im Beispiel auf Kanal 1) verbunden werden (Achtung: will man sich die spätere Kopiererei (s.u.) ersparen kann man man auch direkt in die venv wechseln mit source /srv/homeassistant/venv_3.9/bin/activate
(oder ähnlich) und dort arbeiten)
Hinweis: Das Skript verwendet die hartkodierte Geräte-ID usb-BECKER-ANTRIEBE_GmbH_CDC_RS232_v125_Centronic-if00 . Mit ls /dev/serial/by-id/usb-*
hatte ich vorher überprüft ob der Stick überhaupt erkannt wird und ob er so benannt ist. Falls man eine andere Revision von dem USB-Stick erwischt (falls es welche gibt), muss der DEFAULT_DEVICE_NAME in der Datei becker.py angepasst werden.
Nach dem Pairing kann der Rollladen via python3 pybecker -a UP -c 1
bzw. python3 pybecker -a DOWN -c 1
(und HALT) gesteuert werden.
Bei Pairing ist auf die korrekte Python-Umgebung zu achten. PyBecker speichert die Pairings in der Datei centronic-stick.db innerhalb des Modulordners. Falls man (so wie ich), vergisst, das Pairing in der venv durchzuführen, muss man die .db-Datei nach dem pairen aus der verwendeten Python-Umgebung kopieren.
Das Modulverzeichnis der venv liegt bei Home Assistant Core Installationen i.d.R. hier: /srv/homeassistant/venv_3.9/lib/python3.9/site-packages
Nach dem Pairing können die Rollläden in configuration.yml eingetragen werden:
cover: - platform: becker covers: kitchen: friendly_name: "Küchenfenster" channel: "2:1" dinner: friendly_name: "Esszimmerfenster" channel: "2:2" # ...
Da eine Kanalnummer nur die Werte 1-7 annehmen kann, habe ich hier das ganze noch in Gruppen eingeteilt (Format Unit:Channel).
Nach dem Neuladen erscheinen die neuen Entitäten im Home Assistant.
Abschließend zu Lovelace hinzufügen und fertig.