Witam! Poniższy skrypt działa tak jak chciałbym aby działał (wszystkie switche on/off), ale nie potrafię zamienić switcha "My" na switch on/off ping ustawiony jako motion. Moje próby nie przyniosły efektu.
return {
on = {
devices = {
'Noc', 'My',}
},
logging = {
level = domoticz.LOG_DEBUG,
marker = 'Lampa Noc',
},
execute = function(dz, item)
local switch = dz.devices('Noc')
local switch1 = dz.devices('Lampa')
local switch2 = dz.devices('My')
if item == switch then
if switch.state == 'On' and switch2.state == 'On' then
switch1.switchOn().checkFirst()
else
switch1.switchOff().checkFirst()
end
end
if item == switch2 and switch2.state =='Off' then
switch1.switchOff().checkFirst()
end
end
}
A w którym miejscu w kodzie kolega ustawia przełącznik "My" na ON czy tam OFF. Bo tu nie widać. Generalnie powinno działać.
Ewentualnie pokaż jak masz zdefiniowany ten przełącznik "My".
switch2.switchOff().checkFirst() lub switch2.switchOn().checkFirst()
@steel_rat zamiast obecnego "My" chciałbym wstawić PIR (on/of z pinga ustawiony na motion) ale jak zastąpię switch2 --> motion.active to to nie działa.
Rozumiem że używasz plugina w Domoticzu do pingowania?
Czy przypadkiem nie wzorujesz się na tym temacie
https://www.smartnydom.pl/forum/domoticz/httpresponse/#post-23794
Tu praktycznie ten sam skrypt działa.Wtedy coś takiego stworzyłem
return {
on = {
devices = {
'GarażR', 'TVPhilips',}
},
logging = {
level = domoticz.LOG_DEBUG,
marker = 'PIR Garaż',
},
execute = function(dz, item)
local motion = dz.devices('GarażR') -- nazwa czujnika
local switch = dz.devices('TekstTV') -- nazwa włacznika
local motion1 = dz.devices('TVPhilips') -- nazwa ping (ustawiony jako motion sensor)
if item == motion then
if motion.active and motion1.active then -- detekcja wyzwala skrypt
switch.switchOn().checkFirst()
else
switch.switchOff().checkFirst()
end
end
if item == motion1 and not motion1.active then
switch.switchOff().checkFirst()
end
}
ten motion był ustawony jako "contact"
@steel_rat Tak patrzyłem jak to ustawiłeś tam --> akcja zależy od wykrycia ruchu i spełnienia warunku obecności 2 motion true. U mnie miało być tak, że akcja "Noc" powoduje załączenie switch1 ale wtedy kiedy motion jest aktiv.
Wystarczy usunąć "not" przed "motion1.active"
Wystarczy usunąć "not" przed "motion1.active"
U mnie "Noc" i "Lampa" to są switche ON/OFF a "My" to switch (alive ping) ustawiony na motion. Więc jak zmienię jak proponujesz to w przypadku kiedy "My" bedzie aktiv wyłaczy "Lampę" a ma być jak jest czyli
if item == switch2 and switch2.state =='Off' then
switch1.switchOff().checkFirst()
Coś w tym stylu :
return {
on = {
devices = {
'Noc', 'My',}
},
logging = {
level = domoticz.LOG_DEBUG,
marker = 'Lampa Noc',
},
execute = function(dz, item)
local switch = dz.devices('Noc')
local switch1 = dz.devices('Lampa')
local motion = dz.devices('My')
if item == switch then
if switch.state == 'On' and motion.state == 'On' then
switch1.switchOn().checkFirst()
else
switch1.switchOff().checkFirst()
end
end
if item == motion and motion.state == 'Off' then
switch1.switchOff().checkFirst()
end
end
}
No to jak masz go jako motion to on ma wartości "ON" i "OFF" a nie "Active".
czyli powinno działać ostatni Twój wpis.
No to jak masz go jako motion to on ma wartości "ON" i "OFF" a nie "Active".
W Twoi skrypcie masz motion jako contact a on daje open i closed a używasz aktiv / not activ ??
No to jak masz go jako motion to on ma wartości "ON" i "OFF" a nie "Active".
czyli powinno działać ostatni Twój wpis.
Czyli jak zmienię "zwykłego" mojego swicha "my" i ustawie go jako motion to powinno zadziałać ? bo nie zmieniam stanu tzn. dalej jest to on/off ?
No to jak masz go jako motion to on ma wartości "ON" i "OFF" a nie "Active".
czyli powinno działać ostatni Twój wpis.
Czyli jak zmienię "zwykłego" mojego swicha "my" i ustawie go jako motion to powinno zadziałać ? bo nie zmieniam stanu tzn. dalej jest to on/off ?
Tak. A nawet możesz dodać jakieś akcje z poziomu domoticza.
No to jak masz go jako motion to on ma wartości "ON" i "OFF" a nie "Active".
W Twoi skrypcie masz motion jako contact a on daje open i closed a używasz aktiv / not activ ??
A po polsku mam Otwarte i Zamknięte. Ale wartości jego w skryptach zwraca zmienna Active. Czyli przycisk jest aktywny lub nie. Najlepiej popatrzeć do helpa. Ale tu metodą dedukcji jak "Active" wywala błąd to zostaje "State".
@steel_rat Dziękuję za pomoc i wyjaśnienia, skrypt podany na początku, który działał działa dalej (niepotrzebnie motałem się z tym motion.activ). Zauważyłem, że mogę ustawić "Plany" w moim "Noc" i też działa. Super jeszcze raz dziękuję.

