Springe zum Inhalt

BECKER Rollläden mit HomeAssistant steuern

Das geht inzwischen glücklicherweise ganz einfach.

Man braucht 

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 mit becker: (ohne führende Leerzeichen!) eingefügt wird Update: nicht mehr nötig
  • den Dienst neu starten
    sudo systemctl restart home-assistant@homeassistant.service
  • Wenn im Protokoll kein Fehler auftaucht wurde alles korrekt geladen

 

der aktuelle Aufbau: Raspberry Pi mit Zigbee, HomeMatic und Becker Centronic

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert