Skip to main content

Python implementation of 1-Wire protocol

Project description

Python implementation of 1-Wire protocol.

Originally written to replace digitemp 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

  • DS9097 - COM port adapter which performs RS-232C level conversion.

  • Custom 1-wire serial port interface (see below).

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:

  • DS18S20 - for DS1820, DS18S20 and DS1920 High-Precision Temperature Sensors (family code: 0x10);

  • DS18B20 - for DS18B20 Programmable Resolution Temperature Sensors (family code: 0x28);

  • DS1822 - for DS1822 Econo Temperature Sensor (family code: 0x22)

  • DS1820, DS1920 - are aliases for DS18S20

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 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

  • Slavko for SVG schematics and testing.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydigitemp-1.4.1.tar.gz (13.0 kB view details)

Uploaded Source

File details

Details for the file pydigitemp-1.4.1.tar.gz.

File metadata

  • Download URL: pydigitemp-1.4.1.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.6.1 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.4

File hashes

Hashes for pydigitemp-1.4.1.tar.gz
Algorithm Hash digest
SHA256 d0a852bf99580fa7bb3c8d2cb0a6802ca34b32290855246c1d23db014be5f98b
MD5 beba1b7d947f7987ad73e8779ca03d90
BLAKE2b-256 3e81e84bac917e7ac406a11e4f7e89eda63e8a510ca5e0859dc447d5a241da21

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page