Add serial_number attribute to MQTT device properties (#108105)

This commit is contained in:
Jan Bouwhuis 2024-01-16 14:02:34 +01:00 committed by GitHub
parent 7deebf8817
commit 26058bf922
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 24 additions and 0 deletions

View file

@ -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 = {

View file

@ -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"

View file

@ -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]

View file

@ -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",

View file

@ -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",
}, },
} }

View file

@ -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",

View file

@ -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",
}, },
} }