Gadaczka - otwarte/zamknięte okna

  • 4 Odpowiedzi
  • 4791 Wyświetleń

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

*

Offline michu

  • * 18
  • 3
  • Nazwa i wersja ID: HC2 4.053
Gadaczka - otwarte/zamknięte okna
« dnia: Kwiecień 02, 2015, 08:34:59 am »
Witam.

scena typu BEGINER tak więc proszę o wyrozumiałość.
założenie jest takie:
Podczas otwierania i zamykania okien otrzymuję głosowy komunikat, podczas zamknięcia ostatniego okna komunikat informujący
o tym że zamknięte są wszystkie okna. Myślę że pomysł przydatny gdy zaczyna mocno wiać, można jeszcze dodać funkcje przypominająca o zamknięciu otwartych okien z warunków pogodowych itp.

kody są umieszczone w trzech oddzielnych scenach dla poszczególnych okien
i tutaj mam pytanie do zaawansowanych userów, walczyłem troszkę czasu i nie udało mi się połączyć to w jedną scenę, proszę o podpowiedź.


--[[
%% autostart
%% properties
75 value
%% globals
--]]

-- otwarcie i zamknięcie okna w salonie
local startSource = fibaro:getSourceTrigger();
     if (( tonumber(fibaro:getValue(75, "value")) > 0 ) or startSource["type"] == "other")
          then
          fibaro:setGlobal("Komunikat", "Otwarto okno w salonie.");
         fibaro:call(95, "pressButton", "1")
    elseif (( tonumber(fibaro:getValue(75, "value")) == 0 ) or startSource["type"] == "other")
        then
        fibaro:setGlobal("Komunikat", "Zamknięto okno w salonie.");
        fibaro:call(95, "pressButton", "1")
end

-----------------------------------------------------------------------------
druga scena

--[[
%% properties
71 value
%% globals
--]]
-- otwarcie i zamknięcie okna w.....
local startSource = fibaro:getSourceTrigger();
     if (( tonumber(fibaro:getValue(71, "value")) > 0 ) or startSource["type"] == "other")
          then   
          fibaro:setGlobal("Komunikat", "Otwarto okno w.....");
         fibaro:call(95, "pressButton", "1")
    elseif (( tonumber(fibaro:getValue(71, "value")) == 0 ) or startSource["type"] == "other")
          then
          fibaro:setGlobal("Komunikat", "Zamknięto okno w.....");
          fibaro:call(95, "pressButton", "1")
end


--------------------------------------------------------------------------------
trzecia scena


--[[
%% properties
67 value
75 value
71 value
%% globals
--]]
-- otwarcie i zamknięcie okna w biurze
local startSource = fibaro:getSourceTrigger();
     if (( tonumber(fibaro:getValue(67, "value")) > 0 ) or startSource["type"] == "other")
          then   
          fibaro:setGlobal("Komunikat", "Otwarto okno w biurze.");
          fibaro:call(95, "pressButton", "1")
    elseif (( tonumber(fibaro:getValue(67, "value")) == 0 ) or startSource["type"] == "other")
          then
          fibaro:setGlobal("Komunikat", "Zamknięto okno w biurze.");
          fibaro:call(95, "pressButton", "1")
  end
if
           tonumber(fibaro:getValue(75, "value")) == 0 and
           tonumber(fibaro:getValue(71, "value")) == 0 and
           tonumber(fibaro:getValue(67, "value")) == 0
           then
           fibaro:setGlobal("Komunikat", "Wszystkie okna zamknięte.");
           fibaro:call(95, "pressButton", "1")
end
*

Offline marecki_0luk1

  • Administratorzy
  • ***** 430
  • 26
  • Nazwa i wersja ID: HC3 5.070.42 / HC2 4.600
Odp: Gadaczka - otwarte/zamknięte okna
« Odpowiedź #1 dnia: Kwiecień 02, 2015, 10:05:44 am »
m.kokot wrzuć swoją próbę polaczenia w jedna scenę to zobaczymy gdzie jest błąd i napisz co nie działa.


Wysłane z iPad za pomocą Tapatalk
*

Offline michu

  • * 18
  • 3
  • Nazwa i wersja ID: HC2 4.053
Odp: Gadaczka - otwarte/zamknięte okna
« Odpowiedź #2 dnia: Kwiecień 02, 2015, 10:21:48 am »
próby były wielokrotne z różnymi kombinacjami ifelse if else , end pomiędzy na końcu
zawsze były problemy z niewłaściwymi komunikatami do danego okna np. otwarto okno komunikat prawidłowy a jak zamykałem to samo okno to komunikat o zamknięciu np. z innego okna. Jak podzieliłem to na 3 odrębne sceny jest Ok, przy kilku oknach to nie problem ale przy większej ilości to już niezły zbiór scen.
*

Offline richo

  • Moderator Globalny
  • ***** 146
  • 6
  • Nazwa i wersja ID: Indigo 6/HC 4.037
Odp: Gadaczka - otwarte/zamknięte okna
« Odpowiedź #3 dnia: Kwiecień 02, 2015, 10:29:47 am »
Może uda Ci sie wykorzystać coś z tej sceny. Zwróć uwagę na funkcje określenia pokoju gdzie jest okno a poza tym CountScenes i abort !
Ta scena podaje informacje , w którym pokoju jest za zimno bo jest otwarte okno zbyt długo.

--[[
%% properties
142 value
160 value
174 value
181 value
186 value
271 value
280 value
300 value
%% globals
--]]


local startSource = fibaro:getSourceTrigger()
local TrigID = tonumber(startSource['deviceID'])
local temp = tonumber(fibaro:getValue(TrigID, "value"))
local room = fibaro:getRoomNameByDeviceID(TrigID)

if fibaro:countScenes() > 1
  then fibaro:debug(TrigID.." "..room.." "..temp..' ABORT'); fibaro:abort()
else fibaro:debug(TrigID.." "..room.." "..temp)
end

--min tem dla sypialni i innych pokoi oprócz tych ponizej
local mintemp = 17

if room == "Grzegorza" then mintemp = 17 end
if room == "Kuchnia" then mintemp = 16 end
if room == "Łazienka góra" then mintemp = 15 end
if room == "Gościnny" then mintemp = 15 end



if temp < mintemp
then
    fibaro:debug("Niska temperatura: "..temp.." C w "..room)
  fibaro:setGlobal("gadaj", "Niska temperatura: "..temp.." w "..room)
fibaro:call(318, "pressButton", "1")
fibaro:call(119, "turnOn");
fibaro:call(idr, "sendPush", "Niska temperatura: "..temp.." C w "..room)
  fibaro:call(idp, "sendPush", "Niska temperatura: "..temp.." C w "..room)
  fibaro:sleep(900*1000) --poczekaj min 15 minut przed następnym komunikatem
end


fibaro:debug('END')
« Ostatnia zmiana: Kwiecień 02, 2015, 10:37:07 am wysłana przez richo »
richo
*

Offline richo

  • Moderator Globalny
  • ***** 146
  • 6
  • Nazwa i wersja ID: Indigo 6/HC 4.037
Odp: Gadaczka - otwarte/zamknięte okna
« Odpowiedź #4 dnia: Kwiecień 02, 2015, 10:34:38 am »
A tu masz jeszcze scenę, która sprawdza czy jakieś okno/drzwi z listy jest otwarte i ustawia zm. globalną. Uruchamiałem ją co 10 min z ogólnego harmonogramu:

--[[
%% properties
%% globals
--]]

windows = {22, 140, 146, 298, 184, 227, 240, 110, 263, 294}

fibaro:setGlobal("OtwarteOkno", "0")
 
 for i = 1, #windows do
    local winname = fibaro:getName(windows[i]);
 
    if tonumber(fibaro:getValue(windows[i], "value")) > 0     
      then
      fibaro:debug("Otwarte "..winname)
      fibaro:call(idr, "sendPush", "Otwarte "..winname)
    fibaro:setGlobal("gadaj", "Uwaga,, Otwarte "..winname)
fibaro:call(318, "pressButton", "1")
      fibaro:setGlobal("OtwarteOkno", "1")
    end
 end
 fibaro:sleep(1000)

 if tonumber(fibaro:getGlobalValue("OtwarteOkno")) == 1
 then fibaro:startScene(121) --gong alarmowy
 end

richo