Je to dobré hlavne preto keď potrebujete nastaviť automatizáciu zapnutia a vypnutia svetla a nedošlo k problémom prehadzovania binárneho senzoru true/false čo by spôsobilo zapínanie a vypínanie svetla.
(Situacia: zaznamenaný pohyb pir aktivuje na niekoľko sekúnd gpio vysoko - binarny senzor odošle hodnotu true. Po niekoľkých sekundách (alebo prednastavených hardwerovo v pir senzore) sa gpio prepne na nizko a binarny senzor zanamená hodnotu false aj keď v nejakom momente pir zaznamenal pohyb a tu nastava ten problem kedy potrebujete aby senzor bol pri pohybe v hodnote true... snaď som to dobre vysvetlil trochu polopate ale pre neznalých to moze pomoct)
EDIT1:
NOVÝ KÓD:
Kód: Vybrat vše
script:
- id: motion_on
mode: restart
then:
- binary_sensor.template.publish:
id: motion_temp
state: true
- delay: 10s
- binary_sensor.template.publish:
id: motion_temp
state: false
binary_sensor:
- platform: gpio
pin:
number: "$pir_sensor"
name: "${friendly_name} Motion"
id: motion
device_class: motion
on_state:
if:
condition:
- binary_sensor.is_on: motion
then:
- script.execute: motion_on
- platform: template
name: test motion
id: motion_temp
Musel som upraviť trochu kód so skriptom nakoľko v lambda funkcii ak som zavolaj funkciu delay tak sa esp chovalo zvláštne a to tak, že každých prednastavených (10s) odosielalo údaje do logu, viete niekto vysvetliť túto udalosť?
Kód: Vybrat vše
binary_sensor:
- platform: gpio
pin:
number: "$pir_sensor"
mode: INPUT_PULLDOWN
id: motion
device_class: motion
- platform: template
name: "${friendly_name} Motion"
id: motion_temp
lambda: |-
if (id(motion).state) {
return true;
} else {
delay(10000); //nastavenie času v milisekundách pri detekcii pohybu ako dlho má držať senzor aktivovaný aj keď už má pin v low mode
return false;
}