Raspbian Wheezy: DS18S20/DS18B20 1-Wire Sensoren mit Python auslesen
Sollten Sie wie auf der Seite Raspbian Wheezy: Temperaturmessung mit DS18S20/DS18B20 1-Wire Sensoren beschrieben, Ihren Raspberry Pi mit DS18S20 beziehungsweise DS18B20 Temperatursensoren erweitert haben, können Sie das folgende Python-Skript verwenden um die Messwerte aller Sensoren zu ermitteln. Das Python-Skript liest dazu die Datei /sys/devices/w1_bus_master1/w1_master_slaves ein um so eine Liste mit allen Sensoren zu erhalten. Anschließend werden die Sensoren der Reihe nach ausgelesen und der jeweilige Messwert ausgegeben.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Creation: 02.01.2013
# Last Update: 07.04.2015
#
# Copyright (c) 2013-2015 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# import sys module
import sys
# open 1-wire slaves list for reading
file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
# read 1-wire slaves list
w1_slaves = file.readlines()
# close 1-wire slaves list
file.close()
# print header for results table
print("Sensor ID | Temperature")
print("-----------------------------")
# repeat following steps with each 1-wire slave
for line in w1_slaves:
# extract 1-wire slave
w1_slave = line.split("\n")[0]
# open 1-wire slave file
file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
# read content from 1-wire slave file
filecontent = file.read()
# close 1-wire slave file
file.close()
# extract temperature string
stringvalue = filecontent.split("\n")[1].split(" ")[9]
# convert temperature value
temperature = float(stringvalue[2:]) / 1000
# print temperature
print(str(w1_slave) + " | %5.3f °C" % temperature)
# quit python script
sys.exit(0)
# -*- coding: utf-8 -*-
#
# Creation: 02.01.2013
# Last Update: 07.04.2015
#
# Copyright (c) 2013-2015 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# import sys module
import sys
# open 1-wire slaves list for reading
file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
# read 1-wire slaves list
w1_slaves = file.readlines()
# close 1-wire slaves list
file.close()
# print header for results table
print("Sensor ID | Temperature")
print("-----------------------------")
# repeat following steps with each 1-wire slave
for line in w1_slaves:
# extract 1-wire slave
w1_slave = line.split("\n")[0]
# open 1-wire slave file
file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
# read content from 1-wire slave file
filecontent = file.read()
# close 1-wire slave file
file.close()
# extract temperature string
stringvalue = filecontent.split("\n")[1].split(" ")[9]
# convert temperature value
temperature = float(stringvalue[2:]) / 1000
# print temperature
print(str(w1_slave) + " | %5.3f °C" % temperature)
# quit python script
sys.exit(0)
Der Aufruf des Python-Skriptes erfolgt wie folgt und liefert die jeweiligen Messwerte in einer tabellarischen Darstellung zurück.
pi@raspberrypi ~ $ python temperature.py
Sensor ID | Temperature
-----------------------------
10-000801e17146 | 21.562 °C
10-000801e17bc6 | 21.312 °C
10-000801e18e20 | 21.937 °C
Sensor ID | Temperature
-----------------------------
10-000801e17146 | 21.562 °C
10-000801e17bc6 | 21.312 °C
10-000801e18e20 | 21.937 °C
Dieser Eintrag wurde am 02.01.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_31_2040.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer