Struggling like hell to get my doorbell working reliable. In principle it works by means of a GPIO input to sense the doorbell switch and a GPIO out to run the bell via a relay. Why? This enables easy switchoff in time and prevents people to ring 3 4 5 times quickly after each other (yeah that happens :-S).
I have defined my GPIO as follows:
binary_sensor:
- platform: rpi_gpio
pull_mode: 'UP'
# bouncetime: 5 <-tested - no influence
invert_logic: true
ports:
8: Deurbel
switch:
- platform: rpi_gpio
ports:
11: Deurbel
And the subsequent automation:
- id: '1612559173643'
alias: '[deurbel] deurbel ringdingdong'
description: ''
trigger:
- platform: state
entity_id: binary_sensor.deurbel
from: 'off'
to: 'on'
condition:
- condition: or
conditions:
- condition: time
after: '10:30:00'
weekday:
- sun
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- sat
after: 00:00:00
before: '23:59:59'
action:
- service: switch.turn_on
data: {}
entity_id: switch.deurbel
- delay:
hours: 0
minutes: 0
seconds: 0
milliseconds: 300
- service: switch.turn_off
data: {}
entity_id: switch.deurbel
- delay:
hours: 0
minutes: 0
seconds: 30
milliseconds: 0
mode: single
This bell press also triggers some other automation (notifications and light flash). That works reliable so it looks like the switch IO output to the doorbell is not working responsive. This was checked with an oscilloscope, making sure the relay is working reliable. It is truly the GPIO port that doesn’t switch sometimes.
Any suggestion would be welcome…