mcsakoff / pydigitemp

Python implementation of 1-Wire protocol.
Other
16 stars 11 forks source link
1-wire ds1820 ds18b20

========== PyDigiTemp

Python implementation of 1-Wire protocol.

Originally written to replace digitemp <https://www.digitemp.com/>_ utility in my pet project and get direct access to 1-wire devices. It was created for reading DS1820 temperature sensor connected to RS232 serial port through DS9097 adapter.

Documentation used

Supported Hardware

Bus Drivers

1-Wire Devices

Usage

Find ROM codes for all connected devices::

from digitemp.master import UART_Adapter

print(UART_Adapter('/dev/ttyS0').get_connected_ROMs())
# ['108739A80208006F', '10A75CA80208001A', '2825EA52050000CE']

Get temperature when there is only one 1-wire device on the bus::

from digitemp.master import UART_Adapter
from digitemp.device import TemperatureSensor

sensor = TemperatureSensor(UART_Adapter('/dev/ttyS0'))
sensor.info()
print(sensor.get_temperature())

Get temperature from specific sensor::

from digitemp.master import UART_Adapter
from digitemp.device import TemperatureSensor

bus = UART_Adapter('/dev/ttyS0')
sensor = TemperatureSensor(bus, rom='108739A80208006F')
sensor.info()
print(sensor.get_temperature())

You can directly instantiate a device class to use its features (e.g.: setting resolution)::

from digitemp.device import DS18S20
sensor = DS18S20(bus, precise=False)

or::

from digitemp.device import DS18B20
sensor = DS18B20(bus)
sensor.set_resolution(DS18B20.RES_10_BIT)

digitemp.device module provides following device classes:

See more examples in examples directory.

Schematics

IMPORTANT DISCLAIMER: All circuits presented here are collected from different sources on the Internet and thus are provided on an entirely "as-is and no guarantees" basis. We do not provide a warranty of any kind and cannot be held responsible in any manner.

1-wire serial port interface

See Serial Port Temperature Sensors - Hardware Interface <http://martybugs.net/electronics/tempsensor/hardware.cgi>_ for details.

USB/UART adapter

These are tested:

Not all schematics work in all cases, depending on adapter and cable length.

These are not tested yet:

Thanks

License

Python license. In short, you can use this product in commercial and non-commercial applications, modify it, redistribute it. A notification to the author when you use and/or modify it is welcome.

See the LICENSE file for the actual text of the license.