Source code for herosdevices.hardware.analog_devices.ds18b20
"""Module for ds18b20 temperature sensor probe representations."""
from herosdevices.core.bus import OneWire
from herosdevices.core.bus.onewire import W1ThermBusConsumer
from herosdevices.helper import mark_driver
from herosdevices.interfaces.atomiq import Measurable
[docs]
@mark_driver(
state="beta",
info="Temperature Sensor -55°C to 125°C",
product_page="https://www.analog.com/en/products/ds18b20.html",
)
class DS18B20(OneWire, Measurable):
"""One wire temperature sensor type DS18B20."""
_default_observables = [("temperature", float, "mdegC")]
[docs]
def measure(self) -> float:
"""Implement atomiq measure interface."""
return float(self._read_content(self.sysfs_path / "temperature"))
[docs]
@mark_driver(
state="beta",
info="Temperature Sensor -55°C to 125°C (via a shared OneWireBusMaster)",
product_page="https://www.analog.com/en/products/ds18b20.html",
)
class DS18B20BusConsumer(W1ThermBusConsumer, Measurable):
"""DS18B20 temperature sensor, read from a shared OneWireBusMaster's cache instead of sysfs directly."""
[docs]
def measure(self) -> float:
"""Implement atomiq measure interface."""
return float(self.bus_master.read(self.device_id))