Add support for DS2760 1-Wire TypeK Thermocouple (#63222)

* Add support for DS2760 1-Wire TypeK Thermocouple

* Add test mockup sensor for DS2760 to tests

* Add support for changing of thermocouple type through override_key

* Fix broken test for DS2760 Thermocouple

* Remove unnecessary test-attribute for DS2760 Thermocouple

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
This commit is contained in:
Per Öberg 2022-01-25 13:53:37 +01:00 committed by GitHub
parent 7b8bbc37df
commit 81000db713
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 89 additions and 1 deletions

View file

@ -28,6 +28,7 @@ DEVICE_SUPPORT_OWSERVER = {
"26": (), "26": (),
"28": (), "28": (),
"29": (), "29": (),
"30": (),
"3A": (), "3A": (),
"3B": (), "3B": (),
"42": (), "42": (),

View file

@ -54,6 +54,8 @@ from .onewirehub import OneWireHub
class OneWireSensorEntityDescription(OneWireEntityDescription, SensorEntityDescription): class OneWireSensorEntityDescription(OneWireEntityDescription, SensorEntityDescription):
"""Class describing OneWire sensor entities.""" """Class describing OneWire sensor entities."""
override_key: str | None = None
SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION = OneWireSensorEntityDescription( SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION = OneWireSensorEntityDescription(
key="temperature", key="temperature",
@ -184,6 +186,37 @@ DEVICE_SENSORS: dict[str, tuple[OneWireSensorEntityDescription, ...]] = {
), ),
), ),
"28": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,), "28": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,),
"30": (
SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,
OneWireSensorEntityDescription(
key="typeX/temperature",
device_class=SensorDeviceClass.TEMPERATURE,
entity_registry_enabled_default=False,
name="Thermocouple temperature",
native_unit_of_measurement=TEMP_CELSIUS,
read_mode=READ_MODE_FLOAT,
override_key="typeK/temperature",
state_class=SensorStateClass.MEASUREMENT,
),
OneWireSensorEntityDescription(
key="volt",
device_class=SensorDeviceClass.VOLTAGE,
entity_registry_enabled_default=False,
name="Voltage",
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
read_mode=READ_MODE_FLOAT,
state_class=SensorStateClass.MEASUREMENT,
),
OneWireSensorEntityDescription(
key="vis",
device_class=SensorDeviceClass.VOLTAGE,
entity_registry_enabled_default=False,
name="vis",
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
read_mode=READ_MODE_FLOAT,
state_class=SensorStateClass.MEASUREMENT,
),
),
"3B": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,), "3B": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,),
"42": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,), "42": (SIMPLE_TEMPERATURE_SENSOR_DESCRIPTION,),
"1D": tuple( "1D": tuple(
@ -368,7 +401,8 @@ def get_entities(
description.native_unit_of_measurement = PERCENTAGE description.native_unit_of_measurement = PERCENTAGE
description.name = f"Wetness {s_id}" description.name = f"Wetness {s_id}"
device_file = os.path.join( device_file = os.path.join(
os.path.split(device.path)[0], description.key os.path.split(device.path)[0],
description.override_key or description.key,
) )
name = f"{device_id} {description.name}" name = f"{device_id} {description.name}"
entities.append( entities.append(

View file

@ -618,6 +618,59 @@ MOCK_OWPROXY_DEVICES = {
}, },
], ],
}, },
"30.111111111111": {
ATTR_INJECT_READS: [
b"DS2760", # read device type
],
ATTR_DEVICE_INFO: {
ATTR_IDENTIFIERS: {(DOMAIN, "30.111111111111")},
ATTR_MANUFACTURER: MANUFACTURER_MAXIM,
ATTR_MODEL: "DS2760",
ATTR_NAME: "30.111111111111",
},
Platform.SENSOR: [
{
ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE,
ATTR_ENTITY_ID: "sensor.30_111111111111_temperature",
ATTR_INJECT_READS: b" 26.984",
ATTR_STATE: "27.0",
ATTR_STATE_CLASS: SensorStateClass.MEASUREMENT,
ATTR_UNIQUE_ID: "/30.111111111111/temperature",
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
},
{
ATTR_DEFAULT_DISABLED: True,
ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE,
ATTR_DEVICE_FILE: "/30.111111111111/typeK/temperature",
ATTR_ENTITY_ID: "sensor.30_111111111111_thermocouple_temperature",
ATTR_INJECT_READS: b" 173.7563",
ATTR_STATE: "173.8",
ATTR_STATE_CLASS: SensorStateClass.MEASUREMENT,
ATTR_UNIQUE_ID: "/30.111111111111/typeX/temperature",
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
},
{
ATTR_DEFAULT_DISABLED: True,
ATTR_DEVICE_CLASS: SensorDeviceClass.VOLTAGE,
ATTR_ENTITY_ID: "sensor.30_111111111111_voltage",
ATTR_INJECT_READS: b" 2.97",
ATTR_STATE: "3.0",
ATTR_STATE_CLASS: SensorStateClass.MEASUREMENT,
ATTR_UNIQUE_ID: "/30.111111111111/volt",
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_POTENTIAL_VOLT,
},
{
ATTR_DEFAULT_DISABLED: True,
ATTR_DEVICE_CLASS: SensorDeviceClass.VOLTAGE,
ATTR_ENTITY_ID: "sensor.30_111111111111_vis",
ATTR_INJECT_READS: b" 0.12",
ATTR_STATE: "0.1",
ATTR_STATE_CLASS: SensorStateClass.MEASUREMENT,
ATTR_UNIQUE_ID: "/30.111111111111/vis",
ATTR_UNIT_OF_MEASUREMENT: ELECTRIC_POTENTIAL_VOLT,
},
],
},
"3A.111111111111": { "3A.111111111111": {
ATTR_INJECT_READS: [ ATTR_INJECT_READS: [
b"DS2413", # read device type b"DS2413", # read device type