Jak wprosty sposób dorzucić do tego kodu pobieranie danych LUX i uzaleznić od tego uruchomienie kodu.
9 komentarzy
Polub
Comments (9)
Lukasz
14 gru 2020
•
Lux’y mierzone w domu za wiele się nie zmieniają więc lepiej jest scenę uzależnić od pory dnia, tak jak pan to zrobił.
Polub
larry_2004
14 gru 2020
z tymi luksami to rzeczywiście różnie to bywa widzę nawet nie zwróciłem wcześniej uwagi że się nie aktualizują, związku z tym wymyśliłem sobie zmienną globalną dziennoc i zobaczę jak działa.
local x = fibaro:getGlobalValue("dziennoc")
if fibaro:countScenes() > 1 or x == "noc" then
print("Jest dzień, scena nie może się uruchomić.")
fibaro:abort()
end
Polub
larry_2004
14 gru 2020
wklejam kod w całości dla innych z uwzględnieniem luxów - może się przyda.
--[[
%% properties
490 lastBreached
%% events
%% globals
--]]
--[[
To jest funkcja napisana załączania światła po wykryciu detekcji ruchu
i wyłączenia z opóźnieniem od ostatniego wykrytego ruchu.
Lux’y mierzone w domu za wiele się nie zmieniają więc lepiej jest scenę uzależnić od pory dnia, tak jak pan to zrobił.
z tymi luksami to rzeczywiście różnie to bywa widzę nawet nie zwróciłem wcześniej uwagi że się nie aktualizują, związku z tym wymyśliłem sobie zmienną globalną dziennoc i zobaczę jak działa.
local x = fibaro:getGlobalValue("dziennoc")
if fibaro:countScenes() > 1 or x == "noc" then
print("Jest dzień, scena nie może się uruchomić.")
fibaro:abort()
end
wklejam kod w całości dla innych z uwzględnieniem luxów - może się przyda.
--[[
%% properties
490 lastBreached
%% events
%% globals
--]]
--[[
To jest funkcja napisana załączania światła po wykryciu detekcji ruchu
i wyłączenia z opóźnieniem od ostatniego wykrytego ruchu.
Motion Sensors, switch
Designed by Lukasz Gawryjolek
https://www.zTechnikaZaPanBrat.pl
]]--
-----------------------------------------------------------------------------
local wartosc = 80 -- max wartość luxów do załączenia sceny
local luxID = 492 -- tu podać adres podurzadzenia Lux w Motion Sensor
-----------------------------------------------------------------------------
-- tylko jeden wątek/instance dopuść do wykonywania sceny
--if fibaro:countScenes() > 1 then
--fibaro:abort()
--end
local lux =
tonumber(fibaro:getValue(luxID, "value"))
if fibaro:countScenes() > 1 or lux > wartosc then
print("Jest za jasno, scena nie może się uruchomić,","wartość -", lux, "luxy", "/ załącz poniżej ", wartosc, "luxów.")
fibaro:abort()
end
-----------------------------------------------------------------------------
local sensorID = 490 -- adres Motion Sensor
local deviceID = 319 -- adres Dimmer 2
-----------------------------------------------------------------------------
local breachedTime = fibaro:getValue(sensorID, "lastBreached")
print(breachedTime, os.date("%c", breachedTime))
--załączam światło
print("załączam światło")
fibaro:call(deviceID, "turnOn")
--odliczanie
local delay = 30
while os.time() < breachedTime + delay do
print("odliczanie")
fibaro:sleep(2000) --ms
breachedTime = fibaro:getValue(sensorID, "lastBreached")
end
fibaro:call(deviceID, "turnOn")
fibaro:sleep(1000) --ms
--wyłącz światło
print("wyłączam światło")
fibaro:call(deviceID, "turnOff")
Dzięki zaczęło działać będę testował. :)
oczywiście piszę kod z pamięci trzeba napisać tak:
local lux = tonumber(fibaro:getValue(492, "value"))
--[[
%% properties
490 lastBreached
%% events
%% globals
--]]
local lux = fibaro:getValue(492, "value")
if fibaro:countScenes() > 1 or lux < 100 then
fibaro:abort()
end
local sensorID = 490 -- adres Motion Sensor
local deviceID = 120 -- adres Dimmer 2
local breachedTime = fibaro:getValue(sensorID, "lastBreached")
print(breachedTime, os.date("%c", breachedTime))
--załączam światło
print("załączam światło")
fibaro:call(deviceID, "turnOn")
--odliczanie
local delay = 30
while os.time() < breachedTime + delay do
print("odliczanie")
fibaro:sleep(2000) --ms
breachedTime = fibaro:getValue(sensorID, "lastBreached")
end
fibaro:call(deviceID, "turnOn")
fibaro:sleep(1000) --ms
--wyłącz światło
print("wyłączam światło")
fibaro:call(deviceID, "turnOff")
------------------------------------------------------------------------------------------
coś nie działa, przepraszam ale nie jestem aż tak obeznany z tym kodem.
If na początku kodu w scenie Lua pod HC2. o taki np.
local lux = fibaro:getValue(id, "value")
if fibaro:countScenes() > 1 or lux < 100 then
fibaro:abort()
end
Ok, tak o to chodzi.
Pytanie jeśli nie od LUX?
Jak byś to rozwiązał aby w dzieł ten kod nie działał tylko jak jest ciemno (W NOCY)
Ja bym nie wywoływał sceny od ilości Lux bo wtedy będzie się ona trigerować non-stop.
Trzeba w kodzie napisać tak....
local lux = fibaro:getValue(ip, "value"). -- tu podać adres podurzadzenia Lux w Motion Sensor
A potem w kodzie uzależnić to od wartości przez warunek if...
if lux > 500 then
......
end
Czy o to chodziło?