- 5e_217.png (20.79 KiB) Viewed 46173 times
Så här löste jag bastu kontrollen.
efter en massa information och hjälp på forum har jag fått det att fungera som jag vill.
jag skapade en virtuell device och en scen till bastu kontrollen
Du måste ha timer på och ställa in vilken tid du vill bada bastu och vilken temp du vill ha i bastu, den reglerar bastu värmaren efter tempen det är även en hysteres på - 5 grader mellan till och frånslag på bastu värmaren och timern går i 3 timmar
därefter slår den av.
Jag har använt mig av ett fibaro relä 2*1,5kw där jag använder ena utgången till att styra ett inbyggnadsrelä i elcentralen till bastuvärmaren och en universalsensor med tempgivare att kontrollera tempen i bastun.
Virtuell enhet.
--Timer På
local virtualDeviceId = 87;
fibaro:setGlobal("Timer", 1);
fibaro:sleep(300);
--Timer Av
local virtualDeviceId = 87;
fibaro:setGlobal("Timer", 0);
fibaro:sleep(300);
--H+
local hour=tonumber(fibaro:getGlobalValue("StartHour"))+1;
local mins=tonumber(fibaro:getGlobalValue("StartMinute"));
if (hour>23) then hour=0 end
fibaro:setGlobal("StartHour",hour);
fibaro:call(87,"setProperty",'ui.Label2.value', string.format('%02d',fibaro:getGlobalValue("StartHour")) .. ':' .. string.format('%02d',fibaro:getGlobalValue("StartMinute")));
--H-
local hour=tonumber(fibaro:getGlobalValue("StartHour"))-1;
local mins=tonumber(fibaro:getGlobalValue("StartMinute"));
if (hour<0) then hour=23 end
fibaro:setGlobal("StartHour",hour);
fibaro:call(87,"setProperty",'ui.Label2.value', string.format('%02d',fibaro:getGlobalValue("StartHour")) .. ':' .. string.format('%02d',fibaro:getGlobalValue("StartMinute")));
--m+
local hour=tonumber(fibaro:getGlobalValue("StartHour"));
local mins=tonumber(fibaro:getGlobalValue("StartMinute"))+1;
if (mins>59) then mins=0 end
fibaro:setGlobal("StartMinute",mins);
fibaro:call(87,"setProperty",'ui.Label2.value', string.format('%02d',fibaro:getGlobalValue("StartHour")) .. ':' .. string.format('%02d',fibaro:getGlobalValue("StartMinute")));
--m-
local hour=tonumber(fibaro:getGlobalValue("StartHour"));
local mins=tonumber(fibaro:getGlobalValue("StartMinute"))-1;
if (mins<0) then mins=59 end
fibaro:setGlobal("StartMinute",mins);
fibaro:call(87,"setProperty",'ui.Label2.value', string.format('%02d',fibaro:getGlobalValue("StartHour")) .. ':' .. string.format('%02d',fibaro:getGlobalValue("StartMinute")));
--slider
local SetTemp=fibaro:getValue(87, "ui.Slider1.value");
fibaro:setGlobal("BadTemp",SetTemp);
--main loop
local virtualDeviceId = 87;
Hour = fibaro:getGlobalValue("StartHour");
Mins = fibaro:getGlobalValue("StartMinute");
local state = "På";
if (tonumber(fibaro:getValue(42 , "value")) == 0) then
state = "Av"
end
local status = fibaro:getGlobal("Timer") -- get status from globalvariable Timer
if
tonumber(status) == 0
then
statuslog = "TimerAv"
else
statuslog = "TimerPå"
end
fibaro:log("" ..statuslog);
fibaro:call(87, "setProperty", "ui.Label1.value", ""..statuslog);
fibaro:call(87 , "setProperty", "ui.Label2.value", string.format("%02d:%02d", Hour, Mins));
fibaro:call(87 , "setProperty", "ui.Label3.value", fibaro:getValue(16, "value") .. " C");
fibaro:call(87 , "setProperty", "ui.Label7.value", state);
fibaro:sleep(60*1000);
Scenen.
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes()>1) then fibaro:abort()end;
while true do
local Timer = tonumber(fibaro:getGlobalValue("Timer"));
local BastuUgn = tonumber(fibaro:getValue(42, "value"));
local StartHour = tonumber(fibaro:getGlobalValue("StartHour"));
local StartMinute = tonumber(fibaro:getGlobalValue("StartMinute"));
local BastuTemp = tonumber(fibaro:getValue(16, "value"));
local BadTemp = tonumber(fibaro:getGlobalValue("BadTemp"));
local Hysteres = -5;
local VarmeTid = 180;
local Datum = os.date("*t");
local NuTid = tonumber(os.time());
local BadTid = tonumber(os.time({year=Datum.year, month=Datum.month, day=Datum.day, hour=StartHour, min=StartMinute}));
local StoppTid = tonumber(BadTid + VarmeTid*60);
if(Timer ==1) and (BastuUgn == 0)then
if (NuTid >= BadTid)and (NuTid < StoppTid) and (BadTemp >= BastuTemp - Hysteres ) then fibaro:call(42,"turnOn");
end
end
fibaro:debug("NuTid: " ..NuTid);
fibaro:debug("Timer: " ..Timer);
fibaro:debug("BastuUgn: " .. BastuUgn);
fibaro:debug("BadTid: " ..BadTid);
fibaro:debug("StoppTid: " ..StoppTid);
fibaro:debug("Hysteres: " ..Hysteres);
fibaro:debug("BastuTemp: " ..BastuTemp);
fibaro:debug("BadTemp: " ..BadTemp);
fibaro:debug("-------------------------------------");
if (BastuUgn == 1) and (BastuTemp >= BadTemp )then fibaro:call(42, "turnOff");
else if (NuTid >= StoppTid) then
fibaro:setGlobal("Timer", 0);
fibaro:call(42, "turnOff");
end
end
fibaro:sleep(60*1000);
end