Fibaro & ioBroker Teil 2: Virtuell Device mit dem Fritz!Box Adapter bauen
In diesem Tutorial gehen wir weiter darauf ein, wie man Geräte vom ioBroker ins Home Center integrieren kann. Dies zeigen wir beispielhaft an einem virtuellen Modul mit unserer Fritz!Box.
In unserem zweiten Teil zum Thema ioBroker und Fibaro soll es heute darum gehen, wie Du Werte vom ioBroker ins Home Center übertragen sowie Werte aus der Fibaro Zentrale im ioBroker steuern kannst. Wir haben zu diesem Thema bereits einen ersten Teil veröffentlicht, in dem wir zeigen, wie man Geräte vom ioBroker ins Home Center integriert. Dabei haben wir eine virtuelle Fernbedienung erstellt, mit der man auch Szenen im eigenen Smart Home umsetzen kann.
Nun geht es vielmehr darum, wie man Werte aus der Fritz!Box ins Home Center übermitteln und somit eine Anzeige erstellen kann, in der man den Status des eigenen Smartphones angezeigt bekommt. Dabei erstellen wir ein virtuelles Modul mit einem Fritz!Box Adapter. Das heißt, dass man am Ende sehen kann, wer im hauseigenen WLAN online oder offline, somit Zuhause ist oder nicht. Somit lassen sich eigene Szenarien erstellen. Wie all’ das funktioniert, erklären wir Dir in den kommenden Abschnitten!
Fritz!Box Adapter TR 064
1. Um die Fritz!Box-Daten in Deinen ioBroker integrieren zu können, benötigst Du einen passenden Adapter. Dieser nennt sich “tr-064.0” und kann innerhalb der Integrationsplattform gesucht und anschließend aktiviert werden.
2. Unter “Instanzen” können danach über das Schraubenschlüsselsymbol Einstellungen zu diesem Adapter vorgenommen werden: Trage die IP-Adresse Deiner Fritz!Box, den Benutzernamen und das Passwort ein. Über Deine Fritz!Box kannst Du diese Daten anlegen.
3. Am Ende alles speichern. Dabei muss darauf geachtet werden, dass die Anzeige zu diesem Adapter “grün” ist. Ist dies nicht der Fall, muss die Fritz!Box ggf. neu gestartet werden.
4. Lege ebenfalls unter den Einstellungen (“Geräte”) zum Adapter TR 064 fest, welche WLAN-Geräte synchronisiert werden sollen. Diese kannst Du einfach suchen und entsprechend hinzufügen. In unserem Fall wären das beispielsweise unsere iPhones.
5. Danach sieht man unter “Objekte”, ob die Geräte mit dem WLAN verbunden sind oder nicht. “True” bedeutet in diesem Fall online, “false” entsprechend offline.
Die werde stehen nun im ioBroker zur Verfügung. Als nächstes bauen wir das Virtual Device in unserem Home Center, um eine Statusanzeige über die Anwesenheit der Personen/Smartphones zu erhalten.
Virtuelles Modul bauen
1. Lege in Deiner Fibaro Zentrale ein neues Virtual Device über “Module” – “Lösche oder Füge Gerät hinzu” an und gib diesem einen Namen.
2. Über “Fortgeschritten” kannst Du Dir entsprechend nach Deinen Vorstellungen verschiedene Labels zusammenstellen. Wir nutzen für unser Beispiel jeweils ein Textlabel für unsere beiden Smartphones sowie einen Button, um die Fritz!Box neu starten zu können, und ein Status-Label, welches die Aktivität der Fritz!Box anzeigt.
3. Wenn Du die Einstellungen gespeichert hast, kannst Du den jeweiligen Labels einen passenden Namen geben und auch eine ID zuweisen. Wichtig ist dabei, dass Du keine Leer- oder Sonderzeichen verwendest.
Werte übertragen
Nachdem das Design festgelegt wurde, müssen die Werte vom ioBroker noch ins Home Center übermittelt werden.
1. Klicke dafür im ioBroker auf “Skripte”. Dort sind bereits zwei Skripte vorhanden (common/global), welche wir im ersten Teil unserer Videoreihe rund um den ioBroker angelegt haben. Den Code aus dem common-Skript kannst Du Dir kopieren und ergänzen durch die Werte vom Status des Smartphones. Über “Objekte” kannst Du Dir die Geräte kopieren und die dazugehörigen Variablen passend in das Skript eintragen. Es könnte dann beispielsweise wie folgt aussehen:
on({id: 'tr-064.0.devices.iPhonevNico.active', change: "any"}, function (obj) { var value = obj.state.val; fibaro_update_global_var('nicosiphoneon',value,true); });
Dabei würde es sich um den Status eines Smartphones handeln.
2. Genauso kannst Du auch den Status Deines WLANs mit in den Code als neue Variable einbauen.
3. In der primären Schleife innerhalb Deines virtuellen Moduls im Home Center muss nun noch folgendes Skript eingefügt werden:
local status_iphone_tanja = tostring(fibaro:getGlobalValue('tanjaiphoneon')); local status_iphone_nico = tostring(fibaro:getGlobalValue('nicoiphoneon')); local fritz_guest_on = tostring(fibaro:getGlobalValue('fritzgaston')); if(status_iphone_nico == 'true') then fibaro:call(761, "setProperty", "ui.nicosiphoneon.value", "Online"); else fibaro:call(761, "setProperty", "ui.nicosiphoneon.value", "Offline"); end if(status_iphone_tanja == 'true') then fibaro:call(761, "setProperty", "ui.tanjasiphoneon.value", "Online"); else fibaro:call(761, "setProperty", "ui.tanjasiphoneon.value", "Offline"); end if(fritz_guest_on == 'true') then fibaro:call(761, "setProperty", "ui.statusgastnetzwerk.value", "Aktiv"); else fibaro:call(761, "setProperty", "ui.statusgastnetzwerk.value", "Inaktiv"); end
4. Passe in diesem die globalen Variablen genauso an, wie Du diese zuvor im ioBroker definiert hast, damit diese übereinstimmen. Auch die ID vom virtuellen Modul muss noch angepasst werden sowie die IDs der einzelnen Labels, die Du bereits angelegt hast. Nach dem Speichern zeigt das virtuelle Modul nun die einzelnen Status-Angaben an.
Neustart-Button
Mit dem Fritz!Box Adapter kann man nicht nur Werte lesen, sondern auch schreiben. Dafür kann man zum Beispiel selbst die Werte ändern, indem man diese von “false” auf “true” setzt. So kann man zum Beispiel die Fritz!Box neu starten lassen.
1. Um das umzusetzen, öffne das Label in Deinem Home Center für einen Neustart-Button.
2. Füge dort folgenden Code ein:
local path = 'tr-064.0.states.'; fibaro:setGlobal('change_iob_state', path..'reboot'); fibaro:setGlobal('change_iob_value', true); fibaro:startScene(154);
3. Du musst noch die Werte anpassen, indem Du wieder den Namen der passenden Aktion aus Deinem ioBroker kopiert, die Du umsetzen möchtest. Auch die ID der Szene muss ergänzt werden.
4. Den gleichen Schritt kannst Du für andere Status-Anzeigen umsetzen, wie beispielsweise für den WLAN-Gast-Zugang.
Werte über API lesen
Die Visualisierung ist nun abgeschlossen und Du kannst das Fritz!Box Modul nutzen. Es ist aber auch möglich, die Werte zu lesen, wie wir es bereits im ersten Tutorial zu ioBroker umgesetzt haben.
- Im vorherigen Video haben wir dazu bereits eine Szene dazu angelegt. Dort müssen in der Vorschleife noch folgende Dinge angelegt werden, damit die Geräte gelesen werden können:
if(key == 'tr-064.0.devices.Tanjas-iPhone.active') then fibaro:debug('State: '..key..' Value: '..value_string..' '); fibaro:setGlobal('tanjaiphoneon', value_string); end if(key == 'tr-064.0.devices.iPhonevNicoBode.active') then fibaro:debug('State: '..key..' Value: '..value_string..' '); fibaro:setGlobal('nicoiphoneon', value_string); end if(key == 'tr-064.0.states.wlanGuest') then fibaro:debug('State: '..key..' Value: '..value_string..' '); fibaro:setGlobal('fritzgaston', value_string); end
2. Du kannst hierbei beispielsweise die Werte bei “states_pattern” leeren und neue Werte ins Home Center hineinziehen. Danach werden die Objekte neu eingelesen.
3. Zudem müssen die neuen Objekte eingetragen werden, welche man nutzen möchte. Achte dabei auch auf restliche Werte, die noch zu ändern sind.
Die Daten nutzen
Die virtuelle Anzeige rund um die Fritz!Box ist nun fertiggestellt und kann genutzt werden. Um die Daten auch zu verwenden, kann man beispielsweise auch Szenen erstellen. Wir haben dafür eine erstellt, welche gestartet wird, sobald sich ein Status innerhalb des virtuellen Moduls ändert. Dabei bewirkt unsere Szene, dass das Vorgartenlicht im Dunkeln immer dann angeht, sobald der Status meines iPhones auf “true”, also online wechselt.
Die dafür notwendige Szene kannst Du nachfolgend kopieren und durch Deine Werte ergänzen:
--[[ %% properties %% weather %% events %% globals nicoiphoneon --]] local startSource = fibaro:getSourceTrigger(); if (tostring(fibaro:getGlobalValue('nicoiphoneon')) == 'true' and tonumber(fibaro:getValue(492, 'value')) < 50 ) then fibaro:call(358, "turnOn"); fibaro:setGlobal('alarmanalge_scharf',0); fibaro:sleep(600000); fibaro:call(358, "turnOff"); end
Auch andere Szenen sind natürlich möglich. Hier kannst Du nach Deinen eigenen Vorstellungen verschiedene Szenarien erstellen.