Für Außentemperaturmessungen habe ich gute Erfahrungen mit dem wasserfesten Sensor DS18S20 gemacht. Dabei handelt es sich um einen 1-wire-Anschluss mit drei Kontakten. Mehrere Sensoren können parallel damit betrieben werden.
Der Sensor wird an 3.3V (rot), GND (schwarz) und GPIO4 (gelb) angeschlossen. Zwischen 3.3V und GPIO4 wird ein Widerstand von 4.7 k angeschlossen.
1. Vorbereitung für den 1-Wire-Anschluss:
sudo modprobe w1-gpio sudo modprobe w1-therm
Prüfen, ob alles geklappt hat:
lsmod
Nun Module dauerhaft beim Start laden:
sudo vi /etc/modules w1_gpio w1_therm
Sensor-ID lesen
ls /sys/bus/w1/devices/ 28-041750b734ff <---- w1_bus_master1
Anzeige der Sensordaten in der Bash:
cat /sys/bus/w1/devices/28-041750b734ff/w1-slave 4e 00 4b 46 7f ff 0c 10 38 : crc=38 YES 4e 00 4b 46 7f ff 0c 10 38 t=4875
Die Angabe t=4875 ist die Temperatur in milliCelsius.
2. Temperaturabfrage mit Python
#!/usr/bin/python3 # coding=utf-8 import os, sys def aktuelleTemperatur(): # 1-wire Slave Datei lesen file = open('/sys/bus/w1/devices/28-041750b734ff/w1_slave') filecontent = file.read() file.close() # Temperaturwerte auslesen und zurückgeben stringvalue = filecontent.split("\n")[1].split(" ")[9] temperature = float(stringvalue[2:]) / 1000 return(temperature) # Temperatur ausgeben print("Temperatur = {0:0.3f} C".format(aktuelleTemperatur())