Add entity translations to Flux led (#95355)

This commit is contained in:
Joost Lekkerkerker 2023-06-27 16:58:57 +02:00 committed by GitHub
parent 90854df5b2
commit e19b29d6ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 104 additions and 53 deletions

View file

@ -18,7 +18,7 @@ from flux_led.protocol import (
from homeassistant import config_entries
from homeassistant.components.light import EFFECT_RANDOM
from homeassistant.components.number import NumberEntity, NumberMode
from homeassistant.const import CONF_NAME, EntityCategory
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.debounce import Debouncer
@ -50,7 +50,6 @@ async def async_setup_entry(
| FluxMusicPixelsPerSegmentNumber
| FluxMusicSegmentsNumber
] = []
name = entry.data.get(CONF_NAME, entry.title)
base_unique_id = entry.unique_id or entry.entry_id
if device.pixels_per_segment is not None:
@ -58,35 +57,25 @@ async def async_setup_entry(
FluxPixelsPerSegmentNumber(
coordinator,
base_unique_id,
f"{name} Pixels Per Segment",
"pixels_per_segment",
)
)
if device.segments is not None:
entities.append(
FluxSegmentsNumber(
coordinator, base_unique_id, f"{name} Segments", "segments"
)
)
entities.append(FluxSegmentsNumber(coordinator, base_unique_id, "segments"))
if device.music_pixels_per_segment is not None:
entities.append(
FluxMusicPixelsPerSegmentNumber(
coordinator,
base_unique_id,
f"{name} Music Pixels Per Segment",
"music_pixels_per_segment",
)
)
if device.music_segments is not None:
entities.append(
FluxMusicSegmentsNumber(
coordinator, base_unique_id, f"{name} Music Segments", "music_segments"
)
FluxMusicSegmentsNumber(coordinator, base_unique_id, "music_segments")
)
if device.effect_list and device.effect_list != [EFFECT_RANDOM]:
entities.append(
FluxSpeedNumber(coordinator, base_unique_id, f"{name} Effect Speed", None)
)
entities.append(FluxSpeedNumber(coordinator, base_unique_id, None))
async_add_entities(entities)
@ -101,6 +90,7 @@ class FluxSpeedNumber(
_attr_native_step = 1
_attr_mode = NumberMode.SLIDER
_attr_icon = "mdi:speedometer"
_attr_translation_key = "effect_speed"
@property
def native_value(self) -> float:
@ -137,11 +127,10 @@ class FluxConfigNumber(
self,
coordinator: FluxLedUpdateCoordinator,
base_unique_id: str,
name: str,
key: str | None,
) -> None:
"""Initialize the flux number."""
super().__init__(coordinator, base_unique_id, name, key)
super().__init__(coordinator, base_unique_id, key)
self._debouncer: Debouncer[Coroutine[Any, Any, None]] | None = None
self._pending_value: int | None = None
@ -185,6 +174,7 @@ class FluxConfigNumber(
class FluxPixelsPerSegmentNumber(FluxConfigNumber):
"""Defines a flux_led pixels per segment number."""
_attr_translation_key = "pixels_per_segment"
_attr_icon = "mdi:dots-grid"
@property
@ -211,6 +201,7 @@ class FluxPixelsPerSegmentNumber(FluxConfigNumber):
class FluxSegmentsNumber(FluxConfigNumber):
"""Defines a flux_led segments number."""
_attr_translation_key = "segments"
_attr_icon = "mdi:segment"
@property
@ -245,6 +236,7 @@ class FluxMusicNumber(FluxConfigNumber):
class FluxMusicPixelsPerSegmentNumber(FluxMusicNumber):
"""Defines a flux_led music pixels per segment number."""
_attr_translation_key = "music_pixels_per_segment"
_attr_icon = "mdi:dots-grid"
@property
@ -273,6 +265,7 @@ class FluxMusicPixelsPerSegmentNumber(FluxMusicNumber):
class FluxMusicSegmentsNumber(FluxMusicNumber):
"""Defines a flux_led music segments number."""
_attr_translation_key = "music_segments"
_attr_icon = "mdi:segment"
@property