[Majeur] Switch : no-op silencieux quand capacity_id manque #87

Open
opened 2026-08-26 05:32:41 +00:00 by mat · 0 comments
Owner

Problème

switch.py:56-59 :

def _async_set(self, on: bool) -> None:
    state = self.coordinator.data["switches"].get(self._device["id"])
    if not state or not state.get("capacity_id"):
        return

Si l'état ou le capacity_id manque, l'appel de service retourne sans rien faire ni signaler : l'utilisateur voit l'action « réussir » dans l'UI alors qu'aucune commande n'est partie.

available (switch.py:42-48) filtre déjà le cas capacity_id is None, mais pas le cas « device disparu du snapshot entre-temps » ni un état falsifié.

Recommandation

  1. Lever HomeAssistantError (message traduit) quand on ne peut pas commander, pour que l'UI affiche l'échec.
  2. Bonus UX : update optimiste (self._attr_is_on = on) + confirmation via le WS STATE qui existe déjà (stream.py:28-50).

Constaté lors de la review de code pré-v1.0 (v0.8.1). Tests dégradés associés manquants (cf. issue couverture stream).

## Problème `switch.py:56-59` : ```python def _async_set(self, on: bool) -> None: state = self.coordinator.data["switches"].get(self._device["id"]) if not state or not state.get("capacity_id"): return ``` Si l'état ou le `capacity_id` manque, l'appel de service **retourne sans rien faire ni signaler** : l'utilisateur voit l'action « réussir » dans l'UI alors qu'aucune commande n'est partie. `available` (`switch.py:42-48`) filtre déjà le cas `capacity_id is None`, mais pas le cas « device disparu du snapshot entre-temps » ni un état falsifié. ## Recommandation 1. Lever `HomeAssistantError` (message traduit) quand on ne peut pas commander, pour que l'UI affiche l'échec. 2. Bonus UX : update optimiste (`self._attr_is_on = on`) + confirmation via le WS STATE qui existe déjà (`stream.py:28-50`). --- Constaté lors de la review de code pré-v1.0 (v0.8.1). Tests dégradés associés manquants (cf. issue couverture stream).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mat/homeassistant-comwatt#87
No description provided.