A python 3 module that takes advantage of Home Assistant's MQTT discovery protocol via ha-mqtt-discoverable to create a Raspberry PI GPIO garage door implementation.
discoverable_garage_door is designed to run on a PI Zero, Pi 3B+ or PI 4B it may run on other models.
discoverable_garage_door is designed to run on Debian Bullseye it may run on other versions.
dicscverable_garage_door runs on Python 3.10 or later.
pip install discoverable_garage_door
- not yet implemented
python3 -m discoverable_garage_door
a logger configuration file (logger.conf) may be placed in the current directory
a yaml-format configuration file may (.config.yaml) may be placed in the current directory or be specified by the 'config' environment variable
Example:
mqtt_broker:
host: local-broker.local
username: homeassistant
password: password
discovery_prefix: homeassistant
state_prefix: hmd
gpio:
button_push_duration_ms: 500
contact_bounce_time_ms: 200
contact_pullup: true
doors:
- button_pin: 18
closed_contact_pin: 27
name: main garage door
opened_contact_pin: 17
mqtt_broker.host - the name or address of the MQTT broker
mqtt_broker.username - the username to use to connect with the MQTT broker
mqtt_broker.password - the password to use to connect with the MQTT broker
mqtt_broker.discovery_prefix - the prefix to use to publish messages to the MQTT broker, hormally homeassistant
mqtt_broer.state_prefix - the prefix to use to subscribe messages to the MQTT broker
gpio.button_push_duration_ms - the length of time in milliseconds that garage door button is virtually pressed, default 500 (ms)
gpio.contact_bounce_time_ms - the length of time to use to debounce the GPIO inputs, normally 200 (ms)
gpio.contact_pullup - whether to use a pullup for the GPIO inputs(true) or whether a pullup will be externally used (false)
gpio.doors - a list of door descriptions
door.name - the name of the garage door
door.button_pin - the number of the pin used for the button (GPIO numbering)
door.closed_contact_pin - the number of the pin used for the closed contact (GPIO numbering)
door.opened_contact_pin - the number of the pin used for the opened contact (GPIO numbering)