RTL433 lässt sich in Home Assistant einfach als App hinzufügen, in diesem Fall muss der RTL433-Stick direkt an die Maschine angeschlossen werden, auf der auch Home-Assistant läuft.
In meiner Konfiguration möchte ich RTL433 allerdings auf einem externen Raspberry Pi entkoppelt von der Home-Assistant VM laufen lassen. Dazu muss RTL433 und das Home Assistant Autodiscovery manuell ohne die App Konfiguriert werden.
In diesem Beitrag beschreibe ich, wie ich RTL433 und die MQTT-Autodiscovery eingerichtet habe.
Vielen Dank an dieser Stelle an pbkhrv für die rtl_433 Home Assistant App und Techbotch von dessen tollen Blog-Beitrag ich meine Konfiguration stark habe inspirieren lassen.
RTL433
RTL433 Installieren
Als erstes habe ich das Paket installiert und einen Benutzer für den Dienst angelegt.
apt install rtl-433
adduser rtl_433 --disabled-login --no-create-home --gecos ""
adduser rtl_433 plugdev
reboot
RTL433 Konfigurieren
Als nächstes habe ich die Konfiguration für RTL433 in /etc/rtl_433.conf erstellt.
convert si
output mqtt://mqtt-broker,user=rtl433,pass=rtl433Password,retain=0
report_meta time:utc
report_meta newmodel
Mit dieser Konfiguration veröffentlicht RTL433 alle empfangenen Nachrichten von bekannten Geräte-Typen.
RTL433 Dienst einrichten
Als nächstes habe ich den Systemd-Service in /etc/systemd/system/rtl_433.service angelegt.
Description=RTL_433 service
Documentation=man:rtl_433
StartLimitIntervalSec=10
After=syslog.target network.target
[Service]
Type=exec
User=rtl_433
Group=rtl_433
ExecStart=/usr/bin/rtl_433 -c /etc/rtl_433.conf
Restart=always
RestartSec=30s
SyslogIdentifier=rtl_433
[Install]
WantedBy=multi-user.target
RTL433 starten
Nun konnte ich den RTL433-Dienst aktivieren, starten und prüfen ob alles funktioniert.
systemctl enable rtl_433
systemctl start rtl_433.service
journalctl -f -u rtl_433 -o cat
Home Assistant Autodiscovery
Mit dem Home Assistant Autodiscovery Script werden die Daten von RTL433 über MQTT abboniert, für Home-Assistant in einem neuen Format aufbereitet und wieder über MQTT veröffentlicht.
Jede Nachricht von RTL433 wird dabei in ein Format übersetzt, über dass Home Assistant das Gerät und die Sensor-Werte automatisch erkennt hinzufügen kann.
Abhängigkeiten installieren
Um das Autodiscovery Script auszuführen muss der Paho MQTT-Client für Pyhton installiert werden.
apt install python3-paho-mqtt
Autodiscovery-Dienst einrichten
Nun habe ich den Systemd-Service /etc/systemd/system/rtl_433-autodiscovery.service angelegt.
[Unit]
Description=RTL_433 autodiscovery service
StartLimitIntervalSec=10
After=syslog.target network.target
[Service]
Environment=MQTT_HOST=mqtt-broker
Environment=MQTT_USERNAME=rtl433
Environment=MQTT_PASSWORD=rtl433Password
Type=exec
User=rtl_433
Group=rtl_433
ExecStart=python3 -u /usr/share/doc/rtl-433/examples/rtl_433_mqtt_hass.py -H $MQTT_HOST
Restart=always
RestartSec=30s
SyslogIdentifier=rtl_433-autodiscover
[Install]
WantedBy=multi-user.target
Autodiscovery-Dienst starten
Nun konnte ich den Autodiscovery-Dienst aktivieren, starten und prüfen ob alles funktioniert.
systemctl enable rtl_433-autodiscovery.service
systemctl start rtl_433-autodiscovery.service
journalctl -f -u rtl_433-autodiscover -o cat
Protokolle einschränken
Aus der Konfiguration der RTL433 App habe ich mir herausgesucht, welche Protokolle hier standardmäßig aktiviert werden.
Dazu werden alle unterstützen Protokolle aufgelistet und alle Reifendruck-Sensoren ausgeschlossen.
Dies habe ich für meine Konfiguration übernommen:
apt install sd
/usr/bin/rtl_433 -R help 2>&1 | grep -i tpms | sd '.*\[(\d+)\].*' 'protocol -$1'
Das Ergebnis wird dann an die Konfigurations-Datei /etc/rtl_433.conf angehangen:
protocol -59
protocol -60
protocol -82
protocol -88
protocol -89
protocol -90
protocol -95
protocol -110
protocol -123
protocol -140
protocol -156
protocol -168
protocol -180
protocol -186
protocol -201
protocol -203
protocol -208
protocol -212