mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Add entity translations for August (#98077)
This commit is contained in:
parent
d4753ebd3b
commit
77b421887b
@ -109,10 +109,6 @@ def _native_datetime() -> datetime:
|
||||
class AugustBinarySensorEntityDescription(BinarySensorEntityDescription):
|
||||
"""Describes August binary_sensor entity."""
|
||||
|
||||
# AugustBinarySensor does not support UNDEFINED or None,
|
||||
# restrict the type to str.
|
||||
name: str = ""
|
||||
|
||||
|
||||
@dataclass
|
||||
class AugustDoorbellRequiredKeysMixin:
|
||||
@ -128,34 +124,28 @@ class AugustDoorbellBinarySensorEntityDescription(
|
||||
):
|
||||
"""Describes August binary_sensor entity."""
|
||||
|
||||
# AugustDoorbellBinarySensor does not support UNDEFINED or None,
|
||||
# restrict the type to str.
|
||||
name: str = ""
|
||||
|
||||
|
||||
SENSOR_TYPE_DOOR = AugustBinarySensorEntityDescription(
|
||||
key="door_open",
|
||||
name="Open",
|
||||
key="open",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
)
|
||||
|
||||
SENSOR_TYPES_VIDEO_DOORBELL = (
|
||||
AugustDoorbellBinarySensorEntityDescription(
|
||||
key="doorbell_motion",
|
||||
name="Motion",
|
||||
key="motion",
|
||||
device_class=BinarySensorDeviceClass.MOTION,
|
||||
value_fn=_retrieve_motion_state,
|
||||
is_time_based=True,
|
||||
),
|
||||
AugustDoorbellBinarySensorEntityDescription(
|
||||
key="doorbell_image_capture",
|
||||
name="Image Capture",
|
||||
key="image capture",
|
||||
translation_key="image_capture",
|
||||
icon="mdi:file-image",
|
||||
value_fn=_retrieve_image_capture_state,
|
||||
is_time_based=True,
|
||||
),
|
||||
AugustDoorbellBinarySensorEntityDescription(
|
||||
key="doorbell_online",
|
||||
name="Online",
|
||||
key="online",
|
||||
device_class=BinarySensorDeviceClass.CONNECTIVITY,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
value_fn=_retrieve_online_state,
|
||||
@ -166,8 +156,7 @@ SENSOR_TYPES_VIDEO_DOORBELL = (
|
||||
|
||||
SENSOR_TYPES_DOORBELL: tuple[AugustDoorbellBinarySensorEntityDescription, ...] = (
|
||||
AugustDoorbellBinarySensorEntityDescription(
|
||||
key="doorbell_ding",
|
||||
name="Ding",
|
||||
key="ding",
|
||||
device_class=BinarySensorDeviceClass.OCCUPANCY,
|
||||
value_fn=_retrieve_ding_state,
|
||||
is_time_based=True,
|
||||
@ -236,8 +225,7 @@ class AugustDoorBinarySensor(AugustEntityMixin, BinarySensorEntity):
|
||||
self.entity_description = description
|
||||
self._data = data
|
||||
self._device = device
|
||||
self._attr_name = f"{device.device_name} {description.name}"
|
||||
self._attr_unique_id = f"{self._device_id}_{description.name.lower()}"
|
||||
self._attr_unique_id = f"{self._device_id}_{description.key}"
|
||||
|
||||
@callback
|
||||
def _update_from_data(self):
|
||||
@ -284,8 +272,7 @@ class AugustDoorbellBinarySensor(AugustEntityMixin, BinarySensorEntity):
|
||||
self.entity_description = description
|
||||
self._check_for_off_update_listener = None
|
||||
self._data = data
|
||||
self._attr_name = f"{device.device_name} {description.name}"
|
||||
self._attr_unique_id = f"{self._device_id}_{description.name.lower()}"
|
||||
self._attr_unique_id = f"{self._device_id}_{description.key}"
|
||||
|
||||
@callback
|
||||
def _update_from_data(self):
|
||||
|
@ -24,10 +24,11 @@ async def async_setup_entry(
|
||||
class AugustWakeLockButton(AugustEntityMixin, ButtonEntity):
|
||||
"""Representation of an August lock wake button."""
|
||||
|
||||
_attr_translation_key = "wake"
|
||||
|
||||
def __init__(self, data: AugustData, device: Lock) -> None:
|
||||
"""Initialize the lock wake button."""
|
||||
super().__init__(data, device)
|
||||
self._attr_name = f"{device.device_name} Wake"
|
||||
self._attr_unique_id = f"{self._device_id}_wake"
|
||||
|
||||
async def async_press(self) -> None:
|
||||
|
@ -33,16 +33,17 @@ async def async_setup_entry(
|
||||
|
||||
|
||||
class AugustCamera(AugustEntityMixin, Camera):
|
||||
"""An implementation of a August security camera."""
|
||||
"""An implementation of an August security camera."""
|
||||
|
||||
_attr_translation_key = "camera"
|
||||
|
||||
def __init__(self, data, device, session, timeout):
|
||||
"""Initialize a August security camera."""
|
||||
"""Initialize an August security camera."""
|
||||
super().__init__(data, device)
|
||||
self._timeout = timeout
|
||||
self._session = session
|
||||
self._image_url = None
|
||||
self._image_content = None
|
||||
self._attr_name = f"{device.device_name} Camera"
|
||||
self._attr_unique_id = f"{self._device_id:s}_camera"
|
||||
|
||||
@property
|
||||
|
@ -19,6 +19,7 @@ class AugustEntityMixin(Entity):
|
||||
"""Base implementation for August device."""
|
||||
|
||||
_attr_should_poll = False
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(self, data: AugustData, device: Doorbell | Lock) -> None:
|
||||
"""Initialize an August device."""
|
||||
|
@ -37,11 +37,12 @@ async def async_setup_entry(
|
||||
class AugustLock(AugustEntityMixin, RestoreEntity, LockEntity):
|
||||
"""Representation of an August lock."""
|
||||
|
||||
_attr_name = None
|
||||
|
||||
def __init__(self, data, device):
|
||||
"""Initialize the lock."""
|
||||
super().__init__(data, device)
|
||||
self._lock_status = None
|
||||
self._attr_name = device.device_name
|
||||
self._attr_unique_id = f"{self._device_id:s}_lock"
|
||||
self._update_from_data()
|
||||
|
||||
|
@ -75,7 +75,6 @@ class AugustSensorEntityDescription(
|
||||
|
||||
SENSOR_TYPE_DEVICE_BATTERY = AugustSensorEntityDescription[LockDetail](
|
||||
key="device_battery",
|
||||
name="Battery",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
value_fn=_retrieve_device_battery_state,
|
||||
@ -83,7 +82,6 @@ SENSOR_TYPE_DEVICE_BATTERY = AugustSensorEntityDescription[LockDetail](
|
||||
|
||||
SENSOR_TYPE_KEYPAD_BATTERY = AugustSensorEntityDescription[KeypadDetail](
|
||||
key="linked_keypad_battery",
|
||||
name="Battery",
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
value_fn=_retrieve_linked_keypad_battery_state,
|
||||
@ -176,6 +174,8 @@ async def _async_migrate_old_unique_ids(hass, devices):
|
||||
class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, SensorEntity):
|
||||
"""Representation of an August lock operation sensor."""
|
||||
|
||||
_attr_translation_key = "operator"
|
||||
|
||||
def __init__(self, data, device):
|
||||
"""Initialize the sensor."""
|
||||
super().__init__(data, device)
|
||||
@ -188,11 +188,6 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, SensorEntity):
|
||||
self._entity_picture = None
|
||||
self._update_from_data()
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the sensor."""
|
||||
return f"{self._device.device_name} Operator"
|
||||
|
||||
@callback
|
||||
def _update_from_data(self):
|
||||
"""Get the latest state of the sensor and update activity."""
|
||||
@ -278,7 +273,6 @@ class AugustBatterySensor(AugustEntityMixin, SensorEntity, Generic[_T]):
|
||||
super().__init__(data, device)
|
||||
self.entity_description = description
|
||||
self._old_device = old_device
|
||||
self._attr_name = f"{device.device_name} {description.name}"
|
||||
self._attr_unique_id = f"{self._device_id}_{description.key}"
|
||||
self._update_from_data()
|
||||
|
||||
|
@ -37,5 +37,27 @@
|
||||
"title": "Reauthenticate an August account"
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"binary_sensor": {
|
||||
"image_capture": {
|
||||
"name": "Image capture"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"wake": {
|
||||
"name": "Wake"
|
||||
}
|
||||
},
|
||||
"camera": {
|
||||
"camera": {
|
||||
"name": "[%key:component::camera::title%]"
|
||||
}
|
||||
},
|
||||
"sensor": {
|
||||
"operator": {
|
||||
"name": "Operator"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ async def test_doorsense(hass: HomeAssistant) -> None:
|
||||
await _create_august_with_devices(hass, [lock_one])
|
||||
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -50,7 +50,7 @@ async def test_doorsense(hass: HomeAssistant) -> None:
|
||||
await hass.async_block_till_done()
|
||||
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -58,7 +58,7 @@ async def test_doorsense(hass: HomeAssistant) -> None:
|
||||
await hass.async_block_till_done()
|
||||
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_OFF
|
||||
|
||||
@ -74,7 +74,7 @@ async def test_lock_bridge_offline(hass: HomeAssistant) -> None:
|
||||
await _create_august_with_devices(hass, [lock_one], activities=activities)
|
||||
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_UNAVAILABLE
|
||||
|
||||
@ -93,11 +93,11 @@ async def test_create_doorbell(hass: HomeAssistant) -> None:
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_image_capture.state == STATE_OFF
|
||||
binary_sensor_k98gidt45gul_name_online = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_online"
|
||||
"binary_sensor.k98gidt45gul_name_connectivity"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_online.state == STATE_ON
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_OFF
|
||||
binary_sensor_k98gidt45gul_name_motion = hass.states.get(
|
||||
@ -120,10 +120,12 @@ async def test_create_doorbell_offline(hass: HomeAssistant) -> None:
|
||||
)
|
||||
assert binary_sensor_tmt100_name_motion.state == STATE_UNAVAILABLE
|
||||
binary_sensor_tmt100_name_online = hass.states.get(
|
||||
"binary_sensor.tmt100_name_online"
|
||||
"binary_sensor.tmt100_name_connectivity"
|
||||
)
|
||||
assert binary_sensor_tmt100_name_online.state == STATE_OFF
|
||||
binary_sensor_tmt100_name_ding = hass.states.get("binary_sensor.tmt100_name_ding")
|
||||
binary_sensor_tmt100_name_ding = hass.states.get(
|
||||
"binary_sensor.tmt100_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_tmt100_name_ding.state == STATE_UNAVAILABLE
|
||||
|
||||
|
||||
@ -140,11 +142,11 @@ async def test_create_doorbell_with_motion(hass: HomeAssistant) -> None:
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_motion.state == STATE_ON
|
||||
binary_sensor_k98gidt45gul_name_online = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_online"
|
||||
"binary_sensor.k98gidt45gul_name_connectivity"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_online.state == STATE_ON
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_OFF
|
||||
new_time = dt_util.utcnow() + datetime.timedelta(seconds=40)
|
||||
@ -174,7 +176,7 @@ async def test_doorbell_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_motion.state == STATE_OFF
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_OFF
|
||||
|
||||
@ -242,7 +244,7 @@ async def test_doorbell_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
assert binary_sensor_k98gidt45gul_name_motion.state == STATE_ON
|
||||
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_OFF
|
||||
|
||||
@ -273,7 +275,7 @@ async def test_doorbell_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
await hass.async_block_till_done()
|
||||
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_ON
|
||||
new_time = dt_util.utcnow() + datetime.timedelta(seconds=40)
|
||||
@ -286,7 +288,7 @@ async def test_doorbell_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
await hass.async_block_till_done()
|
||||
|
||||
binary_sensor_k98gidt45gul_name_ding = hass.states.get(
|
||||
"binary_sensor.k98gidt45gul_name_ding"
|
||||
"binary_sensor.k98gidt45gul_name_occupancy"
|
||||
)
|
||||
assert binary_sensor_k98gidt45gul_name_ding.state == STATE_OFF
|
||||
|
||||
@ -317,7 +319,7 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
)
|
||||
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -332,7 +334,7 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_OFF
|
||||
|
||||
@ -346,14 +348,14 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + datetime.timedelta(seconds=30))
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -361,7 +363,7 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + datetime.timedelta(seconds=30))
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -369,7 +371,7 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + datetime.timedelta(hours=2))
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -383,14 +385,14 @@ async def test_door_sense_update_via_pubnub(hass: HomeAssistant) -> None:
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + datetime.timedelta(hours=4))
|
||||
await hass.async_block_till_done()
|
||||
binary_sensor_online_with_doorsense_name = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name.state == STATE_ON
|
||||
|
||||
@ -404,6 +406,6 @@ async def test_create_lock_with_doorbell(hass: HomeAssistant) -> None:
|
||||
await _create_august_with_devices(hass, [lock_one])
|
||||
|
||||
ding_sensor = hass.states.get(
|
||||
"binary_sensor.a6697750d607098bae8d6baa11ef8063_name_ding"
|
||||
"binary_sensor.a6697750d607098bae8d6baa11ef8063_name_occupancy"
|
||||
)
|
||||
assert ding_sensor.state == STATE_OFF
|
||||
|
@ -186,11 +186,11 @@ async def test_lock_has_doorsense(hass: HomeAssistant) -> None:
|
||||
await _create_august_with_devices(hass, [doorsenselock, nodoorsenselock])
|
||||
|
||||
binary_sensor_online_with_doorsense_name_open = hass.states.get(
|
||||
"binary_sensor.online_with_doorsense_name_open"
|
||||
"binary_sensor.online_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_online_with_doorsense_name_open.state == STATE_ON
|
||||
binary_sensor_missing_doorsense_id_name_open = hass.states.get(
|
||||
"binary_sensor.missing_doorsense_id_name_open"
|
||||
"binary_sensor.missing_with_doorsense_name_door"
|
||||
)
|
||||
assert binary_sensor_missing_doorsense_id_name_open is None
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user