RTL433 Home Assistant Autodiscovery manuell einrichten

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