Using duofern roller shutters with homeassistant

Zur Deutschen Version des Textes.
I use homeassistant as a front-end for home automation. It is really hackable, written in python and comes with support for a lot of devices. I chose it initially because it has mysensors support.

Last year I needed a solution for controlling roller shutters. Sadly most manufacturers that market in Germany are pushing their own proprietary solutions for home automation. While homeassistant supports a few of those via the proprietary gateways of the manufacturers, the gateways themselves can be very pricey. Additionally the installed roller shutters were belt-operated and the shutter was mounted in a steel case above the window. Unfortunately the hatches giving access to the roller shutter were so small that I ditched my initial plan of mounting a tube motor in the shutter roll.

Finally I found that german manufacturer Rademacher sells wall-mounted belt motors for Roller shutter operation (“Rollotron”). Some of these can be remote-controlled via “duofern”, a proprietary remote control protocol by the manufacturer. While homeassistant does not come with out-of-the-box support for this protocol, the Perl-based FHEM home automation project has support for these blinds via a usb stick sold by the manufacturer.

Duofern USB stick

I loathe perl, therefore I ported the rollotron-related sections of the GPL-licensed FHEM implementation to python. My python port can currently be found as pyduofern on bitbucket.

There is some documentation on how to get it to work with homeassistant in the subdirectory examples. Luckily the RF communication goes both ways, so homeassistant displays the current position of rollershutters regardless of whether they have been moved with manual controls or via homeassistant.

The whole thing is work in progress – in order to get it natively into homeassistant the next step would be to add it to pypi, but before I do that I would rather have it working with asyncio, because that is the way to do it for homeassistant.

10 thoughts on “Using duofern roller shutters with homeassistant

  1. Hallo Paul,

    Google hat mich auf Deine Seite geführt. Warum? Ich habe mich in letzter Zeit dem home Assistent in Verbindung auf einem Raspi. Ich bin kein Programmierer und habe mich da durchgekämpft.
    Meine Gartenbeleuchtung osram lightify, Fritz Box und meine IP Cam zur Überwachung und Steuerung sobald ich zuhause bin läuft nun. Nun würde ich gerne noch dem Thema Rolladensteuerung widmen. Da ich schon elektrische Gurtwickler verbaut habe, würde ich diese können. Und interessiert mich deine Lösung. Welche Gurtwickler Von Rademacher würdest du empfehlen? Wie gestaltet sich der Aufwand bzgl der Einbindung in den Home Assistent? Vielleicht könntest du mir ein paar Screenshot zukommen lassen. Und ein paar Infos.
    Würde mich freuen von Dir zu hören.

    Gruß

    Chris

    1. Hallo Christian,

      mit dem Modul sollten alle Rademacher Duofern Rolladenmotoren gehen. Achtung: Es gibt von Rademacher auch Gurtwickler Ohne Duofern! Wenn du nicht eh schon Duofern Motoren hast, gibt es auch noch andere Alternativen: Wenn die Rolladenkästen groß genug sind sind z.B. Rohrmotoren+Funkschalter (z.B. homematic, geht auch mit Homeassistant). Das wäre auch nicht teurer, als die Rademacher Gurtwickler. Und je nach dem, was für Gurtwickler du schon hast, kannst du evtl. Funkschalter anschließen/nachrüsten (musst du selbst rausfinden, ob das mit deinen Wicklern geht).

      Das Setup für Duofern ist auf der github-Seite beschrieben: https://github.com/gluap/pyduofern enthält die Anleitung zur Konfiguration des USB-Sticks, zur Installation des Python-Moduls und zum Pairing mit den Motoren. Wenn das erledigt ist können die Motoren in Homeassistant eingebunden werden. Dafür liegt eine extra-Anleitung in https://github.com/gluap/pyduofern/tree/master/examples.

      Ich hab schon länger drüber nachgedacht, mal ein Video zu machen, was für Schritte für die Installation gebraucht werden, wenn ich dazu komme, schreibe ich mal.

      Viele Grüße

  2. Hallo Paul,

    dank Deiner sehr genialen Vorarbeit läuft mein Umstieg von FHEM auf Home Assistent (fast) wie am Schnürchen 🙂
    Meine Rademacher DuoFern Rolladenmotoren waren auf den Stick bereits unter FHEM gepaired gewesen – ein “refresh” hat gereicht und die Aktoren waren wieder vorhanden. Umbenennen hat einwandfrei funktioniert – ebenso wie das rauf- und runterfahren über CLI – bis hierhier also alles gut!
    Wo ich jetzt ein Problem habe ist bei der finalen Integration in Home Assistant – ich bin vorgegangen wie beschrieben aber HA wirft mir beim Starten Fehler:
    2018-06-15 17:21:25 ERROR (MainThread) [homeassistant.loader] Error loading custom_components.cover.duofern. Make sure all dependencies are installed
    Traceback (most recent call last):
    File “/srv/homeassistant/lib/python3.5/site-packages/homeassistant/loader.py”, line 86, in get_component
    module = importlib.import_module(path)
    File “/usr/lib/python3.5/importlib/__init__.py”, line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File “”, line 986, in _gcd_import
    File “”, line 969, in _find_and_load
    File “”, line 958, in _find_and_load_unlocked
    File “”, line 673, in _load_unlocked
    File “”, line 673, in exec_module
    File “”, line 222, in _call_with_frames_removed
    File “/home/homeassistant/.homeassistant/custom_components/cover/duofern.py”, line 14, in
    from pyduofern.duofern_stick import DuofernStickThreaded
    ImportError: No module named ‘pyduofern’
    2018-06-15 17:21:25 ERROR (MainThread) [homeassistant.loader] Unable to find component cover.duofern
    2018-06-15 17:21:29 ERROR (Thread-16) [pyhomematic.devicetypes.generic] HMGeneric.getValue: WORKING on ITD00000111:1 Exception:

    Ganz offenbar werden hier benötigte Module nicht gefunden – ich habe jetzt ehrlich gesagt aktuell keine Idee mehr … fällt Dir dazu noch was ein?
    Ansonsten auf jeden Fall nochmal vielen Dank für Deine bisherigen Mühen – mir hat es sehr geholfen!

      1. PS: Also, um es zu testen müsstest du die duofern.py dateien im .homeassistant/custom_components folder durch die neuen von github ersetzen. Hatte ich nicht so deutlich geschrieben.

  3. Paul, Du bist wirklich mal der Hammer – jetzt funktioniert es!!
    Keine Ahnung was Du gemacht hast aber nachdem ich die Files mit den aktuellen Github Versionen ersetzt hatte, hat es auf Anhieb funktioniert!
    Meine Rollos sind jetzt in HA sichtbar und steuerbar.
    Wahnsinn!

    Vielen Dank für Deine schnelle Hilfe! Wieder einen Punkt den ich abhaken kann…sehr genial!

  4. Paul, noch eine andere Frage:
    Mit der FHEM Implementierung gab es u.a. die Möglichkeit weitere Einstellungen an den Rolladen Aktoren vorzunehmen – z.B. ob morgens und abends automatisch rauf/runter gefahren werden soll, ob der sog. “venting modus” aktiv ist (der Rolladen also nur auf Uug geschlossen wird), etc….eine ganze Hand voll an Parametern, die eben im Aktor selbst hinterlegt wird.

    Hast Du irgendwelche Pläne Deine Portierung in diese Richtung weiter auszubauen?

    1. Hi Robert,

      In pyduofern sind die meisten Kommandos (mit Ausnahme der “wCmds”, die glaube ich alle einen Umweltsensor erfordern) verfügbar (wenn auch nicht auf der Kommandozeile exponiert).

      Hat man einen pyduofern.duofern_stick.DuofernStick als stick, setzt z.B. stick.command("409882", "ventilatingPosition", 10) die ventilatingPosition für den Rolladen 409882 auf 10, stick.command("409882", "ventilatingMode", "on") fährt den Rolladen auf die ventilatingPosition.

      Derzeit wird das in Homeassistant nicht exponiert, dafür müsste ich eine extra GUI schreiben. Bevor ich das mache, möchte ich aber die Portierung von Threads auf asyncio fertig bekommen. Sobald die Homeassistant-Integration auf asyncio portiert ist (pyduofern kann schon asyncio), kann ich einen pull request bei Homeassistant einreichen, um duofern als “standardmodul” zu aktivieren.

      Danach könnte man dann überlegen, ob man die GUI erweitert. Aber ich kann leider nur am Wochenende und nach Feierabend Zeit rein stecken, deshalb wird es, bis ich dazu komme, die GUI anzufassen eher noch eine Weile (=Monate, evtl ein Jahr) dauern. Wenn dir das die Nutzung des Moduls versauert kann ich das verstehen — FHEM ist an der Stelle definitiv flexibler (dem Code nach zu urteilen — die GUI hab ich nie angespielt).

      Die gute Nachricht: Die meisten Sachen gehen schon jetzt, mit Homeassistant Bordmitteln ist es kein Problem nach Sonnenstand die Rolladenposition anzupassen und/oder morgens oder abends die Rolläden in Lüftungsposition zu fahren. Auf dem GUI kann man die entsprechenden Automatisierungen auch jederzeit an oder aus schalten. Was halt nicht geht ist, über die GUI remote die Settings im Aktor zu ändern.

      1. Hallo Paul,

        ach was – von versauern kann hier keine Rede sein! Danke auch für Deine Erklärungen.
        Das mit der Zeit als knappem Gut ist mir ein durchaus bekanntes Thema 🙂
        Ich schau einfach mal wie weit ich da direkt in Python komme – im Grunde brauche ich nicht viel. Da ich zur Steuerung der Rolläden in den jeweiligen Räumen auch noch entsprechende Funk Wandschalter habe, würde ich z.B. die Venting Funktion bzw. Position direkt im Aktor ändern (ergibt dann sowas wie Sommer / Winterbetrieb).
        Ich freue mich jedenfalls wenn Du irgendwann dazu kommen solltest, an dem Thema weiter zu arbeiten – ist aus meiner Sicht aber auf keinen Fall ein “show stopper” und ich versuche mich ggf. mal in Python.

Leave a Reply

Your email address will not be published. Required fields are marked *