Homegear-Gateway mit CC1101 und Raspberry Pi 3

Raspberry Pi3 Teaser-Bild

In einem verzweifelten Versuch die Verbindungsprobleme mit meiner Homematic-Installation endlich in den Griff zu bekommen, wurde ein weiterer Raspberry Pi 3 angeschafft, um in Verbindung mit einem CC1101-Modul ein zusätzliches Homegear-Gateway zu realisieren. Dieses Mal wurde mitgeschrieben, welche Schritte dafür notwendig sind …

Hardware

Beim Thema Heimautomatisierung / Smart Home setze ich vorwiegend auf Bauteile der „Homematic“ Serie von eq-3 bzw. ELV. Sie fügen sich diskret in den vorhandenen Wohnraum ein, weil sie als Unterputz-Lösung die klassischen Komponenten (wie Schalter und Taster) ersetzen, ohne deren Optik zu stören. Durch die Verwendung eines Funkprotokolls ist außerdem keine zusätzliche Verkabelung notwendig.

Leider wirken sich bautechnische Gegebenheiten vor Ort (Stahlbeton, Leitungen und „rustikale“ Treppenläufe) negativ auf die Übertragungsqualität aus, so dass die angeforderten Aktionen (Licht an/aus, Jalousie auf/zu) nicht ausgeführt werden. Um diesen Aussetzern zu begegnen, wurden bereits zwei Gateways für Versand und Empfang von Befehlen installiert, ein dritter soll nun die verbleibende Lücke schließen.

Die für die Realisierung des Vorhabens notwendigen Bauteile sind überschaubar und kosten insgesamt ca. 80 EUR. Damit liegt die Bastellösung im Preisebereich des Homematic LAN-Gateways, aber sie ist deutlich flexibler. Die größere Antenne wird außerdem zu einer höheren Sende- und Empfangsleistung führen.

Einkaufsliste

Folgende Teile habe ich beschafft:

Raspberry Pi 3B+, CC1101 Modul, Antenne, USB und Netzteil
Raspberry Pi 3B+, CC1101 Modul, USB Laufwerk, USB Netzteil und 18cm Antenne

Je nach Gehäuse wird der Raspberry zunächst mit der Unterseite des Gehäuses verschraubt oder dort eingesteckt. Die daraus resultierende stabile Lage macht die späteren Arbeiten einfacher. Beim hier verwendeten Gehäuse von Aukru waren Kühlkörper vorhanden, welche im Vorfeld aufzukleben sind.

Das CC1101 Modul und die Antenne habe ich von cod.m GmbH bezogen, wie auch bei den anderen Gateways. Der Aufbau ist sauber, die Qualität gut und der Betrieb ist problemlos. Außerdem liegt eine exzellente Dokumentation bei und im Homegear-Forum ist unkomplizierter Support verfügbar.

Das Modul wird auf die Pins 17/18 – 25/26 gesteckt. Aus Richtung der USB-Ports müssen 7 Header-Pin-Paare frei bleiben und aus der anderen Richtung 8 Paare. Dabei wird das Modul natürlich mit der Antennenbuchse in Richtung HDMI-Buchse aufgesteckt.

Raspberry Pi mit aufgestecktem CC1101 Modul, Pins 25/26 (links) bis 17/18 (rechts)

Anschließend wird im Deckel des Gehäuses mit einem 6er Holzbohrer ein Loch gebohrt. Hier wird die Aufnahme für die Antenne eingesteckt und verschraubt. Die meines Erachtens ideale Position ist in Linie mit den inneren USB-Ports, zwischen CC1101 Modul und dem Chip direkt hinter dem USB-Port. Wichtig ist, dass im geschlossenen Zustand der Antennenadapter nicht gegen Bauteile des Raspberry Pi stößt.

Raspberry Pi 3 mit CC1101 Modul verbaut
Raspberry Pi 3 mit CC1101 Modul verbaut

Ist der Antennenadapter verschraubt, wird das andere Ende auf den Anschluss des CC1101 Moduls aufgesteckt. Anschließend wird die Stab-Antenne aufgeschraubt. Dann wird das Gehäuse geschlossen, die Hardware-Arbeiten sind damit erledigt.

Software

Raspbian

Im nächsten Schritt wird die Software eingerichtet, dabei kommt wieder Raspbian 9 Lite zum Einsatz, auf die Details der Installation gehe ich an dieser Stelle nicht ein und verweise auf den entsprechenden Artikel in diesem Blog. Ich verwende bei allen RPi3 übrigens USB-Sticks, weil diese mir im Gegensatz zu mancher SD-Karte noch nie kaputt gegangen sind.

Der vorbereitete USB-Stick wird in einen Port des Raspberry gesteckt, dieser per LAN mit meinem Netzwerk verbunden und schließlich mit Strom versorgt. Die Anbindung via WLAN wird seitens Homegear wegen der daraus resultierenden Latenzen nicht empfohlen. Wer es dennoch tun möchte – hier steht wie WLAN auch „headless“ eingerichtet werden kann.

Aus Gründen der Einfachheit wird im Folgenden davon ausgegangen, dass alle Aktionen als „root“-User auf den Systemen ausgeführt werden.

Nach dem Start von Raspbian auf dem Pi und dem Zugriff via SSH oder verbundener Tastatur ist über eine Einstellung das „Serial Peripheral Interface“ (SPI) zu aktivieren. SPI ist die Schnittstelle, über welches das CC1101 Modul mit dem Raspberry Pi „Mainboard“ kommuniziert.

Die Aktivierung erfolgt durch den Parameter dtparam=spi=on in der Datei /boot/config.txt. Dieser Parameter kann am einfachsten über das Programm raspi-config im Bereich „Interface Options“ angepasst werden. Mit raspi-config kann bei der Gelegenheit auch der Hostname des Raspberry Pi geändert werden. Ein Neustart des „Raspi“ ist auf jeden Fall fällig.

Homegear Gateway

Im nächsten Schritt wird die eigentliche Homegear Gateway Software installiert, dabei greife ich auf die offiziellen Paketquellen zurück und verwende die „stable“ Version. Entsprechend der Dokumentation sind folgende Befehle auf dem Raspberry auszuführen:

$ apt install apt-transport-https
$ curl https://apt.homegear.eu/Release.key | apt-key add -
$ echo 'deb https://apt.homegear.eu/Raspbian/ stretch/' | tee /etc/apt/sources.list.d/homegear.list
$ apt update
$ apt install homegear-gateway 

Durch die obigen Kommandos wird zunächst das Homegear-Repository der Paket-Verwaltung bekannt gemacht. Danach wird der Index aktualisiert und im letzten Schritt schließlich das Paket homegear-gateway mit seinen Abhängigkeiten installiert.

Dieser letzte Schritt nimmt einige Zeit (1-3 Minuten) in Anspruch, weil die Voraussetzungen für die spätere, verschlüsselte Kommunikation mit dem Homegear Master geschaffen werden.

Nun gilt es Homegear Gateway zu konfigurieren, so dass das verbaute CC1101 Modul verwendet und die Kommunikation mit Homegear ermöglicht wird. Die notwendigen Änderungen sind in der Datei /etc/homegear/gateway.conf vorzunehmen, welche in einem Editor (z.B. nano) zu editieren ist.

Basierend auf der Dokumentation zum CC1101 Modul von von cod.m zu ist der Abschnitt HomeMatic TICC1101 example config wie folgt zu ändern:

#{{{ HomeMatic TICC1101 example config
## The device family the gateway is for.
family = HomeMaticCc1101

## The device to use
device = /dev/spidev0.0

## The interrupt pin to use. "0" for GDO0 or "2" for GDO2.
## You only need to connect one of them. Specify the GPIO
## you connected the interrupt pin to below.
interruptPin = 0

## The GPIO GDO0 or GDO2 is connected to. Specify which GDO to use above.
gpio1 = 25

#}}}

Außerdem wird für die spätere Integration das automatisch generierte Konfigurationspassword (configurationPassword) benötigt. Dieses bitte in der Zwischenablage oder an geeigneter Stelle notieren.

Nach dem Speichern der Änderungen und dem Verlassen des Editors wird homegear-gateway noch für den automatischen Start nach einem Boot angemeldet und neu gestartet.

$ systemctl enable homegear-gateway
$ systemctl restart homegear-gateway

Damit sind die Vorbereitungen für den Gateway abgeschlossen, mit dem notierten configPassword, der IP-Adresse und dem Hostnamen des Gateway-Rechners geht es nun in Richtung Homegear „Master“, um die Verbindung zu initiieren.

Homegear Master

Wie gesagt agieren die Raspberry Pi als Gateways, welche Informationen zwischen den verbundenen Homematic-Geräten und dem Master austauschen. Die Anbindung der Gateways an den Master ist in der Dokumentation von Homegear ausreichend genau beschrieben. Für diesen Artikel ist daher die Kurzfassung ausreichend, wobei davon ausgegangen wird, dass auf dem Master die Pakete homegear, homegear-homematicbidcos und homegear-management nebst Abhängigkeiten installiert und konfiguriert sind.

Zunächst wird via Homegear Management eine sog. Certificate Authority (CA) erzeugt, welche später die Zertifikate für die verschlüsselte Übertragung zwischen Master und Gateway beglaubigt:

homegear -e rc 'print_v($hg->managementCreateCa());'

Der Befehl wird asynchron im Hintergrund ausgeführt. Der Fortschritt kann durch wiederholten Aufruf des folgenden Befehls überprüft werden. Er ist abgeschlossen, sobald das Feld exitCode im Ergebnis den Wert 0 hat:

homegear -e rc 'print_v($hg->managementGetCommandStatus());'

Sobald die CA angelegt wurde, kann das notwendige Client-Zertifikat für das Gateway erzeugt werden. Dabei ist der Platzhalter <HOSTNAME> durch den Hostnamen des Gateway-Raspberry zu ersetzen:

homegear -e rc 'print_v($hg->managementCreateCert("<HOSTNAME>"));'

Auch dieser Befehl wird asynchron im Hintergrund abgearbeitet. Wieder kann der Fortschritt über $hg->managementGetCommandStatus() (s.o.) überprüft werden.

Ist auch dieser Vorgang abgeschlossen, können alle erzeugten und notwendigen Zertifikate an das Gateway übertragen werden, welches unmittelbar danach seine Arbeit aufnimmt und für eingehende Verbindungen zur Verfügung steht.

Die Platzhalter sind wie folgt zu ersetzen:

  • <IP> mit der IP des Gateways
  • <HOSTNAME> mit dem Hostnamen des Gateways
  • <PASSWORD> mit dem oben notierten Wert des Parameters
    configurationPassword aus der gateway.conf Datei.
homegear -e rc '$hg->configureGateway("<IP>", 2018, file_get_contents("/etc/homegear/ca/cacert.pem"), file_get_contents("/etc/homegear/ca/certs/<HOSTNAME>.crt"), file_get_contents("/etc/homegear/ca/private/<HOSTNAME>.key"), "<PASSWORD>");'

Vor einem Neustart von Homegear auf dem Master sind die Details des neuen Gateways noch in die Konfiguration der Homematic/BidCoS-Gerätefamilie einzutragen, welche unter /etc/homegear/families/homematicbidcos.conf abgelegt ist. Wieder sind die Platzhalter entsprechend zu ersetzen:

#######################################
########## Homegear Gateway  ##########
#######################################

## The device family this interface is for
[Homegear Gateway]

## Specify an unique id here to identify this device in Homegear
id = <HOSTNAME>

## When default is set to "true" Homegear will assign this device
## to new peers.
default = false

## Options: cul, cc1100, coc, cunx, hmcfglan, hmlgw, hm-mod-rpi-pcb, homegeargateway
deviceType = homegeargateway

## The host name or IP address of the gateway
host = <IP>

## The port of the gateway
port = 2017

## The CA certificate
caFile = /etc/homegear/ca/cacert.pem

## The client certificate
certFile = /etc/homegear/ca/certs/<HOSTNAME>.crt

## The client key file
keyFile = /etc/homegear/ca/private/<HOSTNAME>.key

## Use the ID defined above to verify the common name of the certificate
## Default: false
useIdForHostnameVerification = true

## Default: responseDelay = 95
## Should be "95" for CUL or COC, "100" for TI CC1101, "98" for Homegear Gateway and "60" for HM-CFG-LAN or HM-LGW
responseDelay = 98

Abschließend muss ein letztes Mal homegear auf dem Master neu gestartet werden und wenn alles korrekt installiert und konfiguriert wurde, sollten nach wenigen Minuten BidCoS Pakete über das neue Gateway empfangen werden. Entsprechende Logmeldungen in /var/log/homegear/homegear.log folgen dabei diesem Muster:

HomeMatic BidCoS packet received (<HOSTNAME>, RSSI: -45 dBm)

Weiterführende Informationen

Produkte*


3 Antworten zu “Homegear-Gateway mit CC1101 und Raspberry Pi 3”

  1. Hi – kurze Frage zur Konfig /etc/homegear/gateway.conf . Müssen die Zeilen um die Konfig herum auskommentiert bleiben wie oben beschrieben?
    #{{{ HomeMatic TICC1101 example config

    #}}}

Schreibe einen Kommentar

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