Grundlagen Homegear / Starter-Guide


#1

Hallo zusammen,

es scheint immer mal wieder zu Verständnissproblemen zu kommen wofür Homegear eigentlich eingesetzt wird. Ich hab mir also mal vorgenommen ein paar Informationen - quasi ein Starter-Guide - zusammen zu tragen. Vor allem um nicht immer wieder die selben Links in den Threads zu posten.

Betrachtet das hier bitte als work in progress und ich würde mich freuen, wenn ihr mich bei Dingen, die ich falsch wiedergebe, korrigiert. Jegliches Feedback ist willkommen!

Ich konzentriere mich hauptsächlich auf den Betrieb auf einem Raspberry Pi mit Raspbian Jessie.


Was ist Homegear?

Homegear is a free and open source program to interface your smart home devices with your home automation software (like Node-RED, IP-Symcon, openHAB, etc.) or your own scripts. – www.homegear.eu

Homegear gibt einem also die Möglichkeit verschiedene Protokolle an eine Hausautomationssoftware anzubinden. Stellt es euch also wie ein Gateway vor.
In Richtung der Automation kann homegear XML-RPC, Binary-RPC, JSON-RPC, MQTT, Websockets und auch HTTP sprechen.

Schnittstelle zur Automation

Die RPC-Schnittstelle kommt hauptsächlich bei der Kommunikation als CCU(2)-Ersatz zum Einsatz. Prominentestes Beispiel ist hier sicher openHab und das zugehörige Homematic-Binding, das komplett von Homegear unterstützt wird - inkl. Auto-discover.

Der größte Vorteil dadurch ist, dass sich alle Geräte, die Homegear unterstützt, in openHab, oder jeder anderen Automation, als Homematic-Geräte präsentieren.

MQTT ist eine weitere große Stärke von Homegear. Jedes per Protokoll angebundene Gerät wird in MQTT abgebildet und ist dadurch von jeder mqtt-fähigen Software ansprechbar.

Protokolle

Homegear unterstützt eine immer größer werdende Anzahl an Protokollen. Sprich: Die Anbindung von proprietären Geräten.

Aktuell sind das:

  • KNX
  • EnOcean
  • Beckhoff BK90x0
  • HomeMatic BidCoS
  • HomeMatic Wired
  • Insteon
  • Philips Hue
  • Sonos
  • MAX!
  • Intertechno
  • Kodi
  • IP cams

Homegear “übersetzt” diese in das gewünschte Ausgabeprotokoll (Schnittstelle). Damit hat man den immensen Vorteil keine Automation haben zu müssen, die alle im Haus/in der Wohnung verwendeten Geräte “verstehen” muss, sondern nur eine Schnittstelle beherrschen muss, die auch Homegear versteht.

Jedes Geräte erhält eine in der Homegear-Installation eindeutige Peer-ID, über die es angesprochen werden kann. Diese kann nachträglich geändert werden.

Scripting

Zusätzlich erlaubt Homegear das direkte Scripting, also das Anlegen von Automatismen zur Steuerung. Dies kann protokollübergreifend passieren.
Man kann also zum Beispiel mit einem Homematic-Fensterkontakt ein Max!-Heizkörperthermostat direkt verbinden ohne auf Automatismen aus der Hausautomatisierungssoftware angewiesen zu sein.

Als Scriptsprache kommt PHP 7 zum Einsatz: https://ref.homegear.eu/php.html#affixSection1
Es können sogar per PHP eigene Geräte erzeugt werden, durch die man dann genau genommen jegliche Freiheiten hat - das ist aber sicher ein Thema für Fortgeschrittene.

Software / Betriebssystem

Homegear ist ein in C/C++ geschriebener Dienst, der auf theoretisch jedem Linux lauffähig ist. Die kompilierten Pakete findet man unter https://www.homegear.eu/downloads.html, die Installation ist sehr ausführlich in der Dokumentation beschrieben: https://doc.homegear.eu/data/homegear/installation.html

Betrieb

Die gängingste Variante ist die Installation auf einem Raspberry Pi, da dieser direkte Hardwareschnittstellen für die pro Protokoll benötigten Kommunikationsmodule mitbringt.

Je nach Protokoll werden verschiedene Kommunikationsmodule benötigt. Alle per Netzwerk zugreifbaren Protokolle (Philips Hue, Sonos, Kodi, IP cams) benötigen keine zusätzliche Hardware.
Für Hue benötigt man eine Hue-Bridge, da aktuell ZigBee - das zu Grunde liegende Protokoll der Hue-Birnen - noch nicht direkt implementiert ist.

Unterstützte Kommunikationsmodule (Auswahl)

Homegear benötigt exklusiven Zugriff auf das Kommunikationsmodul - vom gleichzeitigen Nutzen des selben Kommunikationsmoduls ist abzuraten.

Siehe auch https://doc.homegear.eu/data/homegear/requirements.html oder die Dokumentation des entsprechenden Moduls auf https://doc.homegear.eu.

Installation

Zu Empfehlen ist die Installation auf einem Raspberry Pi 2 B+ oder 3 B+. Vom Betrieb über WLAN (Pi Zero mit WLan-Stick) wird - wieder wegen Timing - abgeraten.

Ich habe mal eine Anleitung für Anfänger für das installieren eines Image auf einem Raspberry Pi geschrieben: https://github.com/codmpm/node-red-contrib-loxone/wiki/Anfänger%3A-Installation-RPi%2C-node-red%2C-nodes Zwar in node-red Kontext, aber bis dahin ist natürlich alles gleich, hier trotzdem eine Kurzversion:

Image installieren

Der einfachste Weg ist die Installation mittels der fertigen Homegear-Images. Diese werden auf eine SD-Karte geschrieben. Unter Windows nutzt man dafür den Win32DiskImager, unter MacOS ist Etcher oder ApplePiBaker zu empfehlen. Linux Nutzer benutzen dd.

Nach der Installation sollte nach sudo raspi-config direkt ein sudo apt update mit anschließendem sudo apt full-upgrade durchgeführt werden um das installierte System auf den aktuellen Stand zu bringen.

Natürlich funktioniert auch die Installation in jedem üblichen Raspbian: https://homegear.eu/downloads.html?version=0.7&system=raspbian_jessie
Hier ist nur Sorge dafür zu tragen, dass die für die verwendeten Kommunikationmodule nötigen Schnittstellen, nicht durch Raspbian-eigene Prozesse (Bluetooth, etc.) belegt sind.
Die Doku gibt aber über die nötigen Schritte Aufschluss. Beispielhaft bei der Installation des HM-MOD-RPI-PCB: https://doc.homegear.eu/data/homegear-homematicbidcos/configuration.html#homematic-wireless-module-for-raspberry-pi-hm-mod-rpi-pcb

Wichtig: Mittlerweile ist der SSH-Server auf einem aktuellen offiziellen Raspbian nicht mehr standardmäßig aktiv. Wenn man den Pi nicht direkt per Tastatur und Monitor konfiguriert, kann man durch Anlegen einer leeren Datei namens ssh auf der SD-Karte (BOOT) den SSH-Server aktivieren.

Nightly

Wer möchte, kann auch die nächtlich aus der aktuellen Entwicklung erzeugten Packete nutzen. Dazu einfach folgendes auf der Konsole eingeben und dem Installationsscript folgen:

wget -O /tmp/InstallNightly.sh https://homegear.eu/downloads/InstallNightly.sh && bash /tmp/InstallNightly.sh

OpenHab

Viele möchten gerne openHab mit Homegear auf der gleichen Hardware betreiben. Das ist kein Problem.
Hier empfiehlt sich momentan, da es noch kein Homegear-openHab2-Image gibt, die Installation von openHab im Homegear-Image: http://docs.openhab.org/installation/linux.html#package-repository-installation bzw. http://docs.openhab.org/installation/rasppi.html.

Als Alternative sei noch openHabbian zu erwähnen, welches laut heise.de Homegear mit einrichten kann. Hier ist noch ungeklärt, ob Kommunikationsmodule am seriellen Anschluss out-of-the box funktionieren oder ob die Schritte des offiziellen Raspbian erledigt werden müssen. Hier gerne Feedback…

Nicht benötigte Module

Diese können mittels sudo apt remove homegear-<modulname> deinstalliert werden. Die Liste der installierten Pakete lässt sich mit dpkg -l | grep homegear anzeigen.

Konfiguration

Die Kommunikationsmodule, die verwendet werden sollen, müssen Homegear durch editieren der Konfigurationsdateien in /etc/homegear/families bekannt gemacht werden. Es muss natürlich das passende Modul installiert sein.
Achtet auch darauf die Zeile in eckigen Klammern [], der den Bereich für euer Kommunikationsmodul eröffnet, einzukommentieren.

Bemüht dazu bitte die Dokumentation, die @sathya wirklich versucht hat allumfassend zu halten.

Homematic AES

WICHTIG!
Die meisten Homematic-Geräte nutzen einen AES-Handshake um sicher zu stellen, dass nur eine authentifizierte Basis Befehle erteilen darf. Nutzt ihr den Standard-AES-Schlüssel oder den der in der Config-Datei steht, können Unbefugte im schlimmsten Fall eure Geräte schalten.

Das hat zur Folge, dass Geräte, die nicht korrekt von eurer Basis (Homegear/CCU) abgelernt wurden, nicht an einer neuen Basis angelernt werden können. Auch ein Werksreset nutzt dann nichts - das Gerät muss dann zu eQ-3 geschickt werden und kostenpflichtig neu bespielt werden.

Wichtig ist also die Vergabe einer eigenen centralAddress und eines eigenen rfKey. Diese sind in der homematicbidcos.conf einzustellen. Dort ist auch erklärt wie man den rfKey ändern kann, sofern man den “alten” rfKey noch hat.

Siehe auch: https://doc.homegear.eu/data/homegear-homematicbidcos/configuration.html#homematicbidcos-conf

Betrieb

Nach der Installation läuft Homegear als Dienst im Hintergrund. Mittels sudo service homegear restart kann der Dienst bei Bedarf - zum Beispiel nach Änderungen an den Konfigurationsdateien - neu gestartet werden.

Geräte an-/ablernen

Über die Konsole (sudo homegear -r) können Geräte an Homegear an- und abgelernt werden. Gleiches geht auch mit dem unter Windows lauffähigen Homematic-Konfigurator. Zukünftig wird Homegear ein eigenes Webinterface zu diesem Zweck mitbringen.
Siehe: https://doc.homegear.eu/data/homegear-homematicbidcos/adding_devices.html

Das im Link gezeigte Verfahren ist analog zu allen Protokollen anzuwenden, sofern Geräte angelernt werden müssen.
Leuchten der Philips Hue Bridge sollten über fs 5 und anschließendes search gefunden werden und können mit darauf folgendem ls angezeigt werden. Initial muss einmal der Knopf auf der Bridge gedrückt werden, damit Homegear mit dieser Authentifizierungsinformationen austauschen kann. Auch über die Hue-App angelegte Gruppen werden als einzelne Geräte repräsentiert.
Beispiel:

(Family)> ls
         ID │ Name                      │  Address │ Serial Number │ Type │ Type String               │ Firmware │ Config Pending │ Unreach
────────────┼───────────────────────────┼──────────┼───────────────┼──────┼───────────────────────────┼──────────┼────────────────┼────────
            │                           │          │               │      │                           │          │                │        
         18 │ Regal                     │ 00000001 │   HUE00000001 │ 0304 │            Philips LWB004 │     1336 │             No │      No
         19 │ Stehlampe                 │ 00000002 │   HUE00000002 │ 0304 │            Philips LWB004 │     1336 │             No │      No
         29 │ Wohnzimmer                │ 00000001 │  *HUE00000001 │ 1000 │          Philips Hue Team │        ? │             No │      No
────────────┴───────────────────────────┴──────────┴───────────────┴──────┴───────────────────────────┴──────────┴────────────────┴────────

Mit Sonos habe ich leider keine Erfahrung…

Datenpunkte Geräte

Am einfachsten kann man sich die nach dem Anlernen zur Verfügung stehenden Datenpunkte der Geräte mittels Homegear-Konsole anzeigen lassen. Die geschieht nach der Auswahl des Gerätes (peer select) in der passenden Familie (fs) mit config print.

Es wird zwischen Werten (value) und Konfigurationsparametern (param) unterschieden. Werte können mit getValue gelesen und mit setValue geschrieben werden. Konfigurationsparameter mit getParamset und putParamset.
Mehr dazu unter https://ref.homegear.eu/php.html#affixSection1

Homegear enthält device description files in denen alle Datenpunkte der Geräte hinterlegt sind. Manchmal hilft also auch ein Blick in diese.
Zu finden auf Github im entsprechenden Modul unter misc/Device Description Files und dann nach dem Kürzel des Gerätes suchen.

Für Homematic-Geräte gibts es sogar von eq3 selbst eine recht ausführliche Dokumentation. (Danke @Sydney).

Automatisierung

Natürlich macht es Sinn, die per homegear verbundenen Geräte zu automatisieren. Viele Geräte bringen bereits eine gewissen Grundlogik mit.

Thermostate (Homematic, Max)

Homematic- oder Max-Thermostate besitzen eine interne Automatik mit der sie genau genommen auch ohne homegear funktionieren. Dies wird über Wochenprogramme auf den Thermostaten gespeichert. Dieses Wochenprogramm kann über die PHP-Script-Engine mittels putParamset gefüttert werden: Homegear auf Raspberry im Docker-Container --> PHP Scripte werden nicht ausgeführt

@Zennix hat ein kleines Windows-Tool geschrieben, das den benötigten PHP-Code erzeugt: Homegear Script Editor :thumbsup:


So, erst mal von mir. Wie gesagt: Gerne Feedback, Korrekturen und Anregungen.

so long,
p


HM-MOD-RPI-PCB - Firmware-Update notwendig? *** GELÖST ***
Umstieg auf homegear
Installation unter openhabian Erstkonfiguration rfkey für Homematic
BidCoS: HM-MOD-RPI-PCB auf Raspi 2 Problem
Nach restore keine Verbindung
Inbetriebnahme HM-MOD-RPI-PCB
Migration CCU2 zu Homegear
HM-MOD-RPI-PCB Error: No init packet received
HM-MOD-RPI-PCB Error: No init packet received
Homegear-Usertreffen am 10. November in Düsseldorf - 2019 am 26. Oktober!
Umstieg von CCU2 auf homegear (als Adapter für openHAB)?
Ersatz für meine CCU1
Verständnisfrage Enocean
Wie viele CUL in Homegear einbindbar
CCU2 als Funk-LAN Gateway
Problem mit HM-Dis-EP-WM55 und STICKY_UNREACH
"My-HM-MOD-RPI-PCB": Error: No response received to packet
HM-MOD-RPI-PCB und Openhab2:Anfänger
Wo Config beginnen nach Installation über Repository
HM-MOD-RPI-PCB und Homegear und openHAB2 auf Raspberry PI3
MAX! - Thermostate und das Wochenprogramm
CC1101 Homematic Pairing funktioniert nicht
Hm-cfg-lan - raspbian
#2

#3

Super Übersicht. Fehlt nur noch Node-RED. Mittlerweile finde ich es besser als OpenHAB :wink:

Hilfreich fand ich die Dokumentation der Datenpunkte um den Überblick zu bekommen…

EQ3 Doku der Datenpunkte


#4

Dazu hatte ich vor längerem hier schon mal was zu geschrieben: Starthilfe


#5

Daher bin ich auch bei Node-RED gelandet… Habe eben noch die Doku der Datenpunkte ergänzt während dem Du geantwortet hast.


#6

Homegear lässt sich problemlos unter Openhabian mit dem Config-Tool (sudo openhabian-config) installieren. Auch der nanoCUL funktioniert Out of Box. Lediglich das Device muss in der homematicbidcos.conf angegeben werden.

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

device = /dev/ttyUSB0


#7

Gleiches gilt für das HM-MOD-RPI-PCB

deviceType = hm-mod-rpi-pcb
device = /dev/ttyAMA0