dubocr / homebridge-tahoma

Homebridge plugin for TaHoma, Connexoon, Cozytouch, Energeasy Connect.
Apache License 2.0
131 stars 42 forks source link

Atlantic Zone Control 2.0 #111

Closed qelanhari closed 3 years ago

qelanhari commented 5 years ago

Bonjour,

Il me semble voir que les thermostat de clim gainable ne sont pas géré par le plugin. Est-ce parce que vous n'avez pas rencontré l'utilité ou de demande, ou bien une raison technique ? Ceci afin de savoir si je prend un peu de temps pour faire et partager cette feature. N'ayant pas du tout de background sur les API homekit/homebridge et celles de Cozytouch je ne connais pas la faisabilité.

Merci par avance.

dubocr commented 5 years ago

Bonjour,

Le PASS APC (Zone Control) est en partie géré par le plugin si. Quel problème rencontrez-vous ?

Merci.

qelanhari commented 5 years ago

Aucun de mes thermostat ne remonte dans homekit, les sondes qui vont avec et leurs valeurs non plus. Par contre le chauffe eau calypso remonte bien

dubocr commented 5 years ago

Je vais faire un test ce soir avec votre config pour regarder cela. Je vous tiens au courant.

qelanhari commented 5 years ago

Merci beaucoup :)

qelanhari commented 5 years ago

Voici les 3 choses qui me sont remontée par mon cozytouch :

Capture d’écran 2019-07-02 à 08 45 07 Capture d’écran 2019-07-02 à 08 45 01

Le switch zone control est du type "simple" on/off.

dubocr commented 5 years ago

Dans le doute, as-tu bien la dernière version du plugin ? 0.3.4

qelanhari commented 5 years ago

0.3.5 même à priori

dubocr commented 5 years ago

Désolé pour le délais, j'ai pu tester et corriger un problème, tu peux mettre à jour le plugin ce qui devrait activer la totalité des zones.

qelanhari commented 5 years ago

Niiiiice merci beaucoup. En effet les zones remontent. Je suis pas chez moi pour vérifier les interactions mais en tout cas les états sont cohérents :)

qelanhari commented 5 years ago

Du coup j’ai testé les interactions, du moins le changement de température de consigne : ça ne cherche même pas à lancer l’ordre ça indique « sans réponse ». Même question que initialement : c’est une limitation connue ? Ou juste pas réalisé ?

dubocr commented 5 years ago

Peux-tu retourner sur https://dev.duboc.pro/tools/setup afin que je vois si il y a des erreurs. Il doit y avoir plusieurs version de produit derrière le zone control. As-tu une fonction de dérogation sur ton produit ? Il est possible de modifier le comportement dans le fichier Thermostat.js entre les lignes 381 et 417.

qelanhari commented 5 years ago

C'est bon, j'ai renvoyé la config. Que signifie "fonction de dérogation" ?

A ma connaissance il n'y a qu'une seule version du Zone Control qui soit compatible cozytouch/io.

Je vais jetter un coup d'oeil au fichier

dubocr commented 4 years ago

Bonjour,

Dérogation c'est lorsque tu déroges au programme. Par ex, ton thermostat est programmé sur 20°C et tu modifies ponctuellement à 23°C pendant un certain temps.

Lorsque tu as pas de réponse sur Home, as tu des erreurs dans les log homebridge.

qelanhari commented 4 years ago

Ok, je n'utilise pas la programmation pour le moment, uniquement le mode manuel.

Voici les erreurs quand je choisi une température en mode manuel (Faudrai que je vérifie en mode programmation, vu que là du coup la dérogation ferai sens)

[8/12/2019, 11:30:33 AM] [Cozytouch] [Bureau] setDerogatedTargetTemperature[25.9] [8/12/2019, 11:30:33 AM] [Cozytouch] [Bureau] setDerogationOnOffState["on"] [8/12/2019, 11:30:33 AM] [Cozytouch] [Bureau] setDerogationTime[1] [8/12/2019, 11:30:33 AM] [Cozytouch] Error 400 Managed action group is invalid : No such command : setDerogatedTargetTemperature on device io://0814-0166-3977/7666296#8 (io:AtlanticPassAPCZoneControlZoneComponent) (UNSPECIFIED_ERROR) [8/12/2019, 11:30:33 AM] [Cozytouch] [Bureau] setDerogatedTargetTemperature +2 others Error 400 Managed action group is invalid : No such command : setDerogatedTargetTemperature on device io://0814-0166-3977/7666296#8 (io:AtlanticPassAPCZoneControlZoneComponent) (UNSPECIFIED_ERROR) [8/12/2019, 11:30:33 AM] [Cozytouch] Callback already triggered

remy42 commented 3 years ago

bonjour Romain

je prend le relais sur ce sujet car je suis dans le meme cas de figure. J'utilise le plugin homebridge-tahoma pour essayer de piloter ma clim via homekit les sondes de chaque pièce remontent bien dans homekit mais impossible de faire varier les consignes. Je suis en mode manuel également.

cette Issues date un peu mais je sais pas si depuis il y a eu des avancées merci d'avance pour ton aide.

Ci dessous les logs homebridge

je lui demande de passer de 23( température actuelle) à une température de consigne de 20°

2020-9-1 22:20:03] [My Tahoma] [Ch Rdc] setHeatingOnOffState["off"] [2020-9-1 22:20:03] [My Tahoma] [Ch Rdc] setCoolingOnOffState["off"] [2020-9-1 22:20:03] [My Tahoma] Login Cozytouch server... [2020-9-1 22:20:03] [My Tahoma] undefined [2020-9-1 22:20:03] [My Tahoma] Listener registered 4b53985b-d9b6-8679-50a9-32c8ff300c50 [2020-9-1 22:20:12] [My Tahoma] [Ch Rdc] setHeatingOnOffState["off"] [2020-9-1 22:20:12] [My Tahoma] [Ch Rdc] setCoolingOnOffState["on"] [2020-9-1 22:20:12] [My Tahoma] undefined [2020-9-1 22:20:12] [My Tahoma] Listener registered 4b53b9b8-d9b6-8679-50a9-32c860acc097 [2020-9-1 22:20:14] [My Tahoma] [Ch Rdc] setDerogatedTargetTemperature[20] [2020-9-1 22:20:14] [My Tahoma] [Ch Rdc] setDerogationOnOffState["on"] [2020-9-1 22:20:14] [My Tahoma] [Ch Rdc] setDerogationTime[1] [2020-9-1 22:20:14] [My Tahoma] Error 400 No such command : setDerogatedTargetTemperature on device io://0826-0037-0672/12918575#10 (io:AtlanticPassAPCZoneControlZoneComponent) (UNSUPPORTED_OPERATION) [2020-9-1 22:20:14] [My Tahoma] [Ch Rdc] setDerogatedTargetTemperature +2 others FAILED

qelanhari commented 3 years ago

Bonjour,

J'ai pris un peu de temps ce weekend pour fouiller l'API d'overkiz et le plugin.

Chaque zone est un objet du type AtlanticPassAPCHeatingAndCoolingZone. Une zone ne peux pas choisir elle même son mode de fonctionnement (chaud/froid/dry), ce choix n'est offert qu'à la sonde principale qui est du coup renvoyée en deux éléments par l'API. Une zone comme les autres ainsi qu'un élément AtlanticPassAPCZoneControl qui est celui qui régie le fonctionnement.

Les sondes ne peuvent choisir que leur mode (manuel, prog, off), et leurs températures si elles sont en mode manuel uniquement. Il n'y a pas de notion desetDerogatedTargetTemperature même en mode prog, contrairement à ce que le plugin essai d'envoyer. Peut-être que c'était le cas sur la v1 du zonecontrol (la notion n'apparait pas non plus dans les commandes dispo renvoyée par l'API). En mode prog on peu éventuellement forcer le mode eco/confort par rapport à la consigne du calendrier.

Le state core:ThermalConfigurationState d'une sonde sera toujours heatingAndCooling (en tout cas en mode manuel), le seul moyen de savoir si c'est réellement heating ou cooling c'est de lire sur l'AtlanticPassAPCZoneControl le io:LastPassAPCOperatingModeState qui peux prendre les valeurs suivantes : ["cooling","drying","heating","stop"].

Le quickfix pour pouvoir setter les température est donc d'envoyer les deux commandes suivantes sans se préocuper du mode de fonctionnement : setHeatingTargetTemperature et setCoolingTargetTemperature. La version propre serait de récupérer l'état du AtlanticPassAPCZoneControl pour savoir quel commande choisir.

Il faudrai donc également changer le type de AtlanticPassAPCZoneControl qui aujourd'hui est un simple switch. Il faudrait voir pour utiliser le HeaterCooler de homekit pour gérer l'état global du système.

Je pense que les zone ne devrait donc être que de simples thermostats et ne pas pouvoir changer de mode. J'ai bien vu que l'idée qui a tenté d'être utilisé était de mapper le choix de "manuel/prog" via les commandes de "chauffe/froid/auto". Je pense que ceux qui veulent utiliser homekit n'utilisent pas les modes "auto", "prog" ou même "absence" de zonecontrol. Le but étant d'utiliser homekit pour gérer la prog plutôt que le mécanisme d'atlantic. A défaut, il faudrai documenter les choix de mapping.

J'ai tenté de me lancer dans l'écriture d'un plugin dédié à ZoneControl mais ça n'empêche pas d'améliorer le fonctionnement de ce plugin global. J'essai de faire les deux en parallèle, mais certains mécanisme de ce plugin me bloquent, et mes connaissances ultra limitée dans l'API de homebridge n'aident pas du tout.

N'ayant pas de code propre à envoyer en PR, je n'en ai pas fait, mais si tu veux que je pousse le code du quickfix qui permet déjà de changer les températures, je suis à dispo.

remy42 commented 3 years ago

Bonjour

j'ai lu attentivement ta réponse. pour être honnête je n'ai pas tout compris. Ce que je peux dire aujourd'hui dans mon cas, c'est que j'utilise pas du tout la prog atlantic et comme tu le dis, si on veut gérer cela par homekit c'est pour gérer la prog via Homekit.

A ce jour je gère mes différentes pièces en Manuel.

Si tu as fais quelque chose qui fonctionne cela m'interesse. Par contre , comment le mettre en place sur mon homebridge ? J'installe le plug in "homebridge-tahoma" et je replace des fichiers ?

Merci pour ton retour en tout cas.

qelanhari commented 3 years ago

Concrètement la solution la plus rapide serai d'intégrer 3 ou 4 lignes de codes au plugin actuel pour pouvoir gérer la température de chaque zone facilement. Par contre pouvoir gérer le mode (chaud/froid/dry) demande plus de boulot. Je vais proposer une pull request avec le code en question. C'est pas très propre mais ça fonctionnera mieux que ce qu'on a aujourd'hui.

Avec cette PR, si l'auteur de ce plugin la valide, il releasera une nouvelle version du plugin, il suffira alors de demander à npm de mettre à jour avec la nouvelle version.

Si il ne valide pas, il faudra forker le repo ou bien modifier les fichier à la main.

Dans tout les cas, je vais bosser pour faire un plugin dédié, mais il faudra pas l'attendre de suite, même si il faut que je me bouge, car je ne peux pas utiliser la prog d'atlantic à cause de l'emploi du temps de ma femme qui varie chaque jour.

remy42 commented 3 years ago

OK je tenterai ce soir de modifier sur ma version actuelle les lignes que tu as PR. c'est sympa de ta part.

Au dela des pb de réglages de temperature, moi par défaut dans homekit quand j'ouvre l'appli toutes mes pièces sont sur une consigne à 10° si je rentre en modif sur une des "tuiles" alors d'un coup la "vraie" temperature apparait bien

As tu le même phénomène ?

qelanhari commented 3 years ago

Non, pour moi les températures remontées sont les bonnes du premier coup sans ouvrir la tuile, à partir du moment ou la zone est allumée. Si elle est sur Off je suis sur 10° en effet.

qelanhari commented 3 years ago

Le code que j'ai mis en PR permet également d'éteindre/allumer une zone à priori (simple bouton au lieu d'un déroulant). J'ai pas pris le temps de vérifier si il reprenais l'ancienne consigne au bout d'un moment ou si il fallait la forcer.

remy42 commented 3 years ago

ok je regarde ce soir

remy42 commented 3 years ago

ce qui est dommage c'est que ca affiche 10° si on est sur OFF. Car l'idée de scénario par exemple était la suivante.

La clim (ou chauffage car réversible) est sur OFF on veut pas la démarrer dans tel ou tel pièce. Par contre Si on voit que la température ambiante est descendu à XX° on ferme les volets pour éviter le froid sur les vitres ( mais on veut pas encore démarrer le chauffage)

En gros l'idée c'est de lancer un scénario sur une température atteinte (sans pour autant que la zone soit ON ) s'en servir juste comme capteur de température.

qelanhari commented 3 years ago

Je précise bien que c'est la consigne qui apparaît à 10. La température relevée par la sonde est remontée correctement.image

remy42 commented 3 years ago

tu pourrais m'indiquer l'emplacement des fichiers de conf stp ?

qelanhari commented 3 years ago

/usr/local/lib/node_modules/homebridge-tahoma/services ou un truc du genre

qelanhari commented 3 years ago

Hello,

Pour info, j'ai mis à jour ma PR pour une meilleure gestion de l'état (chauffe/refroidissement/off) et des commandes. Je continue à bosser dessus, prochaine étape : gérer le changement de mode dans le composant Parent.

qelanhari commented 3 years ago

Je pense que j'ai un truc plutôt stable.

Les états remontent correctement de l'API, les commandes d'allumage et extinctions aussi. Le composant parent est le seul à pouvoir gérer le choix chaud/froid, les zones sont juste "on/off" via le mode "automatique".

Je sais pas si @dubocr peux regarder et merger ma PR. A défaut j'essayerai de publier un fork sur npm.

remy42 commented 3 years ago

Salut J’ai mis à jour mes sources avec ton PR Ça tourne bien au niveau des pièces. Merci. Par contre j’ai l’impression que sur la tuile ZONE CONTROL j’ai un comportement bizarre. Pourquoi cette tuile sur homekit propose un « changement de température » si je dis pas de bêtise il devrait proposer Chaud/Froid/OFF ? Si je passe de CHAUD à OFF et ensuite je repasse a chaud ça marche pas. J’ai été obligé de reboot mon homebridge La tuile zone control était en sans réponse. Tu as eu ce type de comportement ?

Merci en tout cas pour ton aide et investissement 😌

qelanhari commented 3 years ago

Alors, il faudrait que je vois si je peux utiliser un autre type d'accessoire Homekit, mais le HeaterCooler m'oblige à définir une température courante et de cible. Du coup j'affiche selon si on est en chauffe ou en froid, la plus haute ou la plus froide des zone. Idem pour la cible. Je vais re-tester l'allumage/extinction mais ça fonctionnait au dernières nouvelles (j'avoue que je m'en sert pas). Il faut cependant faire attention aux commandes consécutives trop rapprochée, c'est une limitation de l'API et du bridge, il n'aime pas, mais alors pas du tout.

qelanhari commented 3 years ago

Au passage : si on change la température sur la tuile du zone control, ça (essayera) de passer toute les zones actuellement allumée à cette consigne.

PS : éviter de mettre trop de zone dans un même scénario, car par exemple à l'allumage, homekit va envoyer l'ordre d'allumage puis la consigne de température, soit 2 commandes par zones (sauf qu'en vrai pour l'allumage j'en envoie deux déjà, donc 3). Chez moi j'en passe deux et ça passe.