tydom2mqtt
tydom2mqtt copied to clipboard
manage garage as a cover instead of switch (without koleos docs) (#197)
- 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 testé sur mon instance de home assistant ✅
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 😇 ?
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 ,
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 😋
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 🤞
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 +-------+
+------------------+
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 ?
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.
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.
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.
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'
https://github.com/fmartinou/tydom2mqtt/pull/213
@BlacKTM1190 j'ai commit tes retours sur cette branche. En attente de merge par @fmartinou :)
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
Merci @romainboucher 👏 ✌️ Un peu taquet cette semaine mais je teste ton image asap.
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.
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 🍻
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")
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.
Bonjour et merci pour l'aide.
- 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.
- J'ai refait la même chose sur mon installation avec un Raspberry et échec avec toujours le même message à l'install.
- 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 ?
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 ?
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 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)
Projet déplacé 😃
=> https://github.com/tydom2mqtt/tydom2mqtt
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.
https://github.com/tydom2mqtt/tydom2mqtt/pkgs/container/tydom2mqtt/324240612?tag=feature-183
Available for tests
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 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.