Regulujte závlahu pomocou systému Fibaro HC2 a Netatmo Meteostanice s dažďovým senzorom, pomocou LUA scény.
Scéna bude spúšťať závlahu v určité časy cez deň na definované časové úseky. Napr. o 8:00 a o 20:00 na 10 minút.
Uvedené budú dve varianty spustenia závlahy:
Primárnou podmienkou týchto scén bude, či zrážky v mm presiahli určitú úroveň, napr. 3mm. Scéna bude bežať v nekonečnej slučke, porovnávať reálny čas s časom kedy by sa mala závlaha spustiť. Ak je hodnota akumulovaných zrážok za posledných 24 hodín z Netatmo meteostanice vyššia ako 3mm, zavlažovanie sa nepustí. Ak je hodnota zrážok menšia, zavlažovanie sa spustí. Limitnú hodnotu zrážok viete zmeniť podľa potreby v LUA scéne.
Ovládanie závlahy a solenoidových ventilov môže byť regulované napr. pomocou Fibaro Relay Switch 1x2,5kW (FGS-212) a Fibaro Relay Switch 2x1,5kW (FGS-222).
Prerekvizity - zariadenia a náležitosti, ktoré je nutné vlastniť/spraviť vopred aby ste mohli LUA scénu používať:
1. Fibaro HC2 – potrebné kvôli možnosti vytvorenia LUA scény
2. Netatmo Urban Station + Rain Gauge – monitorovanie množstva zrážok za posledných 24 hodín
3. Realizovaná integrácia Netatmo Urban Station + Rain Gauge do Fibaro HC2 s názvom Netatmo Weather Station VD-scene standalone 3.0 // kredit za prácu patrí užívateľovi Fibaro fóra SANKOTRONIC
-> viac nájdete na https://forum.fibaro.com/files/file/93-netatmo-weather-station-vd-scene-standalone/
-> resp. súbory na stiahnutie aj s anglickým manuálom
V skratke:
1. Potrebné naimportovať Virtuálne Zariadenia zodpovedajúce jednotlivým Netatmo modulom do Fibaro HC2, čiže:
Pozn.: Vo vyššie uvedenom manuáli je popis aj ako nastaviť týmto Virtuálnym zariadeniam pekné ikony.
2. Vytvoriť LUA scénu, kde nakopírujete obsah zo súbora z názvu SA Netatmo Weather Station scene v3.0.lua
3. Upraviť vytvorenú LUA scénu, potrebné vyplniť riadky v LUA scéne:
4. Po spustení scény by mali byť vytvorené Globálne premenné v systéme Fibaro. Pre istotu si v Paneloch -> Panel premenných skontrolujte, či sa tam nachádzajú premenné s názvami:
5. Teraz ak sa naimportované zariadenia v 1. bode neaktualizovali automaticky, refreshnite ich manuálne.
6. Následne aktualizácia údajov z Netatmo serverov do virtuálnych zariadení priebieha automaticky.
Potrebné riadky, kde je potrebné vykonať zmenu sú vyznačené zelenou farbou. Rozdiel medzi LUA SCÉNA 1. Varianta a LUA SCÉNA 2. Varianta je vo funkcii "sprinkling" a počte použitých FOR cyklov.
--[[
%% autostart
%% properties
%% events
%% globals
--]]
local sprinklers = {135, 137}; -- ID rele modulov ovladajucich postrekovace
local startTime = {"08:00", "14:00", "20:00"}; -- casy, kedy sa ma spustit zavlaha
local min = 10 -- minuty ako dlho ma trvat zavlazovanie
local sectionTime = min*60*1000; -- nemenit, prepocet minut
local rainfall_treshold = 3 -- limit kolko mm zrazok sa povazuje za dostacne vlhko, ak je nameranych menej tak sa zavlaha spusti
local startSource = fibaro:getSourceTrigger(); -- manualne spustenie sceny
-- zistenie aktualneho lokalneho casu
function localTime()
local currentDate = os.date("*t");
local localTime = currentDate.day .. "/" .. currentDate.month .. "/" .. currentDate.year .. " " .. string.format("%02d", currentDate.hour) .. ":".. string.format("%02d", currentDate.min) .. ":".. string.format("%02d", currentDate.sec) .. ": "
return localTime
end
-- kontrola mnozstva zrazok
function isRaining()
local wT = json.decode(fibaro:getGlobalValue("NetatmoWeather")) -- nacitanie udajov z netatmo
local stationNo = 1 -- nacitanie udajov z netatmo
if wT.netatmo[stationNo].rain.day > tonumber(rainfall_treshold) then
print(tonumber(wT.netatmo[stationNo].rain.day))
return true;
else
print(tonumber(wT.netatmo[stationNo].rain.day))
return false;
end
end
--funkcia zavlahy, vsetky postrekovace sa spustia naraz
function sprinkling()
fibaro:debug(localTime() .. "Spustam zavlahu.");
for i in pairs(sprinklers) do
fibaro:debug(localTime() .. "Zona " .. i .. " spustena. Zavlaha spustena na " ..sectionTime/60000 .. " minut.");
fibaro:call(sprinklers[i], "turnOn");
end
fibaro:sleep(sectionTime);
for i in pairs(sprinklers) do
fibaro:call(sprinklers[i], "turnOff");
fibaro:debug(localTime() .. "Zona " .. i .. " vypnuta.");
end
fibaro:debug(localTime() .. "Vypinam zavlahu.");
return true;
end
-- funkcia volajuca spustenie zavlahy
function mainLoop()
sprinkling();
end
---------- nekonecna slucka
if (startSource["type"] == "autostart") then
fibaro:debug(localTime() .. "Scena spustena automaticky");
while true do
currentDate = os.date("*t");
Time = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
for i in pairs(startTime) do
if (Time == startTime[i]) then
if(isRaining() == false) then
fibaro:debug(localTime() .. "Zavlaha spustena automaticky (ziadny dazd).");
mainLoop()
else
fibaro:debug("Zavlaha nespustena (prsi).")
end
end
end
fibaro:sleep(30*1000);
end
-- podmienka pre manualne spustenie sceny
elseif(startSource["type"] == "other") then
fibaro:debug(localTime() .. "Zavlaha spustena manualne.");
mainLoop()
end
Potrebné riadky, kde je potrebné vykonať zmenu sú vyznačené zelenou farbou. Rozdiel medzi LUA SCÉNA 1. Varianta a LUA SCÉNA 2. Varianta je vo funkcii "sprinkling" a počte použitých FOR cyklov.
--[[
%% autostart
%% properties
%% events
%% globals
--]]
local sprinklers = {135, 137}; -- ID rele modulov ovladajucich postrekovace
local startTime = {"08:00", "14:00", "20:00"}; -- casy, kedy sa ma spustit zavlaha
local min = 10 -- minuty ako dlho ma trvat zavlazovanie
local sectionTime = min*60*1000; -- nemenit, prepocet minut
local rainfall_treshold = 3 -- limit kolko mm zrazok sa povazuje za dostacne vlhko, ak je nameranych menej tak sa zavlaha spusti
local startSource = fibaro:getSourceTrigger(); -- manualne spustenie sceny
-- zistenie aktualneho lokalneho casu
function localTime()
local currentDate = os.date("*t");
local localTime = currentDate.day .. "/" .. currentDate.month .. "/" .. currentDate.year .. " " .. string.format("%02d", currentDate.hour) .. ":".. string.format("%02d", currentDate.min) .. ":".. string.format("%02d", currentDate.sec) .. ": "
return localTime
end
-- kontrola mnozstva zrazok
function isRaining()
local wT = json.decode(fibaro:getGlobalValue("NetatmoWeather")) -- nacitanie udajov z netatmo
local stationNo = 1 -- nacitanie udajov z netatmo
if wT.netatmo[stationNo].rain.day > tonumber(rainfall_treshold) then
print(tonumber(wT.netatmo[stationNo].rain.day))
return true;
else
print(tonumber(wT.netatmo[stationNo].rain.day))
return false;
end
end
--funkcia zavlahy, postrekovace sa spustaju postupne od prveho zadaneho ID po posledne v "sprinklers"
function sprinkling()
fibaro:debug(localTime() .. "Spustam zavlahu.");
for i in pairs(sprinklers) do
fibaro:debug(localTime() .. "Zona " .. i .. " spustena. Zavlaha spustena na " ..sectionTime/60000 .. " minut.");
fibaro:call(sprinklers[i], "turnOn");
fibaro:sleep(sectionTime);
fibaro:call(sprinklers[i], "turnOff");
fibaro:debug(localTime() .. "Zona " .. i .. " vypnuta.");
end
fibaro:debug(localTime() .. "Vypinam zavlahu.");
return true;
end
-- funkcia volajuca spustenie zavlahy
function mainLoop()
sprinkling();
end
---------- nekonecna slucka
if (startSource["type"] == "autostart") then
fibaro:debug(localTime() .. "Scena spustena automaticky");
while true do
currentDate = os.date("*t");
Time = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
for i in pairs(startTime) do
if (Time == startTime[i]) then
if(isRaining() == false) then
fibaro:debug(localTime() .. "Zavlaha spustena automaticky (ziadny dazd).");
mainLoop()
else
fibaro:debug("Zavlaha nespustena (prsi).")
end
end
end
fibaro:sleep(30*1000);
end
-- podmienka pre manualne spustenie sceny
elseif(startSource["type"] == "other") then
fibaro:debug(localTime() .. "Zavlaha spustena manualne.");
mainLoop()
end