[Plugin] Cozytouch Thermor

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Cozytouch Thermor

Message par Jeff »

Yes, j'ai bien avancé de mon côté, j'ai réussi à modifier le script et j'arrive à gérer mes 2 zones pas en totatilité. Du moins je commence à comprendre le fonctionnement du script :D
En fait le script fonctionnait quasiment, juste il ne connaissait pas "controllableName" de la PAC alfea extensa duo, qui au passage n'est pas réversible pour moi donc j'ai conditionné les thermostats cooling...
Pour le moment, j'ai les températures des 2 zones : zone plancher et zone radiateur. J'ai les thermostat de ces 2 zones: éco, confort et manuel. Je peux agir sur la température.
Il faut maintenant que je fasse des tests pour voir ce qui me manque en fonction de la domotisation que je veux en faire. Principalement du passage en "éco" sur des conditions (ex : ouverture d'une fenêtre pour qérer)
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
FantoM
Messages : 7
Inscription : 01 avr. 2020, 15:30

Re: Cozytouch Thermor

Message par FantoM »

Bonjour,
Après avoir relue plusieurs fois les posts précédents, je pense avoir résolu une partie de mes problèmes.

Finalement, ça fonctionne en partie .

J'en conclu les cloud Thermor et Atlantic sont identiques car la connexion se fait. La création du "matériel" se fait, en revanche, seul un "module fil pilote" apparaît. De plus la mise a jour entre le serveur et domoticz ne semble pas se faire.

J'ai un doute sur ma ligne Crontab :
J'ai lu en première page : (en remplaçant les _ par des espaces)
*/1_*___*_*_*_____<utilisateur>_____python/home/<utilisateur>/domoticz/scripts/cozytouch.py
J'ai lu dans les posts :
*/1_*_*_*_*_'user'_python/home/'user'/domoticz/scripts/cozytouch.py
Sur Github il est ecrit :
*_/_1_*_*_*_*_python_/_home_/_'user'_/_domoticz_/_scripts_/_cozytouch.py

J'ai testé les trois syntaxes, mais sans amélioration. En remplaçant bien 'user' et 'utilisateur'.

Le problème peut-il venir de cela ?

Bonne journée.
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Cozytouch Thermor

Message par Jeff »

Pour les essais, le crontab n'est pas nécessaire.
Tu te mets dans ton dossier où se trouve le script cozytouch (domoticz/script) et tu le lances manuellement à chaque fois que tu fais une modif dans domoticz ou une modif dans l'application et tu regardes ce qui se passe.

Code : Tout sélectionner

~/domoticz/scripts$ ./cozytouch.py
Moi c'est un peu, beaucoup, énormément plus dur que je ne pensais hier :(
En fait je rame à mort à adapter le code.
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
FantoM
Messages : 7
Inscription : 01 avr. 2020, 15:30

Re: Cozytouch Thermor

Message par FantoM »

J'ai essayé, mais je pense qu'il y a un problème à un autre endroit car lorsque je lance le script, il se passe à chaque fois la même chose :

Code : Tout sélectionner

¤¤¤¤ Demarrage script cozytouch <=> domoticz version 4 (debug :0)
**** Test existence / creation configuration cozytouch (hardware domoticz + fichier de sauvegarde) ****
idx hardware cozytouch dans le fichier de sauvegarde de la configuration : 7
idx hardware cozytouch dans domoticz : 7
**** Fin fonction test ****
Test présence du fichier de sauvegarde cozytouch et virtual hardware domoticz OK

**** Tentative interrogation serveur Cozytouch sans login, avec cookie login précédent ****
Erreur HTTP 401 : 
!!!! Echec interrogation serveur Cozytouch sans login, connexion serveur Cozytouch ****
Authentification serveur cozytouch OK
Connexion serveur Cozytouch reussie
Requete refreshAllStates reussie
**** Decouverte devices ****
**** Demarrage procedure d'ajout devices Cozytouch **** 
Ajout: Bridge Cozytouch localisation inconnue
http://xxx.xxx.xxx.xxx:xxx/json.htm?type=createvirtualsensor&idx=7&sensorname=Module fil pilote Chambre 3+&sensortype=1002
    **** domoticz virtual vensor index : 11
Traceback (most recent call last):
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 1581, in <module>
    decouverte_devices()
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 616, in decouverte_devices
    liste= ajout_module_fil_pilote (save_idx,liste,url,x,read_label_from_cozytouch(data,x,oid)) 
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 769, in ajout_module_fil_pilote
    radiateur[u'idx_switch']= domoticz_add_virtual_device(idx,1002,nom)
NameError: global name 'radiateur' is not defined
Le script semble s’arrêter ici. Je trouve ça étrange. Et du coup à chaque fois que je lance, il me rajoute un nouvel interrupteur "Chambre 3" (je me suis arrêté quand j'en ai eu 4 après avoir lancé 4 fois) semblant correspondre à un de mes deux modules fil pilote (chambre 2 et Chambre 3).
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Cozytouch Thermor

Message par Jeff »

Je ne pourrais pas franchement t'aider, j'essaye aussi de mon côté de débugger et modifier le script en fonction de mon matériel.
Il faut déjà que tu actives le mode debug en mettant 2 à la ligne 31. Tu auras tout le retour de l'API cozytouch et après tu analyses et là bon courage...
Regarde déja tes erreurs par rapport au ligne en question : 1581... Ca peut être dû à des mauvaises manip en se balladant dans le script ou ceux sont des paramètres nouveaux de ton matériel que le script n'a pas.
A la riguer post les lignes en erreur : 2 lignes avant, 2 lignes après. On regardera si ceux sont des erreurs basiques.
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
FantoM
Messages : 7
Inscription : 01 avr. 2020, 15:30

Re: Cozytouch Thermor

Message par FantoM »

Bonjour Jeff,
Je te remercie pour tes réponses.

J'ai gratté un peu. J'ai effectivement remarqué des lignes qui me dérangent. Je ne sais pas si c'est normal, donc j'ai essayé. entre les lignes 754 et 784, on ajoute les modules fil pilote (mes devices) mais aux lignes 769 et 772, on rappelle " radiateur[u'idx_switch'] ". J'ai pris le risque de remplacer "radiateur" par "module_fil_pilote".

Code : Tout sélectionner

def ajout_module_fil_pilote(idx,liste,url,x,label):
    ''' Fonction ajout module fil pilote
    '''

    # création du nom suivant la position JSON du device dans l'API Cozytouch
    nom = 'Module fil pilote '+str(label)

    # création du dictionnaire de définition du device
    module_fil_pilote = {}
    module_fil_pilote['url'] = url
    module_fil_pilote['x']= x
    module_fil_pilote['nom']= nom

    # Création switch selecteur (level_0=off/level_10=frostprotection/level_20=eco/level_30=confort-2/level_40=confort-1/level_50=confort) :
    nom_switch = u'Mode '+nom
769    module_fil_pilote[u'idx_switch']= domoticz_add_virtual_device(idx,1002,nom)
    # Personnalisation du switch(Modification du nom des levels et de l'icone)
    option = u'TGV2ZWxOYW1lczpPZmZ8SG9ycyBnZWx8RWNvfENvbmZvcnQgLTJ8Q29uZm9ydCAtMXxDb25mb3J0O0xldmVsQWN0aW9uczp8fHx8fDtTZWxlY3RvclN0eWxlOjE7TGV2ZWxPZmZIaWRkZW46ZmFsc2U%3D&protected=false&strparam1=&strparam2=&switchtype=18&type=setused&used=true'
772    myurl=u'http://'+domoticz_ip+u":"+domoticz_port+u'/json.htm?addjvalue=0&addjvalue2=0&customimage=15&description=&idx='+module_fil_pilote[u'idx_switch']+u'&name='+nom_switch+u'+&options='+option
    req=requests.get(myurl)
    if debug:
        print(u'  '.join((u'GET-> ',myurl,' : ',str(req.status_code))).encode('utf-8'))

    # Log Domoticz :
    domoticz_write_log(u"Cozytouch : creation "+nom+u" ,url: "+url)

    # ajout du dictionnaire dans la liste des device:
    liste.append(module_fil_pilote)

    print("Ajout: "+nom)
    return liste
A partir de là, dans domoticz, je crée bien un Cozytouch_V4, un module fil pilote Chambre 2 et un module fil pilote chambre 3.

J'en conclu que ma modif a été utile. Les logos et liste de choix étant d'ailleurs cohérents (eco, -1, +1.... etc).

En revanche, si je modifie une valeur sur domoticz et que je relance le script, j'obtiens une nouvelle erreur que je ne comprend pas. (Je suis en Debug=2)

Code : Tout sélectionner

**** Demarrage mise a jour devices ****
Mise a jour device 0 : io:AtlanticElectricalHeaterIOComponent
Failed to retrieve value core:OperatingModeState for device AtlanticElectricalHeater
GET->   http://192.168.1.17:8080/json.htm?type=devices&rid=None   :   200
Traceback (most recent call last):
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 1581, in <module>
    decouverte_devices()
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 666, in decouverte_devices
    maj_device(data,name,p,x) # mise à jour du device
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 1262, in maj_device
    level_0=u'off',level_10=u'frostprotection',level_20=u'eco',level_30=u'comfort-2',level_40=u'comfort-1',level_50=u'comfort',setting_command_mode=u'setHeatingLevel')
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 1128, in gestion_switch_selector_domoticz
    domoticz_switch_actual = domoticz_read_device_switch_selector(idx_switch_domoticz)
  File "/home/domoticz/domoticz/scripts/python/cozytouch.py", line 192, in domoticz_read_device_switch_selector
    return data[u'result'][0][u'LevelInt']
KeyError: u'result'
J'ai l'impression qu'il cherche à mettre à jour "io:AtlanticElectricalHeaterIOComponent" et non pas un "Module fil pilote".
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Cozytouch Thermor

Message par Jeff »

Bravo bien avancé.
Maintenant que tu as eu le script sans erreur quitte à commenter tout ce qui ne marche pas pour le ravoir, il faut que tu récupères le retour du site et que tu analyse quelle variable mettre à jour.
Il ne trouve pas

Code : Tout sélectionner

core:OperatingModeState
Pour ton device à toi cela doit s'appeler différemment.
Aussi j'ai constaté des temps de 3 min de mise à jour entre Dz et l'appli donc sois patient.
C'est très dur à modifier ce script, dommage que @Obone ne nous en apprend pas un peu plus sur le débuggage... Viens à notre aide
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
FantoM
Messages : 7
Inscription : 01 avr. 2020, 15:30

Re: Cozytouch Thermor

Message par FantoM »

il faut que tu récupères le retour du site
Est ce que j’ai bien compris : Dans l’idée il faut que je continue en Debug 2 et que j’analyse tout ce qui s’écrit entre le moment où je lance le script et le moment où ça marque « leu error..... bla-bla-bla « ?
Si c’est ça… j’ai l’impression que le script n’envoie pas des informations pour un module_fil_pilote, mais pour un radiateur. Un peu comme mon problème précédent. Mais ce que je ne comprend, c’est ce que je dois changer et où. Après, j’avoue que c’est au dessus de mes compétences en programmation donc pas simple à lire. Heureusement que tout est super bien détaillé dans les commentaires.

Je vais continuer d’y réfléchir. Mais c’est vrai que l’aide du créateur serait une énorme solution de facilité :roll:
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Cozytouch Thermor

Message par Jeff »

Oui c'est ça le principe, tu copies depuis ton terminal putty tous les logs reçus du site et tu les colles dans un éditeur type notepad++.
Au début du script tu as les devices io qu'ils fonctionnent avec le script.
Si le tien n'y est pas, tu regardes ds les logs quel io envoie ton matériel et tu le rajoutes au début du script "Radiateur ex ... io:...."
Après soit tu pars d'un type qui s'en approche et tu rajoutes or name ( radiateur ex) dans toutes les fonctions nécessaire.
Tu devrais avoir les devices qui se créent dans Dz.
Par contre pour mettre à jour, là il faut trouver le core de la variable dans les logs que tu souhaites changer et le modifier dans le script.
Je sais c'est dur, j'ai même pas fini ce que je souhaite. Ca prend bcp de temps.
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
FantoM
Messages : 7
Inscription : 01 avr. 2020, 15:30

Re: Cozytouch Thermor

Message par FantoM »

J'ai une question qui pourrait peut-être m'aider !

Est-ce que lors du premier lancement du script, et donc de la création des différents éléments, on est sensé récupérer les "réglage" du cozytouch.

Exemple :
1/ mon "Module fil pilote chambre 3" est réglé sur "ECO" et mon "Module fil pilote chambre 2" est réglé sur "Confort" dans l'application Thermor.
2/ Lorsque je lance le script, je crée dans Domoticz mon "cozytouch_V4" avec mes deux interrupteurs "Mode Module fil pilote Chambre 3" et "Mode Module fil pilote Chambre 2", mais les deux sont sur "OFF"

Est-ce normal ? Si non, il faut peut-être que je commence par régler ce problème :?
Répondre