Skip to content

Commit

Permalink
Breaking change: Use device class in unique id if entity has no name.
Browse files Browse the repository at this point in the history
Issue #871.  To make use of Home Assistant provided translations, it
would be good to remove as many names from entities as possible.  To
distinguish between multiple entities of the same type without names,
we need to use something other than the name in the identifier.

This will break existing configs, so a migration will need to be
written if possible to transfer entities to their new id.
  • Loading branch information
make-all committed Jul 29, 2023
1 parent f253181 commit e90be52
Show file tree
Hide file tree
Showing 24 changed files with 28 additions and 25 deletions.
2 changes: 1 addition & 1 deletion custom_components/tuya_local/helpers/device_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ def entity(self):
@property
def config_id(self):
"""The identifier for this entity in the config."""
own_name = self.name
own_name = self._config.get("name", self.device_class)
if own_name:
return f"{self.entity}_{slugify(own_name)}"

Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_avatto_blinds.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class TestAvattoBlinds(MultiSensorTests, BasicSelectTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("avatto_roller_blinds.yaml", AVATTO_BLINDS_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_blind"]
self.setUpMultiSensors(
[
{
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_avatto_curtain_switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def setUp(self):
"avatto_curtain_switch.yaml",
AVATTO_CURTAIN_PAYLOAD,
)
self.subject = self.entities.get("cover")
self.subject = self.entities.get("cover_curtain")
self.setUpBasicLight(
BACKLIGHT_DP,
self.entities.get("light_backlight"),
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_digoo_dgsp01_dual_nightlight_switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def setUp(self):
"digoo_dgsp01_dual_nightlight_switch.yaml",
DIGOO_DGSP01_SOCKET_PAYLOAD,
)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.light = self.entities.get("light_night_light")

self.setUpBasicSwitch(
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_eanons_humidifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TestEanonsHumidifier(

def setUp(self):
self.setUpForConfig("eanons_humidifier.yaml", EANONS_HUMIDIFIER_PAYLOAD)
self.subject = self.entities.get("humidifier")
self.subject = self.entities.get("humidifier_humidifier")
self.setUpSwitchable(HVACMODE_DPS, self.subject)
self.fan = self.entities.get("fan_intensity")
self.setUpBasicSwitch(SWITCH_DPS, self.entities.get("switch_uv_sterilization"))
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_garage_door_opener.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class TestSimpleGarageOpener(TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("garage_door_opener.yaml", SIMPLE_GARAGE_DOOR_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_garage"]

def test_device_class_is_garage(self):
self.assertEqual(self.subject.device_class, CoverDeviceClass.GARAGE)
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_kogan_garage_door_opener.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class TestKoganGarageOpener(

def setUp(self):
self.setUpForConfig("kogan_garage_opener.yaml", KOGAN_GARAGE_DOOR_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_garage"]
self.setUpBasicBinarySensor(
LEFTOPEN_DPS,
self.entities.get("binary_sensor_door_open"),
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_m027_curtain.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class TestM027Curtains(MultiSensorTests, BasicSelectTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("m027_curtain.yaml", M027_CURTAIN_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_curtain"]
self.setUpMultiSensors(
[
{
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_moes_rgb_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def setUp(self):

self.setUpBasicSwitch(
SWITCH_DPS,
self.entities.get("switch"),
self.entities.get("switch_outlet"),
device_class=SwitchDeviceClass.OUTLET,
power_dps=POWER_DPS,
power_scale=10,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_pc321ty_energy_meter.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def setUp(self):
[
{
"dps": TOTALENERGY_DP,
"name": "sensor",
"name": "sensor_energy",
"unit": UnitOfEnergy.KILO_WATT_HOUR,
"device_class": SensorDeviceClass.ENERGY,
"state_class": STATE_CLASS_TOTAL_INCREASING,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_qs_c01_curtain.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class TestQSC01Curtains(BasicNumberTests, BasicSelectTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("qs_c01_curtain.yaml", QS_C01_CURTAIN_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_curtain"]
self.setUpBasicNumber(
TRAVELTIME_DPS,
self.entities.get("number_travel_time"),
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_sd123_hpr01_presence.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def setUp(self):
self.setUpForConfig("sd123_hpr01_presence.yaml", SD123_PRESENCE_PAYLOAD)
self.setUpBasicBinarySensor(
PRESENCE_DPS,
self.entities.get("binary_sensor"),
self.entities.get("binary_sensor_occupancy"),
device_class=BinarySensorDeviceClass.OCCUPANCY,
testdata=("presence", "none"),
)
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_simple_blinds.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class TestSimpleBlinds(TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("simple_blinds.yaml", SIMPLE_BLINDS_PAYLOAD)
self.subject = self.entities["cover"]
self.subject = self.entities["cover_blind"]

def test_device_class_is_blind(self):
self.assertEqual(self.subject.device_class, CoverDeviceClass.BLIND)
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_simple_switch_with_timer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class TestTimedSwitch(BasicNumberTests, SwitchableTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("simple_switch_timer.yaml", TIMED_SOCKET_PAYLOAD)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicNumber(
TIMER_DPS,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_simple_switch_with_timerv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class TestTimedSwitch(BasicNumberTests, SwitchableTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("simple_switch_timerv2.yaml", TIMED_SOCKETV2_PAYLOAD)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicNumber(
TIMER_DPS,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_smartplug_encoded.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class TestSwitchEncoded(BasicNumberTests, SwitchableTests, TuyaDeviceTestCase):

def setUp(self):
self.setUpForConfig("smartplug_encoded.yaml", SMARTPLUG_ENCODED_PAYLOAD)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicNumber(
TIMER_DPS,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_smartplugv1.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class TestKoganSwitch(

def setUp(self):
self.setUpForConfig("smartplugv1.yaml", KOGAN_SOCKET_PAYLOAD)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicBinarySensor(
OVERCURRENT_DPS,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_smartplugv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class TestSwitchV2(

def setUp(self):
self.setUpForConfig("smartplugv2.yaml", KOGAN_SOCKET_PAYLOAD2)
self.subject = self.entities.get("switch")
self.subject = self.entities.get("switch_outlet")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicNumber(
TIMER_DPS,
Expand Down
4 changes: 2 additions & 2 deletions tests/devices/test_smartplugv2_energy.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def setUp(self):
self.setUpMultiSwitch(
[
{
"name": "switch",
"name": "switch_outlet",
"dps": SWITCH_DPS,
"device_class": SwitchDeviceClass.OUTLET,
},
Expand Down Expand Up @@ -135,7 +135,7 @@ def test_multi_switch_state_attributes(self):
self.dps[RANDOM_DPS] = "3C4D"

self.assertDictEqual(
self.multiSwitch["switch"].extra_state_attributes,
self.multiSwitch["switch_outlet"].extra_state_attributes,
{
"test_bit": 21,
"fault_code": 26,
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_wetair_wawh1210lw_humidifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def setUp(self):
self.setUpForConfig(
"wetair_wawh1210lw_humidifier.yaml", WETAIR_WAWH1210_HUMIDIFIER_PAYLOAD
)
self.subject = self.entities.get("humidifier")
self.subject = self.entities.get("humidifier_humidifier")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicLight(LIGHT_DPS, self.entities.get("light_display"))
self.setUpBasicLock(LOCK_DPS, self.entities.get("lock_child_lock"))
Expand Down
2 changes: 1 addition & 1 deletion tests/devices/test_wilfa_haze_hu400bc_humidifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def setUp(self):
self.setUpForConfig(
"wilfa_haze_hu400bc_humidifier.yaml", WILFA_HAZE_HUMIDIFIER_PAYLOAD
)
self.subject = self.entities.get("humidifier")
self.subject = self.entities.get("humidifier_humidifier")
self.fan = self.entities.get("fan")
self.setUpSwitchable(SWITCH_DPS, self.subject)
self.setUpBasicBinarySensor(
Expand Down
2 changes: 1 addition & 1 deletion tests/test_cover.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ async def test_init_entry(hass):
},
}
await async_setup_entry(hass, entry, m_add_entities)
assert type(hass.data[DOMAIN]["dummy"]["cover"]) == TuyaLocalCover
assert type(hass.data[DOMAIN]["dummy"]["cover_garage"]) == TuyaLocalCover
m_add_entities.assert_called_once()


Expand Down
5 changes: 4 additions & 1 deletion tests/test_humidifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ async def test_init_entry(hass):
hass.data[DOMAIN]["dummy"]["device"] = m_device

await async_setup_entry(hass, entry, m_add_entities)
assert type(hass.data[DOMAIN]["dummy"]["humidifier"]) == TuyaLocalHumidifier
assert (
type(hass.data[DOMAIN]["dummy"]["humidifier_dehumidifier"])
== TuyaLocalHumidifier
)
m_add_entities.assert_called_once()


Expand Down
2 changes: 1 addition & 1 deletion tests/test_switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ async def test_init_entry(hass):
hass.data[DOMAIN]["dummy"]["device"] = m_device

await async_setup_entry(hass, entry, m_add_entities)
assert type(hass.data[DOMAIN]["dummy"]["switch"]) == TuyaLocalSwitch
assert type(hass.data[DOMAIN]["dummy"]["switch_outlet"]) == TuyaLocalSwitch
m_add_entities.assert_called_once()


Expand Down

0 comments on commit e90be52

Please sign in to comment.