Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- %% properties
- 710 value
- %% globals
- PresentState
- --]]
- --------------- Absenk-Temperatur bei Fenster-Öffnung-------------
- local schedule = {
- id = 261, --ID des Raumes / Zone im Heiz-Panel
- idleTemp = 5 --Temperatur, die bei Fenster-Öffnung gesetzt werden soll
- }
- --------------- Absenk-Temperatur bei Abwesenheit ----------------
- local scheduleAway = {
- id = 261, --ID des Raumes im Heiz-Panel
- idleTemp = 19 --Temperatur, die bei Abwesenheit gesetzt werden soll
- }
- sensorID = 710 --ID des Tür-/Fenstersensor1
- -- AB HIER NICHTS MEHR ÄNDERN
- function Debug( color, message )
- fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
- end
- 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 setVactionModeTrue(subjectToChange)
- local url = 'http://127.0.0.1:11111/api/panels/heating/' .. subjectToChange.id
- getMethod(url, function(resp)
- if resp.status == 200 then
- print('Verbindung zum Heizpanel erfolgreich, Status ' .. resp.status)
- local panel = json.decode(resp.data)
- if panel.properties.vacationTemperature ~= nil then
- panel.properties.vacationTemperature = subjectToChange.idleTemp
- print('Setze Temperatur auf ' .. subjectToChange.idleTemp .. ' C')
- putMethod(url, panel, function(resp)
- if resp.status == 200 then
- print('Änderung wurde vorgenommen.')
- end
- end,
- function(err)
- print('Error ' .. err)
- end
- )
- else
- print('Panel nicht gefunden')
- end
- else
- print('Verbindung konnte nicht hergestellt werden, Status ' .. resp.status)
- end
- end,
- function(err)
- print('error ' .. err)
- end
- )
- end
- local function setVactionModeFalse(subjectToChange)
- local url = 'http://127.0.0.1:11111/api/panels/heating/' .. subjectToChange.id
- getMethod(url, function(resp)
- if resp.status == 200 then
- print('Verbindung zum Heizpanel erfolgreich, Status ' .. resp.status)
- local panel = json.decode(resp.data)
- if panel.properties.vacationTemperature ~= nil then
- panel.properties.vacationTemperature = 0
- print('Setze Heizplan wieder fort.')
- putMethod(url, panel, function(resp)
- if resp.status == 200 then
- print('Änderung wurde vorgenommen.')
- end
- end,
- function(err)
- print('Error ' .. err)
- end
- )
- else
- print('Panel nicht gefunden')
- end
- else
- print('Verbindung konnte nicht hergestellt werden, Status ' .. resp.status)
- end
- end,
- function(err)
- print('error ' .. err)
- end
- )
- end
- local trigger = fibaro:getSourceTrigger();
- if (trigger['type']=='global') then
- if (fibaro:getGlobalValue("PresentState") == "Away") then
- if (tonumber(fibaro:getValue(sensorID, 'value')) == 0) then
- setVactionModeTrue(scheduleAway)
- Debug("blue",'Abwesend, niemand Zuhause, Fahre Heizung runter.')
- else
- Debug("white",'Abwesend, niemand Zuhause, Fenster ist noch geöffnet. Es bleibt bei der festgelegten Temperatur.')
- end
- elseif (fibaro:getGlobalValue("PresentState") == "Home") then
- if (tonumber(fibaro:getValue(sensorID, 'value')) == 0) then
- setVactionModeFalse(schedule)
- Debug("red", 'Anwesend, jemand ist wieder Zuhause. Schalte Heizplan wieder ein.')
- else
- Debug("white",'Anwesend, jemand ist wieder Zuhause. Fenster ist noch geöffnet. Es bleibt bei der festgelegten Temperatur.')
- end
- end
- elseif (trigger['type']=='property') then
- if (tonumber(trigger['deviceID'])==tonumber(sensorID)) then
- local sensor = fibaro:getValue(sensorID, 'value')
- if (tonumber(sensor) == 1) then
- Debug("yellow", 'Fenster geöffnet.')
- counter = 0
- while (tonumber(fibaro:getValue(sensorID, 'value')) == 1 and counter < 60) do
- counter = counter + 1
- fibaro:sleep(1*1000)
- end
- if (tonumber(fibaro:getValue(sensorID, 'value')) == 1) then
- Debug("blue",'Fenster ist immer noch auf, es wird gelüftet. Fahre Heizung runter.')
- setVactionModeTrue(schedule)
- else
- Debug("yellow", 'Fenster wurde innerhalb einer Minute wieder geschlossen.')
- end
- else
- fibaro:debug('Fenster geschlossen.')
- Debug("red", 'Fenster ist wieder zu. Schalte Heizplan wieder ein.')
- setVactionModeFalse(schedule)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement