rtl_433: Empfang und Dekodierung von Funk-Übertragungen aus lizenzfreien Frequenzbereichen (ISM-Bändern)

rtl_433 ist ein extrem populäres Open-Source-Kommandozeilenprogramm zur Empfang und Dekodierung von Funk-Übertragungen aus lizenzfreien Frequenzbereichen (ISM-Bändern).

Hauptaufgabe und Frequenzen

Obwohl der Name auf 433 MHz hinweist, ist rtl_433 ein universeller Funk-Decoder für diverse Frequenzbereiche:

  • ISM-Bänder: 433,92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz und 915 MHz.
  • Die Software empfängt unverschlüsselte Funksignale aus der Umgebung und wandelt sie in lesbare Messwerte und Daten um.

Unterstützte SDR-Hardware

Die Software benötigt einen Software Defined Radio (SDR)-Empfänger als Hardware-Schnittstelle. Unterstützt werden unter anderem:

  • RTL-SDR: Günstige DVB-T-USB-Sticks mit Realtek RTL2832U-Chip (der Standard).
  • SoapySDR-kompatible Geräte: LimeSDR, PlutoSDR, HackRF One, Airspy, SoapyRemote etc.

Was kann dekodiert werden?

rtl_433 enthält hunderte fest eingebaute Protokolle und Dekoder für Geräte wie:

  • Wetterstationen & Sensoren: Temperatur-, Luftfeuchtigkeits-, Regen-, Wind- und Luftdrucksensoren (z. B. von Bresser, Oregon Scientific, TFA Dostmann, Fine Offset, Acurite).
  • Smart Home & Sicherheit: Funksteckdosen, Bewegungsmelder, Tür-/Fensterkontakte, Rauchmelder und Garagentor-Drücker.
  • Fahrzeugdaten: Reifendruck-Kontrollsysteme (TPMS) verschiedener Automarken (z. B. Ford, Toyota, Renault, Citroën).
  • Füllstände & Verbrauch: Ultraschall-Öltankmesser, Strommessgeräte, Wasserzähler.

Ausgabe & Smart-Home-Integration

Die dekodierten Daten können in vielen Formaten ausgegeben und direkt in Automatisierungs- und Monitoring-Systeme eingebunden werden:

  • Formate: JSON, CSV, Plaintext/Log, Syslog, InfluxDB, HTTP.
  • MQTT-Unterstützung: Direkte Weiterleitung von Sensordaten per MQTT – ideal für die Einbindung in Home Assistant, Node-RED, openHAB oder ioBroker.
  • Einheitenumrechnung: Automatisches Konvertieren von Einheiten (z. B. Celsius/Fahrenheit, SI-Einheiten).

Technische Eigenschaften

  • Sprache: Geschrieben in C (C99 Standard), extrem leichtgewichtig und ressourcenschonend.
  • Plattformen: Läuft unter Linux (auch Raspberry Pi), macOS, Windows, FreeBSD sowie als Docker-Container.
  • Analyse-Tools: Enthält eingebaute Signal-Analysatoren (-A), mit denen unbekannte Funksignale aufgezeichnet (I/Q-Rohdaten) und für die Entwicklung eigener Dekoder analysiert werden können.

Bodenfeuchtesensor mit ESP32 Einrichten (Tasmota)

Der Artikel „Smart Home: Bodenfeuchtesensor mit ESP32 Einrichten (Tasmota)“ von Rudolf Schäfing beschreibt ein DIY-Projekt zur automatischen Überwachung der Pflanzenfeuchtigkeit im Smart Home.

Hier ist die zusammenfassende Übersicht:

Ziel & Hardware

  • Ziel: Den Bodenfeuchtegehalt von Zimmerpflanzen messen, um das Gießen zu optimieren.
  • Hardware:
    • Kapazitiver Bodenfeuchtesensor (Hygrometer Modul V1.2 von AZDelivery, der im Gegensatz zu resistiven Sensoren nicht korrodiert).
    • ESP32-Board zur Messwertaufnahme und WLAN-Übertragung.
    • Batterieversorgung (z. B. CR123 Lithium-Batterien) für einen kabellosen Betrieb.

Software & Tasmota-Installation

  • Flashen: Der ESP32 wird per USB an den Rechner angeschlossen und über das Programm Tasmotizer (oder Alternativen wie Web-Flasher / ESPHome-Flasher) mit der Firmware tasmota32.bin bespielt.
  • WLAN-Einrichtung: Nach dem Flashen öffnet der ESP32 einen Access Point. Über dessen IP-Adresse im Browser werden die Zugangsdaten für das Heim-WLAN hinterlegt.

Integration in ioBroker via MQTT

  • In ioBroker (z. B. auf einem Raspberry Pi) wird der Sonoff-Adapter genutzt.
  • Unter Configuration $\rightarrow$ Configure MQTT werden am ESP32 die IP-Adresse des ioBroker-Servers sowie Zugangsdaten hinterlegt. Nach dem Neustart werden die Datenpunkte automatisch in ioBroker unter dem konfigurierten Client-Namen angelegt.

Hardware-Verkabelung & Energieeinsparung

  • Die Stromversorgung des Sensors hängt an Steuer-Pins (Relais-Funktion in Tasmota), damit er nur während der Messung eingeschaltet wird.
  • Der Analog-Ausgang des Sensors liegt an GPIO 32 (ADC).
  • Ein Pin (GPIO 14) dient als Aufwach-/Aktivierungsschalter für den Konfigurationsmodus.

Kalibrierung & DeepSleep-Modus

Um den Stromverbrauch zu minimieren und Batteriebetrieb zu ermöglichen, wird der Sensor nicht dauerhaft mit Strom versorgt:

  • Kalibrierung: Auslesen des Messwerts im trockenen Zustand (ca. 2300) und im Wasserglas, um die Grenzwerte festzulegen.
  • DeepSleep einrichten:
    1. Die Telemetrie-Zeit (Telemetry Period) in den Tasmota-Einstellungen wird auf z. B. 20 Sekunden verkürzt (Zeitraum, in dem der ESP32 nach dem Aufwachen Daten sendet).
    2. Über die Tasmota-Konsole wird per Befehl (z. B. deepsleeptime 14400) ein Schlafzyklus eingerichtet (z. B. 14.400 Sekunden = 4 Stunden).

Ergebnis: Der ESP32 erwacht alle 4 Stunden für ca. 20 Sekunden, liest den Sensor aus, sendet die Daten per MQTT an ioBroker und geht wieder in den stromsparenden Schlafmodus.

Code

https://www.rudolfschafing.de/2022/02/24/tasmota-getting-started/

MQTT mit ESP8266 (SSL)

Lange habe ich versucht mit SSL von dem ESP8266 mit dem MQTT Broker Kontakt aufzunehmen, vieles schlug fehlt.

Nach vielem Suchen im Internet habe ich folgendes Video mit Code (bei Github) gefunden: Hier wird die BearSSL Library statt der WiFiClientSecure verwendet. .

https://github.com/debsahu/ESP_MQTT_Secure

Gleich im Intro wird auf ein anderes Beispiel bei Github verwiesen:

https://github.com/256dpi/arduino-mqtt/blob/master/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino

Und hier findet sich eine Zeile Code, mit der man die Valifierung erstmal abschalten kann:

  // do not verify tls certificate
  // check the following example for methods to verify the server:
  // https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/BearSSL_Validation/BearSSL_Validation.ino
  net.setInsecure();

https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-ubuntu-18-04-quickstart