Men motorvärmaren slår igång 35 minuter tidigare än jag ställt in, antar att detta är tiden man vill värmaren ska vara igång?
Code: Select all
local startTime=tonumber(departureTime-diff*120);
Här är hela min kod
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
-- Create the following Global Variables
-- heaterOverride
-- departureHour
-- departureMinute
-- diffStart
-- manualOverride
-- lastDepartureTime
-- heaterStatus
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 76; -- change to your relay ID
local tempID = 405; -- change to your Temperature ID
-- Byt raden ovan till nedanstående om du inte har egen tempgivare
-- local tempID = 3; -- Fibaro Yahoo Weather ID, change from "value" to "Temperature"
local turnOffDelay = 15 --time in minutes the heater will stay on after the set departure time.
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local WorkDay = (fibaro:getGlobal("WorkToday"))-- True eller False förväntas
local WorkTomorrow = (fibaro:getGlobal("WorkTomorrow"))-- True eller False förväntas
local heaterStatus = tonumber(fibaro:getGlobalValue("heaterStatus"));
local outTemp = tonumber(fibaro:getValue(405, "value"));
-- Byt raden ovan till nedanstående om du inte har egen tempgivare
-- local outTemp = tonumber(fibaro:getValue(tempID, "Temperature"));
local heaterState = tonumber(fibaro:getValue(relayId, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
diff = math.floor(60 + 100*outTemp/(outTemp - 35))
if outTemp > 13 then
diff = 0;
end
fibaro:setGlobal("diffStart", diff)
local theDate = os.date("*t");
local currentTime=tonumber(os.time());
local departureTime=tonumber(os.time({year=theDate.year, month=theDate.month, day=theDate.day, hour=startHour, min=startMinute}));
local startTime=tonumber(departureTime-diff*120);
fibaro:debug("heaterState: " .. heaterState);
fibaro:debug("currentTime: " .. currentTime);
fibaro:debug("departureTime: " .. departureTime);
fibaro:debug("manualOverride: " .. manualOverride);
fibaro:debug("heaterStatus: " .. heaterStatus);
fibaro:debug("WorkDay: " .. WorkDay);
fibaro:debug("WorkTomorrow: " .. WorkTomorrow);
fibaro:debug("-------------------------------------");
-- Don't start the timer if it's too warm outside
-- (or if its already started)
if (outTemp < 10) and (heaterState == 0) then
if (currentTime >= startTime) and (currentTime < departureTime) then
fibaro:call(relayId, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= lastDeparture) and (manualOverride == 0) then
fibaro:call(relayId, "turnOff");
end
if (manualOverride == 1) then
fibaro:call(relayId, "turnOn");
fibaro:sleep(120*1000); -- Default 120 minuter vid manuell styrning av värmaren
fibaro:call(relayId, "turnOff");
fibaro:setGlobal("heaterOverride", 0);
end
fibaro:sleep(60*1000);
end