Fibaro Home Center: Szene für Push-Nachricht über den Status von Haushaltsgeräten erstellen
Wie Du Push-Nachrichten übers Smartphone und Sprachausgaben von Alexa über Dein Fibaro Home Center erstellen kannst, erfährst Du hier!
Willkommen zu unserem neuen Tutorial. Wir zeigen Dir heute, wie Du über Dein Fibaro Home Center und mithilfe einer LUA Szene eine Push-Nachricht über Haushaltsgeräte in Deinem Smart Home erhalten kannst. Dafür werden wir beispielhaft eine Szene mit einer Spülmaschine umsetzen. Die Vorgehensweise kann aber auch auf andere Geräte wie die Waschmaschine oder den Trockner angewandt werden. Zudem zeigen wir Dir, wie Du auch Statusmitteilungen über Alexa oder das Bose Soundtouch System erhalten kannst.
Infos vorweg
Für den weiteren Verlauf benötigst Du ein Fibaro Home Center sowie einen Wall Plug, also Zwischenstecker. Wir nutzen für diesen Stecker ein Modell von Fibaro. Es gibt aber auch Modelle von anderen Herstellern. Wichtig ist hierbei nur, dass der Stecker Z-Wave fähig ist und über eine Strommessfunktion verfügt.
Nachfolgend wollen wir Dir nun zeigen, wie Du Deine Spülmaschine smart machst. Das bedeutet, dass nicht nur eine Push-Nachricht auf Dein Smartphone gesendet wird, sobald die Spülmaschine fertig ist, sondern auch Alexa eine Sprachausgabe über den Amazon Echo machen wird. Zudem nutzen wir in unserem Tutorial einen RGBW-Strip, welcher blau aufblinkt und unterhalb der Spülmaschine befestigt ist.
Wall Plug Szene
Als erstes muss der Wall Plug zu Deinem Home Center hinzugefügt werden. Danach können wir eine Szene erstellen, die den Wall Plug überwacht und uns anschließend auf verschiedene Weise über dessen Status infomiert. Füge dafür eine LUA-Szene hinzu, gib dieser einen Namen und füge ihr einen Raum zu. Anschließend kannst Du über “Erweitert” den nachfolgenden Code in die Szene einfügen:
--[[ %% properties xxx power %% weather %% events --]] if (fibaro:countScenes()>1) then fibaro:abort(); end --[[ Was kann das Script? Mit diesem Script kannst du Geräte wie die Waschmaschine, den Trocker oder die Spühlmaschine überwachen und wenn Sie in den Standbybetrieb wechseln, das heißt fertig sind, darauf reagieren. Das Script wurde von Nico Bode von https://www.intelligentes-haus.de entwickelt. Die Anleitung inkl. Video findest du hier: https://www.intelligentes-haus.de/tutorials/fibaro-home-center-szene-fur-push-nachricht-uber-den-status-von-haushaltsgeraten-erstellen/ Anleitung: device_id = Die Geräte ID die Ihr Prüfen wollt z.b. Die WallPlug ID von der Waschmaschine power_on = Ab wieviel Watt ist die Waschmaschine aufjendenfall an -> am besten bei Verbrauch -> Gerät wählen und da schauen power_standby = Ab wieviel Watt ist die Maschine im Standby standby_secounds = Wielange muss die Maschine im Standby sein damit Sie wirklich fertig ist global_var_name = Variablenname um den status zu speichern: bsp: waschmaschine_run oder trocker_run -> 0 ist waschmaschine ist nicht an 1 ist waschmaschine läuft Bitte oben bei den Properties ebenfalls die ID des Wallplugs eintragen (157 durch deine ersetzen) das ist der Trigger! Weiter unten im Script ab ca. Zeile 90 kannst du dann angeben was passieren soll! --]] local device_id = 157; local power_on = 50; -- From how many watts is the machine on example 100 local power_standby = 8; -- From how many watts is the machine finished example 10 local standby_secounds = 10; --how long has Stanby really had to be done with it? local global_var_name = 'dishwasher_run'; -- exampale waschmaschine_run oder trocker_run local debug_mode = true; -- zeig dann mehr infos im debug fenster an false /true if (fibaro:getGlobal(global_var_name) ~= nil) then if(debug_mode == true) then fibaro:debug('Variable ' ..global_var_name.. ' is created.'); end else fibaro:debug('Variable ' ..global_var_name.. ' isn`t created. Plese Create it Panels -> Variables Panel'); end if(debug_mode == true) then fibaro:debug('Scene start '); end if (tonumber(fibaro:getValue(device_id, "power")) >= power_on and tonumber(fibaro:getGlobalValue(global_var_name)) == 1) then if(debug_mode == true) then fibaro:debug('The machine still seems to be running!'); end end if (tonumber(fibaro:getValue(device_id, "power")) >= power_on and tonumber(fibaro:getGlobalValue(global_var_name)) == 0) then fibaro:debug('Device was started'); fibaro:setGlobal(global_var_name, "1"); end local is_device_off_real = true; if (tonumber(fibaro:getValue(device_id, "power")) <= power_standby and tonumber(fibaro:getGlobalValue(global_var_name)) == 1) then fibaro:debug('Smaller then '..power_standby..' Watt check is really end!'); local i = 1; while(i <= standby_secounds) do if (tonumber(fibaro:getValue(device_id, "power")) <= power_standby and is_device_off_real == true) then if(debug_mode == true) then fibaro:debug(''..i..' Secound smaller then '..power_standby..' Watt'); end else if(debug_mode == true) then fibaro:debug(''..i..' over '..power_standby..' Watt maschine isnt finish'); end is_device_off_real = 0; i = standby_secounds; end if(is_device_off_real == true) then fibaro:sleep(1000); end i = i + 1 end if(is_device_off_real == true) then --[[ from here things should happen when the device is done! example: Send Push, TextTo Speech, Light on .. --]] fibaro:debug('Device is finish'); fibaro:setGlobal(global_var_name, 0); -- this do not change -- example send push: --fibaro:call('add here your iphone/android device id', "sendPush", "Waschmaschine ist fertig!"); -- example TTS Alexa see tutorial: https://www.intelligentes-haus.de/tutorials/alexa-text-to-speech-tts-uber-fibaro-zentrale-nutzen/ --fibaro:setGlobal('tts_alexa_device', 'office'); --fibaro:setGlobal('tts_alexa_text', 'Die Waschmaschine ist fertig'); --fibaro:startScene(117); -- example set rgbw on and after 10 secount to off 579 = your is from rgbw --fibaro:call(579, "setBrightness", "100"); --fibaro:call(579, "setColor", "0","255","255","255"); --fibaro:call(579, "turnOn"); --fibaro:sleep(10000); --fibaro:call(579, "turnOff"); --[[ end things add --]] else fibaro:debug('Device is not finish!'); end end if(debug_mode == true) then fibaro:debug('Scene end'); end
Passe danach noch die Werte in der Szene mit Deinen Werten an, indem Du beispielsweise zu Beginn die ID Deines Wall Plugs eingibst. Genauso müssen auch die restlichen Werte verändert werden. Weitere Erklärungen dazu findest Du im Video!
Beispielsweise kannst Du auch Einstellungen über den Verbrauch Deines Wall Plugs festlegen. Um darüber Aussagen treffen zu können, klicke im Home Center auf den Menüpunkt “Verbrauch”. Dort kannst Du den Spülmaschinen-Zwischenstecker auswählen und entsprechend den Verbrauch einsehen und die Werte in Deiner Szene nach diesem anpassen.
Außerdem benötigst Du für die Szene eine globale Variable. In unserem Fall eine für die Spülmaschine, um diese zu überwachen. Eine globale Variable legst Du über den Menüpunkt “Steuerungen” – “Variablensteuerungen” an.
Tipp
Anschließend ist die Konfiguration der Szene abgeschlossen. Diese funktioniert nun auch. Um aber auch eine Benachrichtigung über den Status der Spülmaschine zu erhalten, muss die LUA-Szene noch weiter angepasst werden.
Push-Nachricht festlegen
Wenn Du innerhalb der Zwischenstecker-Szene weiter nach unten scrollst, findest Du den Code mit den Einstellungen für die Benachrichtigung vor. Auch dort muss noch einiges angepasst werden.
Du kannst beispielsweise Deinen Wunschtext für die Benachrichtigung eintragen. Außerdem benötigt man zwei globale Variablen für die IDs der nutzbaren Smartphones, diese kannst Du aber auch manuell eintragen. Um die ID Deines Smartphones herauszufinden, brauchst Du zunächst die Fibaro App fürs iPhone oder Android-Smartphone. Danach musst Du folgende Seite aufrufen: “IP-Adresse Deines Home Centers/api/devices/”. Auf der danach geöffneten Seite kannst Du nun nach Deinem Smartphone suchen, die ID des Geräts entnehmen und danach in der Szene eintragen, sodass Du eine Push-Benachrichtigung über Dein Smartphone erhältst.
Außerdem kannst Du auch eine Text-to-Speech Funktion mit Alexa umsetzen. Wie das funktioniert, erfährst Du hier. Genauso kannst Du auch eine Sprachausgabe über Bose Text-to-Speech nutzen. Darüber haben wir bereits ein Tutorial gemacht. Dieses findest Du hier.
In Deiner LUA-Szene kannst Du die Werte dafür jeweils anpassen und so die Benachrichtigungen über die verschiedenen Geräte umsetzen.
Benachrichtigungen über grafische Szene erstellen
Wenn Du Dich nicht so gut mit LUA auskennst, kannst Du die vorherigen Schritt rund um die Benachrichtigungen auch über eine grafische Szene umsetzen. Lege dafür eine neue, grafische Szene über Dein Home Center an.
Als erstes kannst Du die Wenn-Bedingung mit der Spülmaschinen-Variable erstellen. Setze dabei den Wert auf 0. Danach kannst Du eine Push-Benachrichtigung für die Spülmaschine festlegen. Diese musst Du im Vorhinein über “Steuerungen” – “Benachrichtigungssteuerung” erstellen.
Genauso kannst Du auch ein Licht aufblinken lassen. Wir haben dafür in unserer Küche einen RGBW-Strip angebracht. Wähle das passende Modul in der grafischen Szene aus und passe die Farbeinstellung an. Die Werte können nach eigenem Belieben ausgesucht werden. Wähle über “Module” das passende Licht aus und entscheide Dich für eine Farbe. Übertrage den dazugehörigen Wert danach in Deine grafische Szene. Natürlich sollte die Lampe auch wieder ausgeschaltet werden, das kannst Du auch über die Szene festlegen.
Durch den Schritt mit der grafischen Szene kannst Du Dir den Benachrichtigungsteil innerhalb der LUA-Szene sparen. Wählst Du diese Vorgehensweise, entferne den entsprechenden Teil aus der LUA-Szene, da er dann überflüssig ist.
Push-Nachricht und Co. nutzen
Sind die Schritte abgeschlossen, kann die Spülmaschine angestellt werden. Nach deren Fertigstellung erhältst Du entsprechend eine Push-Nachricht, Alexa- oder Bose-Sprachausgabe – wie Du es vorher innerhalb der Szenen festgelegt hast.
Hallo Nico,
erstmal vielen Dank für das Tutorial und das LUA-Skript, funktioniert bei meiner Waschmaschine einwandfrei.
Ich würde das Skript auch gerne für die Spülmaschine nutzen, aber da habe ich das Problem, dass die Spülmaschine zum Trocknen in eine Art Standby geht und die Leistungsaufnahme zwischen 0,3 – 0,4 Watt liegt (wie im Video angedeutet). Diese Leistungsaufnahme scheint alleine daraus zu resultieren, dass die Spülmaschine noch eingeschaltet ist.
Kurz bevor der Trockenvorgang beendet ist, springt die Leistungsaufnahme allerdings für etwas mehr als 1 Sekunde auf bis zu 150 W. Somit ist es nicht möglich eine “standby_seconds” Zeit anzugeben, an dem die Spülmaschine wirklich fertig ist, zumal die Dauer des Trockenvorgangs je nach Spülprogramm unterschiedlich ist.
Könnte man den kurzzeitigen Sprung der Leistungsaufnahme nicht irgendwie als “Trigger” nutzen?
Beispiel: mind. x standby_seconds (kürzeste Trockenphase) + Leistungsansprung > 100 W (ggfs. + 30 sec um sicherzustellen, dass die Spülmaschine wirklich fertig ist) DANN Push-Nachricht
Ich hoffe, dass das einigermaßen verständlich ist.
Wäre das möglich? Wenn ja, wie? Oder gibt es eventuell eine elegantere Lösung?
Vielen Dank schon mal im Voraus!
Viele Grüße,
Dirk
Hallo, echt interessante Projekte.
Ich bin in diesem Bereich noch neu, deshalb mal die Frage, woher bekomme ich die Parameter/ Befehle, die ich von einem Device abfragen oder setzen kann?
Grüß, aliasdispi — und weiter so!!!