Mam instalację wodną z dodatkowym obiegiem cyrkulacyjnym, dzięki czemu woda pod prysznicem (w kranie, wannie etc) jest zawsze ciepła od razu. Obieg wspomagany jest przez pompę, tłumaczyć nie będę bo to nie to forum.
Po co pompa ma działać cały czas, skoro wystarczy uruchomić ją powiedzmy na minutę i pozwolić na 15 minut przerwy w jej pracy? Korzyść z tego taka, że pompa pracuje 15 razy krócej, a efekt i tak jest osiągnięty. Można zaoszczędzić jeszcze kilka złotych nie uruchamiając pompy w nocy, kiedy śpimy, albo kiedy nikogo nie ma w domu.
U mnie pompa CWU rusza kiedy naruszone są drzwi którejś sypialni albo łazienki, albo jak wykryje ruch na schodach. Oczywiście pod warunkiem że określone w skrypcie granice czasowe jej na to pozwalają.
Oto skrypt. Podziękowania dla Traktor69.
--[[
%% properties
10 value
11 value
66 value
70 value
120 value
%% globals
--]]
-- Sprawdzenie czy nie jest uruchomiona więcej jak jedna scena -----------------------------------
if (fibaro:countScenes() > 1) then
fibaro:debug("Uruchomiono druga instancje sceny - zatrzymanie")
fibaro:abort();
end
-- Initial Values -----------------------------------------------------------
-- Nie zapomnij dodać ID czujek i sensorów drzwi w deklaracji na początku skryptu!!!
local switch = 84 -- Podaj ID switcha odpowiedzialnego za uruchamianie pompy CWU
local startTime1 = '06:00' -- czas startu pierwszego zakresu
local stopTime1 = '10:30' -- koniec czasu pierwszego zakresu
local startTime2 = '14:00' -- czas startu drugiego zakresu
local stopTime2 = '23:59' -- koneic czasu drugiego zakresu
local startTimeWe = '07:00' -- czas startu w weekend
local stopTimeWe = '23:59' -- koniec czasu w weekend
CWU_Time = 2 -- Czas pracy CWU w minutach
CWU_Delay = 15 -- Przerwa pomiędzy kolejnymi możliwymi cyklami pompy, w minutach
-- Funkcje -----------------------------------------------------------------
-- funkcja zamienia czas w formacie tekstowym "HH:MM" lub os.date("*t")
-- na liczbę minut od północy
function toMinutes(czasHHMM)
local a
if type(czasHHMM) == "string" then
a = tonumber(string.sub(czasHHMM, 1, 2)) * 60 + tonumber(string.sub(czasHHMM, 4, 5))
else
a = tonumber(czasHHMM.hour) * 60 + tonumber(czasHHMM.min)
end
return a
end
-- funkcja sprawdza czy aktualny czas jest w określonej porze
function isTime(startHHMM, stopHHMM)
nowMin=toMinutes(os.date("*t"))
startMin=toMinutes(startHHMM)
stopMin=toMinutes(stopHHMM)
if (stopMin >= startMin) then
if (nowMin >= startMin) and (nowMin <= stopMin) then
isTme = true
else
isTme = false
end
elseif (stopMin <= startMin) then
if (nowMin <= startMin) and (nowMin >= stopMin) then
isTme = false
else
isTme = true
end
end
return isTme
end
---------------------------------------------------------------------------------------------------
-- Pokaż który sensor uruchomił scenę
local trigger = fibaro:getSourceTrigger();
fibaro:debug("Sensor " .. trigger['deviceID'] .. " naruszony.")
-- isActiveTime - sprawdzenie czy to odpowiedni czas na uruchomienie pompy ---
local wD=os.date('*t').wday
isActiveTime = (wD==2 or wD==3 or wD==4 or wD==5 or wD==6) and (isTime(startTime1,stopTime1) or isTime(startTime2,stopTime2)) or (wD==7 or wD==1) and isTime(startTimeWe,stopTimeWe)
fibaro:debug("isActiveTime = "..tostring(isActiveTime))
-- Sterowanie CWU ------------------------------------------------------------------
if isActiveTime then
fibaro:call(switch, "turnOn")
fibaro:debug("CWU Start")
fibaro:setGlobal("CWU_lastrun", toMinutes(os.date("*t")))
fibaro:sleep(CWU_Time*1000*60)
fibaro:call(switch, "turnOff")
fibaro:debug("CWU Stop")
fibaro:sleep(CWU_Delay*1000*60)
else
fibaro:debug("CWU nie uruchomione - poza zakresem czasowym")
end
-----------------------------------------------------------------------------
fibaro:debug("------------------------------------------------")