Add serial_number attribute to MQTT device properties (#108105)
This commit is contained in:
parent
7deebf8817
commit
26058bf922
7 changed files with 24 additions and 0 deletions
|
@ -271,6 +271,7 @@ DEVICE_ABBREVIATIONS = {
|
||||||
"hw": "hw_version",
|
"hw": "hw_version",
|
||||||
"sw": "sw_version",
|
"sw": "sw_version",
|
||||||
"sa": "suggested_area",
|
"sa": "suggested_area",
|
||||||
|
"sn": "serial_number",
|
||||||
}
|
}
|
||||||
|
|
||||||
ORIGIN_ABBREVIATIONS = {
|
ORIGIN_ABBREVIATIONS = {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
"""Constants used by multiple MQTT modules."""
|
"""Constants used by multiple MQTT modules."""
|
||||||
|
|
||||||
from homeassistant.const import CONF_PAYLOAD, Platform
|
from homeassistant.const import CONF_PAYLOAD, Platform
|
||||||
|
|
||||||
ATTR_DISCOVERY_HASH = "discovery_hash"
|
ATTR_DISCOVERY_HASH = "discovery_hash"
|
||||||
|
@ -7,6 +8,7 @@ ATTR_DISCOVERY_TOPIC = "discovery_topic"
|
||||||
ATTR_PAYLOAD = "payload"
|
ATTR_PAYLOAD = "payload"
|
||||||
ATTR_QOS = "qos"
|
ATTR_QOS = "qos"
|
||||||
ATTR_RETAIN = "retain"
|
ATTR_RETAIN = "retain"
|
||||||
|
ATTR_SERIAL_NUMBER = "serial_number"
|
||||||
ATTR_TOPIC = "topic"
|
ATTR_TOPIC = "topic"
|
||||||
|
|
||||||
CONF_AVAILABILITY = "availability"
|
CONF_AVAILABILITY = "availability"
|
||||||
|
@ -73,6 +75,7 @@ CONF_CONNECTIONS = "connections"
|
||||||
CONF_MANUFACTURER = "manufacturer"
|
CONF_MANUFACTURER = "manufacturer"
|
||||||
CONF_HW_VERSION = "hw_version"
|
CONF_HW_VERSION = "hw_version"
|
||||||
CONF_SW_VERSION = "sw_version"
|
CONF_SW_VERSION = "sw_version"
|
||||||
|
CONF_SERIAL_NUMBER = "serial_number"
|
||||||
CONF_VIA_DEVICE = "via_device"
|
CONF_VIA_DEVICE = "via_device"
|
||||||
CONF_DEPRECATED_VIA_HUB = "via_hub"
|
CONF_DEPRECATED_VIA_HUB = "via_hub"
|
||||||
CONF_SUGGESTED_AREA = "suggested_area"
|
CONF_SUGGESTED_AREA = "suggested_area"
|
||||||
|
|
|
@ -17,6 +17,7 @@ from homeassistant.const import (
|
||||||
ATTR_MANUFACTURER,
|
ATTR_MANUFACTURER,
|
||||||
ATTR_MODEL,
|
ATTR_MODEL,
|
||||||
ATTR_NAME,
|
ATTR_NAME,
|
||||||
|
ATTR_SERIAL_NUMBER,
|
||||||
ATTR_SUGGESTED_AREA,
|
ATTR_SUGGESTED_AREA,
|
||||||
ATTR_SW_VERSION,
|
ATTR_SW_VERSION,
|
||||||
ATTR_VIA_DEVICE,
|
ATTR_VIA_DEVICE,
|
||||||
|
@ -82,6 +83,7 @@ from .const import (
|
||||||
CONF_ORIGIN,
|
CONF_ORIGIN,
|
||||||
CONF_QOS,
|
CONF_QOS,
|
||||||
CONF_SCHEMA,
|
CONF_SCHEMA,
|
||||||
|
CONF_SERIAL_NUMBER,
|
||||||
CONF_SUGGESTED_AREA,
|
CONF_SUGGESTED_AREA,
|
||||||
CONF_SW_VERSION,
|
CONF_SW_VERSION,
|
||||||
CONF_TOPIC,
|
CONF_TOPIC,
|
||||||
|
@ -220,6 +222,7 @@ MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All(
|
||||||
vol.Optional(CONF_MODEL): cv.string,
|
vol.Optional(CONF_MODEL): cv.string,
|
||||||
vol.Optional(CONF_NAME): cv.string,
|
vol.Optional(CONF_NAME): cv.string,
|
||||||
vol.Optional(CONF_HW_VERSION): cv.string,
|
vol.Optional(CONF_HW_VERSION): cv.string,
|
||||||
|
vol.Optional(CONF_SERIAL_NUMBER): cv.string,
|
||||||
vol.Optional(CONF_SW_VERSION): cv.string,
|
vol.Optional(CONF_SW_VERSION): cv.string,
|
||||||
vol.Optional(CONF_VIA_DEVICE): cv.string,
|
vol.Optional(CONF_VIA_DEVICE): cv.string,
|
||||||
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
|
vol.Optional(CONF_SUGGESTED_AREA): cv.string,
|
||||||
|
@ -1103,6 +1106,9 @@ def device_info_from_specifications(
|
||||||
if CONF_HW_VERSION in specifications:
|
if CONF_HW_VERSION in specifications:
|
||||||
info[ATTR_HW_VERSION] = specifications[CONF_HW_VERSION]
|
info[ATTR_HW_VERSION] = specifications[CONF_HW_VERSION]
|
||||||
|
|
||||||
|
if CONF_SERIAL_NUMBER in specifications:
|
||||||
|
info[ATTR_SERIAL_NUMBER] = specifications[CONF_SERIAL_NUMBER]
|
||||||
|
|
||||||
if CONF_SW_VERSION in specifications:
|
if CONF_SW_VERSION in specifications:
|
||||||
info[ATTR_SW_VERSION] = specifications[CONF_SW_VERSION]
|
info[ATTR_SW_VERSION] = specifications[CONF_SW_VERSION]
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ DEFAULT_CONFIG_DEVICE_INFO_ID = {
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"suggested_area": "default_area",
|
"suggested_area": "default_area",
|
||||||
"configuration_url": "http://example.com",
|
"configuration_url": "http://example.com",
|
||||||
|
@ -54,6 +55,7 @@ DEFAULT_CONFIG_DEVICE_INFO_MAC = {
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"suggested_area": "default_area",
|
"suggested_area": "default_area",
|
||||||
"configuration_url": "http://example.com",
|
"configuration_url": "http://example.com",
|
||||||
|
|
|
@ -992,6 +992,7 @@ async def test_entity_device_info_with_connection(
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1008,6 +1009,7 @@ async def test_entity_device_info_with_connection(
|
||||||
assert device.name == "Beer"
|
assert device.name == "Beer"
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.hw_version == "rev1"
|
assert device.hw_version == "rev1"
|
||||||
|
assert device.serial_number == "1234deadbeef"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1031,6 +1033,7 @@ async def test_entity_device_info_with_identifier(
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1045,6 +1048,7 @@ async def test_entity_device_info_with_identifier(
|
||||||
assert device.name == "Beer"
|
assert device.name == "Beer"
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.hw_version == "rev1"
|
assert device.hw_version == "rev1"
|
||||||
|
assert device.serial_number == "1234deadbeef"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
|
|
||||||
|
|
||||||
|
@ -1067,6 +1071,7 @@ async def test_entity_device_info_update(
|
||||||
"manufacturer": "Whatever",
|
"manufacturer": "Whatever",
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -804,6 +804,7 @@ def test_entity_device_info_schema() -> None:
|
||||||
"manufacturer": "Whatever",
|
"manufacturer": "Whatever",
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"configuration_url": "http://example.com",
|
"configuration_url": "http://example.com",
|
||||||
}
|
}
|
||||||
|
@ -819,6 +820,7 @@ def test_entity_device_info_schema() -> None:
|
||||||
"manufacturer": "Whatever",
|
"manufacturer": "Whatever",
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
"via_device": "test-hub",
|
"via_device": "test-hub",
|
||||||
"configuration_url": "http://example.com",
|
"configuration_url": "http://example.com",
|
||||||
|
|
|
@ -460,6 +460,7 @@ async def test_entity_device_info_with_connection(
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -476,6 +477,7 @@ async def test_entity_device_info_with_connection(
|
||||||
assert device.name == "Beer"
|
assert device.name == "Beer"
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.hw_version == "rev1"
|
assert device.hw_version == "rev1"
|
||||||
|
assert device.serial_number == "1234deadbeef"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
|
|
||||||
|
|
||||||
|
@ -496,6 +498,7 @@ async def test_entity_device_info_with_identifier(
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
"hw_version": "rev1",
|
"hw_version": "rev1",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -510,6 +513,7 @@ async def test_entity_device_info_with_identifier(
|
||||||
assert device.name == "Beer"
|
assert device.name == "Beer"
|
||||||
assert device.model == "Glass"
|
assert device.model == "Glass"
|
||||||
assert device.hw_version == "rev1"
|
assert device.hw_version == "rev1"
|
||||||
|
assert device.serial_number == "1234deadbeef"
|
||||||
assert device.sw_version == "0.1-beta"
|
assert device.sw_version == "0.1-beta"
|
||||||
|
|
||||||
|
|
||||||
|
@ -529,6 +533,7 @@ async def test_entity_device_info_update(
|
||||||
"manufacturer": "Whatever",
|
"manufacturer": "Whatever",
|
||||||
"name": "Beer",
|
"name": "Beer",
|
||||||
"model": "Glass",
|
"model": "Glass",
|
||||||
|
"serial_number": "1234deadbeef",
|
||||||
"sw_version": "0.1-beta",
|
"sw_version": "0.1-beta",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue