Grundlagen Homegear / Starter-Guide

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’


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

4 Likes