Versteckt im Heizungspanel verbirgt das Fibaro Home Center 2 den Urlaubsmodus (Holiday Mode), der eine feste Temperatur unabhängig vom Zeitplan einstellen kann. Eigentlich perfekt für die Absenkung der Heizung bei Abwesenheit. Doch es ist recht umständlich den Urlaubsmodus zu aktivieren, denn es bedarf einiger Klicks.

Dieses kleine Script steuert den Urlaubsmodus über eine globale Variable. So lässt sich die Heizungsabsenkung aus anderen Szenen oder Virtual Devices durch Veränderung der Variablen regeln.
Verwendung des Scriptes
Lege im Home Center 2 eine neue LUA Szene an und füge den Code des Scriptes ein. (Den Code kannst Du am Ende des Artikels kopieren oder herunterladen.) Speichere die Szene. Name und Raum haben dabei keine Auswirkungen.
Im Kopf der Szene kannst du die Temperatur für den Urlaubsmodus einstellen:
1 |
local vacationTemperature = 16 -- Urlaubs-Temperatur |
Jetzt erstelle im Variables Panel noch die Variable vacation
und setze sie zunächst auf einen beliebigen Wert:

Deine neue Szene startet bei Veränderung der Variablen. Wird der Wert auf true
gesetzt, wird der Urlaubsmodus für alle Zonen aktiviert und die Heizung auf die Urlaubstemperatur gestellt. Setzt man die Variable auf false
, wird der Urlaubsmodus deaktiviert und die Temperatur wieder durch den Zeitplan geregelt.
Verwende in deinen eigenen Szenen zur Steuerung diese beiden Code-Zeilen:
1 |
fibaro:setGlobal("vacation", "true"); -- Urlaubsmodus ein |
1 |
fibaro:setGlobal("vacation", "false"); -- Urlaubsmodus aus |
Urlaubsmodus mit Apple Home App automatisieren
Steuerst du dein Zuhauses über Siri und die Apple Home App, kannst du den Urlaubsmodus dort als Schalter hinzufügen. So kannst du den Urlaubsmodus über Siri aktivieren oder beim Verlassen und Erreichen deines Zuhauses die Absenkung der Heizung automatisieren.

(Die Apple Home App vereint alle Home-Automation-Systeme. Dein Fibaro System kannst du über die Homebridge integrieren, was mit dem Homebridge Raspberry Pi Image wirklich leicht geworden ist. Das ist allerdings ein anderes Thema und führt hier zu weit. Gehen wir also davon aus, du hast dein Fibaro System in der Home App.)
Füge in der Konfiguration des Homebridge-Fibaro-Plugins (in der Datei config.json) die folgende Zeile hinzu:
1 |
"switchglobalvariables": "vacation" |
Der Block für das Fibaro-Plugin sollte also so aussehen (achte auf die Kommas):
1 2 3 4 5 6 7 8 |
{ "platform": "FibaroHC2", "name": "FibaroHC2", "host": "IP deines Home Center 2", "username": "dein Benutzername", "password": "dein Passwort", "switchglobalvariables": "vacation" } |
Die neue Zeile bringt die Variable vacation
, die wir oben angelegt haben, als Schalter in die Home App. Nach einem Neustart der Homebridge kannst du den Fibaro-Urlaubsmodus mit Siri und der Home App steuern.
Um den Urlaubsmodus entsprechend deiner Anwesenheit ein- und auszuschalten, füge zwei Automationen in der Home App hinzu: Den Schalter Urlaubsmodus einschalten, sobald die letze Person dein Zuhause verlässt, und ausschalten, sobald die erste Person zuhause ankommt.
Jetzt hast du eine automatische Heizungssteuerung, die unabhängig vom Zeitplan die Temperatur absenkt, wenn niemand zuhause ist.
DOWNLOAD Urlaubsmodus Sript + Icon
Script Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
--[[ %% properties %% events %% globals vacation --]] local vacationTemperature = 16 -- Urlaubs-Temperatur -- -- -- Ab hier Code nicht verändern -- -- -- local vacationState = fibaro:getGlobalValue("vacation") local url = 'http://127.0.0.1:11111/api/panels/heating/' local function getMethod(requestUrl, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'GET' }, success = successCallback, error = errorCallback }) end local function putMethod(requestUrl, data, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'PUT', data = json.encode(data) }, success = successCallback, error = errorCallback }) end local function updateSchedule(id) local panelUrl = url .. id getMethod(panelUrl, function(resp) if resp.status == 200 then local panel = json.decode(resp.data) print('Zone ' .. panel.id .. ' HTTP Ok ' .. resp.status .. ': ' .. panel.name .. ' ' .. panel.mode .. ' ' .. panel.properties.currentTemperature) if panel.properties.vacationTemperature ~= nil then if vacationState == 'true' then panel.properties.vacationTemperature = vacationTemperature print('Set ' .. panel.name .. ' to Vacation Mode ' .. vacationTemperature .. '°C') else -- if vacationState == 'true' then panel.properties.vacationTemperature = 0 print('Set ' .. panel.name .. ' to Schedule Mode') end -- if vacationState == 'true' then putMethod(panelUrl, panel, function(resp) if resp.status == 200 then print('Zone ' .. panel.id .. ' HTTP Ok ' .. resp.status .. ': Changes ' .. panel.name .. ' set') end end, -- function(resp) function(err) print('error ' .. err) end ) else -- if panel.properties.vacationTemperature ~= nil then print('No vacation temperature found') end -- if panel.properties.vacationTemperature ~= nil then else -- if resp.status == 200 then print('HTTP Error ' .. resp.status) end -- if resp.status == 200 then end, -- function(resp) function(err) print('error ' .. err) end ) end -- function updateSchedule(subjectToChange) getMethod(url, function(resp) if resp.status == 200 then local zonesList = json.decode(resp.data) for i, zone in ipairs(zonesList) do updateSchedule(zone.id); end else -- if resp.status == 200 then print('HTTP Error ' .. resp.status) end -- if resp.status == 200 then end, -- function(resp) function(err) print('error ' .. err) end ) |
Du hast Fragen? Starte einen Thread dazu auf: forum.siio.de