Raspberry Pi: Temperaturmessung mit one wire DS18B20 Sensoren und Fhem

fhemIch hatte in einen meiner letzten Blog-Beiträge schon einiges über Fhem, dem Freundlichen Haus und Energie-Monitor geschrieben. Diese Hausautomations-Software ist Open-Source, in Perl geschrieben, hat eine große Community und läuft auf meinem Raspberry Pi mit Raspbmc perfekt. Wenn ich nicht dauernd die Software und Hardware mit (überflüssigen) Komponenten erweitern würde :-). Da mal wieder das Wochenende vor der Tür stand, bin ich hingegangen und habe aus meinen vorherigen Projekten meinen Temperatur-Sensor DS18B20 herausgebaut und mit dem Raspberry Pi verbunden.

Hardware: Man benötigt, wie schon oben erwähnt, den Temperatursensor DS 18B20 (amazon.de: 10 × DS18B20 Digital Temperature Sensor Thermperatursensor TO92 – 55°C – +125°C
) und einen ohmschen Widerstand mit 4,7 kOhm. Ich habe leider nur 1 kOhm zur Hand gehabt, klappt aber auch. Ebenfalls benötigt man ein mindestens 3-adriges Kabel, welches eine Zuleitung zum Temperatursensor darstellt, solange man nicht auf der Platine des Raspberry Pi die Temperatur messen möchte.

Die Schaltung:

schaltung ds18b20.png

Installation und Testen des Sensors

Wenn man alles verschaltet hat, kommt man zum Testen. Hier gibt man über die Kommandozeilenoberfläche

modprobe w1-gpio
modprobe w1-therm

Im Ordner

/sys/bus/w1/devices

sollte nun ein Ordner mit ID des Temperaturmoduls vorhanden sein. Hier steht neben dem CRC auch die Temperatur, bei mir 21,562 Grad.Damit der Sensor auch nach einem Neustart wieder gefunden wird (die obigen Kommandos gelten nur bis zu einem Reboot), sollte auch sofort softwaremäßig der Sack zu gemacht werden.

ds18b20  log
Hierzu gibt man auf der Kommandozeilenoberfläche ein:

sudo vi /etc/modules

und fügt folgende Zeilen hinzu

wire
w1_gpio
w1_therm

Ihr könnte anstatt vi auch jeden anderen Editor benutzen. Ich nutze beispielsweise den Midnight Commander mit dem Editor nano.

Ein Reboot tut anschließend gut.

Das wäre es schon mal von der Hardware-Software-Seite:
Fassen wir zusammen:

  • Der Temperatursensor wurde installiert und funktioniert auch nach einem Reboot.
  • Die Hardware liefert fortwährend Temperatur-Daten.

One-Wire DS18B20 in Fhem.

Hierzu geht man in den /fhem/contrib Ordner und kopiert die Datei 58_GPIO4.pm in den Fhem-Ordner.
Anschließend editiert man die in den Fhem-Ordner liegende Datei 98_autocreate.pm und fügt folgenden Code hinzu

# GPIO
"GPIO4_(DS18B20|DS1820).*"
=> { GPLOT => "temp4:Temp,", FILTER => "%NAME" },

anschließend mit shutdown restart fhem neu starten, oder RPi neu Booten.

In der File-Config-Datei noch folgende Zeile einfügen, damit der Temperatur-Sensor von Fhem erkannt wird.

define Temperatursensor1 GPIO4 BUSMASTER

Nun sollte das Modul auch im Plot die gemessenen Temperaturen anzeigen.
Tipp: Standardmäßig nimmt der Sensor jede Minute (60s) eine Messung vor. Ihr könnt mit dem Attribut pollingInterval die Messintervalle einstellen. Bei einem Eintrag von 320 wird jede 5min gemessen.

[asa]B008XVAUPI[/asa]

Fazit:
Die One-Wire-Messung ist eine preiswerte Methode zum Messen von Temperaturen. Ihr könnt mehrere Sensoren parallelschalten. Der Sensor selber kostet bei Conrad ungefähr 2 bis 3 Euro. Vorteil ist der Preis, nachteilig natürlich die Verkabelung.

Möchte man drahtlos die Temperatur und Luftfeuchtigkeit seiner Räume überwachen, empfehle ich die LaCrosse Temperatur- und Luftfeuchtigkeitssensoren mit einem JeeLink-Transceiver. Bitte dazu auch meinen Blogbeitrag über diese günstigen Sensoren lesen.

temperatursensor ds18b20

anschluss rpi ds18b20

gpio4 mit ds18b20

Dieser Beitrag wurde unter Fhem-Hausautomation, Raspberry Pi abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

20 Antworten zu Raspberry Pi: Temperaturmessung mit one wire DS18B20 Sensoren und Fhem

  1. Robin sagt:

    Hallo Jack,
    der Klassiker für die DS18B20 Serie. Hab ich schon öfter gehört 🙂
    LG
    /robin

  2. Jack sagt:

    Ja das weiß ich, deswegen habe ich ja schon ein jeelink am laufen mit mehreren Sensoren. 🙂 Dieses Projekt ist für zb. meine Heizung ( Vorlauf u. Rücklauf) gedacht.

    Gruß Jack

  3. Robin sagt:

    du weißt, das ein jeelink unter fhem viel cooler ist? kein kabel, und flexibel.
    https://blog.moneybag.de/lacrosse-temperatursensor-an-arduino-nano-und-rfm12b-als-jeelink-ersatz/

  4. Jack sagt:

    Ich danke dir!! Ich werde mich melden wenn ich es dann zeitlich mal geschafft habe.

    Gruß Jack

  5. Robin sagt:

    passiert nix, man hätte keine Daten. Fange mit dem höheren Wert an.
    Kannst ja hier schreiben, wenn es am Ende geklappt hat.
    Wichtig: auf die Polung vom Temperatursensor achten!

    LG
    /robin

  6. Jack sagt:

    was würde passieren wenn man einen falschen Widerstand dazwischen hat? Könnte man damit die Sensoren oder sogar den Raspi schrotten, oder erhält man einfach nur keine Daten?

    Gruß Jack

  7. Robin sagt:

    ist nur pi mal Daumen wert und hängt von der Leitungslänge und Leitungsquerschnitt ab. Ich habe immer eine ganze Reihe von Widerständen hier zum testen. Im grunde würde ich 100 OHm 1k, 2k 4,7 k nehmen um zu testen.

    LG
    /robin

  8. Jack sagt:

    das ist ja wahnsinn wie schnell du Antwortest! 🙂

    Wie könnte man das denn herausfinden was für ein Widerstand ich brauche?
    Kann man das Messen oder Berechnen??

    Gruß Jack

  9. Robin sagt:

    Hallo Jack,
    ein Widerstand reicht.
    Die DS18B20 werden praktisch parallel geschaltet.
    Ob es ein 4,7 kOhm ist hängt, von der Leitungslänge ab.
    LG
    /robin

  10. Jack sagt:

    Hallo Robin,

    ist es möglich mehrere Sensoren über den GPIO pin anzuschliessen?
    Müsste man für jeden Sensor einen Widerstand einlöten, oder würde
    ein 4,7kohm Widerstand reichen?

    Danke

    Gruß Jack

  11. Robin sagt:

    Hallo Pinne,
    ich habe damals mal einen Blog-Beitrag für Fhem2Fhem – Lacrosse – Temperatursensoren geschrieben, vielleicht hilft er die weiter:
    http://blog.moneybag.de/fhem-fhem2fhem-und-temperatursensordaten-empfangen/

    LG
    /robin

  12. Pinne sagt:

    Hi, ich habe heute meine neuen DHT22 Sensoren eingebunden um die Räume zu überwachen. Ich möchte diese jetzt via fhem2fhem zusammen führen , weiß aber nicht recht wie…. Habt ihr vielleicht Ideen?

    Vielen Dank

  13. Pingback: Raspi 1-Wire DS18B20 | Bastelhuber

  14. Robin sagt:

    Hallo Mike,
    danke für das positive Feedback über meinen Blog.
    Wenn du viel mit Fhem „spielst“, solltest Du auch öfter ein Backup Deines kompletten Systems machen.
    Ich habe mich mit diesem Thema länger beschäftigt, weil auch die Neigung habe, dauernd alles zu optimieren. Das geht auch öfter daneben. Lese Dir hierzu mal meinen Blog-Beitrag über das Sichern und Wiederherstellen von Backups mit rsync an. Ich habe damit die besten Erfahrungen gemacht.
    Temperatur-Erfassung: Hier kommt es immer auf dem Anwendungsfall an. Meiner Meinung hast Du hier mit den günstigen One-Wire-Temperatursensoren DS18B20 die richtige Wahl getroffen.
    Bei mir messe ich die Temperatur und Luftfeuchtigkeit in den Räumen drahtlos, zum einen über meine S300TH-Sensoren (gibt es leider nicht mehr zu kaufen) und als Nachfolge mit den günstigen LaCrosse-Temperatur-Sensoren (TX-29 DTH), über welche ich auch in einem separaten Blog-Beitrag geschrieben habe.

    LG
    /robin

  15. mike sagt:

    Hi Robin,

    ich beschäftige mich auch schon des längeren mit FHEM, ich hab verschiedenste Konfigurationen, also FHEM auf der 7390 als auch auf dem RPi, mittels FHEM2FEHM und robocopy hole ich mir die Log´s auf dem PC da die Auswertung (erzeugen und navigieren in der Plots) deutlich schneller geht.
    Ich war lange auf der suche nach einer Temperatur Erfassung für verschiedenste Räume und der Heizung (Vor-/Rücklauf und Speichertemperaturen etc.). Deine hier beschriebene Lösung gefällt mir mit am besten. Sie ist funktionell, günstig und vor allen befriedigt sie meinen Spiel und Basteltrieb 😉
    Also Danke für deine Blogs und bitte weiter so.

    Beste Grüße aus Nordhorn

    Mike

  16. Robin sagt:

    Hallo moarli,
    prima, das die Temperaturmessung mit dem Raspberry Pi und dem DS18B20 unter Fhem funktioniert.
    Warum da jetzt kein Plot erscheint kann ich Dir nicht pauschal sagen, ich würde erst mal die Logs anschauen und vielleicht unter dem Menüpunkt „Everything“ das Temperaturmodul suchen.
    LG
    /robin

  17. moarli sagt:

    Hi! Danke für das gelungene Tutorial.
    Ich bin noch ein Fhem-noob. Bei mir hat alles soweit geklappt. Die Temperatur wird unter GPIO4 angezeigt, jedoch bekomm ich kein Plot!

    Was mach ich falsch?

  18. Robin sagt:

    Hallo Mehdorn,
    kein Problem, ich freue mich über jedes Feedback. Viel Spass beim Nachbau. Sag mal Bescheid, ob Du die Auswertung über das RRD-Tool machst oder über Fhem.
    LG
    /robin

  19. Mehdorn sagt:

    Sorry für die Irritation. Hatte das kleine „bottom view“ in meinem Datenblatt übersehen und „top view“ angenommen.

  20. Mehdorn sagt:

    Bei der Darstellung des Sensors im TO92-Gehaeuse hast du die Numerierung verkehrt herum angebracht und entsprechend auch die Kabelfarben verdreht. Wenn man ihn so herum dreht wie im Bild, sind die Pins in der Reihenfolge „3 – 2 -1“ angeordnet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.