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
DS1820 / DS18S20 / DS1920 - High-Precision Temperature Sensor.
DS18B20 - Programmable Resolution Temperature Sensor.
DS1822 - Econo Temperature Sensor.
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.
Metadata
Release files for pydigitemp 1.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydigitemp-1.4.1.tar.gz | 13.0 kB | Details |
Release files / pydigitemp-1.4.1.tar.gz
| Download URL | pydigitemp-1.4.1.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0a852bf99580fa7bb3c8d2cb0a6802ca34b32290855246c1d23db014be5f98b
|
|
BLAKE2b-256 checksum How to use checksums |
3e81e84bac917e7ac406a11e4f7e89eda63e8a510ca5e0859dc447d5a241da21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|