Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - sceny => Wątek zaczęty przez: chez w Maj 12, 2017, 01:17:03 pm
-
Witam,
Czy ma ktoś pomysł jak rozgryźć scenę która by:
- podczas uzbrajania alarmu wysyłała pusha o uzbrojeniu alarmu
- sprawdzała zamknięte/otwarte drzwi/okna i wysyłała informacje, że któreś drzwi/okna są otwarte
- sprawdzała zapalone światła, w przypadku wykrycia zapalonego światła wysyłała pusha
Jest ktoś w stanie pomóc ?
-
Scenę można napisać w lua.
Obecnie można wysłać pusha z opcja np. TAK/NIE, czyli np. Czy wyłączyć światła? TAK / NIE
Większość informacji można znaleźć na forum, żeby samemu napisać coś takiego lub zlecić to komuś.
-
Kiedyś razem z marecki_0luk1 poświęciliśmy kilka wieczorów i kilka włosów - nie ukrywam nerw mojej żony był duży kiedy o 2 w nocy mrygały światła jak my testowaliśmy :)
popatrz w ten skrypcik może do czegoś Ci się przyda.
--[[
%% properties
276 value
%% globals
--]]
function sprawdz_stan(ip_IdUrzadzenia, lv_polaryzacja)
local lvb_StanUrzadzenia;
--fibaro:debug(fibaro:getName(ip_IdUrzadzenia) .. ' ' .. fibaro:getValue(ip_IdUrzadzenia, 'value'));
-- w zaleznosci czy naruszony jest 0 czy 1
if lv_polaryzacja == '+' then
if tonumber(fibaro:getValue(ip_IdUrzadzenia, "value")) == 0 then
lvb_StanUrzadzenia = false;
else
lvb_StanUrzadzenia = true;
end;
end;
if lv_polaryzacja == '-' then
if tonumber(fibaro:getValue(ip_IdUrzadzenia, "value")) == 1 then
lvb_StanUrzadzenia = false;
else
lvb_StanUrzadzenia = true;
end;
end;
return lvb_StanUrzadzenia;
end;
function powiadom(ip_IdUrzadzenia, ip_Powiadomienie)
local lvn_EmailID = 83;
local lvn_StanUrzadzenia;
if ip_Powiadomienie == '' then
lvs_message = 'Urzadzenie naruszone [ID: '.. tostring(ip_IdUrzadzenia) .. '][' .. tostring(fibaro:getName(ip_IdUrzadzenia)) .. ']';
fibaro:call(lvn_EmailID, "sendEmail", 'Fibaro - alarm', lvs_message);
else
fibaro:call(154, "pressButton", ip_Powiadomienie);
end;
return lvn_StanUrzadzenia;
end;
-- zmienne
local lvn_AlarmStan;
local lvn_AlarmID = 276;
local lva_CoUzbroic = {269, 158, 241, 231, 226};
local lva_CoWylaczyc = {190, 20, 22, 202, 186, 16, 18, 188, 204, 194, 196, 198, 200};
local lva_CoSprawdzic_plus = {};
local lva_CoSprawdzic_minus = {};
fibaro:debug('--- ALARM SCENE - uzbrajanie ---');
lvn_AlarmStan = fibaro:getValue(lvn_AlarmID, "value");
-- 1 rozbrojony
-- 0 uzbrojony
fibaro:debug('AlarmStan: ' ..tostring(lvn_AlarmStan));
if tonumber(lvn_AlarmStan) == 0 then
-- sprawdzanie
for i = 1, # lva_CoSprawdzic_plus do
if sprawdz_stan(lva_CoSprawdzic_plus[i], '+') then
powiadomID = tonumber(lva_CoSprawdzic_plus[i]);
powiadom(powiadomID, 10);
fibaro:setGlobal('AlarmByMM', 'Rozbrojony');
fibaro:debug('--- Urzadzenie naruszone - zatrzymanie ---');
fibaro:abort();
end;
end;
fibaro:debug('---Uzbrajanie alarmu ---');
fibaro:setGlobal('AlarmByMM', 'Uzbrajany');
powiadom(powiadomID, 7);
fibaro:sleep(2*1000);
powiadom(powiadomID, 8);
fibaro:setGlobal('AlarmByMM', 'Uzbrojony');
fibaro:debug('---Uzbrojono alarm ---');
fibaro:sleep(30*1000);
for j = 1, # lva_CoUzbroic do
fibaro:call(lva_CoUzbroic[j] , 'setArmed', '1');
fibaro:debug('Uzbrajanie czujki nr ' .. lva_CoUzbroic[j]);
end;
for z = 1, # lva_CoWylaczyc do
fibaro:debug('Wylaczam: ' .. tostring(lva_CoWylaczyc[z]));
fibaro:call(lva_CoWylaczyc[z], 'turnOff');
end;
elseif tonumber(lvn_AlarmStan) == 1 then
fibaro:debug('---Rozbrajanie alarmu ---');
for j = 1, # lva_CoUzbroic do
fibaro:call(lva_CoUzbroic[j], 'setArmed', '0');
end;
powiadom(powiadomID, 9);
fibaro:setGlobal('AlarmByMM', 'Rozbrojony');
end;
i sprawdzanie drzwi
--[[
%% properties
158 value
%% globals
--]]
-- zmienne
local lvn_zammek_gora_id = 275;
local lvn_zammek_dol_id = 274;
local lvn_drzwi_id = 158;
local lvn_netv_id = 136;
local lvb_zammek_gora = false;
local lvb_zammek_dol = false;
local lvs_trigger = fibaro:getSourceTrigger();
local lvt_TimeNow = os.date('%H:%M', os.time());
-- pokaz czas
fibaro:debug("---- Drzwi sprawdzenie ----");
fibaro:debug(tostring(lvt_TimeNow));
fibaro:debug("---- Start ----");
-- sprawdzamy stan zamka;
fibaro:debug('Sprawdzamy stan zamków i drzwi');
fibaro:debug('drzwi: ' .. fibaro:getValue(lvn_drzwi_id, "value"));
fibaro:debug('Zamek gora: ' .. fibaro:getValue(lvn_zammek_gora_id, "value"));
fibaro:debug('Zamek dol: ' .. fibaro:getValue(lvn_zammek_dol_id, "value"));
fibaro:debug(tostring(lvs_trigger['type']));
if lvs_trigger['type'] == "other" then
fibaro:debug('Automatyczne sprawdzenie zamkow');
fibaro:setGlobal("lvt_LastDoorCheck",lvt_TimeNow);
elseif lvs_trigger['type'] == "property" then
fibaro:debug("Otwarcie reczne drzwi") ;
fibaro:sleep(1000 * 60);
fibaro:setGlobal("lvt_LastDoorCheck",lvt_TimeNow);
end;
if tonumber(fibaro:getValue(lvn_zammek_gora_id, "value")) == 0 then
lvb_zammek_gora = false;
else
lvb_zammek_gora = true;
end;
if tonumber(fibaro:getValue(lvn_zammek_dol_id, "value")) == 0 then
lvb_zammek_dol = false;
else
lvb_zammek_dol = true;
end;
fibaro:debug(tostring(lvb_zammek_gora) .. tostring(lvb_zammek_dol));
if lvb_zammek_gora and lvb_zammek_dol then
-- obydwa zamki niezamkniete
fibaro:debug('Zamki nie ok!');
fibaro:call(lvn_netv_id, "pressButton", "13");
fibaro:call(154, "pressButton", "6");
end;
--[[
else
fibaro:debug('Zamki ok!');
fibaro:call(lvn_netv_id, "pressButton", "18");
end;
]]--
fibaro:debug('---- END ----');
Pamiętaj o zmiennej "AlarmByMM" z 4 wartościami:
1 rozbrojony
2 naruszony
3 rozbrajany
4 uzbrojony
Oczywiście 101 % sukcesu leży po stronie Marka :)