Good to Know Database

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)

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


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 ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer