This little pure python module provides a single class to get the temperature of a DS18B20 sensor
It can be easily used on a Rasperry Pi over the GPIO interface.
Author: Timo Furrer tuxtimo@gmail.com
Version: 0.01.03
You just need a DS18B20 temperature sensor.
Some of them can be bought here: Adafruit: DS18B20
I've used a Raspberry Pi with an GPIO Breakout (Pi Cobbler)
git clone https://github.com/timofurrer/ds18b20.git && cd ds18b20
pip install .
Note: maybe root privileges are required
pip install ds18b20
Note: maybe root privileges are required
The usage is very simple and the interface clean..
from ds18b20 import DS18B20
sensor = DS18B20()
temperature_in_celsius = sensor.get_temperature()
temperature_in_fahrenheit = sensor.get_temperature(DS18B20.DEGREES_F)
temperature_in_all_units = sensor.get_temperatures([DS18B20.DEGREES_C, DS18B20.DEGREES_F, DS18B20.KELVIN])
The need kernel modules will be automatically loaded in the constructor of the DS18B20
class.
If something went wrong an exception is raised.
The first found sensor will be taken
The sensor with the ID 00000588806a
will be taken.
from ds18b20 import DS18B20
sensor = DS18B20("00000588806a")
temperature_in_celsius = sensor.get_temperature()
With the get_available_sensors
class-method you can get the ids of all available sensors.
from ds18b20 import DS18B20
sensors = []
for sensor_id in DS18B20.get_available_sensors():
sensors.append(DS18B20(sensor_id))
for sensor in sensors:
print("Sensor %s has temperature %.2f" % (sensor.get_id(), sensor.get_temperature()))
The first path of the above code can be replaced by the get_all_sensors
method:
from ds18b20 import DS18B20
sensors = DS18B20.get_all_sensors()
...
There is a little sample program in the tests
directory.
Just execute it and you will get the temperatures in Kelvin, Degrees Celsius and Degrees Fahrenheit.
$ python example.py
Kelvin: 295.275000
Degrees Celsius: 23.125000
Degrees Fahrenheit: 73.625000
=====================================
Kelvin: 296.025000
Degrees Celsius: 23.875000
Degrees Fahrenheit: 74.975000
=====================================
...
Feel free to contribute!
If you have made any changes and you want to make a pull request
:
- You are a pro to contribute to this repo!
- Please make the tests pass by
make test
- Now you can make the
pull request
- Catch my thank!