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ę.