Bei mir funktionierte das ganze leider nicht so wie es sollte.
Beim Wechsel von Urlaubs in Heiz -Modus und umgedreht tauchte bei meinen Thermostaten (Danfoss LC12) eine Zeitangabe von 2Std auf und
erst nach Ablauf dieser Zeit erfolgte dann die Umschaltung.
Was ein bisschen Popo ist, da die Heizung sofort runter/hoch regeln soll und nicht erst nach 2 std.
Hab das ganze umgeändert und die ersten Tests liefen erfolgreich.
Über die ID des Thermostats wir im Script die Zeit beim Wechsel der Modis auf 0 sek gesetzt.
--[[
%% properties
314 value
%% globals
--]]
----------------------------------------------------------
-- Um an die ID der Räume des Heizplanes zu gelangen --
-- im Browser http://HC2_IP/api/panels/heating eingeben --
----------------------------------------------------------
local schedule = {
id = 3, --ID des Raumes aus dem Heizplan
idleTemp = 4 --Temperatur die gesetzt werden soll
}
sensor = 314 --ID des Fenster/Tür Sensors, nicht vergessen die ID muss auch als Trigger gesetzt werden
thermo = 235 --ID des Thermostates
--Unterhalb der Linie den Code nicht bearbeiten
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(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 erfolgreich, status ' .. resp.status)
local panel = json.decode(resp.data)
if panel.properties.vacationTemperature ~= nil then
if fibaro:getValue(sensor, "value") == '1' then
panel.properties.vacationTemperature = subjectToChange.idleTemp
fibaro:call(thermo, "setTime", tonumber(os.time(t)) + 0);
print('Temperatur wird auf ' .. subjectToChange.idleTemp .. '°C geändert.')
else
panel.properties.vacationTemperature = 0
fibaro:call(thermo, "setTime", tonumber(os.time(t)) + 0);
print('Heizplan Temperatur wurde gesetzt.')
end
putMethod(url, panel, function(resp)
if resp.status == 200 then
print('Änderung war erfolgreich.')
end
end,
function(err)
print('error ' .. err)
end
)
else
print('Kein Wert gefunden')
end
else
print('Verbindung fehlgeschlagen, status ' .. resp.status)
end
end,
function(err)
print('error ' .. err)
end
)
end
updateSchedule(schedule)