These are commonly installed by ADT Home security Systems and are for the most part great. They have a long battery life, a reasonable range, work on RF technology. If your subscription has run out or you wish to repurpose, how do you interface these great little sensors with Home Assistant ? Read on..
https://github.com/merbanan/rtl_433
def rtl_433_probe():
"""Run a rtl_433 UDP listener."""
global exitFlag
global doorVolume
time.sleep(4) # put this here incase any code could crash the pi
jq.setVolume(doorVolume)
try:
# Create listener for incoming json string packets.
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.bind((UDP_IP, UDP_PORT))
## Connect to MQTT
mqttc = mqtt.Client()
mqttc.on_connect = mqtt_connect
mqttc.on_disconnect = mqtt_disconnect
mqttc.on_message=on_message #attach function to callback
mqttc.on_connect_fail=connect_fail_callback
mqttc.username_pw_set(MQTT_USERNAME, password=MQTT_PASSWORD)
LogEvent("connecting to " + MQTT_HOST)
mqttc.connect(MQTT_HOST, MQTT_PORT, 60)
mqttc.loop_start()
except Exception as e:
LogEvent("main loop exception %s" % (e))
time.sleep(5)
exit(1)
## Receive UDP datagrams, extract json, and publish.
while not exitFlag:
line, addr = sock.recvfrom(1024)
try:
line = parse_syslog(line)
data = json.loads(line)
publish_sensor_to_mqtt(mqttc, data, line)
except ValueError:
LogEvent("issue with json")
pass
def run():
"""Run main or daemon."""
# with daemon.DaemonContext(files_preserve=[sock]):
# detach_process=True
# uid
# gid
# working_directory
rtl_433_probe()
if __name__ == "__main__":
run()
Supervisor
pi@doorrf:/etc/supervisor/conf.d $ cat doorrf.conf
[program:doorrf]
command=python /home/pi/doorrf.py
user=pi
autostart=yes
autorestart=yes
startretries=100
pi@doorrf:/etc/supervisor/conf.d $ cat rtl_433.conf
[program:rtl_433]
command=/home/pi/rtl_433/build/src/rtl_433 -f 344975000 -R 70 -F syslog:127.0.0.1:1433
user=pi
autostart=yes
autorestart=yes
startretries=100
pi@doorrf:/etc/supervisor/conf.d $ cat squeeze.conf
[program:squeezebox]
command=/usr/bin/squeezelite-armv6hf -o sysdefault:CARD=sndrpihifiberry -s 10.0.0.36 -n doorrf
user=pi
autostart=yes
autorestart=yes
startretries=100
Install
supervisord
sudo apt-get install -y supervisor
Supervisor Commands
sudo service supervisor start
sudo
service supervisor status
sudo
service supervisor stop
sudo
service supervisor restart