Witam
Dzięki za cenne uwagi!
Nie wiem czemu wyrzuciło mnie z pierwotnego tematu forum.
Wykorzystuje już scenę jak poniżej i działa naprawdę ok
Nie znam się na lua na tyle aby dodać warunek temperatury.
Ten skrypt jest dosyć obszerny.
Mam ogrzewanie gazowe i piec z zasobnikiem nie widzę sensu aby pompa była włączona cały czas.( poza weekendem )
większą część dnia jestem poza domem i scena się sprawdza
chciałbym tylko jeszcze uzależnić uruchomienie pompy CWU od temperatury
chyba że przesadzam ...
--[[
%% properties
648 value
839 value
290 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 = 648 -- Podaj ID switcha odpowiedzialnego za uruchamianie pompy CWU
local startTime1 = '06:40' -- czas startu pierwszego zakresu
local stopTime1 = '08:30' -- koniec czasu pierwszego zakresu
local startTime2 = '14:00' -- czas startu drugiego zakresu
local stopTime2 = '20:30' -- koneic czasu drugiego zakresu
local startTimeWe = '08:00' -- czas startu w weekend
local stopTimeWe = '21:00' -- koniec czasu w weekend
CWU_Time = 10-- Czas pracy CWU w minutach
CWU_Delay = 20 -- 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ę
-- 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("-----------------------------------------------