mirror of
https://github.com/home-assistant/core.git
synced 2026-04-06 23:47:33 +00:00
Improve mac_address_from_name() function to avoid double discovery of Shelly devices (#153343)
This commit is contained in:
@@ -552,8 +552,15 @@ def percentage_to_brightness(percentage: int) -> int:
|
||||
|
||||
def mac_address_from_name(name: str) -> str | None:
|
||||
"""Convert a name to a mac address."""
|
||||
mac = name.partition(".")[0].partition("-")[-1]
|
||||
return mac.upper() if len(mac) == 12 else None
|
||||
base = name.split(".", 1)[0]
|
||||
if "-" not in base:
|
||||
return None
|
||||
|
||||
mac = base.rsplit("-", 1)[-1]
|
||||
if len(mac) != 12 or not all(char in "0123456789abcdefABCDEF" for char in mac):
|
||||
return None
|
||||
|
||||
return mac.upper()
|
||||
|
||||
|
||||
def get_release_url(gen: int, model: str, beta: bool) -> str | None:
|
||||
|
||||
@@ -34,6 +34,7 @@ from homeassistant.components.shelly.utils import (
|
||||
get_rpc_channel_name,
|
||||
get_rpc_input_triggers,
|
||||
is_block_momentary_input,
|
||||
mac_address_from_name,
|
||||
)
|
||||
from homeassistant.util import dt as dt_util
|
||||
|
||||
@@ -327,3 +328,17 @@ def test_get_release_url(
|
||||
def test_get_host(host: str, expected: str) -> None:
|
||||
"""Test get_host function."""
|
||||
assert get_host(host) == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("name", "result"),
|
||||
[
|
||||
("shelly1pm-AABBCCDDEEFF", "AABBCCDDEEFF"),
|
||||
("Shelly Plus 1 [DDEEFF]", None),
|
||||
("S11-Schlafzimmer", None),
|
||||
("22-Kueche-links", None),
|
||||
],
|
||||
)
|
||||
def test_mac_address_from_name(name: str, result: str | None) -> None:
|
||||
"""Test mac_address_from_name() function."""
|
||||
assert mac_address_from_name(name) == result
|
||||
|
||||
Reference in New Issue
Block a user