Motorvärmarstyrning
Hej
Jag skulle vilja ha hjälp med att göra en motorvärmarstyrning.
Så här hade jag tänkt mig att den skall fungera.
jag vill ha en virtuell enhet som man ska ställa in avresetiden på och att den starta motorvärmaren 3tim före avresa eller att man kan ställa in valfri tid för detta, men även att den går att slå på manuellt typ något sådant här.
Går det att använda virtuella enheter till lokalaenheter(fgs211) i hc2?
Jag skulle vilja ha hjälp med att göra en motorvärmarstyrning.
Så här hade jag tänkt mig att den skall fungera.
jag vill ha en virtuell enhet som man ska ställa in avresetiden på och att den starta motorvärmaren 3tim före avresa eller att man kan ställa in valfri tid för detta, men även att den går att slå på manuellt typ något sådant här.
Går det att använda virtuella enheter till lokalaenheter(fgs211) i hc2?
Tjena,
Såhär ser min lösning ut.
Label "Avresetid" heter lblTime.
Label "Utetemperatur" heter lblTemp.
Label "Status" heter lblState.
Har tre globala variabler - departureHour, departureMinute och heaterOverride.
Knappen H [+]:
Knappen H [-]:
Knappen m [+]:
Knappen m [-]:
Knappen "På":
Knappen "Av":
I main loop uppdaterar jag lite GUI:
Sen är det en scen som styr när värmaren går på. Här har jag valt att låta utetemperaturen styra hur lång tid innan den ska gå igång. Det finns lite rekommendationer kring detta, bl.a. hos Gröna Bilister.
Mycket nöje!
/CQ1
Såhär ser min lösning ut.
Label "Avresetid" heter lblTime.
Label "Utetemperatur" heter lblTemp.
Label "Status" heter lblState.
Har tre globala variabler - departureHour, departureMinute och heaterOverride.
Knappen H [+]:
Code: Select all
local deviceId = 229;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) + 1;
if (newHour == 24) then newHour = 0 end;
if newHour == -1 then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(deviceId, "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
Code: Select all
local deviceId = 229;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) - 1;
if (newHour == 24) then newHour = 0 end;
if (newHour == -1) then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(deviceId , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
Code: Select all
local deviceId = 229;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) + 5;
if newMinute == 60 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(deviceId , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
Code: Select all
local deviceId = 229;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) - 5;
if newMinute == 60 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(deviceId , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
Code: Select all
local virtualDeviceId = 229;
local relayId = 230;
fibaro:call(relayId , "turnOn");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(relayId, "value")) == 0) then
state = "Av"
end
fibaro:call(virtualDeviceId, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 1);
Code: Select all
local virtualDeviceId = 229;
local relayId = 230;
fibaro:call(relayId , "turnOff");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(relayId, "value")) == 0) then
state = "Av"
end
fibaro:call(virtualDeviceId, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 0);
Code: Select all
local relayId = 230;
local virtualDeviceId = 229;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
local state = "På";
if (tonumber(fibaro:getValue(relayId , "value")) == 0) then
state = "Av"
end
fibaro:call(virtualDeviceId , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, oldMinute));
fibaro:call(virtualDeviceId , "setProperty", "ui.lblTemp.value", fibaro:getValue(3, "Temperature") .. " C");
fibaro:call(virtualDeviceId , "setProperty", "ui.lblState.value", state);
fibaro:sleep(60*1000);
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 230;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(3, "Temperature"));
local heaterState = tonumber(fibaro:getValue(relayId, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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 >= departureTime) and (manualOverride == 0) then
fibaro:call(relayId, "turnOff");
end
fibaro:sleep(60*1000);
end
/CQ1
- Attachments
-
- Capture.PNG (13.49 KiB) Viewed 40877 times
Det är labels som uppdateras i virtuella enhetens main loop. Dessa rader, mer specifikt:nohed wrote:Hur får du in graderna och statusen i rutorna där man ser statusen
Code: Select all
fibaro:call(virtualDeviceId , "setProperty", "ui.lblTemp.value", fibaro:getValue(3, "Temperature") .. " C");
fibaro:call(virtualDeviceId , "setProperty", "ui.lblState.value", state);
Hej!
Tack för hjälpen det ser ju riktigt bra ut men
jag som är nybörjare har ett litet problem som jag behöver hjälp med
jag får inte avresetiden,utetemperaturen och status att visa något,
dom verkar fungera jag får ändringar i globala variablerna och uttaget går till och från när jag använder på och av knappen.
Hälsningar Krille
Tack för hjälpen det ser ju riktigt bra ut men
jag som är nybörjare har ett litet problem som jag behöver hjälp med
jag får inte avresetiden,utetemperaturen och status att visa något,
dom verkar fungera jag får ändringar i globala variablerna och uttaget går till och från när jag använder på och av knappen.
Hälsningar Krille
Kul! Du kan ju leka lite med den sista fibaro:sleep och sätta ett lägre värde, men var lite försiktig med att gå för lågt då det kan göra boxen nedlastad.
Har du förresten ändrat till rätt id i + och -knapparna också? Annars kan jag förstå om det tar tid innan du ser att din inställda tid är rätt.
Har du förresten ändrat till rätt id i + och -knapparna också? Annars kan jag förstå om det tar tid innan du ser att din inställda tid är rätt.
Hej!
Nu har jag fått knapparna att fungera och värmaren startar men vill inte slå av efter avresetiden,
jag antar att det har något med scene att göra?
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 79;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(35, "value"));
local heaterState = tonumber(fibaro:getValue(49, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(49, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(49, "turnOff");
end
fibaro:sleep(60*1000);
end
Hälsningar Krille
Nu har jag fått knapparna att fungera och värmaren startar men vill inte slå av efter avresetiden,
jag antar att det har något med scene att göra?
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 79;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(35, "value"));
local heaterState = tonumber(fibaro:getValue(49, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(49, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(49, "turnOff");
end
fibaro:sleep(60*1000);
end
Hälsningar Krille
Skumt. Den ska stänga av om
1. Den är på
2. Klockan är minst lika med avresetiden och
3. Man har inte slagit på den manuellt med På-knappen
Du kan ju kolla i variabelpanelen så att inte manualOverride är 1, om så är fallet får du trycka på Av-knappen så bör det funka.
Jag hade tänkt använda lite olika ikoner för att visa status men har inte fått tummen ur, riktigt.
1. Den är på
2. Klockan är minst lika med avresetiden och
3. Man har inte slagit på den manuellt med På-knappen
Du kan ju kolla i variabelpanelen så att inte manualOverride är 1, om så är fallet får du trycka på Av-knappen så bör det funka.
Jag hade tänkt använda lite olika ikoner för att visa status men har inte fått tummen ur, riktigt.
Hej
jag hittar ingen lösning på problemet med att motorvärmaren ska slå av efter avresetid,
tänkte höra om det är någon som har några ideer vad det kan vara.
Hälsningar Krille.
H[+]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) + 1;
if (newHour == 24) then newHour = 0 end;
if newHour == -1 then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(78, "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
H[-]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) - 1;
if (newHour == 24) then newHour = 0 end;
if (newHour == -1) then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
m[+]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) + 5;
if newMinute == 60 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
m[-]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) - 5;
if newMinute == 59 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
På
local virtualDeviceId = 78;
local relayId = 79;
fibaro:call(49 , "turnOn");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(49, "value")) == 0) then
state = "Av"
end
fibaro:call(78, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 1);
Av
local virtualDeviceId = 78;
local relayId = 79;
fibaro:call(49 , "turnOff");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(49, "value")) == 0) then
state = "Av"
end
fibaro:call(78, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 0);
Main loop
local relayId = 79;
local virtualDeviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
local state = "På";
if (tonumber(fibaro:getValue(49 , "value")) == 0) then
state = "Av"
end
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, oldMinute));
fibaro:call(78 , "setProperty", "ui.lblTemp.value", fibaro:getValue(3, "Temperature") .. " C");
fibaro:call(78 , "setProperty", "ui.lblState.value", state);
fibaro:sleep(60*1000);
Scen
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 79;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(3, "Temperature"));
local heaterState = tonumber(fibaro:getValue(49, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(49, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(49, "turnOff");
end
fibaro:sleep(60*1000);
end
Globala variabler
jag hittar ingen lösning på problemet med att motorvärmaren ska slå av efter avresetid,
tänkte höra om det är någon som har några ideer vad det kan vara.
Hälsningar Krille.
H[+]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) + 1;
if (newHour == 24) then newHour = 0 end;
if newHour == -1 then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(78, "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
H[-]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newHour = tonumber(oldHour) - 1;
if (newHour == 24) then newHour = 0 end;
if (newHour == -1) then newHour = 23 end;
fibaro:setGlobal("departureHour", newHour);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", newHour, oldMinute));
m[+]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) + 5;
if newMinute == 60 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
m[-]
local deviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
newMinute = tonumber(oldMinute) - 5;
if newMinute == 59 then newMinute = 0 end;
if newMinute == -5 then newMinute = 55 end;
fibaro:setGlobal("departureMinute", newMinute);
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, newMinute));
På
local virtualDeviceId = 78;
local relayId = 79;
fibaro:call(49 , "turnOn");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(49, "value")) == 0) then
state = "Av"
end
fibaro:call(78, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 1);
Av
local virtualDeviceId = 78;
local relayId = 79;
fibaro:call(49 , "turnOff");
fibaro:sleep(300);
local state = "På";
if (tonumber(fibaro:getValue(49, "value")) == 0) then
state = "Av"
end
fibaro:call(78, "setProperty", "ui.lblState.value", state);
fibaro:setGlobal("heaterOverride", 0);
Main loop
local relayId = 79;
local virtualDeviceId = 78;
oldHour = fibaro:getGlobalValue("departureHour");
oldMinute = fibaro:getGlobalValue("departureMinute");
local state = "På";
if (tonumber(fibaro:getValue(49 , "value")) == 0) then
state = "Av"
end
fibaro:call(78 , "setProperty", "ui.lblTime.value", string.format("%02d:%02d", oldHour, oldMinute));
fibaro:call(78 , "setProperty", "ui.lblTemp.value", fibaro:getValue(3, "Temperature") .. " C");
fibaro:call(78 , "setProperty", "ui.lblState.value", state);
fibaro:sleep(60*1000);
Scen
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 79;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(3, "Temperature"));
local heaterState = tonumber(fibaro:getValue(49, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(49, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(49, "turnOff");
end
fibaro:sleep(60*1000);
end
Globala variabler
- Attachments
-
- global variabel.png (268.66 KiB) Viewed 40613 times
Det är väldigt konstigt. För mig funkar det fint. Testa att lägga in lite spårutskrifter
i scenen, innan raden
Code: Select all
fibaro:debug("heaterState: " .. heaterState);
fibaro:debug("currentTime: " .. currentTime);
fibaro:debug("departureTime: " .. departureTime);
fibaro:debug("manualOverride: " .. manualOverride);
fibaro:debug("-------------------------------------");
Code: Select all
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
Hej!
Det var jag som var den felande länken,använde en dimmermodul att labba med och då måste
man ju sätta heaterstate == 99 för att veta att den är igång.
Nu funkar det perfekt.
Är det bara att sätta in en rad till om jag vill att motorvärmaren skall starta 3tim före
avresetid bor ganska långt norrut och då är 2tim för kort tid vid -20
if (outTemp < -20) then
-- Start 3 hours before departure time
diff = 180;
Tack för hjälpen det var en väldig lärorik tråd för mig.
Hälsningar Krille.
Det var jag som var den felande länken,använde en dimmermodul att labba med och då måste
man ju sätta heaterstate == 99 för att veta att den är igång.
Nu funkar det perfekt.
Är det bara att sätta in en rad till om jag vill att motorvärmaren skall starta 3tim före
avresetid bor ganska långt norrut och då är 2tim för kort tid vid -20
if (outTemp < -20) then
-- Start 3 hours before departure time
diff = 180;
Tack för hjälpen det var en väldig lärorik tråd för mig.
Hälsningar Krille.
Bra att det löste sig!
Precis, vill du lägga till ytterligare temperaturintervaller så är det bara lägga till fler if- eller elseif-satser:
Lycka till med hackandet!
/CQ1
Precis, vill du lägga till ytterligare temperaturintervaller så är det bara lägga till fler if- eller elseif-satser:
Code: Select all
if (outTemp < -20) then
-- Start 3 hours before departure time
diff = 180;
elseif (outTemp < -10) then
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
/CQ1
Hej får ett fel meddelande när jag kör scenen
[ERROR] 19:48:28 line:22 attempt to compare nil with number
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 61;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(60, "Temperature"));
local heaterState = tonumber(fibaro:getValue(61, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then Detta är line 22
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(61, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(61, "turnOff");
end
fibaro:sleep(60*1000);
end
[ERROR] 19:48:28 line:22 attempt to compare nil with number
--[[
%% autostart
%% properties
%% globals
--]]
if (fibaro:countScenes() > 1) then fibaro:abort() end
while true do
local relayId = 61;
local manualOverride = tonumber(fibaro:getGlobalValue("heaterOverride"));
local outTemp = tonumber(fibaro:getValue(60, "Temperature"));
local heaterState = tonumber(fibaro:getValue(61, "value"));
local startHour = tonumber(fibaro:getGlobalValue("departureHour"));
local startMinute = tonumber(fibaro:getGlobalValue("departureMinute"));
local diff = 0;
if (outTemp < -10) then Detta är line 22
-- Start 2 hours before departure time
diff = 120;
elseif (outTemp < 0) then
-- Start 1.5 hours before departure time
diff = 90;
elseif (outTemp < 10) then
-- Start 1 hour before departure time
diff = 60;
end
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*60);
-- 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(61, "turnOn");
end
end
if (heaterState == 1) and (currentTime >= departureTime) and (manualOverride == 0) then
fibaro:call(61, "turnOff");
end
fibaro:sleep(60*1000);
end
Fibaro fantastic
Aktuell HC2 Version: 4.520
Aktuell HC2 Version: 4.520
Tjena,
Ändra
till
Den "enheten" i HC2 som håller väderegenskaperna har nummer 3.
/CQ1
Ändra
Code: Select all
local outTemp = tonumber(fibaro:getValue(60, "Temperature"));
Code: Select all
local outTemp = tonumber(fibaro:getValue(3, "Temperature"));
/CQ1
Perfekt bilen varm
en fråga kan man inte använda en lokal tempsensor
här i morse så visade motorvärmaren +4°C men min lokala så var det -2°C
så vädret från Yahoo stämmer inte så exakt här fast jag lagt in gps korrdinaterna
en fråga kan man inte använda en lokal tempsensor
här i morse så visade motorvärmaren +4°C men min lokala så var det -2°C
så vädret från Yahoo stämmer inte så exakt här fast jag lagt in gps korrdinaterna
Fibaro fantastic
Aktuell HC2 Version: 4.520
Aktuell HC2 Version: 4.520
Visst kan du det. Då byter du bara ut
mot
Kanske en dörr/fönstersensor med Dallas tempsensor för utomhusbruk? Gäller bara att hitta ett vettigt sätt att dra kabeln från inomhus till utomhus.
Code: Select all
local outTemp = tonumber(fibaro:getValue(3, "Temperature"));
Code: Select all
local outTemp = tonumber(fibaro:getValue(TEMP_SENSOR_ID, "value"));