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.