Alarm Fibaro + Sonos + NFC + Synology

  • 2 Odpowiedzi
  • 3744 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Alarm Fibaro + Sonos + NFC + Synology
« dnia: Marzec 04, 2016, 04:58:46 pm »
Witam,

Prosiłbym bardziej doświadczonych kolegów o pomoc w sprawdzeniu sceny, próbuję swoich sił w Lua.

Scena oparta jest o czujniki Fibaro, komunikaty głosowe poprzez pliki mp3 puszczone są z Synology, do tego uzbrajam i rozbrajam alarm poprzez TAGA NFC.

Problem pojawia się czasem, że ucina mi komunikat głosowy, czasem go nawet nie puści i podwójnie wysyłają mi się pushe?

--[[
%% properties
53 armed
93 armed
111 armed
%% events
%% globals
--]]


fibaro:debug('Scena Odpalona')
local typOdpalenia = fibaro:getSourceTriggerType();
fibaro:debug('Typ odpalenia: '..typOdpalenia)

local Aktywator = fibaro:getGlobalValue("Osoba");
fibaro:debug('Osoba: ' .. Aktywator)

if typOdpalenia == "other" then
 
local Alarmwartosc = fibaro:getGlobalValue("ALARM")
fibaro:debug('Alarm: ' .. Alarmwartosc)

local czujki = {53, 88, 93, 111};
local lvn_count = 0;
local lvn_closed = 0;

if Alarmwartosc == ("ROZBROJONY") then
  fibaro:debug('Uzbrajam');
  fibaro:setGlobal('Sonosgrako','//Grakostation/Music/uruchamiam_zamkniecie_firmy.mp3');
  fibaro:call(179, "pressButton", "1");
  fibaro:debug('uruchamiam zamknięcie')
   
for k,idczujki in pairs(czujki) do
  fibaro:call(idczujki, "setArmed", "1");
  fibaro:debug('czujki uzbrajają się')
end;
   
  fibaro:sleep(1000);
  fibaro:call(28, "setColor", "0","255","0","0");
  fibaro:call(39, "setColor", "0","255","0","0");
  fibaro:call(5, "setColor", "0","255","0","0");
  fibaro:sleep(10000)
  fibaro:call(14, "turnOff");
   fibaro:call(16, "turnOff");
   fibaro:call(24, "turnOff");
   fibaro:call(26, "turnOff");
   fibaro:call(35, "turnOff");
   fibaro:call(37, "turnOff");
   fibaro:call(49, "turnOff");
   fibaro:call(51, "turnOff");
   fibaro:call(69, "turnOff");
   fibaro:call(71, "turnOff");
   fibaro:call(73, "turnOff");
    fibaro:call(58, "turnOff");
    fibaro:sleep(1000)
    fibaro:call(28, "setColor", "255","38","0","0");
   fibaro:call(39, "setColor", "255","38","0","0");
   fibaro:call(5, "setColor", "255","38","0","0");
    fibaro:sleep(8000)
    fibaro:call(28, "startProgram", "5");
   fibaro:call(39, "startProgram", "5");
   fibaro:call(5, "startProgram", "5");
    fibaro:sleep(5000)
    fibaro:call(28, "setColor", "255","0","0","0");
   fibaro:call(39, "setColor", "255","0","0","0");
   fibaro:call(5, "setColor", "255","0","0","0");
    fibaro:sleep(3000)
    fibaro:call(5, "turnOff");
    fibaro:call(14, "turnOff");
   fibaro:call(16, "turnOff");
   fibaro:call(24, "turnOff");
   fibaro:call(26, "turnOff");
    fibaro:call(28, "turnOff");
   fibaro:call(35, "turnOff");
    fibaro:call(39, "turnOff");
   fibaro:call(49, "turnOff");
   fibaro:call(51, "turnOff");
   fibaro:call(69, "turnOff");
   fibaro:call(71, "turnOff");
   fibaro:call(73, "turnOff");
     
  fibaro:setGlobal("Osoba", "Nikt");     
  fibaro:debug('Zmiana osoby na Nikt')
  fibaro:call(178, "pressButton", "9");
  fibaro:debug('Sonos wyłączony')
   
  elseif Alarmwartosc == ("UZBROJONY") then
  fibaro:debug('rozbrajam');
   
  for k,idczujki in pairs(czujki) do
  fibaro:call(idczujki, "setArmed", "0");
  fibaro:debug('czujki rozbrajają się')
end;
 
  elseif Alarmwartosc == ("NARUSZONY") then
  fibaro:debug('Naruszony')
  fibaro:setGlobal('Sonosgrako','//Grakostation/Music/strefa_naruszona._prosze_rozbroic_alarm.mp3');
  fibaro:call(179, "pressButton", "1");
  fibaro:call(28, "setColor", "0","255","0","0");
  fibaro:call(39, "setColor", "0","255","0","0"); 
end;
  end
-----------
--tutaj warunek uzbrojonych czujek

if typOdpalenia == "property" then
  fibaro:debug('Odpalam property')
  --or typOdpalenia == "other" then
 
local a1 = tonumber(fibaro:getValue(53, "armed"));
local a2 = tonumber(fibaro:getValue(88, "armed"));
local a3 = tonumber(fibaro:getValue(93, "armed"));
local a4 = tonumber(fibaro:getValue(111, "armed"));

   fibaro:debug('a1: ' .. a1);
   fibaro:debug('a2: ' .. a2);
   fibaro:debug('a3: ' .. a3);
    fibaro:debug('a4: ' .. a4);

if ( a1 > 0 and a2 > 0 and a3 > 0 and a4 > 0 ) then
   fibaro:debug('Odpalam jak uzbrojone');
   fibaro:setGlobal('Sonosgrako','//Grakostation/Music/alarm_uzbrojony.mp3');
   fibaro:call(179, "pressButton", "1");
   fibaro:setGlobal("ALARM", "UZBROJONY");
   fibaro:debug('ALARM UZBROJONY')
   fibaro:sleep(1000);
   fibaro:call(186, "sendDefinedPushNotification", "180");
   
elseif ( a1 == 0 and a2 == 0 and a3 == 0 and a4 == 0 ) then
 
 fibaro:debug('wszystkie rozbrojone');
 fibaro:sleep(3000);
 fibaro:setGlobal("ALARM", "ROZBROJONY");
 fibaro:call(124, "turnOff");
 fibaro:call(186, "sendDefinedPushNotification", "182");
   
if ( Aktywator == "Konrad" ) then
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/dzien_dobry_konradzie.mp3');
 fibaro:call(179, "pressButton", "1");
 fibaro:sleep(6000)
 fibaro:debug('ALARM ROZBROJONY KONRAD');
 fibaro:setGlobal("ALARM", "ROZBROJONY");
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);
 fibaro:call(148, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(12, "close")
 fibaro:call(18, "close")
 fibaro:call(170, "close")
 fibaro:call(22, "close");
 fibaro:sleep(2000);
 fibaro:call(154, "pressButton", "12")
 fibaro:setGlobal("Osoba", "Nikt");     
 fibaro:debug('Zmiana osoby na Nikt')
 fibaro:sleep(11000)
 fibaro:debug('Włączam stację radiową')
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/właczam_twoje_ulubione_radio.mp3');
 fibaro:call(179, "pressButton", "3");
 fibaro:sleep(15000)
 fibaro:call(178, "pressButton", "23");
 
 
 elseif ( Aktywator == "Radek" ) then
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/dzien_dobry_radku.mp3');
 fibaro:call(179, "pressButton", "1");
 fibaro:sleep(6000)
 fibaro:debug('ALARM ROZBROJONY RADEK');
 fibaro:setGlobal("ALARM", "ROZBROJONY");
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);
 fibaro:call(148, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(12, "close")
 fibaro:call(18, "close")
 fibaro:call(170, "close")
 fibaro:call(22, "close");
 fibaro:sleep(2000);
 fibaro:call(154, "pressButton", "12")
 fibaro:setGlobal("Osoba", "Nikt");     
 fibaro:debug('Zmiana osoby na Nikt')
 fibaro:sleep(11000)
 fibaro:debug('Włączam stację radiową')
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/właczam_twoje_ulubione_radio.mp3');
 fibaro:call(179, "pressButton", "3");
 fibaro:sleep(15000)
 fibaro:call(178, "pressButton", "23");
     
 elseif ( Aktywator == "Gosia" ) then
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/dzien_dobry_gosiu.mp3');
 fibaro:call(179, "pressButton", "1");
 fibaro:sleep(6000)
 fibaro:debug('ALARM ROZBROJONY GOSIA');
 fibaro:setGlobal("ALARM", "ROZBROJONY");
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(146, "turnOn");
 fibaro:sleep(2000);
 fibaro:call(148, "turnOn");
 fibaro:sleep(2000);     
 fibaro:call(12, "close")
 fibaro:call(18, "close")
 fibaro:call(170, "close")
 fibaro:call(22, "close");
 fibaro:sleep(2000);
 fibaro:call(154, "pressButton", "12")
 fibaro:setGlobal("Osoba", "Nikt");     
 fibaro:debug('Zmiana osoby na Nikt')
 fibaro:sleep(11000)
 fibaro:debug('Włączam stację radiową')
 fibaro:setGlobal('Sonosgrako','//Grakostation/Music/właczam_twoje_ulubione_radio.mp3');
 fibaro:call(179, "pressButton", "5");
 fibaro:sleep(15000)
 fibaro:call(178, "pressButton", "23");

end
  end
  end
« Ostatnia zmiana: Marzec 04, 2016, 05:03:17 pm wysłana przez Ernidebest »
*

Offline viperlodz

  • Moderator Globalny
  • ***** 838
  • 23
  • Nazwa i wersja ID: HC3 / HC2/ HC3L / Yubii
Odp: Alarm Fibaro + Sonos + NFC + Synology
« Odpowiedź #1 dnia: Marzec 04, 2016, 08:18:17 pm »
Nie miałem czasu przeglądać całości, ale pewnie tutaj jest problem
--[[
%% properties
53 armed
93 armed
111 armed
%% events
%% globals
--]]
Wchodzi do sceny jak uzbrajasz czujkę, ale ustawiłeś 3 więc 3 razy może wejść do sceny. Chyba, ze zabijasz instancję sceny, ale nie widziałem tego.
Jeśli zawsze uzbrajasz wszystkie 3 to bym zostawił w kodzie tylko jedną.
Odp: Alarm Fibaro + Sonos + NFC + Synology
« Odpowiedź #2 dnia: Marzec 05, 2016, 01:19:22 am »
nie ustawiłem instancji, bo wtedy scena mi nie działała dobrze, w sumie racja po co powielać scenę.
Będę wdzięczny jak w wolnej chwili zobaczysz całość.