433 MHz Außentemperatur Sensor mit Raspberry Pi auslesen

Kürzlich kam die Idee auf, dass es doch möglich sein muss, drahtlose Sensoren die auf 433 MHz senden die Daten direkt in Klartext auszulesen. Die Suche ergab dass es ein Programm gibt für den Raspberry Pi mit dem Namen „rtl_433“. Es muss ja nicht immer gleich eine Platine mit Sender und Empfänger sein, die dann noch zusammengebaut und programmiert werden muss, es muss einfacher gehen 🙂

Hardware Liste:

 

Die Installation erfolgt auf dem Raspberry Pi wie folgt:

sudo apt-get update
sudo apt-get upgrade
 
# Abhängikeiten installieren
sudo apt-get install libtool libusb-1.0.0-dev librtlsdr-dev rtl-sdr cmake
 
# rtl_433 Git Repository holen
git clone https://github.com/merbanan/rtl_433.git
 
# in das rtl_433 Verzeichnis wechseln
cd rtl_433/
# Erstelle ein build Verzeichnis
mkdir build
cd build/
# Compile starten
cmake ../
# Make
make
# Install
sudo make install


# Testen, Ausgeben der Programm Parameter
rtl_433 -h
# Ausgabe der Programm Parameter

Gestartet wird das Programm mit „rtl_433 -G“ für alle Geräte.

Ausgabe der Daten aller Sensoren in der Umgebung
Ausgabe der Daten

So sehen dann die Daten aus, für Sensoren die in der näheren Umgebung erreichbar sind und senden. In einem Hochhausgebiet dürfte das ganze sehr interessant werden.

Es werden übrigens auch Autoreifen Sensoren und Fernbedienungen angezeigt.

Teilweise ist es schon richtig krass was da an unverschlüsselte Daten in der Luft einfach so abgreifbar sind.

 

 

Nun habe ich mir auf gut Glück einen Sensor bestellt https://amzn.to/2ItJYg6 (*) um auszuprobieren ob der Sensor vom RTL-433 gelesen und dekodiert werden kann. Ja es hat geklappt und der Sensor hat weniger als 6 Euro gekostet.

Ausgabe Sensordaten
Ausgabe Sensordaten

Die Daten werden im JSON Format angezeigt, die über den Parameter „rtl_433 -G -F json“ mitgegeben werden beim starten des Programm. Dass in der Ausgabe noch Luftfeuchtigkeit angezeigt wird ist falsch und kann ignoriert werden.

 

Die Ausgabe an einen MQTT Broker weitergeben, damit die Daten dann in Node-Red weiter verabeitet werden können.

# rtl_433 -F json -U | mosquitto_pub -h mqtt.unixweb.de -t home/rtl_433 -l

 

Nun können die Daten in Node-Red eingelesen werden um dort angezeigt zu werden.
In meinem Fall hab ich die „id 5“ des Sensor übernommen wie im Trace angezeigt. In Deinem Fall musst Du suchen welche ID Dein Sensor hat und diesen Dann in den Flow eintragen.

[{"id":"4658c68b.f6537","type":"tab","label":"RTL 433 Scanner","disabled":false,"info":""},{"id":"db43e6a6.ad003","type":"mqtt in","z":"4658c68b.f6537","name":"von mqtt.unixweb.de home/rtl_433","topic":"home/rtl_433","qos":"0","broker":"c979da80.ef2bb","x":220,"y":280,"wires":[["b4d56bcd.7a81f"]]},{"id":"b4d56bcd.7a81f","type":"json","z":"4658c68b.f6537","name":"to JSON","property":"payload","action":"","pretty":false,"x":500,"y":280,"wires":[["409479af.9f69e8"]]},{"id":"409479af.9f69e8","type":"switch","z":"4658c68b.f6537","name":"Filter","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"9","vt":"str"},{"t":"eq","v":"75","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"87","vt":"str"},{"t":"eq","v":"122","vt":"str"},{"t":"eq","v":"255","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":7,"x":670,"y":280,"wires":[[],[],["bc62083d.78bae8","96060036.9a3168"],[],[],["4585ac6b.9748c4"],["aa9b2ac4.e88c08"]],"outputLabels":["","75","86","87","","255","alle Anderen"]},{"id":"aa9b2ac4.e88c08","type":"debug","z":"4658c68b.f6537","name":"Ausgabe: alle anderen Model ","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":960,"y":380,"wires":[]},{"id":"4585ac6b.9748c4","type":"debug","z":"4658c68b.f6537","name":"TFA pool temperature sensor","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.model","x":960,"y":320,"wires":[]},{"id":"bc62083d.78bae8","type":"debug","z":"4658c68b.f6537","name":"Generic temperature sensor 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.temperature_C","x":970,"y":260,"wires":[]},{"id":"6c9284f3.083734","type":"comment","z":"4658c68b.f6537","name":"MQTT Daten an mqtt.unixweb.de","info":"","x":210,"y":180,"wires":[]},{"id":"96060036.9a3168","type":"debug","z":"4658c68b.f6537","name":"Generic humidity sensor 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.humidity","x":960,"y":200,"wires":[]},{"id":"c979da80.ef2bb","type":"mqtt-broker","z":"","name":"unixweb","broker":"mqtt.unixweb.de","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

So sehen die Daten dann in Node-Red aus und können in Dashboards etc. übernommen werden.

Daten in Node-Red

Mein Testaufbau mit einem einfachen USB-Dongle. Daneben ein Octopus IoT Board zur Referenzmessung der Temperatur. Die Abweichung des Temperatur Sensor beträgt ca. 0.5 bis 1 Grad ° C, was durchaus im Bereich der Toleranz liegt.

Mit diesem Artikel will ich zeigen, dass es auch Leuten möglich ist ohne Löten und programmieren einen Temperatur Sensor aufzubauen und die Daten so anzeigen zu lassen damit man nicht immer auf das Display des Sensors schauen muss. Nun können Beispiele für Frostschutz und Hitzewarnungen programmiert werden. Der Sensor wird hoffentlich durch den Einsatz von Batterien 2AAA mehrere Monate oder 1 Jahr ohne Batteriewechsel funktionieren, wir werden es testen 🙂
Wenn ich daran denke was es für ein Aufwand ist mit einem Arduino so einen Sensor aufzubauen, ist diese Lösung wirklich smart und einfach. Bei Frage einfach Kommentar hier unter dem Artikel hinterlassen.

Viel Spaß beim basteln und probieren wünscht Joachim

Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Weiterführende Infos gibt es hier unter Punkt 8 in der Datenschutzerklärung  https://blog.unixweb.de/datenschutzerklaerung/

26 Kommentare

    1. Hallo Thomas

      Dein Artikel war auf jeden Fall eine Inspiration das Thema mal anzuschauen und zu probieren.
      Danke dafür 🙂

      Grüße Joachim
      PS: Ja DSGVO ist in aller Munde und ich muss es nochmal ändern

  1. Hallo Joachim,
    tolles Projekt. Nur bei der Installation habe ich bei Zeile 16 eine Fehlermeldung erhalten (Kommando nicht gefunden). Was mach ich falsch?

    1. Hallo Hans-Dieter

      da hab ich doch tatsächlich noch etwas vergessen zu installieren bzw. zu dokumentieren.
      Danke für den Hinweis.

      Mach mal folgendes :
      sudo apt install cmake

      Dann sollte die Zeile 16 nun auch funktionieren.

      Beste Grüße , Joachim

  2. Moin Joachim,

    ich bekomme beim Weiterleiten an den MQTT-Broker eine Fehlermeldung:

    Connection Refused: not authorised.

    Was muß ich noch ändern ?

    Gruß Heiner

    1. Hallo Heiner

      dann stimmt irgendwas mit der Zusammenstellung des Kommando in der Shell nicht.
      Probier mal „mosquitto_pub -h mqtt.unixweb.de -p 1883 -t home/rtl -m 5“ ob das geht.
      Wenn das geht muss auch alles andere funktionieren, bitte 1:1 übernehmen.

      Grüße , Joachim

  3. Habe den Fehler gefunden. Ich hatte den Server bereits auf localhost geändert, aber in dem Moment keinen MQTT Broker hochgefahren. Jetzt funktioniert alles 😉

    DAnke für Deine Hilfe.

    Gruß Heiner

  4. Ich habe alles gründlich nach deiner Anleitung gemacht, ich bekomme jedoch folgendes Fehler:

    trying device 0: Realtek, RTL2838UHIDIR, SN: 00000001
    Detached kernel driver
    Found Rafael Micro R820T tuner
    Using device 0: Generic RTL2832U OEM
    Exact sample rate is: 250000.000414 Hz
    [R82XX] PLL not locked!
    Sample rate set to 250000.
    Bit detection level set to 0 (Auto).
    Tuner gain set to Auto.
    Reading samples in async mode…
    Tuned to 433.920MHz.
    Unknown modulation 11 in protocol!
    pulse_FSK_detect(): Maximum number of pulses reached!
    Unknown modulation 11 in protocol!
    Unknown modulation 11 in protocol!
    Unknown modulation 11 in protocol!
    pulse_FSK_detect(): Maximum number of pulses reached!
    Unknown modulation 11 in protocol!
    pulse_FSK_detect(): Maximum number of pulses reached!
    Energy Count 3000:
    bitbuffer:: Number of rows: 1
    [00] {579} fe e0 3f e3 80 00 ff ff c0 1f 80 00 ff ff e0 00 f8 07 01 c0 7f df ff f0 00 1f fe 00 fd 87 ff ff ff df 00 83 80 01 ff cc 0f 0f ff ff ff fc 00 3f ff f1 e1 ff 84 00 78 07 ff fe 18 1f ff ff 00 3f fd 00 e0 3c 07 f0 20 00 00
    Energy Count 3000:
    bitbuffer:: Number of rows: 1
    [00] {574} ff ff 80 01 f8 70 03 f0 3f fe 3f fe 00 03 ff ff f0 3f ff 10 ff ff ff f8 03 fc ff f8 3f fe 1f fc 38 00 3d ff fe ff ff c0 03 83 ff ff f0 24 0f ff e7 00 7f 80 fc 10 3f e0 04 37 f8 05 03 ff 00 ff a7 ff e7 e7 ff fc 00 00
    Unknown modulation 11 in protocol!
    Unknown modulation 11 in protocol!
    Energy Count 3000:
    bitbuffer:: Number of rows: 1
    [00] {555} ff e3 f0 07 00 3f ff ff 83 ff f3 ff f9 c7 78 7f f7 fe 7e ff c0 01 83 ff 01 8c 08 3c 00 0f ff ff 80 07 ff ff fc 7e 00 0f ff ff e0 7f e0 03 ff fc 03 fe e1 ff f8 ff fc 00 3f fc 20 1c ff 80 03 e0 01 f0 ff e0 00 00
    Unknown modulation 11 in protocol!
    Unknown modulation 11 in protocol!
    Unknown modulation 11 in protocol!
    Signal caught, exiting!
    Reattached kernel driver

    Ich kann irgendwie damit nichts anfangen, die Befehle wurden alle ohne Fehler ausgeführt.

    Dankeschön…

  5. Es scheint ja recht zahlreiche USB <= DVB-T Empfänger zu geben, teilweise runter bis zu einem Preis von 7 EUR. Gibt es dazu Erfahrungen, wie gut der Empfang auch mit diesen Dingern klappt?

  6. Hallo,
    kurz eine Frage. Benötige ich zum Empfang des DVB-T Empfänger…..?

    Bekomme aktuell folgende Meldung:
    pi@raspberrypi:~/rtl_433/build $ rtl_433 -G
    rtl_433 version 18.12-55-gfe024a2 branch master at 201812282347
    Trying conf file at „rtl_433.conf“…
    Trying conf file at „/home/pi/.rtl_433/rtl_433.conf“…
    Trying conf file at „/usr/local/etc/rtl_433/rtl_433.conf“…
    Trying conf file at „/etc/rtl_433/rtl_433.conf“…
    Registered 114 out of 120 device decoding protocols [ 1-4 6-8 10-26 29-64 67-120 ]
    rtl_433: warning: 104 „Wireless M-Bus, Mode C&T, 100kbps (-f 868950000 -s 120000 0)“ does not support CSV output
    rtl_433: warning: 105 „Wireless M-Bus, Mode S, 32.768kbps (-f 868300000 -s 10000 00)“ does not support CSV output
    rtl_433: warning: 106 „Wireless M-Bus, Mode R, 4.8kbps (-f 868330000)“ does not support CSV output
    rtl_433: warning: 107 „Wireless M-Bus, Mode F, 2.4kbps“ does not support CSV out put
    No supported devices found.

    Danke und Grüße
    Detlef

      1. Hallo Joachim,

        zuerst mal noch Gesundheit und alles Gute für 2019!
        Vielen Dank für Deine tolle Anleitung, ich hoffe damit meinem Ziel, 8 Funkthermometer auf einem Display anzuzeigen, näher zu kommen.
        Leider bekomme ich genau die gleiche Fehlermeldung wie Detlef.
        Der Befehl lsusb ergibt bei mir folgendes Ergebnis:
        ~$ lsusb
        Bus 001 Device 004: ID 0424:7800 Standard Microsystems Corp.
        Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
        Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

        Ich habe einen NooElec NESDR Mini USB RTL-SDR Stick.

        Ich bin für jeden Tipp dankbar!

        Viele Grüße
        Hans-Dieter

        1. Nachtrag:
          An drei USB Eingängen funktioniert der Stick, nur an der Buchse unten direkt neben dem Netzwerkstecker funktioniert der Stick nicht, das war die erste Buchse die ich probiert hatte…
          Jetzt empfängt der Stick auch die Daten.

          Vielen Dank und Gruß
          Hans-Dieter

      2. Hallo Joachim,
        ich habe exat die gleiche Meldung wie Detlef,.
        „lsusb“ sagt folgendes:
        pi@raspberrypi:~ $ lsusb
        Bus 001 Device 014: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
        Bus 001 Device 018: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
        Bus 001 Device 019: ID 0dc6:3412 Precision Squared Technology Corp.
        Bus 001 Device 017: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
        Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
        Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

        Also DVBT stick wird erkannt.
        Was kann mein Problem sein?

        Vielen Dank und schöne Grüße

      3. Hallo Joachim,
        ich bekomme exakt die selbe Meldung wie Detlef,
        „lsusb“ sagt folgendes:
        pi@raspberrypi:~ $ lsusb
        Bus 001 Device 014: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
        Bus 001 Device 018: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
        Bus 001 Device 019: ID 0dc6:3412 Precision Squared Technology Corp.
        Bus 001 Device 017: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
        Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
        Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

        DVBT Stick wird also erkannt.
        kann es was mit RTL2838 DVB-T zu tun haben?
        Freue mich über jede Hilfe.
        Vielen Dank und schöne Grüße

    1. Hallo Lutz

      fast alle und der oben angezeigte USB-Stick kann schon 868 MHz.
      Sollte also kein Problem sein irgend einen USB-Stick zu nehmen, die können alle diesen Frequenzbereich.

      Grüße , Joachim

  7. Hallo Joachim,

    ich habe es erstmal unter windows versucht und jetzt verzweifle ich. Es hat erstmal nicht vollständig funktioniert und nun doch aber ganz unverständlich.
    Also meine Konfiguration : RTL SDR Receiver (JaniLab) wird mit 64bit Version unter Win7 von rtl_433 als RTL2832V OEM erkannt und findet nach dem Start mit rtl_433.exe -G auch einige Wettersensoren aber leider nicht die von meiner Mebus433 TE923 ( Typ TS33C Temp/Hum ) – Hideki 203HB TS13 war innen zu lesen. Aus Neugier hab ich dann , weil ich im Spektrum unter 867,5Mhz Signale sah, rtl_433.exe -f 867.5e6 -G aufgerufen und meine Sensoren waren erstaunlicher Weise da ebenso wie in meiner Mebus. Was ist da los? Was ist denn nun richtig 433 oder 867 ? Oberwellen?
    Sie werden bei 867 als HIDEKI TS04 erkannt.

  8. Hallo bei mir wird leider nur folgendes angezeigt:
    pi@raspberrypi:~ rtl_433 -G
    rtl_433 version 18.12-71-gb8578dc branch master at 201901231237
    Trying conf file at „rtl_433.conf“…
    Trying conf file at „/home/pi/.rtl_433/rtl_433.conf“…
    Trying conf file at „/usr/local/etc/rtl_433/rtl_433.conf“…
    Trying conf file at „/etc/rtl_433/rtl_433.conf“…
    Registered 114 out of 120 device decoding protocols [ 1-4 6-8 10-26 29-64 67-120 ]
    rtl_433: warning: 104 „Wireless M-Bus, Mode C&T, 100kbps (-f 868950000 -s 120000 0)“ does not support CSV output
    rtl_433: warning: 105 „Wireless M-Bus, Mode S, 32.768kbps (-f 868300000 -s 10000 00)“ does not support CSV output
    rtl_433: warning: 106 „Wireless M-Bus, Mode R, 4.8kbps (-f 868330000)“ does not support CSV output
    rtl_433: warning: 107 „Wireless M-Bus, Mode F, 2.4kbps“ does not support CSV out put

    Kann mir da jemand sagen, was dies bedeutet? Warum empfange ich keine Daten?

    Mit lsusb sehe ich das der DVBT Stick erkannt wurde.

    Jemand eine Idee?
    Vielen Dank für eure Hilfe.
    MfG Patrick

  9. Sorry, wollte nicht zig mal die gleiche Frage stellen.
    Meine Fragen wurden nie übernommen, und habe diese deshalb wiederholt eingestellt.
    Dabei war nur der Bestätigungslink der Anmeldung meinerseits nicht korrekt ausgeführt worden.
    Entschuldigt vielmals.

  10. Hallo
    Ich habe Markilux SonnenMarkise die mir Somfy RS-F1-A-433 Fernbedienung gesteuert wird ,
    iste es möglich das mit raspberry und iobroker zu steuern .
    Lg.Rufin

  11. Hallo,

    dieses Projekt finde ich seh interessant. Würdest du evtl noch weiter darauf eingehen wie ich die empfangenen Daten via Node-Red in einem ioBroker-VIS anzeigen kann? ich würde die Daten der Temperatursensoren gerne in meine vorhandene VIS einbinden.

    1. Hallo Fireee

      nein kann ich nicht da ich ioBroker nicht kenne.
      Vielleicht wird Dir bei Schimmer Media Forum geholfen, da sind viele ioBroker User.

      Grüße , Joachim

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.