Grundlagen Homegear / Starter-Guide

Protokolle

Welche Protokolle/Schnittstellen werden unterstützt?
Homegear unterstützt eine immer größer werdende Anzahl an Protokollen. Sprich: Die Anbindung von proprietären Geräten. Zunächst: wir nennen diese Protokolle oder Schnittstellen, Familien. Damit Homegear mit den Endgeräten kommunizieren kann, ist je nach Kommunikationsart der entsprechenden Familie zusätzliche Hardware nötig -> Unterstützte Kommunikationsmodule (Auswahl). Nur mit Geräten von rein Netzwerkbasierte Familien wie Modbus TCP, Sonos, etc. kann ohne Kommunikationsschnittstelle dazwischen direkt kommuniziert werden.

Aktuell sind das:

  1. HomeMatic BidCoS https://doc.homegear.eu/homegear-homematicbidcos/
  2. HomeMatic Wired https://doc.homegear.eu/homegear-homematicwired/
  3. Insteon
  4. MAX!
  5. Philips Hue https://doc.homegear.eu/homegear-philipshue/
  6. Sonos https://doc.homegear.eu/homegear-sonos/
  7. Kodi
  8. IP Cam
  9. Beckhoff BK90x0
  10. KNX https://doc.homegear.eu/homegear-knx/
  11. EnOcean https://doc.homegear.eu/homegear-enocean/
  12. Intertechno https://doc.homegear.eu/homegear-intertechno/
  13. Z-Wave https://doc.homegear.eu/homegear-z-wave/
  14. Renkforce (Conrad RS2W)
  15. Conrad RSL
  16. Nanoleaf https://doc.homegear.eu/homegear-nanoleaf/
  17. wM-Bus
  18. HomeMatic CCU
  19. Zigbee
  20. Velux KLF200

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.

2 Likes

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.

1 Like

weitere Module

UI
WebSSH Client
Management Client
Admin UI
InfluxDB Client

1 Like

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.

1 Like

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.

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.

1 Like

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

Installation -> {in Klammern die Empfehlung der Redaktion :wink: }

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

Ich (pmayer) 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 eines fertigen Homegear-Images {0.7 stable, Raspbian Buster}. Dieses wird auf eine {>16GB} SD-Karte geschrieben. Unter Windows/MacOS/Linux nutzt man dafür z.B. Etcher.

Beim ersten Startup des Systems folgt man der Installationsroutine {4GB für root/4GB für Daten} und vergibt ein neues Passwort per an den Raspberry angeschlossener Tastatur und Monitor oder, sofern die IP bekannt ist, per Login über SSH für den User pi. Standardpasswort: raspberry, bitte ändern! Die Erstinstallation dauert etwas, da noch ein Zetrifikat generiert wird.
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. {Für ein Homegear auf dem aktuellsten Stand geht’s unten bei Nightly weiter.}

Wichtig zu wissen: das Homegear-Image bringt ein read-only Dateisystem und eine Installation mit allen Familienmodulen mit sich. Hintergrund des ro Dateisystems ist die Schonung der SD-Karte durch reduzierte Schreibzugriffe. Wenn man nun also über die Konsole oder einem SSH CLient per SFTP Dateien bearbeiten oder kopieren möchte, muss vorher mit sudo oder root per mount -o remount,rw / oder in neueren Versionen per rw auf schreibend mounten -> ro mounten nicht vergessen (Homegear mountet in aktuellen Versionen selbst wieder ro). Nicht benötigte Familien sollten entfernt werden. Insbesondere, wenn sie beim Update über den Installer nicht mit aktualisiert werden, weil man ihre Installation nicht wünscht: siehe unten.

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. -> im HG-image ist SSH aktiv.

Nightly

Wer möchte, kann auch die nächtlich aus der aktuellen Entwicklung erzeugten Pakete 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

Mit der Nightly ist man generell gut bedient, sie kann aber auch immer mal wieder Verschlimmbesserungen enthalten ;-). Man kann dann aber auch hiermit problemlos einige Tage zurück springen (einfach ein älteres Datum eintragen):

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

Es gibt nicht unbedingt jeden Tag einen Build, das erkennt man bei Ausführung des Installers, wenn keine Versionsnummer im Header steht.

Nicht benötigte Module entfernen

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

{Alternative, empfohlene Vorgehensweise: HG-Image verwenden, Nightly drüber installieren (bei der Installation nur benötigte Familien auswählen), mit apt -f install nicht benötigte, alte Familien entfernen, fertig.}

Upgrade von Stretch auf Buster

  1. mit df checken ob das Rootdateisystem groß genug ist (Available von /dev/root > 500000??)
  2. in /etc/apt/sources.list stretch mit buster ersetzen
  3. in allen Dateien in /etc/apt/sources.list.d/ stretch mit buster ersetzen
  4. apt update
  5. apt dist-upgrade
  6. Nightly neu installieren

(Bei Drittanwendungen, welche nicht aus einem APT-Repository installiert wurden, muss die sources.list ebenfalls angepasst werden.)

1 Like

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…

1 Like

Node Blue - grafische Programmierung in “Flows”

erreichbar unter: https://<Homegear-IP>/nb oder https://<Homegear-IP>/node-blue


Node Blue basiert auf Node Red, ist aber dank der Programmierung in C++ bedeutend schneller. Zudem arbeitet Node Blue mit Queues und ist multithreadfähig.

Verfügbare Knoten [Jan '20]:

Funktion:

python, synchronous, template, presence light, pulsecouter, average, function, press pattern, exec

Netzwerk:

http in, http request, http response, tcp in, tcp out, modbus in, modbus out, ping, mqtt in, mqtt out

Speicher:

file

Zeit:

slow pwm, impulse, weekly program, rate limiter, on delay, clock, sun position, timer, delay, interval, off delay

Allgemein:

link out, link in, comment, constant, debug, passthrough

Parser:

json, xml, strip

Datenbank:

influxdb

Homegear:

toggle, variable in, variable out, roud robin shift, homegear event, light

IO:

serial in, serial out, gpio in, gpio out

Heizung:

controller, mode

Logik:

risingedge, srflipflop, change, or, variable switch, fallingedge, switch, and, not

Benachrichtigung:

xmpp

offene Punkte:
username/pw
Konfiguration in main.conf
Fehlermeldung → zu viele Knoten
Implementieren
history
wert forcen
variablen
PHP/Python
Debug (de)aktivieren
Abarbeitung: SPS <> Events
eigene Knoten erstellen
Gerätevariablen und RPC Methoden

Blogartikel zu node-blue und Programmierbeispiel: node-blue und die Evolution von Homegear – allgeek techblog

2 Likes

Admin-UI - Management

erreichbar unter: https://<Homegear-IP>/admin
(Familie Admin UI muss installiert sein)


Grafische Administrationsoberfläche (alpha-Status), über die fortan Geräte ohne Verwendung der Konsole hinzugefügt, verwaltet und gruppiert werden können.

offene Punkte:
Gruppen/Rollen
Familien installieren
Variablen anlegen
erweiterte Ansicht mit Konsole
Sicherung: was wird gesichert?

2 Likes

Visualisierung

erreichbar unter: https://<Homegear-IP>/ui
(Familie UI muss installiert sein)

Homegear Visualisierung: Beispielvisualisierung einer Wohnung

Wird zum ersten Mal das Paket UI installiert, zeigt die Visualisierung keine Räume oder Geräte an, da ihr die Informationen dafür fehlen. Wir müssen nun also Räume anlegen und diese Stockwerken zuweisen. Das geschieht komfortabel in der Admin-UI (Stockwerk bearbeiten um Raum zuzuweisen). Lädt man nun die Visualisierung neu, erscheinen die Stockwerke und ihre zugeordneten Räume.

1. Zuweisung von Logos zu den Räumen

Um das Standardsymbol ‘Fragezeichen’ des Raumes in ein sinnvolles Symbol zu ändern (in diesem Fall ein Schlafzimmer), verwenden wir folgenden Befehl:
homegear -e rc '$hg->setRoomMetadata(5, array("icon" => "bed_1"));' die 5 gibt hierbei die ID des Raumes an (u.A. zu finden in der Raumliste der Admin-UI).
Bereits in Homegear verfügbare Icons (wie hier bed_1) finden sich in diesem GitHub-Pfad.
Alternativ hier auch als Webseite zum direkt anschauen: Icons.html.txt (170,7 KB)

2. Anlegen von Geräten in den Räumen

2.1 Visualisieren von Gerätevariablen

Beispiel:

homegear -e rc '$hg->addVariableToRoom(85, 1, "STATE", 1);'
homegear -e rc '$hg->addRoleToVariable(85, 1, "STATE", 100001);'
homegear -e rc '$hg->addUiElement(85, 1, "STATE", "Balkontuere");'

Hier die ergänzende Doku dazu: ref.homegear.eu - Rooms and Categories
Die Variablenzuordnung kann ebenso durch Zuordnen der Gerätes zu einem Raum in der Admin-UI erfolgen.

Achtung! (Feb, 2020) Änderungen von Stockwerk, Raum, etc. werden lediglich durch die Funktion addUiElement übernommen.

2.2 Visualisieren von Systemvariablen

Beispiel:

homegear -e rc '$hg->setSystemVariable("testvar1", false);'
homegear -e rc '$hg->addVariableToRoom(0, -1, "testvar1", 1);'
homegear -e rc '$hg->addRoleToVariable(0, -1, "testvar1", 100001);'
homegear -e rc '$hg->addUiElement(0, -1, "testvar1", "TextFuerTestvar1");'

Kann Zeile für Zeile so übernommen werden und erzeugt eine Leuchte mit dem TextFuerTestvar1 im Raum mit der ID 1. (Der Raum 1 sollte natürlich vorher existieren)
(0, -1, für peerId und channel sind zu verwenden für Systemvariablen.

Hier die ergänzende Doku dazu: ref.homegear.eu - Rooms and Categories
Alternativ kann die Systemvariable auch über Node-BLUE oder die Admin-UI angelegt werden.

Achtung! (Feb, 2020) Änderungen von Stockwerk, Raum, etc. werden lediglich durch die Funktion addUiElement übernommen.

2.2.1 Visualisieren von ‘komplexen Elementen’

Beispiel für Beschattung:

homegear -e rc 'print_v($hg->addRoleToVariable(117, 1, "UP", 501001));' 
homegear -e rc 'print_v($hg->addRoleToVariable(117, 1, "DOWN", 501002));' 
homegear -e rc 'print_v($hg->addRoleToVariable(117, 1, "STOP", 501003));' 
homegear -e rc 'print_v($hg->addRoleToVariable(117, 1, "LEVEL", 501004, 1));' 
homegear -e rc 'print_v($hg->addRoleToVariable(117, 1, "STATE_LEVEL", 501004, 0));' 
homegear -e rc 'print_v($hg->addUiElement(117, 1, "LEVEL", "Rollladen Süd-Ost"));' 

Beispiel für Heizung:

homegear -e rc 'print_v($hg->addRoleToVariable(123, 1, "TEMPERATURE", 201001));' 
homegear -e rc 'print_v($hg->addRoleToVariable(123, 1, "SETPOINT_TEMPERATURE", 201002));' 
homegear -e rc 'print_v($hg->addRoleToVariable(123, 1, "CONTROL_MODE", 201003));' 
homegear -e rc 'print_v($hg->addUiElement(123, 1, "SETPOINT_TEMPERATURE", "Heizung"));' 

vor dem addUiElement() hat man noch die Möglichkeit mit z.B.

homegear -e rc 'print_v($hg->checkUiElementSimpleCreation(117, 1, "STATE_LEVEL"));'

die Visualisierbarkeit zu prüfen.

Komplexe Elemente sind der Zusammenschluss von unter Umständen einzeln visualisierbaren Elementen. Es sind allen Variablen Rollen zuzuweisen, welche dann gruppiert als komplexes Element visualisiert werden sollen. Man beachte die direction bei LEVEL und STATE_LEVEL: 0=Input 1=Output 2=InOut
Selbstverständlich muss das Gerät, der zu visualisierende Kanal oder die Variablen zuvor einem Raum zugewiesen sein.

Achtung! (Okt, 2020) Für addUiElement() lassen sich nicht alle zuvor mit Rollen verknüpften Variablen verwenden.

2.3 Rollen

Die verfügbaren Rollen finden sich in der Admin-UI oder hier auf Git. Unsere Testumgebung kann man auf test.homegear.eu einsehen und ausprobieren. Folgend ein paar Beispiele:

Licht geschaltet: 100001


Licht gedimmt: 101001

Heizung: 201002

Heizung: 201002

Türen Verschluss: 301001

Fenster: 301002

Türen Riegel: 301003

Beschattung: 501000

Beschattung: 501000

Fenster elektrisch: 600000

Fenster elektrisch: 600000

Löschen von UI-Elementen

Löschen von UI Elementen geht so:
homegear -e rc 'print_v($hg->getAllUiElements("en-US"));' oder
homegear -e rc 'print_v($hg->getAllUiElements("de-DE"));'
je nach dem wie die Sprache eingestellt ist.

Danach das Element mit dem gewünschten Index löschen:
homegear -e rc 'print_v($hg->removeUiElement(1));' (Der Index eines UI-Elements findet sich im Feld [databaseId] der Ausgabe von getAllUiElements)

Wichtig ist danach noch die Rolle der Variable zu entfernen, weil diese in der Geräteübersicht noch mitgezählt wird:
homegear -e rc '$hg->removeRoleFromVariable(1, 1, "STATE", 100001);'

Zugriff per API-Key (wenn man user und pw nicht immer eingeben möchte):

Man lege hierfür die Datei /var/lib/homegear/ui/interfacedata.custom.php mit folgendem Inhalt an:

    <?php 
    $customInterfaceDataJson = '
{
    "settings": {
        "directLoginUser": "homegear",
        "directLoginApiKey": "deinAPIkey08154711",
        "homegear": {
            "ssl": false
        },
        "userDefaults": {
            "firstBreadcrumb": "Mein Haus",
            "firstBreadcrumbId": "house",
            "showFloor": true,
            "languageChangeable": true,
            "twofaChangeable": true,
            "firstFactorAuthMethods": ["apiKey"],
            "secondFactorAuthMethods": []
        }
     },"mainmenu": {
    "2": {
        "name": ""
    }
}

} 
';

oder in neueren Versionen:

<?php 
    $customInterfaceDataJson = '
{
    "settings": {
        "directLoginUser": "homegear",
        "directLoginApiKey": "deinAPIkey08154711",
        "userDefaults": {
            "showFloor": true,
            "languageChangeable": true,
            "startPath": "house.tab.rooms",
            "viewportScale": 0.5,
            "roleProfileDefinable": true,
            "twofaChangeable": false,
            "disabledMainmenus": {
                "logoff": true
            },
            "firstFactorAuthMethods": ["apiKey"],
            "secondFactorAuthMethods": []
        }
     }
}
';

Der UI-Aufruf erfolgt dann per:
https://[homegear-ip]/ui/?key=deinAPIkey08154711
Dank Cookies ist der Aufruf ohne APIkey in einem bereits geöffneten Fenster/Tab weiterhin möglich. (Bitte Cookies löschen oder in privatem Fenster testen)
Der APIkey muss eine gweisse Mindestlänge haben. Am Besten 1:1 mit dem Beispiel testen und dann auf den Eigenen ändern, dann weiß man schonmal, dass es funktioniert hat.

Erklärung: der Inhalt der interfacedata.custom.php ist quasi der Selbe Inhalt des Headers der interfacedata.php mit höherer Priorität. Ist eine interfacedata.custom.php vorhanden, so wird deren Inhalt präferiert und bei einem Überschreiben der interfacedata.php durch ein Update bleiben alle Einstellungen erhalten.

Logout-Button entfernen

Dieser Teil aus dem obigen Beispiel entfernt den Logout-Button:

"mainmenu": {
        "2": {
            "name": ""
        }
    }

oder in neueren Versionen:

            "disabledMainmenus": {
                "logoff": true

Änderungen an der interfacedata.custom.php werden mit F5 im Browser sofort übernommen. (Bitte Cookies löschen oder in privatem Fenster testen)

zugelassene Login-Methoden

"login", "certificate", "oauth", "apiKey"

Variablenstatus in der Visualisierung invertieren/Richtung definieren

ref.homegear.eu - addRoleToVariable erwartet die Parameter (peerId,channel, variableName, roleId)
Beispiel: homegear -e rc '$hg->addRoleToVariable(85, 1, "STATE", 100001);'
mit den optionalen Parametern (direction, invert) lässt sich die Darstellung noch weiter anpassen.
Beispiel: homegear -e rc '$hg->addRoleToVariable(85, 1, "STATE", 100001, 2, true);'

0: Eingabe gesperrt, rein Statusanzeige
Achtung! Derzeit (Feb, 2020) wird eine Änderung optionaler Parameter lediglich durch die Funktion addUiElement übernommen.
Achtung! (Jan, 2021) Ein Invert mit addRoleToVariable wird nicht nur für die Visu übernommen, sondern auch für die Logik.

Was gerne mal schief geht:

‘Unauthorized’

Die Login-Methode ist fehlgeschlagen. Grundsätzlich ein gutes Zeichen.
Link mit API-key richtig eingegeben?

‘Häuschen mit pulsierenden Funkstrahlen’

Räume und Stockwerke sind angelegt?
Vielleicht einmal mit https://<Homegear-IP>/ui versuchen.
Cookies löschen/ in privatem Fenster versuchen.

‘Fehlermeldung bei Zugriff via https’

tmp_1591438169540
→ in der /var/lib/homegear/ui/interfacedata.custom.php "ssl": true setzen.

4 Likes

Wie löse ich was

Empfehlungen und Erfahrungen der Moderatoren :slight_smile:

Bestand

  • Problemstellung: Leitungen verlegen ist ohne viel Aufwand wenig bis gar nicht möglich.

  • Ansatz: funkbasierte Systeme

  • Möglichkeiten, welche Homegear direkt unterstützt:
    EnOcean: batterielos, Geräte versorgen sich durch Tastendruck, Solarzelle oder Temperaturunterschied mit Energie. Auch im professionellen Umfeld eingesetzt und zu empfehlen.
    MomeMatic: Einige der Geräte sind auch als Bausatz bestellbar. Hier lassen sich, Lötkenntnisse vorausgesetzt, einige Euro sparen.
    Max
    Intertechno
    Z-Wave demnächst
    Zigbee demnächst
    benötigte Kommunikationsmodule hier.

  • Möglichkeiten, welche Homegear indirekt unterstützt:
    Xiaomi: Frank alias @DasKleingedruckte hat ein Script geschrieben, über welches Xiaomi Smart Home Geräte über die Miscellaneous-Familie eingebunden werden können. Zu finden hier im Forum. Das Gateway bekommt man für 25€, Fensterkontakte, Bewegungsmelder, Taster etc. für ±10€. Die App von Xiaomi benötigt man lediglich für die Ersteinrichtung und das hinzufügen neuer Geräte, dann kann man dem Gateway theoretisch die Kommunikation nach China unterbinden. Verzichten muss man dann natürlich auf die Vorzüge der App, aus der Ferne Logs und Statistiken einsehen zu können. Die Geräte machen für den Preis einen wertigen Eindruck und funktionieren problemlos. Für den Betrieb in Europa vorgesehene Geräte wie Schuko-Zwischenstecker lassen sich auf einem Gateway nicht mit anderen Geräten für den Chinesischen Markt kombinieren. Mit zwei Gateways und zwei Benutzerkonten (einem auf den Europäischen und einem auf den Chinesischen Server angemeldet) geht aber auch das.

Neubau/Renovation

  • Ansatz: kabelgebunden, dann braucht man keine Batterien zu tauschen und die Geräte sind weniger reichweitenabhängig.
  • Möglichkeiten, welche Homegear direkt unterstützt:
    KNX: professionelles Bussystem, große Produktvielfalt unterschiedlichster Hersteller
    Beckhoff: Einbindung von Beckhoff-Komponenten über Modbus TCP wie hier von @pmayer vorgestellt. Professionelles Niveau zum kleinen Preis (Konfiguration im Abschnitt Beckhoff BK90X0).
    grün: demnächst, calling @dimmu

Beckhoff BK90X0

Professionelles Niveau zum kleinen Preis. BK steht für Buskoppler, eingesetzt für gewöhnlich in der Automatisierungstechnik. Wenn man so will also eine speicherprogrammierbare Steuerung ohne eigene Intelligenz :wink: . Der Buskoppler kann in den Systemgrenzen nahezu beliebig um Ein- und Ausgänge erweitert werden und macht diese über Modbus TCP direkt aus Homegear zugreifbar.
Das Wichtigste in Kürze: den BK9000 gibt’s gebraucht für 50€, die Erweiterungskarte kostet ca. 2€ pro digitalem I/O-Kanal. Mit zusätzlichen Koppelrelais lässt sich so also kostengünstig Menge machen.

Hardwarekonfiguration/Inbetriebnahme

  1. BK9000 nach Handbuch auf Werkseinstellungen zurücksetzen (Busendklemme KL9010 direkt an BK9000 und alle DIP-Schalter auf ON; einschalten und warten, bis RUN und ERR im Wechsel blinken)
  2. Erweiterungskarten zwischen BK9000 und Busendklemme installieren
  3. DIP-Schalter wieder nach Bedürfnissen einstellen (nur 10 auf ON -> DHCP) und Buskoppler ins Heimnetz bringen
  4. Familie Beckhoff BK90X0 in Homegear installieren
  5. Konfiguration in /etc/homegear/families/beckhoff.conf anpassen (einfache # entfernen und IP entsprechend anpassen)
  6. Homegear neustarten -> I/O RUN flimmert und auf ist unter Host info die Homegear-Installation zu finden von der aus nun gepollt wird.
  7. Geräte/Erweiterungskarten in Homegear hinzufügen -> jede Karte ist ein Peer; unterstützte Karten hier
  8. Offset eintragen: Eingänge/Ausgänge werden aufsteigend gezählt. Hat man z.B. zwei KL1104 mit jeweils 4 digitalen Eingängen, so ist für die richtige Zuordnung der zweiten Karte ein Offset von 4 in den Feldern INPUT_ADDRESS vorzunehmen. (Admin UI -> Geräte -> Gerät bearbeiten -> Konfigurationsparameter bearbeiten) Homegear erstellt die Offsets automatisch, es ist lediglich die NEXT_PEER_ID korrekt zu setzen. Beispiel:
Family 11> ls
      ID │ Name                      │ Serial Number │  Input address │ Output address │  Next ID │ Type │ Type String
─────────┼───────────────────────────┼───────────────┼────────────────┼────────────────┼──────────┼──────┼───────────────────────────
         │                           │               │                │                │          │      │
      93 │ DI01                      │    ESY7073714 │              0 │              0 │       94 │ 1104 │ Beckhoff KL1104           │
      94 │ DI02                      │    ESY9694001 │              4 │              0 │       95 │ 1104 │ Beckhoff KL1104           │
      95 │ DO01                      │    ESY1840035 │              0 │              0 │       96 │ 2134 │ Beckhoff KL2134           │
      96 │ DO02                      │    ESY7969539 │              0 │              4 │       97 │ 2134 │ Beckhoff KL2134           │
      97 │ DO03                      │    ESY2408449 │              0 │              8 │        0 │ 2134 │ Beckhoff KL2134           │
─────────┴───────────────────────────┴───────────────┴────────────────┴────────────────┴──────────┴──────┴───────────────────────────
  1. Homegear neustarten

Hierzu hat @pmayer auch einen Blogartikel geschrieben, der am Beispiel die Nutzung der Beckhoff mit homegear und node-blue beschreibt:
https://allgeek.de/2020/01/05/aktorik-sensorik-mit-dem-beckhoff-feldbus-und-homegear/

Homegear Gateway

Der Homegear Gateway Service kann z.B. genutzt werden, um den Empfangsbereich einer Famile zu vergößern. Ein kleiner Einplatinencomputer kann in Verbindung mit einem CUL so dazu verwendet werden, um kostengünstig weiter entfernte Geräte abzuholen und einzubinden.

Installation

Wie in der stable-Installation auf homegear.eu beschrieben (hier am Beispiel stable für Raspbian Buster):

# Install apt-transport-https
apt install apt-transport-https

# Download and install Homegear's package validation key
curl https://apt.homegear.eu/Release.key | apt-key add -

# Add Homegear's repository to APT
echo 'deb https://apt.homegear.eu/Raspbian/ buster/' > /etc/apt/sources.list.d/homegear.list 

# Update package information
apt update

apt install homegear-gateway

(hier am Beispiel nightly für Raspbian Buster):

# Install apt-transport-https
apt install apt-transport-https

# Download and install Homegear's package validation key
curl https://aptnightly.homegear.eu/Release.key | apt-key add -

# Add Homegear's repository to APT
echo 'deb https://aptnightly.homegear.eu/Raspbian/ buster/' > /etc/apt/sources.list.d/homegear.list 

# Update package information
apt update

apt install homegear-gateway

laut https://doc.homegear.eu/homegear-homematicbidcos/configuration.html#homegear-gateway-service

und dann eben noch die config der Familie anpassen :thinking:.
Wichtig: in der config muss der Parameter useIdForHostnameVerification = true gesetzt werden.

Homegear auf docker - erste Schritte

Weitere Infos finden sich auch noch im Anschluss des zitierten Beitrags. Vielen Dank an @jipp !

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.
Der rfKey darf nur aus A-Z und 0-9 bestehen.

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.
Mittlerweile gibt es auch keine komplette Liste der Geräte unter https://ref.homegear.eu/devices/

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.

weiterführende Links

Homegear Reference (en) PHP/RPC Methoden
Homegear Documentation (en) Dokumentation Core/Familien
Homegear Base Library (en) Doxygen Kommentare aus dem Quellcode
Homegear auf GitHub


Homegear Visualisierung Beispielvisualisierung einer Wohnung

1 Like

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:

Likes bitte im obersten Beitrag an unseren geschätzten Moderator @pmayer, welcher diesen Thread federführend ins Leben gerufen hat :blush:. Vielen Dank auch an dieser Stelle von mir!


Fragen und Anregungen zu diesem Thema sind dort willkommen: Grundlagen Homegear / Starter-Guide - Diskussionsthread

hier gehts ganz nach oben zum Inhaltsverzeichnis

1 Like