mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 06:07:17 +00:00
Expose entity device temperature from cluster in ZHA (#64189)
* expose device temperature sensor in frontend * fixes after runnig test * specified device temp channel * add dev temp int test device aqara water * black fix
This commit is contained in:
parent
b3a8ac8932
commit
4e376181f5
@ -18,6 +18,8 @@ from ..const import (
|
|||||||
REPORT_CONFIG_BATTERY_SAVE,
|
REPORT_CONFIG_BATTERY_SAVE,
|
||||||
REPORT_CONFIG_DEFAULT,
|
REPORT_CONFIG_DEFAULT,
|
||||||
REPORT_CONFIG_IMMEDIATE,
|
REPORT_CONFIG_IMMEDIATE,
|
||||||
|
REPORT_CONFIG_MAX_INT,
|
||||||
|
REPORT_CONFIG_MIN_INT,
|
||||||
SIGNAL_ATTR_UPDATED,
|
SIGNAL_ATTR_UPDATED,
|
||||||
SIGNAL_MOVE_LEVEL,
|
SIGNAL_MOVE_LEVEL,
|
||||||
SIGNAL_SET_LEVEL,
|
SIGNAL_SET_LEVEL,
|
||||||
@ -170,6 +172,13 @@ class Commissioning(ZigbeeChannel):
|
|||||||
class DeviceTemperature(ZigbeeChannel):
|
class DeviceTemperature(ZigbeeChannel):
|
||||||
"""Device Temperature channel."""
|
"""Device Temperature channel."""
|
||||||
|
|
||||||
|
REPORT_CONFIG = [
|
||||||
|
{
|
||||||
|
"attr": "current_temperature",
|
||||||
|
"config": (REPORT_CONFIG_MIN_INT, REPORT_CONFIG_MAX_INT, 50),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.GreenPowerProxy.cluster_id)
|
@registries.ZIGBEE_CHANNEL_REGISTRY.register(general.GreenPowerProxy.cluster_id)
|
||||||
class GreenPowerProxy(ZigbeeChannel):
|
class GreenPowerProxy(ZigbeeChannel):
|
||||||
|
@ -70,6 +70,7 @@ CHANNEL_ATTRIBUTE = "attribute"
|
|||||||
CHANNEL_BASIC = "basic"
|
CHANNEL_BASIC = "basic"
|
||||||
CHANNEL_COLOR = "light_color"
|
CHANNEL_COLOR = "light_color"
|
||||||
CHANNEL_COVER = "window_covering"
|
CHANNEL_COVER = "window_covering"
|
||||||
|
CHANNEL_DEVICE_TEMPERATURE = "device_temperature"
|
||||||
CHANNEL_DOORLOCK = "door_lock"
|
CHANNEL_DOORLOCK = "door_lock"
|
||||||
CHANNEL_ELECTRICAL_MEASUREMENT = "electrical_measurement"
|
CHANNEL_ELECTRICAL_MEASUREMENT = "electrical_measurement"
|
||||||
CHANNEL_EVENT_RELAY = "event_relay"
|
CHANNEL_EVENT_RELAY = "event_relay"
|
||||||
|
@ -52,6 +52,7 @@ from .core import discovery
|
|||||||
from .core.const import (
|
from .core.const import (
|
||||||
CHANNEL_ANALOG_INPUT,
|
CHANNEL_ANALOG_INPUT,
|
||||||
CHANNEL_BASIC,
|
CHANNEL_BASIC,
|
||||||
|
CHANNEL_DEVICE_TEMPERATURE,
|
||||||
CHANNEL_ELECTRICAL_MEASUREMENT,
|
CHANNEL_ELECTRICAL_MEASUREMENT,
|
||||||
CHANNEL_HUMIDITY,
|
CHANNEL_HUMIDITY,
|
||||||
CHANNEL_ILLUMINANCE,
|
CHANNEL_ILLUMINANCE,
|
||||||
@ -496,6 +497,18 @@ class Temperature(Sensor):
|
|||||||
_unit = TEMP_CELSIUS
|
_unit = TEMP_CELSIUS
|
||||||
|
|
||||||
|
|
||||||
|
@MULTI_MATCH(channel_names=CHANNEL_DEVICE_TEMPERATURE)
|
||||||
|
class DeviceTemperature(Sensor):
|
||||||
|
"""Device Temperature Sensor."""
|
||||||
|
|
||||||
|
SENSOR_ATTR = "current_temperature"
|
||||||
|
_attr_device_class: SensorDeviceClass = SensorDeviceClass.TEMPERATURE
|
||||||
|
_attr_state_class: SensorStateClass = SensorStateClass.MEASUREMENT
|
||||||
|
_divisor = 100
|
||||||
|
_unit = TEMP_CELSIUS
|
||||||
|
_attr_entity_category = EntityCategory.DIAGNOSTIC
|
||||||
|
|
||||||
|
|
||||||
@MULTI_MATCH(channel_names="carbon_dioxide_concentration")
|
@MULTI_MATCH(channel_names="carbon_dioxide_concentration")
|
||||||
class CarbonDioxideConcentration(Sensor):
|
class CarbonDioxideConcentration(Sensor):
|
||||||
"""Carbon Dioxide Concentration sensor."""
|
"""Carbon Dioxide Concentration sensor."""
|
||||||
|
@ -101,6 +101,7 @@ async def poll_control_device(zha_device_restored, zigpy_device_mock):
|
|||||||
[
|
[
|
||||||
(0x0000, 0, {}),
|
(0x0000, 0, {}),
|
||||||
(0x0001, 1, {"battery_voltage", "battery_percentage_remaining"}),
|
(0x0001, 1, {"battery_voltage", "battery_percentage_remaining"}),
|
||||||
|
(0x0002, 1, {"current_temperature"}),
|
||||||
(0x0003, 0, {}),
|
(0x0003, 0, {}),
|
||||||
(0x0004, 0, {}),
|
(0x0004, 0, {}),
|
||||||
(0x0005, 1, {}),
|
(0x0005, 1, {}),
|
||||||
@ -203,6 +204,7 @@ async def test_in_channel_config(
|
|||||||
[
|
[
|
||||||
(0x0000, 0),
|
(0x0000, 0),
|
||||||
(0x0001, 1),
|
(0x0001, 1),
|
||||||
|
(0x0002, 1),
|
||||||
(0x0003, 0),
|
(0x0003, 0),
|
||||||
(0x0004, 0),
|
(0x0004, 0),
|
||||||
(0x0005, 1),
|
(0x0005, 1),
|
||||||
|
@ -241,6 +241,12 @@ async def async_test_powerconfiguration(hass, cluster, entity_id):
|
|||||||
assert hass.states.get(entity_id).attributes["battery_voltage"] == 2.0
|
assert hass.states.get(entity_id).attributes["battery_voltage"] == 2.0
|
||||||
|
|
||||||
|
|
||||||
|
async def async_test_device_temperature(hass, cluster, entity_id):
|
||||||
|
"""Test temperature sensor."""
|
||||||
|
await send_attributes_report(hass, cluster, {0: 2900})
|
||||||
|
assert_state(hass, entity_id, "29.0", TEMP_CELSIUS)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"cluster_id, entity_suffix, test_func, report_count, read_plug, unsupported_attrs",
|
"cluster_id, entity_suffix, test_func, report_count, read_plug, unsupported_attrs",
|
||||||
(
|
(
|
||||||
@ -350,6 +356,14 @@ async def async_test_powerconfiguration(hass, cluster, entity_id):
|
|||||||
},
|
},
|
||||||
None,
|
None,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
general.DeviceTemperature.cluster_id,
|
||||||
|
"device_temperature",
|
||||||
|
async_test_device_temperature,
|
||||||
|
1,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
async def test_sensor(
|
async def test_sensor(
|
||||||
|
@ -2237,6 +2237,7 @@ DEVICES = [
|
|||||||
"switch.lumi_lumi_plug_maus01_77665544_on_off",
|
"switch.lumi_lumi_plug_maus01_77665544_on_off",
|
||||||
"sensor.lumi_lumi_plug_maus01_77665544_basic_rssi",
|
"sensor.lumi_lumi_plug_maus01_77665544_basic_rssi",
|
||||||
"sensor.lumi_lumi_plug_maus01_77665544_basic_lqi",
|
"sensor.lumi_lumi_plug_maus01_77665544_basic_lqi",
|
||||||
|
"sensor.lumi_lumi_plug_maus01_77665544_device_temperature",
|
||||||
],
|
],
|
||||||
DEV_SIG_ENT_MAP: {
|
DEV_SIG_ENT_MAP: {
|
||||||
("switch", "00:11:22:33:44:55:66:77-1"): {
|
("switch", "00:11:22:33:44:55:66:77-1"): {
|
||||||
@ -2244,6 +2245,11 @@ DEVICES = [
|
|||||||
DEV_SIG_ENT_MAP_CLASS: "Switch",
|
DEV_SIG_ENT_MAP_CLASS: "Switch",
|
||||||
DEV_SIG_ENT_MAP_ID: "switch.lumi_lumi_plug_maus01_77665544_on_off",
|
DEV_SIG_ENT_MAP_ID: "switch.lumi_lumi_plug_maus01_77665544_on_off",
|
||||||
},
|
},
|
||||||
|
("sensor", "00:11:22:33:44:55:66:77-1-2"): {
|
||||||
|
DEV_SIG_CHANNELS: ["device_temperature"],
|
||||||
|
DEV_SIG_ENT_MAP_CLASS: "DeviceTemperature",
|
||||||
|
DEV_SIG_ENT_MAP_ID: "sensor.lumi_lumi_plug_maus01_77665544_device_temperature",
|
||||||
|
},
|
||||||
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
||||||
DEV_SIG_CHANNELS: ["identify"],
|
DEV_SIG_CHANNELS: ["identify"],
|
||||||
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
||||||
@ -2328,6 +2334,7 @@ DEVICES = [
|
|||||||
"sensor.lumi_lumi_relay_c2acn01_77665544_electrical_measurement_rms_voltage",
|
"sensor.lumi_lumi_relay_c2acn01_77665544_electrical_measurement_rms_voltage",
|
||||||
"sensor.lumi_lumi_relay_c2acn01_77665544_basic_rssi",
|
"sensor.lumi_lumi_relay_c2acn01_77665544_basic_rssi",
|
||||||
"sensor.lumi_lumi_relay_c2acn01_77665544_basic_lqi",
|
"sensor.lumi_lumi_relay_c2acn01_77665544_basic_lqi",
|
||||||
|
"sensor.lumi_lumi_relay_c2acn01_77665544_device_temperature",
|
||||||
],
|
],
|
||||||
DEV_SIG_ENT_MAP: {
|
DEV_SIG_ENT_MAP: {
|
||||||
("light", "00:11:22:33:44:55:66:77-1"): {
|
("light", "00:11:22:33:44:55:66:77-1"): {
|
||||||
@ -2335,6 +2342,11 @@ DEVICES = [
|
|||||||
DEV_SIG_ENT_MAP_CLASS: "Light",
|
DEV_SIG_ENT_MAP_CLASS: "Light",
|
||||||
DEV_SIG_ENT_MAP_ID: "light.lumi_lumi_relay_c2acn01_77665544_on_off",
|
DEV_SIG_ENT_MAP_ID: "light.lumi_lumi_relay_c2acn01_77665544_on_off",
|
||||||
},
|
},
|
||||||
|
("sensor", "00:11:22:33:44:55:66:77-1-2"): {
|
||||||
|
DEV_SIG_CHANNELS: ["device_temperature"],
|
||||||
|
DEV_SIG_ENT_MAP_CLASS: "DeviceTemperature",
|
||||||
|
DEV_SIG_ENT_MAP_ID: "sensor.lumi_lumi_relay_c2acn01_77665544_device_temperature",
|
||||||
|
},
|
||||||
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
||||||
DEV_SIG_CHANNELS: ["identify"],
|
DEV_SIG_CHANNELS: ["identify"],
|
||||||
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
||||||
@ -3453,7 +3465,7 @@ DEVICES = [
|
|||||||
1: {
|
1: {
|
||||||
SIG_EP_TYPE: 1026,
|
SIG_EP_TYPE: 1026,
|
||||||
DEV_SIG_EP_ID: 1,
|
DEV_SIG_EP_ID: 1,
|
||||||
SIG_EP_INPUT: [0, 1, 3, 1280],
|
SIG_EP_INPUT: [0, 1, 2, 3, 1280],
|
||||||
SIG_EP_OUTPUT: [25],
|
SIG_EP_OUTPUT: [25],
|
||||||
SIG_EP_PROFILE: 260,
|
SIG_EP_PROFILE: 260,
|
||||||
},
|
},
|
||||||
@ -3465,6 +3477,7 @@ DEVICES = [
|
|||||||
"binary_sensor.lumi_lumi_sensor_wleak_aq1_77665544_ias_zone",
|
"binary_sensor.lumi_lumi_sensor_wleak_aq1_77665544_ias_zone",
|
||||||
"sensor.lumi_lumi_sensor_wleak_aq1_77665544_basic_rssi",
|
"sensor.lumi_lumi_sensor_wleak_aq1_77665544_basic_rssi",
|
||||||
"sensor.lumi_lumi_sensor_wleak_aq1_77665544_basic_lqi",
|
"sensor.lumi_lumi_sensor_wleak_aq1_77665544_basic_lqi",
|
||||||
|
"sensor.lumi_lumi_sensor_wleak_aq1_77665544_device_temperature",
|
||||||
],
|
],
|
||||||
DEV_SIG_ENT_MAP: {
|
DEV_SIG_ENT_MAP: {
|
||||||
("binary_sensor", "00:11:22:33:44:55:66:77-1-1280"): {
|
("binary_sensor", "00:11:22:33:44:55:66:77-1-1280"): {
|
||||||
@ -3472,6 +3485,11 @@ DEVICES = [
|
|||||||
DEV_SIG_ENT_MAP_CLASS: "IASZone",
|
DEV_SIG_ENT_MAP_CLASS: "IASZone",
|
||||||
DEV_SIG_ENT_MAP_ID: "binary_sensor.lumi_lumi_sensor_wleak_aq1_77665544_ias_zone",
|
DEV_SIG_ENT_MAP_ID: "binary_sensor.lumi_lumi_sensor_wleak_aq1_77665544_ias_zone",
|
||||||
},
|
},
|
||||||
|
("sensor", "00:11:22:33:44:55:66:77-1-2"): {
|
||||||
|
DEV_SIG_CHANNELS: ["device_temperature"],
|
||||||
|
DEV_SIG_ENT_MAP_CLASS: "DeviceTemperature",
|
||||||
|
DEV_SIG_ENT_MAP_ID: "sensor.lumi_lumi_sensor_wleak_aq1_77665544_device_temperature",
|
||||||
|
},
|
||||||
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
("button", "00:11:22:33:44:55:66:77-1-3"): {
|
||||||
DEV_SIG_CHANNELS: ["identify"],
|
DEV_SIG_CHANNELS: ["identify"],
|
||||||
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
DEV_SIG_ENT_MAP_CLASS: "ZHAIdentifyButton",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user