W1ThermSensor

Gitter

This little pure python module provides a single class to get the temperature of a w1 therm sensor
It can be easily used on are Rasperry Pi, Beagle Bone etc. over the GPIO interface.


Build Status codecov.io Code Climate Code Health PyPI version PyPI

Author: Timo Furrer tuxtimo@gmail.com
Version: 0.3.0
License: MIT

New: use w1thermsensor as a CLI tool! - Since version 0.3.0

Supported devices

The following w1 therm sensor devices are supported:

Setup

You just need a w1 therm sensor.
Some of them can be bought here: Adafruit: DS18B20
I've used a Raspberry Pi with an GPIO Breakout (Pi Cobbler). Other hardware like the Beagle Bone are supported, too.

Installation

From PIP

This possibility is supported on all distribution:

pip install w1thermsensor

Note: maybe root privileges are required

On Raspbian using apt-get

If you are using the w1thermsensor module on a Rasperry Pi running raspbian you can install it from the offical repository:

sudo apt-get install python-w1thermsensor

Or if you are using python 3:

sudo apt-get install python3-w1thermsensor

Create debian packages

For python 2:

python setup.py --command-packages=stdeb.command bdist_deb

For python 3:

python3 setup.py --command-packages=stdeb.command bdist_deb

From Source

git clone https://github.com/timofurrer/w1thermsensor.git && cd w1thermsensor
python setup.py install

Note: maybe root privileges are required

Usage as python package

The usage is very simple and the interface clean.. All examples are with the DS18B20 sensor - It works the same way for the other supported devices.

Basic usage with one sensor (implicit)

from w1thermsensor import W1ThermSensor

sensor = W1ThermSensor()
temperature_in_celsius = sensor.get_temperature()
temperature_in_fahrenheit = sensor.get_temperature(W1ThermSensor.DEGREES_F)
temperature_in_all_units = sensor.get_temperatures([W1ThermSensor.DEGREES_C, W1ThermSensor.DEGREES_F, W1ThermSensor.KELVIN])

The need kernel modules will be automatically loaded in the constructor of the W1ThermSensor class.
If something went wrong an exception is raised.

The first found sensor will be taken

Basic usage with one sensor (explicit)

The DS18B20 sensor with the ID 00000588806a will be taken.

from w1thermsensor import W1ThermSensor

sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, "00000588806a")
temperature_in_celsius = sensor.get_temperature()

Multiple sensors

With the get_available_sensors class-method you can get the ids of all available sensors.

from w1thermsensor import W1ThermSensor

for sensor in W1ThermSensor.get_available_sensors():
    print("Sensor %s has temperature %.2f" % (sensor.id, sensor.get_temperature()))

Only sensors of a specific therm sensor type:

from w1thermsensor import W1ThermSensor

for sensor in W1ThermSensor.get_available_sensors([W1ThermSensor.THERM_SENSOR_DS18B20]):
    print("Sensor %s has temperature %.2f" % (sensor.id, sensor.get_temperature()))

Usage as CLI tool

The w1thermsensor module can be used as CLI tool since version 0.3.0.

List sensors

List all available sensors:

$ w1thermsensor ls
$ w1thermsensor ls --json  # show results in JSON format

List only sensors of a specific type:

$ w1thermsensor ls --type DS1822
$ w1thermsensor ls --type DS1822 --type MAX31850K  # specify multiple sensor types
$ w1thermsensor ls --type DS1822 --json  # show results in JSON format

Show temperatures

Show temperature of all available sensors: (Same synopsis as ls)

$ w1thermsensor all --type DS1822
$ w1thermsensor all --type DS1822 --type MAX31850K  # specify multiple sensor types
$ w1thermsensor all --type DS1822 --json  # show results in JSON format

Show temperature of a single sensor:

$ w1thermsensor get 1  # 1 is the id obtained by the ls command
$ w1thermsensor get --hwid 00000588806a --type DS18B20
$ w1thermsensor get 1  # show results in JSON format

Contribution

Feel free to contribute! If you have made any changes and you want to make a pull request:

  1. You are a pro to contribute to this repo!
  2. Please make the tests pass by make tests
  3. Now you can make the pull request
  4. Catch my thank!