Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - sceny => Wątek zaczęty przez: richo w Marzec 24, 2015, 11:36:23 pm
-
Stworzona w 1 wersji przez Meryliona (który mam nadzieję do nas wkrótce dołaczy) i potem udoskonalana przeze mnie.
--[[
%% properties
4 dead
5 dead
6 dead
8 dead
9 dead
13 dead
16 dead
18 dead
22 dead
29 dead
33 dead
34 dead
35 dead
36 dead
37 dead
38 dead
39 dead
40 dead
43 dead
46 dead
52 dead
62 dead
65 dead
76 dead
77 dead
78 dead
89 dead
92 dead
95 dead
100 dead
101 dead
107 dead
110 dead
114 dead
117 dead
120 dead
127 dead
128 dead
135 dead
140 dead
146 dead
158 dead
164 dead
169 dead
172 dead
176 dead
180 dead
184 dead
187 dead
191 dead
192 dead
200 dead
205 dead
224 dead
227 dead
231 dead
234 dead
237 dead
238 dead
239 dead
240 dead
241 dead
247 dead
262 dead
269 dead
278 dead
281 dead
294 dead
298 dead
308 dead
313 dead
319 dead
324 dead
330 dead
331 dead
334 dead
335 dead
336 dead
337 dead
338 dead
339 dead
340 dead
341 dead
342 dead
343 dead
%% globals
--]]
-- powyzej wylistowane wszystkie ID urzadzen
-- ponizej powtorzone numery ID urzadzen do sprawdzania czy sa martwe
local ID = {4,5,6,8,9,13,16,18,22,29,33,34,35,36,37,38,39,40,43,46,52,62,65,76,77,78,89,92,95,100,101,107,110,114,117,120,127,128,135,140,146,158,164,169,172,176,180,184,187,191,192,200,205,224,227,231,234,237,238,239,240,241,247,262,269,278,281,294,298,308,313,319,324,330,331,334,335,336,337,338,339,340,341,342,343}
local Dead = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
local StartDead = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
local DeadTime = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
local trigger = fibaro:getSourceTrigger()
local TriggerID = tonumber(trigger['deviceID'])
--local Value, ModificationTime, Petla, PetlaCzasStart, nrdead = 0,0,0,0,0
local Value = 0
local ModificationTime = 0
local Petla = 0
local PetlaCzasStart = 0
local SprawdzanieStatusuNotOK = true
local Awaria = false
local Raport = ""
local DeadList = ""
local nrdead = 0
fibaro:setGlobal("nrdead", "0")
fibaro:call(223, "pressButton", "1") --HC2 send nr dead thinkspeak
--fibaro:debug(StartDead[1]..DeadTime[1])
--fibaro:debug(Value..ModificationTime..Petla..PetlaCzasStart..nrdead)
--fibaro:debug('start'..#ID..#Dead..#StartDead..#DeadTime)
--if TriggerID ~= nil then fibaro:debug('trigger ID='..TriggerID) else fibaro:debug('trigger type='..trigger.type) end
-- jesli scena jezeli juz dziala skoncz scene
if tonumber(fibaro:countScenes()) > 1
then fibaro:abort() end
PetlaCzasStart = os.time()
-- program glowny zapetlony w petli while
while SprawdzanieStatusuNotOK and (os.time() - PetlaCzasStart) < 3000 do
-- ustaw zeby zakonczyc petle while w nastepnym kroku
SprawdzanieStatusuNotOK = false
-- sprawdzanie stanu wszystkich ID
fibaro:sleep(5000)
for Petla = 1 , #ID do
-- jezeli czujnik martwy a w tabeli oznaczony jako zywy obudz 1 raz
Value , ModificationTime = fibaro:get(ID[Petla],'dead')
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 0
then
local name = fibaro:getName(ID[Petla]).. ' ' .. fibaro:getRoomNameByDeviceID(ID[Petla])
--fibaro:debug('Dead: '..ID[Petla].." "..name);
fibaro:setGlobal("deadlist", ID[Petla])
fibaro:setGlobal("deadname", name)
--fibaro:call(302, "pressButton", "6") --update log mysql
nrdead = nrdead + 1
DeadList = DeadList..ID[Petla].."\n"
Dead[Petla] = 1
DeadTime[Petla] = os.time()
StartDead[Petla] = ModificationTime
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezeli po minucie po pierwszej probie ciagle jest martwy sprobuj 2 raz
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 1 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 2
DeadTime[Petla] = os.time()
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezeli po minucie po drugiej probie ciagle jest martwy sprobuj 3 raz
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 2 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 3
DeadTime[Petla] = os.time()
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezelipo minucie po trzeciej probie ciagle martwy raportuj status 4
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 3 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 4
end
-- jezeli byl martwy a wrocil do zywych czekaj dwie minuty i raportuj jako ozywiony
if fibaro:get(ID[Petla],'dead') == '0' and Dead[Petla] > 0 and
(os.time() - ModificationTime) > 120 and Dead[Petla] < 10
then
Dead[Petla] = Dead[Petla] + 10
DeadTime[Petla] = ModificationTime - StartDead[Petla]
end
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] > 10
then
Dead[Petla] = 0
end
-- jezeli jakikolwiek czujnik jest w trakcie ozywiania ustaw flage do petli while
if Dead[Petla] > 0 and Dead[Petla] < 4
then
SprawdzanieStatusuNotOK = true
end
end
end
-- Raport z czynnosci
if (os.time() - PetlaCzasStart) > 2990
then
Raport = Raport .. ' TRAGEDIA JAKAS!!!! 15 minut budzenia umarlakow!!! \n\n'
end
for Petla = 1 , #ID do
Value , ModificationTime = fibaro:get(ID[Petla],'dead')
local name = fibaro:getName(ID[Petla]).. ' ' .. fibaro:getRoomNameByDeviceID(ID[Petla])
if Dead[Petla] == 4
then
Awaria = true
Raport = Raport..' AWARIA!!! Prawdziwa padlina ID : '..ID[Petla]..name..'\n'
end
if Dead[Petla] > 10
then
Raport = Raport ..' Obudzony : '..ID[Petla]..' '..name
.. ' po ' .. tostring(Dead[Petla] - 10) ..' probie, czas smierci: '..tostring(DeadTime[Petla])..' s\n'
Dead[Petla] = 0
end
if (os.time() - ModificationTime) < 6000 and Dead[Petla] < 10
then
--Raport = Raport..' Obudzenie : '..tostring(ID[Petla])..' '..name ..' nastapilo '..tostring(os.time() - ModificationTime)..' s temu \n'
end
end
if Awaria
then
--fibaro:call(idr,'sendPush','UMARLAKI - PRZECZYTAJ MEJLA')
end
if string.len(Raport) > 0 and nrdead > 2 then
fibaro:call(2,"sendEmail","Raport budzenia umarlakow", Raport)
end
fibaro:setGlobal("nrdead", tostring(nrdead))
--fibaro:setGlobal("deadlist", DeadList)
fibaro:call(223, "pressButton", "1") --HC2 send nr dead thinkspeak
fibaro:debug('END '..TriggerID..':'..Raport)
-
Też stworzona prze kolegę z forum ale nie pamiętam już kogo...
--[[
%% properties
%% globals
--]]
local maxNodeID = 550
local nazwa
local spis = ''
local licznik = 0
local lista_ID = ''
local lista_pusta = ''
local lista_full = ''
for i = 0, maxNodeID do
nazwa = fibaro:getName(i)
if nazwa ~= '' and tonumber(fibaro:getValue(i, "parentID")) == 1
then
--inkrementacje
fibaro:debug("urzadzenie = "..i..", czyli "..nazwa) -- debug testowy
spis = spis .. tostring(i) .. ' ' .. 'dead\n'
licznik = licznik + 1
lista_ID = lista_ID .. tostring(i) .. ','
lista_pusta = lista_pusta .. '0,'
end
end
-- uciecie ostatniego przecinka
lista_ID = string.sub(lista_ID, 1, -2)
lista_pusta = string.sub(lista_pusta, 1, -2)
-- montaz ostatniej listy
lista_full = "local ID = {" .. lista_ID .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local DeadTime = {" .. lista_pusta .. "}"
-- wysylka listy na maila
fibaro:call(2, "sendEmail", "Lista properties", spis)
fibaro:call(2, "sendEmail", "Lista ID", lista_ID)
fibaro:call(2, "sendEmail", "Lista pusta", lista_pusta)
-
He he,
Teraz to już jest więcej Twojego kodu niż mojego:)
Ale niestety scena jest nadal konieczna do prawidłowego działania Fibaro i pewnie tak już zostanie na wieki wieków Amen :)
Marcin
-
Czy komuś działa ta scena "Stworzona w 1 wersji przez Meryliona (Który mam Nadzieje do Nas wkrótce dołączy) i potem udoskonalana przeze Mnie." u mnie ciągle wywal błąd. Poprosiłem support o sprawdzenie i w odpowiedzi otrzymałem:
Zweryfikowałem kod i problem wynika z różnych długości wektorów, proszę skontaktować się z osobą, która jest autorem skryptu, aby dostosowała go do istniejącej instalacji. Niestety nie zapewniamy kompleksowego pisania tak obszernych i specyficznych dla konkretnego systemu scen.
-
Czy komuś działa ta scena "Stworzona w 1 wersji przez Meryliona (Który mam Nadzieje do Nas wkrótce dołączy) i potem udoskonalana przeze Mnie." u mnie ciągle wywal błąd. Poprosiłem support o sprawdzenie i w odpowiedzi otrzymałem:
Zweryfikowałem kod i problem wynika z różnych długości wektorów, proszę skontaktować się z osobą, która jest autorem skryptu, aby dostosowała go do istniejącej instalacji. Niestety nie zapewniamy kompleksowego pisania tak obszernych i specyficznych dla konkretnego systemu scen.
Przetłumaczę na "nasz":nie ogarniamy fibaro aż tak bardzo, żeby móc wspierać tak zaawansowane skrypty - nie mamy pojęcia o co kaman we własnych produktach, a co dopiero w nie naszych skryptach!
-
Czy komuś działa ta scena "Stworzona w 1 wersji przez Meryliona (Który mam Nadzieje do Nas wkrótce dołączy) i potem udoskonalana przeze Mnie." u mnie ciągle wywal błąd. Poprosiłem support o sprawdzenie i w odpowiedzi otrzymałem:
Zweryfikowałem kod i problem wynika z różnych długości wektorów, proszę skontaktować się z osobą, która jest autorem skryptu, aby dostosowała go do istniejącej instalacji. Niestety nie zapewniamy kompleksowego pisania tak obszernych i specyficznych dla konkretnego systemu scen.
Przetłumaczę na "nasz":nie ogarniamy fibaro aż tak bardzo, żeby móc wspierać tak zaawansowane skrypty - nie mamy pojęcia o co kaman we własnych produktach, a co dopiero w nie naszych skryptach!
Tłumaczenie bardzo dobre:) Czekam na odpowiedź odnośnie RS232. Obstawiam, że będzie podobna;)
-
Czy komuś działa ta scena "Stworzona w 1 wersji przez Meryliona (Który mam Nadzieje do Nas wkrótce dołączy) i potem udoskonalana przeze Mnie." u mnie ciągle wywal błąd. Poprosiłem support o sprawdzenie i w odpowiedzi otrzymałem:
Zweryfikowałem kod i problem wynika z różnych długości wektorów, proszę skontaktować się z osobą, która jest autorem skryptu, aby dostosowała go do istniejącej instalacji. Niestety nie zapewniamy kompleksowego pisania tak obszernych i specyficznych dla konkretnego systemu scen.
Jaki konkretnie błąd Ci wywala?
-
Pokazuje następujący błąd
-
Wygeneruj jeszcze raz listę urządzeń przy pomocy drugiej sceny podanej na tej stronie i podmień odpowiednio listy na początku sceny.
Sent using Tapatalk
-
richo miałeś rację miałem błąd w numeracji urządzeń, poprawiłem ale teraz wyskakuje błąd na końcu skryptu
-
nie mam gdzie tego sprawdzić ale na moje oko problem jest z łączeniem typów
spróbuj tę linie zmienić na :
fibaro:debug('END '..tostring(TriggerID)..':'..Raport)
-
Jeżeli puszczasz scenę z ręki to zawsze wywali ten błąd bo TriggerID ustawia się na początku na podstawie ID urządzenia, które było martwe. Aktywuj scenę i zostaw. Po pewnym czasie logu zobaczysz czy działa.
Sent using Tapatalk
-
Dziękuje za pomoc scena działa ok.
-
Jak działa skrypt (generator listy urządzeń) bo u mnie po uruchomieniu sceny z tym skryptem nic sie nie dzieje. Czy coś trzeba zmienić w tym skrypcie?
-
Też stworzona prze kolegę z forum ale nie pamiętam już kogo...
--[[
%% properties
%% globals
--]]
local maxNodeID = 550
local nazwa
local spis = ''
local licznik = 0
local lista_ID = ''
local lista_pusta = ''
local lista_full = ''
for i = 0, maxNodeID do
nazwa = fibaro:getName(i)
if nazwa ~= '' and tonumber(fibaro:getValue(i, "parentID")) == 1
then
--inkrementacje
fibaro:debug("urzadzenie = "..i..", czyli "..nazwa) -- debug testowy
spis = spis .. tostring(i) .. ' ' .. 'dead\n'
licznik = licznik + 1
lista_ID = lista_ID .. tostring(i) .. ','
lista_pusta = lista_pusta .. '0,'
end
end
-- uciecie ostatniego przecinka
lista_ID = string.sub(lista_ID, 1, -2)
lista_pusta = string.sub(lista_pusta, 1, -2)
-- montaz ostatniej listy
lista_full = "local ID = {" .. lista_ID .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local DeadTime = {" .. lista_pusta .. "}"
-- wysylka listy na maila
fibaro:call(2, "sendEmail", "Lista properties", spis)
fibaro:call(2, "sendEmail", "Lista ID", lista_ID)
fibaro:call(2, "sendEmail", "Lista pusta", lista_pusta)
Jak działa skrypt (generator listy urządzeń) bo u mnie po uruchomieniu sceny z tym skryptem nic sie nie dzieje. Czy coś trzeba zmienić w tym skrypcie?
-
Pomoże ktoś rozwiązać problem?
Czciałem otrzymać listę wszsytkich ID urządzeń, W tym celu wykonałem scenę z kodem:
--[[
%% properties
%% globals
--]]
local maxNodeID = 550
local nazwa
local spis = ''
local licznik = 0
local lista_ID = ''
local lista_pusta = ''
local lista_full = ''
for i = 0, maxNodeID do
nazwa = fibaro:getName(i)
if nazwa ~= '' and tonumber(fibaro:getValue(i, "parentID")) == 1
then
--inkrementacje
fibaro:debug("urzadzenie = "..i..", czyli "..nazwa) -- debug testowy
spis = spis .. tostring(i) .. ' ' .. 'dead\n'
licznik = licznik + 1
lista_ID = lista_ID .. tostring(i) .. ','
lista_pusta = lista_pusta .. '0,'
end
end
-- uciecie ostatniego przecinka
lista_ID = string.sub(lista_ID, 1, -2)
lista_pusta = string.sub(lista_pusta, 1, -2)
-- montaz ostatniej listy
lista_full = "local ID = {" .. lista_ID .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local Dead = {" .. lista_pusta .. "}"
lista_full = lista_full .. "\n" .. "local DeadTime = {" .. lista_pusta .. "}"
-- wysylka listy na maila
fibaro:call(2, "sendEmail", "Lista properties", spis)
fibaro:call(2, "sendEmail", "Lista ID", lista_ID)
fibaro:call(2, "sendEmail", "Lista pusta", lista_pusta)
Niczego w scenie nie zmieniałem, dokładnie przekopiowałem taką jaka jest i nie otrzymałem żadnej informacji. W czym jest problem?
Kolejna sprawa to scena z budzeniem umarlaków. Scenę także przekopiowałem i zmieniłem tylko ID urządzenia. Sprawdzam to tylko na jednym urządzeniu ID 110. Gdzie jeszcze muszę wprowadzić zmiany?
Czy ktoś może sprawdzić co jest problemem?
--[[
%% properties
110 dead
%% globals
--]]
-- powyzej wylistowane wszystkie ID urzadzen
-- ponizej powtorzone numery ID urzadzen do sprawdzania czy sa martwe
local ID = {110}
local Dead = {0}
local StartDead = {0}
local DeadTime = {0}
local trigger = fibaro:getSourceTrigger()
local TriggerID = tonumber(trigger['deviceID'])
--local Value, ModificationTime, Petla, PetlaCzasStart, nrdead = 0,0,0,0,0
local Value = 0
local ModificationTime = 0
local Petla = 0
local PetlaCzasStart = 0
local SprawdzanieStatusuNotOK = true
local Awaria = false
local Raport = ""
local DeadList = ""
local nrdead = 0
fibaro:setGlobal("nrdead", "0")
fibaro:call(223, "pressButton", "1") --HC2 send nr dead thinkspeak
--fibaro:debug(StartDead[1]..DeadTime[1])
--fibaro:debug(Value..ModificationTime..Petla..PetlaCzasStart..nrdead)
--fibaro:debug('start'..#ID..#Dead..#StartDead..#DeadTime)
--if TriggerID ~= nil then fibaro:debug('trigger ID='..TriggerID) else fibaro:debug('trigger type='..trigger.type) end
-- jesli scena jezeli juz dziala skoncz scene
if tonumber(fibaro:countScenes()) > 1
then fibaro:abort() end
PetlaCzasStart = os.time()
-- program glowny zapetlony w petli while
while SprawdzanieStatusuNotOK and (os.time() - PetlaCzasStart) < 3000 do
-- ustaw zeby zakonczyc petle while w nastepnym kroku
SprawdzanieStatusuNotOK = false
-- sprawdzanie stanu wszystkich ID
fibaro:sleep(5000)
for Petla = 1 , #ID do
-- jezeli czujnik martwy a w tabeli oznaczony jako zywy obudz 1 raz
Value , ModificationTime = fibaro:get(ID[Petla],'dead')
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 0
then
local name = fibaro:getName(ID[Petla]).. ' ' .. fibaro:getRoomNameByDeviceID(ID[Petla])
--fibaro:debug('Dead: '..ID[Petla].." "..name);
fibaro:setGlobal("deadlist", ID[Petla])
fibaro:setGlobal("deadname", name)
--fibaro:call(302, "pressButton", "6") --update log mysql
nrdead = nrdead + 1
DeadList = DeadList..ID[Petla].."\n"
Dead[Petla] = 1
DeadTime[Petla] = os.time()
StartDead[Petla] = ModificationTime
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezeli po minucie po pierwszej probie ciagle jest martwy sprobuj 2 raz
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 1 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 2
DeadTime[Petla] = os.time()
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezeli po minucie po drugiej probie ciagle jest martwy sprobuj 3 raz
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 2 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 3
DeadTime[Petla] = os.time()
fibaro:wakeUpDeadDevice(ID[Petla])
end
-- jezelipo minucie po trzeciej probie ciagle martwy raportuj status 4
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] == 3 and
(os.time() - DeadTime[Petla]) > 60
then
Dead[Petla] = 4
end
-- jezeli byl martwy a wrocil do zywych czekaj dwie minuty i raportuj jako ozywiony
if fibaro:get(ID[Petla],'dead') == '0' and Dead[Petla] > 0 and
(os.time() - ModificationTime) > 120 and Dead[Petla] < 10
then
Dead[Petla] = Dead[Petla] + 10
DeadTime[Petla] = ModificationTime - StartDead[Petla]
end
if fibaro:get(ID[Petla],'dead') == '1' and Dead[Petla] > 10
then
Dead[Petla] = 0
end
-- jezeli jakikolwiek czujnik jest w trakcie ozywiania ustaw flage do petli while
if Dead[Petla] > 0 and Dead[Petla] < 4
then
SprawdzanieStatusuNotOK = true
end
end
end
-- Raport z czynnosci
if (os.time() - PetlaCzasStart) > 2990
then
Raport = Raport .. ' TRAGEDIA JAKAS!!!! 15 minut budzenia umarlakow!!! \n\n'
end
for Petla = 1 , #ID do
Value , ModificationTime = fibaro:get(ID[Petla],'dead')
local name = fibaro:getName(ID[Petla]).. ' ' .. fibaro:getRoomNameByDeviceID(ID[Petla])
if Dead[Petla] == 4
then
Awaria = true
Raport = Raport..' AWARIA!!! Prawdziwa padlina ID : '..ID[Petla]..name..'\n'
end
if Dead[Petla] > 10
then
Raport = Raport ..' Obudzony : '..ID[Petla]..' '..name
.. ' po ' .. tostring(Dead[Petla] - 10) ..' probie, czas smierci: '..tostring(DeadTime[Petla])..' s\n'
Dead[Petla] = 0
end
if (os.time() - ModificationTime) < 6000 and Dead[Petla] < 10
then
--Raport = Raport..' Obudzenie : '..tostring(ID[Petla])..' '..name ..' nastapilo '..tostring(os.time() - ModificationTime)..' s temu \n'
end
end
if Awaria
then
--fibaro:call(idr,'sendPush','UMARLAKI - PRZECZYTAJ MEJLA')
end
if string.len(Raport) > 0 and nrdead > 2 then
fibaro:call(2,"sendEmail","Raport budzenia umarlakow", Raport)
end
fibaro:setGlobal("nrdead", tostring(nrdead))
--fibaro:setGlobal("deadlist", DeadList)
fibaro:call(223, "pressButton", "1") --HC2 send nr dead thinkspeak
fibaro:debug('END '..TriggerID..':'..Raport)
-
Widac nikt mic nie wie? Nikt nie posiada dzialajacego skryptu?
-
Czy ludziska zaglądają tu jeszcze? Czy nikt nie chce się podzielić wiedzą???
-
Witam,
Jakis konkretny cel posiadania listy urządzeń?
Jak by co jest fajny programik HC2 Toolkit - daje właśnie takie resultaty :)
Pozdrawiam
Piotr Br
PS - napisz na priva to podeślę
-
Także tego...
Strasznie się pokomplikowała ta scena :)
Podrzucam dla potomności scenę budzenia umarlaków by support:
Ona jest "oszczędna" dla procka centralki ale każdy ją sobie może zrobić pod siebie :)
--[[
%% autostart
%% properties
%% globals
--]]
NB_DEVICES = 300
function wakeupDeadNodes()
fibaro:debug('Wakeup dead nodes.')
-- Check all devices
for i = 1, NB_DEVICES do
local status = fibaro:getValue(i, 'dead');
if status >= "1" then
fibaro:debug(i..': DEAD');
fibaro:wakeUpDeadDevice(i)
fibaro:sleep(5000) --check again in 5 sec
status = fibaro:getValue(i, 'dead');
if status >= "1" then
fibaro:debug(i..': Really dead')
else
fibaro:debug(i..': Now OK')
end
end
end
end
local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do
fibaro:debug('Scene automatically called.')
local currentDate = os.date("*t");
-- Wakeup nodes only Monday-Saturday from 10:00 to 11:00
if ((currentDate.wday >= 2 and currentDate.wday <= 7) and (currentDate.hour >= 10 and currentDate.hour <= 11 ))
then
fibaro:debug('Nodes automatically waked up.')
wakeupDeadNodes()
end
fibaro:sleep(30*60000); -- Run every 30 minutes
end
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (startSource["type"] == "other")
then
wakeupDeadNodes()
end
end
-
podaj gdzzie i jakie zmiany ze swojej strony musze wpisac w skrypt?
-
Wkleiłem Twój skrypt i mam taki komunikat. Co to oznacza?
-
Podmień tą linię:
if status ~= nil and status >= "1" then
Zauważ że ta scena działa tylko od 10.00 do 11.00 do poniedziałku do Soboty.
Jeśli Ci to nie wystarczy, to pogrzeb w części, która za te godziny odpowiada:
-- Wakeup nodes only Monday-Saturday from 10:00 to 11:00
if ((currentDate.wday >= 2 and currentDate.wday <= 7) and (currentDate.hour >= 10 and currentDate.hour <= 11 ))
LUA - zacznij drążyć i uczyć się. Ja sam nie jestem programistą ale coś tam ogarniam. Trochę czasu to zajęło.
Choć zawsze jest krótsza droga. Wysyłasz zlecenie, a w odpowiedzi dostajesz kod i fakturę :)
Tu bardzo dużo ludzi pomaga ale raczej nikt za Ciebie pracy domowej nie odrobi.
Pozdro
-
dzieki wielkie za pomoc. chetnie bym sie nauczyl ale czasu brak. gdzie sie zdobywa lub zglasza ze zleceniem odnosnie pisania
-
to mam wstawic w miejsce ktorej lini?
if status ~= nil and status >= "1" then
-
Podmień tą linię:
if status ~= nil and status >= "1" then
Zauważ że ta scena działa tylko od 10.00 do 11.00 do poniedziałku do Soboty.
Jeśli Ci to nie wystarczy, to pogrzeb w części, która za te godziny odpowiada:
-- Wakeup nodes only Monday-Saturday from 10:00 to 11:00
if ((currentDate.wday >= 2 and currentDate.wday <= 7) and (currentDate.hour >= 10 and currentDate.hour <= 11 ))
LUA - zacznij drążyć i uczyć się. Ja sam nie jestem programistą ale coś tam ogarniam. Trochę czasu to zajęło.
Choć zawsze jest krótsza droga. Wysyłasz zlecenie, a w odpowiedzi dostajesz kod i fakturę :)
Tu bardzo dużo ludzi pomaga ale raczej nikt za Ciebie pracy domowej nie odrobi.
Pozdro
Dzięki wielkie. Już działa. Podaeślij mi namiar na tych co mówisz że piszą w LUA na zlecenie.
-
U mnie po wkelejeniu tej sceny pojawia sie cos takiego
:
[DEBUG] 17:29:42: Wakeup dead nodes.
[DEBUG] 17:29:42: line 21: attempt to compare string with nil
Co muszę zmienić?
-
Zamień tą linie na wpis:
if status ~= nil and status >= "1" then
-
Witam.
Potrzebuje pomocy, co jest nie tak w mojej scenie że w Debug pokazuje błąd w lini 196. Co oznaczają cyfry po czasie w debug.