tydom2mqtt icon indicating copy to clipboard operation
tydom2mqtt copied to clipboard

manage garage as a cover instead of switch (without koleos docs) (#197)

Open fmartinou opened this issue 1 year ago • 11 comments
trafficstars

  • Addition of a new sensor class to manage garage to manage garage as a cover
  • Evolution to manage garage as cover and add garage_door_horizontal that was not managed before.
  • Update MessageHandler.py
  • Managemnent two sensors sun and thermoPack Tysense Outdoor
  • Add management of automatic doors
  • Sensor name used in MQTT instead of Mosquito

fmartinou avatar Jun 12 '24 17:06 fmartinou

@fmartinou testé sur mon instance de home assistant ✅

romainboucher avatar Jun 14 '24 07:06 romainboucher

Bonjour à tous,

Pour ma part je viens de tester l'image docker fmartinou/tydom2mqtt:feature__183 et c'est pour moi un grand succès 🙏, mes portes de garages Novoferm Novomatic E.S. 423 (équipées de ce module X3D https://www.aidegar.fr/centrale-de-commande-carte-electronique-porte-de-garage-novoferm/684-carte-electronique-delta-dore.html) sont enfin reconnues comme il faut (c'est à dire avec les instructions ON/OFF/STOP) et non plus avec l'instruction TOGGLE qui ne marchait pas du tout auparavant dans mon cas.

@fmartinou, cette PR pourra-t-elle être mergée prochainement et releasée dans la version officielle 😇 ?

aure-olivier avatar Aug 26 '24 13:08 aure-olivier

Hello @aure-olivier et @romainboucher, avez-vous d'autres equipements DD ? et n'avez-vous pas rencontré d'effets de bord ? J'ai testé cette feature environ 2 semaines fin juin/début juillet et elle me mettait le brin sur mes volets...

BlacKTM1190 avatar Aug 27 '24 06:08 BlacKTM1190

@BlacKTM1190 ,

Sur l'instance que j'utilise avec cette version custom de tydom2mqtt, je n'ai que mes 2 portes de garage - car c'est uniquement cela que je voulais tester et c'était voulu.

Pour info, je suis tout nouveau dans le monde HomeAssistant, et je tourne actuellement sous Homebridge avec https://github.com/mgcrea/homebridge-tydom, qui fonctionne très bien mais qui souffre du même soucis que l'objet de cette PR à savoir la non disponibilité de mes portes de garage.

Pour la petite histoire, il se trouve que j'ai 2 box Tydom:

  • 1 Tydom 2.0, pour lequel j'ai homebridge-tydom qui contient environ 70 accessoires X3D (17 volets, 29 éclairages, 22 détecteurs de contact, 1 alarme)
  • 1 Tydom Home, pour lequel j'ai fraichement configuré HASS-OS avec tydom2mqtt en version custom (fmartinou/tydom2mqtt:feature__183)

Vu le nombre de scénarios et réglages que j'ai fais dans Apple Homekit, je n'ai pas trop envie de risquer de tout casser en passant tydom2mqtt sur ma Tydom 2.0.

Je ne suis pas certains que 2 clients vers la Tydom 2.0 peuvent fonctionner en parallèle (homebridge-tydom + tydom2mqtt pointant sur la même IP).

Bref, je réfléchis comment je peux vous aider sans tout péter 😋

aure-olivier avatar Aug 27 '24 15:08 aure-olivier

Thanks @aure-olivier pour la clarification et le soutien.

je suis tout nouveau dans le monde HomeAssistant

Je ne suis même pas nouveau, je n'utilise que Jeedom 😁

Je ne suis pas certains que 2 clients vers la Tydom 2.0 peuvent fonctionner en parallèle

Quasi sur que non et j'ai même lu, à une autre époque, d'un expert DD sur le community Jeedom, qu'il vaut mieux ne pas trop sollicité les Tydom 2 qui gardent (priorise ?) l'exclusivité de la connexion pour l'application.

Mais j'ai la même tendance à n'avoir que des devices sur l'app Tydom et tout scénariser sur Jeedom.

Une petite fenêtre se profile ce we (depuis des mois, entre refonte de mon infra, travaux, vacances,...). Je remonte un lab tout propre (broker mqtt et tydom2mqtt), surveille les side effects et fait un retour dimanche 🤞

BlacKTM1190 avatar Aug 27 '24 15:08 BlacKTM1190

Hello,

J'ai quand même pensé à un truc que j'ai testé, c'est à dire associé l'un de mes volets à 2 box Tydom en même temps, et ça fonctionne bien. Je ne vois pas de soucis sur la remontée d'état ou la commande de volet depuis Apple Home que ce soit en passant par l'accessoire Tydom2MQTT ou Homebridge-Tydom.

Voici ce que j'ai:

                     +-----------+                        
                     | Volet X3D |                        
                     +---+-----+-+                        
                         |     |                          
                         |     |                          
     +------------+------+     +-----+------------+       
     |            |                  |            |       
     | Tydom Home |                  | Tydom 2.0  |       
     +------+-----+                  +------+-----+       
            |                               |             
            |                               |             
+-----------+---------+         +-----------+------------+
|   Home Assistant    |         |      Homebridge        |
|                     |         |                        |
|     Tydom2MQTT      |         |    homebridge-tydom    |
+----------+----------+         +------------+-----------+
           |                                 |            
           |                                 |            
           |      +------------------+       |            
           +------+  Apple Homekit   +-------+            
                  +------------------+                          

aure-olivier avatar Sep 02 '24 08:09 aure-olivier

Hello Très beau schema :wink: Je viens de finaliser mes tests. Effectivement la porte de garage fonctionne correctement (pub et sub). Pas de side effect sur les volets, comme je me suis fourvoyé plus haut, mais sur les lumières. Je n'ai cependant que des switch pas de dimmable. Les sub fonctionnent correctement (la remonté d'état est cohérente sur MQTT lorsqu'on actionne depuis les boutons physique ou l'app Tydom) mais les pub ne répondent plus (light/tydom/deviceid_endpointid/set_levelCmd on ou off ou 0 ou 1 ou 100). @aure-olivier Pourrais-tu confirmer en associant une lumière sur le même schéma ?

BlacKTM1190 avatar Sep 03 '24 21:09 BlacKTM1190

Hello,

@BlacKTM1190, je confirme totalement ce que tu disais plus haut. J'ai associé 2 lumières (classique et dimmable) et la publication ne fonctionne pas mais provoque une erreur dans les logs:


TypeError: Light.put_level_cmd() got an unexpected keyword argument 'cover_id'
2024-09-04 21:16:46,937 - mqtt.MqttClient      - INFO    - set_level message received (topic=light/tydom/1725476410_1725476410/set_level, message=80)
2024-09-04 21:16:46,937 - asyncio              - ERROR   - Task exception was never retrieved
future: <Task finished name='Task-205' coro=<MqttClient.on_message() done, defined at /app/mqtt/MqttClient.py:79> exception=TypeError("Light.put_level() got an unexpected keyword argument 'cover_id'")>
Traceback (most recent call last):
  File "/app/mqtt/MqttClient.py", line 202, in on_message
    await Light.put_level(tydom_client=self.tydom, device_id=device_id, cover_id=endpoint_id,

En effet "cover_id" est utilisé à tords j'ai l'impression.

Par contre la remontée du status (on/off/level) est OK dans HomeKit, suite à une commande depuis l'application Tydom.

aure-olivier avatar Sep 04 '24 19:09 aure-olivier

Hello Après avoir bien galéré (j'ai du trop forcer hier soir...), je vous confirme qu'en apportant le fix sur les 2 lignes suggéré plus haut, tout est fonctionnel.

Je ne sais pas comment on fait pour publier une image sur le hub docker, j'ai donc procédé comme ceci : Monté un container mosquitto de test. Monté un container tydom2mqtt:feature__183 en bindant le dossier app. Apporté le fix dans le fichier MqttClient.py du dossier bindé et démarré le container précédent.

Sans Jeedom ou HA cablé sur ce broker de test, j'ai passé tous les pub par MQTT Explorer (sensible à la casse :face_with_diagonal_mouth:) : Fermer : set_garageLevelCmd OFF ou set_garageLevel 0 Ouvrir : set_garageLevelCmd ON ou set_garageLevel 100

Ce qui n'est pas très "propre", et là ou j'ai galéré, c'est qu'il y a un L majuscule à Level et que le sub n'est pas current_garageLevel mais current_position. Je ne sais pas s'il est possible de faire un PR sur un PR, je te laisse donc compiler tout ca @fmartinou :wink:

Au passage, il y a du y avoir une coquille sur la dernière release de la master car il n'y a plus de readme... Pas certains qu'en mergeant cette feature sur la master permettrait de le remettre, mais je veux bien aider le cas échéant.

BlacKTM1190 avatar Sep 08 '24 16:09 BlacKTM1190

Hello,

Je viens de connecter mon Novoferm 423 via Tydom et je tombe sur le problème de la porte de garage pas reconnue (just un light switch). Quelqu'un sait comment je peux installer l'addon dans une version spécifique sur Home Assistant ? Ou si je peux aller modifier des fichiers quelque part a la mano ?

Thanks,

D.

Dulcow avatar Sep 10 '24 11:09 Dulcow

Hello Je n'utilise pas l'addon (ni même HA d'ailleurs mais j'ai quand meme une instance sous docker), je ne pourrais donc te dire pour celui-ci. Mais tous les équipements light, cover et garage sont opérationnels sur mon instance HA, en utilisant la feature#183 et remontés nativement par la découverte du broker. Il faut cependant corriger les 2 lignes en faisant comme je l'ai décrit plus haut : en ajoutant à ton yaml du container tydom2mqtt une variable pour binder le dossier, du style :

volumes:
    - '/volume1/docker/tydom2mqtt/app:/app'

BlacKTM1190 avatar Sep 15 '24 17:09 BlacKTM1190

https://github.com/fmartinou/tydom2mqtt/pull/213

@BlacKTM1190 j'ai commit tes retours sur cette branche. En attente de merge par @fmartinou :)

romainboucher avatar Oct 09 '24 06:10 romainboucher

Si vous souhaitez tester la correction, une image docker est dispo ici avec tous les fix : https://github.com/romainboucher/tydom2mqtt/pkgs/container/tydom2mqtt

Pour ceux qui utilisent hassio : https://github.com/romainboucher/hassio-addons

@BlacKTM1190 @aure-olivier

romainboucher avatar Oct 09 '24 07:10 romainboucher

Merci @romainboucher 👏 ✌️ Un peu taquet cette semaine mais je teste ton image asap.

BlacKTM1190 avatar Oct 09 '24 07:10 BlacKTM1190

J'ai testé et ca fonctionne sur HASSIO pour la commande la porte ✔️

La commande de la lumière ne fonctionne pas par contre.

D.

Dulcow avatar Oct 09 '24 07:10 Dulcow

Hello Après l'echec sur la 3.5.3, je viens de switcher de image: 'fmartinou/tydom2mqtt:3.5.3' à la tienne @romainboucher, image: 'ghcr.io/romainboucher/tydom2mqtt:master', et tout fonctionne parfaitement ✔️ Dommage que le principal n'est pas été mergé... D'autant que j'en ai encore fait la pub/sub sur la Community Jeedom et que la frontend manque... @fmartinou on manque tous de temps mais ce projet, que tu portes seul, ne doit pas t'incomber, comme un fardeau. N'hesites pas à me solliciter en privé, ou n'importe, même si je suis une quille en docker, travis ou autre ghcr (que Synology Container (mes instances) ne cautionne pas), je m'autoformerai volontier pour te délester et co-gérer/soutenir/fairemonmieux. Cheers 🍻

BlacKTM1190 avatar Oct 12 '24 17:10 BlacKTM1190

Bonjour, j'ai essayé d'installer le fix propose par @romainboucher sans y parvenir Une idée?

Installation in a terminal window, but when I want to install the add-on I get

Échec de l'installation de l'extension Can't install ghcr.io/romainboucher/tydom2mqtt:master: 404 Client Error for http+docker://localhost/v1.47/images/ghcr.io/romainboucher/tydom2mqtt:master/json: Not Found ("No such image: ghcr.io/romainboucher/tydom2mqtt:master")

LGO44 avatar Dec 10 '24 09:12 LGO44

Hello @romainboucher a fait des modifications il y a qq jours. Il est desormais préférable (impératif?) d'utiliser la version tagged all-platforms plutot que la master.

BlacKTM1190 avatar Dec 13 '24 11:12 BlacKTM1190

Bonjour et merci pour l'aide.

  1. J'ai fait un test de la version de @romainboucher sur une machine virtuelle de test, ça a marché du premier coup et le résultat est génial.
  2. J'ai refait la même chose sur mon installation avec un Raspberry et échec avec toujours le même message à l'install.
  3. J'ai refait l'install du docker all-platform dans une fenêtre terminal:

➜ ~ cli
➜ ~ docker pull ghcr.io/romainboucher/tydom2mqtt:all-platforms all-platforms: Pulling from romainboucher/tydom2mqtt b8180c93b172: Already exists be4e2e12a3de: Already exists 59e11f0966ec: Already exists a18bdd14b476: Already exists 89716e709abe: Already exists 786baa4fb9a2: Pull complete 702c29c32a04: Pull complete 8344d8503b6a: Pull complete Digest: sha256:aec1cd2a154bea9ea2a95d0291a0708bb0b8bbf5b239610e3b7a160ce0404b6b Status: Downloaded newer image for ghcr.io/romainboucher/tydom2mqtt:all-platforms ghcr.io/romainboucher/tydom2mqtt:all-platforms

Je ne trouve pas l'addon dans les modules complémentaires... Comment Fait-on cette install ?

LGO44 avatar Dec 13 '24 13:12 LGO44

Hello Après l'echec sur la 3.5.3, je viens de switcher de image: 'fmartinou/tydom2mqtt:3.5.3' à la tienne @romainboucher, image: 'ghcr.io/romainboucher/tydom2mqtt:master', et tout fonctionne parfaitement ✔️ Dommage que le principal n'est pas été mergé... D'autant que j'en ai encore fait la pub/sub sur la Community Jeedom et que la frontend manque... @fmartinou on manque tous de temps mais ce projet, que tu portes seul, ne doit pas t'incomber, comme un fardeau. N'hesites pas à me solliciter en privé, ou n'importe, même si je suis une quille en docker, travis ou autre ghcr (que Synology Container (mes instances) ne cautionne pas), je m'autoformerai volontier pour te délester et co-gérer/soutenir/fairemonmieux. Cheers 🍻

Salut @BlacKTM1190 ,

Merci beaucoup de te proposer en contributeur 👍 Comme vous avez tous pu le constater, je n'arrive malheureusement plus à trouver le temps de faire vivre le projet. En plus de cela, je me suis débarassé de tout mon matériel Deltadore ces derniers mois donc j'ai encore moins les moyens qu'avant de tester 😞 .

Je suis donc tout à fait intéressé pour transférer le projet à un repreneur qui pourra mieux le faire vivre. Pour commencer, je viens de t'inviter en tant que Collaborateur sur le répo existant mais on peut discuter de la manière précise dont tu pourrais récupérer le projet. Je pense qu'il serait approprié de créer une nouvelle "organization" Github séparée pour éviter que le projet se retrouve à nouveau lié à un utilisateur Github ,ominatif ; qu'en penses-tu ?

fmartinou avatar Dec 13 '24 13:12 fmartinou

Hello Après l'echec sur la 3.5.3, je viens de switcher de image: 'fmartinou/tydom2mqtt:3.5.3' à la tienne @romainboucher, image: 'ghcr.io/romainboucher/tydom2mqtt:master', et tout fonctionne parfaitement ✔️ Dommage que le principal n'est pas été mergé... D'autant que j'en ai encore fait la pub/sub sur la Community Jeedom et que la frontend manque... @fmartinou on manque tous de temps mais ce projet, que tu portes seul, ne doit pas t'incomber, comme un fardeau. N'hesites pas à me solliciter en privé, ou n'importe, même si je suis une quille en docker, travis ou autre ghcr (que Synology Container (mes instances) ne cautionne pas), je m'autoformerai volontier pour te délester et co-gérer/soutenir/fairemonmieux. Cheers 🍻

Salut @BlacKTM1190 ,

Merci beaucoup de te proposer en contributeur 👍 Comme vous avez tous pu le constater, je n'arrive malheureusement plus à trouver le temps de faire vivre le projet. En plus de cela, je me suis débarassé de tout mon matériel Deltadore ces derniers mois donc j'ai encore moins les moyens qu'avant de tester 😞 .

Je suis donc tout à fait intéresser pour transférer le projet à un repreneur qui pourra mieux le faire vivre. Pour commencer, je viens de t'inviter en tant que Collaborateur sur le répo existant mais on peut discuter de la manière précise dont tu pourrais récupérer le projet. Je pense qu'il serait approprié de créer une nouvelle "organization" Github séparée pour éviter que le projet se retrouve à nouveau lié à un utilisateur Github ,ominatif ; qu'en penses-tu ?

En effet, je pense qu'il peut être bien de créer une organization. C'est plus facile à gérer et à transférer :)

romainboucher avatar Dec 13 '24 13:12 romainboucher

@romainboucher si tu es aussi intéressé pour gérer ce projet, je te laisse toi ou @BlacKTM1190 créer une nouvelle orga et my rajouter provisoirement en tant que membre ? Cela devrait éviter que l'orga soit la propriété de mon user mais devrait me permettre dans le même temps de déplacer mon répo dans cette nouvelle orga

(le nom de tydom2mqtt semble dispo en tant que nom d'orga)

fmartinou avatar Dec 13 '24 13:12 fmartinou

Projet déplacé 😃

=> https://github.com/tydom2mqtt/tydom2mqtt

fmartinou avatar Dec 13 '24 13:12 fmartinou

Merci @fmartinou pour tout ce que tu fais 🤩 J'avoue connaitre les memes disponibilités et être très loin de tes compétences mais grâce à cette orga la synergie naîtra.

BlacKTM1190 avatar Dec 13 '24 13:12 BlacKTM1190

https://github.com/tydom2mqtt/tydom2mqtt/pkgs/container/tydom2mqtt/324240612?tag=feature-183

Available for tests

romainboucher avatar Dec 17 '24 13:12 romainboucher

Hello La misère pour pull un package privé de ghcr sur Syno... J'étais sur ton image ghcr.io/romainboucher/tydom2mqtt:master depuis que tu l'as publiée : tout fonctionnel (light, cover, garage). Sur ghcr.io/tydom2mqtt/tydom2mqtt:feature-183 : messages d'erreur et bootloop.

2024-12-18 09:12:05,375 - tydom.TydomClient    - ERROR   - Exception when trying to connect with websocket (BaseEventLoop.create_connection() got an unexpected keyword argument 'extra_headers')
2024-12-18 09:12:05,391 - asyncio              - ERROR   - Task was destroyed but it is pending!
task: <Task pending name='Task-3' coro=<poll_device_tydom() running at /app/main.py:71>>
/usr/local/lib/python3.11/asyncio/base_events.py:678: RuntimeWarning: coroutine 'poll_device_tydom' was never awaited
  self._ready.clear()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
2024-12-18 09:12:05,394 - asyncio              - ERROR   - Task exception was never retrieved
future: <Task finished name='Task-2' coro=<listen_tydom() done, defined at /app/main.py:41> exception=SystemExit(1)>
Traceback (most recent call last):
  File "/app/tydom/TydomClient.py", line 196, in connect
    self.connection = await websockets.connect(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/websockets/asyncio/client.py", line 442, in __await_impl__
    self.connection = await self.create_connection()
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/websockets/asyncio/client.py", line 368, in create_connection
    _, connection = await loop.create_connection(factory, **kwargs)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: BaseEventLoop.create_connection() got an unexpected keyword argument 'extra_headers'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1922, in _run_once
    handle._run()
  File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/app/main.py", line 44, in listen_tydom
    await tydom_client.connect()
  File "/app/tydom/TydomClient.py", line 206, in connect
    sys.exit(1)
SystemExit: 1
2024-12-18 09:12:05,398 - asyncio              - ERROR   - Task was destroyed but it is pending!
task: <Task pending name='Task-1' coro=<MqttClient.connect() running at /app/mqtt/MqttClient.py:64> wait_for=<Future pending cb=[BaseSelectorEventLoop._sock_write_done(6, handle=<Handle BaseS...0.50', 1883))>)(), Task.task_wakeup()]>>

Je repasse sur ton image et essaie d'investiguer ce soir ou ce we (chaud pour moi cette semaine).

BlacKTM1190 avatar Dec 18 '24 10:12 BlacKTM1190

@BlacKTM1190 je viens de fixer l'image. Elle fonctionne correctement chez moi. Est ce que tu peux regarder que c'est bon pour toi ? J'ai basculé aussi les packages en public pour ne pas avoir de soucis de pull.

romainboucher avatar Jan 06 '25 10:01 romainboucher