Grundlagen Homegear / Starter-Guide

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 - zusammenzutragen. 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.


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

so long,
p


[Edit @Sim | Jan. '20 | Bitte nicht wundern, wenn dieser Beitrag gerade öfter oben auftaucht. Damit wir direkt auf einzelne Themen (quer-)verlinken können, mache ich mit @pmayer’s Zustimmung (vielen Dank dafür!) mehrere Beiträge daraus. Außerdem sollen hier bestehende Themen weiter vertieft und weitere Themen ergänzt werden.]

Inhalt

  1. Was ist Homegear?
  2. Schnittstelle zur Automation
  3. Protokolle/Familien/Module
  4. Scripting
  5. weitere Module
  6. Betrieb
  7. Unterstützte Kommunikationsmodule (Auswahl)
  8. Installation
  9. OpenHab
  10. Node Blue - grafische Programmierung in “Flows”
  11. Admin-UI - Management
  12. Visualisierung
  13. Homegear-Gateway
  14. Homegear auf Docker
  15. Homematic AES
  16. Betrieb
  17. Datenpunkte Geräte
  18. weiterführende Links
  19. Thermostate (Homematic, Max)
19 Likes

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

Was ist Homegear?

Homegear ist eine Open-Source-Software, lauffähig auf linuxbasierten Systemen. Ursprünglich rein kommandozeilenbasiert, übernimmt Homegear mittlerweile mit grafischen Benutzerschnittstellen wie Node Blue und einer Admin-UI die Logik und das zentrale Management in einem Smart Home. Der Aufbau ist dabei modular, es brauchen also lediglich die Kommunikationsschnittstellen und weiteren Module dazu installiert werden, welche tatsächlich zur Anwendung kommen. Durch die Programmierung in C++ erfolgt die Abarbeitung der vom Nutzer selbst erstellten Logik auch auf kleinsten Rechnern nahezu verzögerungsfrei. Homegear ist zudem von Haus aus auf Sicherheit konzipiert. Das heißt: sämtliche Netzwerkkommunikation kann verschlüsselt erfolgen.

Was kann Homegear/für wen ist Homegear interessant?
Homegear hat die Stärke, verschiedene Kommunikationsprotokolle (siehe Protokolle/Schnittstellen) miteinander sprechen zu lassen und das blitzschnell. Wer nun also beispielsweise eine KNX-Installation mit EnOcean Fenstergriffen kombinieren möchte oder Fensterkontakte von Xiaomi mit Homematic Heizkörperstellantrieben, für den ist Homegear prädestiniert. Fortgeschrittene Programmierkenntnisse oder Erfahrung mit der Kommandozeile unter Linux sind nicht zwingend notwendig, helfen aber doch noch an einigen Stellen.

3 Likes

Schnittstelle zur Automation

In Richtung der Automation kann homegear XML-RPC, Binary-RPC, JSON-RPC, MQTT, Websockets und auch HTTP sprechen.
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.

Beispielhaft hat @pmayer hier mal vor Längerem zusammengeschrieben wie so eine Konfiguration per MQTT aussehen kann.

1 Like

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.