AirSend avec pseudo retour d'état

Bonjour,

Je suis entrain de migrer de Jeedom vers Home Assistant, mais je bute sur un sujet.
J’utilise AirSend pour mes volets roulants et stores. Pas de problème pour l’intégration
AirSend avec HAS. Petit soucis avec le retour d’état si j’ai bien compris ça n’est pas possible avec AirSend.

Par contre sous Jeedom il y a un plugin Jeeconnect, qui me permettais de fermer un ou plusieurs Volets et qui me donnais un pseudo retour d’état.
Si volet Ouvert et que j’appuyait sur le bouton fermé il me retournait 100 si complètement fermé ou 50 si j’avais presser le bouton stop avant clôture totale.

C’était super pratique car je savais si mes volets étaient ouverts ou fermés.
je ne cherche pas a savoir le % d’ouverture ou fermeture, juste si ouvert ( complet ou moitié).

Y a t’il une telle intégration disponible ou un moyen de mettre ce type d’information disponible avec les icônes qui vont bien :slight_smile:

Merci

1 « J'aime »

Bonjour,

Tu pourrais avoir des solutions, en utilisant sur une carte le on click qui viendrait lors d’un click passer changer le pourcentage dans un sensor. Et si tu clique sur un bouton stop ça le met à 50%.

Mais fleet pas fiable. Car pour définir que si tu clique sur le bouton c’est que tu veux fermer, alors comment tu sais au départ qu’il est ouvert ?
Et si tu fait un changement avec un bouton physique, comment HA le détecte.
Simuler du retour d’état, même sur Jeedom a toujours était un truc pas fiable.

Pass sur de tout comprendre mais je vais tenter d’approfondir :upside_down_face:

par contre AirSend et Jeedom Connect / JeeConnect sur smartphone c’est super fiable.
on sait exactement si les volets sont ouverts ou fermées a 100 ou 50 %.
Je n’ai jamais eu de surprise avec…

C’est pour cela que je cherche le même type de mécanisme a mettre en place sur Home Assistant.

En fait j’ai l’impression que c’est avec le mode ecoute permanente que Jeedom peut avoir l’info pour tes interrupteurs physiques non ? je ne comprenait pas comment tu pouvais avoir l’info physique sans retour d’état

Jeeconnect c’est plus ni moins qu’une application mobile comme peut l’être Companion chez HA.
Donc ca veut dire que l’intelligence était coté plugin Airsend. L’integration Airsend venant directement du fabricant, je suppose qu’il a intégré les mêmes fonctionnalité coté HA et coté Jeedom non ?
Deja si ton volet est fermé, que HA le voit fermé et que tu l’ouvre avec HA ca met bien a jour l’état pour indiquer ouvert ?

Quels sont les attributs de ton volets dans HA ?

Argh bonne question je n’ai malheureusement pas d’attributs pour mes volets, donc en actionnant les boutons mes volets montent ou descendent sans plus. j’utilise l’intégration AirSend.

Tu dois bien avoir des attributs sur ton entity cover dans les états des Outils de développement

Désolé pour mon ignorance avec Home Assistant. il y a des chose simples et d’autre une peut plus compliquer a comprendre.

Bon voila pour un de mes volets, pas grand chose quand même :

channel: 
id: 4896
source: 11021736

assumed_state: true
friendly_name: Salle de bain
supported_features: 11
device_class: shutter

Bon ça y est j’ai compris le principe pas simple quand même, j’ai maintenant le statut ouvert ou fermé qui s’affiche en fonction de la position du volet :slight_smile:

J’avance doucement mais surement …

1 « J'aime »

Par contre, tu as juste le state open ou close sur l’entité ?
Je ne vois pas dans ton volet un attribut qui indique la position (même si ce serait que 0 ou 100).

Si je regarde le code de l’integration Airsend, le fait de stopper le volet qui positionne à 50% l’attribut current_cover_position semble bien exister dans l’intégration comme pour Jeedom

CleanShot 2024-10-04 at 19.16.51

Mais par contre cet attribut n’est disponible que pour certains volets qui sont considéré comme avec position :
CleanShot 2024-10-04 at 19.18.44
Les rtype 4098 et 4099 sont considéré comme volet. Si ton device est de type cover.xxxx alors il est bien considéré comme un volet.
Par contre, seul le rtype 4099 supporte le current_cover_position qui passe à 50% quand tu stoppe.

J’ai regardé le code du plugin Jeedom et ils semblent pas faire cette différence entre 4098 et 4099 sur la position, donc ca pourrait expliqué une différence de comportement si le rtype de ton volet est 4098.

Tu peux ouvrir une issue sur le github de l’integration pour voir ce qui est possible d’être fait dans ton cas, sinon peut etre que tu peux t’en sortir avec un template cover

Hello, merci pour ces informations et recherche, je n’aurais pas le temps ce week-end pour avancer. je m’y remet la semaine prochaine. je posterais mon avancement.

Je viens quand même de jeter un oeil dans mon fichier AirSend exporte du cloud, mes Volets et Stores sont tous type: 4098

Le temps étant pas terrible je me suis remis a mes Volets :slight_smile:

Mais la je galère grave, a ne plus rien comprendre. J’ai monter un système de test
j’ai installé AirSend pas de soucis, j’ai récupéré le fichier .yaml
Les volets sont bien visible.

Je peux actionner Up/Stop/Down et ça fonctionne, mais le status du volet reste toujours Fermé :smiling_face_with_tear:

Par contre j’ai modifié type 4098 par 4099, et la je vois bien l’icône du volet être mis a jour en fonction de up/stop/down.


J’ai surement loupé un truc mais lequel .

Hello,

Avec AirSend impossible de trouver la solution pour un retour d’état. Que le volet soit ouvert ou fermé j’ai toujours le status Fermé. Aussi bien avec type 4098 ou 4099.

J’ai alors installé Shutter Card et Row pour tester.

  • avec type 4098, ça fonctionne mais le status reste Fermé.

  • avec type 4099, ça fonctionne également et le status est mis a jour, Ouvert / 50% / Fermé
    et l’icône Shutter Row est aussi mise a jour.

Pour le changement de type j’édite le fichier AirSend.yaml et je change le type 4098 par 4099 te je redémarre HACS.

voila si ça peut aider, pas sur que mon hack soit très secure ou fiable. mais pour le moment ça a l’air de fonctionner.

avez vous une autre idée ou une autre configuration ?

Hello,

bon j’ai modifier le code du fichier ‹ cover.py › je me suis focaliser sur 0 " Fermé" ou 100 « Ouvert »
et la ça marche, j’arrive a avoir mes statuts correct :slight_smile:
bon il faut que je fasse des tests mais ça m’a l’air assé concluant.

si ça intéresse voici le bout de code, il me reste a fixer si je Stop a 50% pour le moment le message c’est « Open - 50% » mais l’icône reste Open…

@property
def is_closed(self):
    """Return if the cover is closed."""
    # If the cover supports position reporting
    if self._device.is_cover_with_position:
        # If position is 0, it's closed
        if self._attr_current_cover_position == 0:
            self._closed = True
        # If position is 100, it's fully open
        elif self._attr_current_cover_position == 100:
            self._closed = False
        else:
            # Partially open, assume it's open
            self._closed = False
    else:
        # Fallback to existing logic if no position is available
        if self._closed is None:
            self._closed = True  # Default to closed if no information is available
        
        if self._device.is_async and self._hass:
            component = self._hass.states.get(self.entity_id)
            if component is not None:
                if component.state in ['open', 'on', 'up']:
                    self._closed = False  # Cover is open
                else:
                    self._closed = True   # Cover is closed
            else:
                _LOGGER.warning(f"State for {self.entity_id} could not be fetched, maintaining previous state.")
    
    return self._closed

Bon j’ai retravailler tout ça maintenant c’est fonctionnel.

mais je ne comprends pas vraiment pourquoi je suis le seul a avoir ce problème.
c’est peut être que mon module AirSend n’est pas tout jeune, il a 2 ou 3 ans.

bon voila ce que j’ai t modifier dans mon environment:

Fichier /homeassistant/custom_components/airsend/cover.py

def set_cover_position(self, **kwargs):
    """Move the cover to a specific position."""
    position = int(kwargs["position"])  # Target position from Home Assistant
    
    note = {"method": 1, "type": 9, "value": position}  # Send command to move to that position
    
    if self._device.transfer(note, self.entity_id) == True:
        # Update internal position to reflect the current state
        self._attr_current_cover_position = position
        
        # Set state based on position
        if position == 100:
            self._closed = False  # Fully open
        elif position == 0:
            self._closed = True  # Fully closed
        else:
            self._closed = False  # Partially open (anything between 1 and 99%)
        
        # Notify Home Assistant of the new state
        self.schedule_update_ha_state()
def stop_cover(self, **kwargs):
    """Stop the cover at its current position."""
    note = {"method": 1, "type": 0, "value": "STOP"}
    
    if self._device.transfer(note, self.entity_id) == True:
        # Assume the position is halfway if stop is pressed
        self._attr_current_cover_position = 50
        
        # Set state to partially open
        self._closed = False
        
        # Notify Home Assistant of the new state
        self.schedule_update_ha_state()
@property
def is_closed(self):
    """Return True if the cover is fully closed."""
    # Cover is closed only if position is exactly 0%
    if self._attr_current_cover_position is not None:
        return self._attr_current_cover_position == 0
    return self._closed  # Fallback if no position is available

ce qui donne:

  • Complètement Ouvert : quand le cover est a 100% - Statut: Open - icône HACS ouvert
  • Complètement Fermé: quand le cover est a 0% - Statut: Close - icône HACS fermé
  • Partiellement Ouvert: quand on appui sur Stop - Status 50% - icône HACS mi-ouvert

Comme je trouvais ça bizarre j’ai ouvert un ticket support Airsend.
La réponse est la suivante:

Avec spurl il est possible que l’addon n’arrive pas a communiquer avec ha et il faut ajouter
wait: true
pour chaque appareil dans airsend.yaml

J’ai ajouter wait et la ça fonctionne.

Donc toutes mes modifications de code a oublier :slight_smile:

1 « J'aime »

Bonsoir,

Je l’ai rajouté mais j’ai un message d’erreur dans HA « Échec de l’exécution de l’action button/press. Expecting value: line 1 column 1 (char 0) » l’avez-vous également ?

Bonsoir,

Non tout fonctionne correctement maintenant. Utilisez vous le mode local ou cloud ?
de mon coté j’utilise le mode local.

Cela est revenu, mauvaise adresse ip, merci

1 « J'aime »