[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.
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: Cozytouch Thermor

Message par vr6man »

Bonjour

Je reviens vers vous, suite à des problèmes avec mon Domoticz, j'ai refait une installation complete a partir d'un raspbian vierge

Par contre je n'arrive pas a lancer le script V2, j'ai le message d'erreur suivant et donc pas de devices qui se crée

sudo /usr/bin/python2.7 /home/pi/domoticz/scripts/python/cozytouch2.py
Traceback (most recent call last):
File "/home/pi/domoticz/scripts/python/cozytouch2.py", line 10, in <module>
import requests,shelve,json,time,unicodedata,os
ImportError: No module named requests


Auriez vous une idée ?

Merci
sg2
Messages : 63
Inscription : 24 déc. 2015, 13:30

Re: Cozytouch Thermor

Message par sg2 »

Bonjour,

En préambule, un grand merci à l'auteur de ce script et aux contributeurs ; non seulement ça marche chez moi, mais aussi ça m'a mis le pied à l'étrier python :)

Comme dit dans le 1er post de la page 2 de ce fil, tu dois d'abord installer les modules Python dont dépend le script :

sudo pip install requests shelves

Pour info, en passant :
- le script ne marche pas avec python 3.x, seulement avec 2.x (qu'on peut considérer comme deux langages différents, pour simplifier)
- vous pouvez installer simultanément python 3.x et 2.x, si vous voulez utiliser des scripts python 2 et 3. On peut alors lancer les scripts python 2 / 3 avec python2 monscript.py, et python3 monscript.py
- a priori, en-dessous de 2.7.9, vous aurez des warnings d'authentification SSL sur le site Atlantic, liés au fait que la librairie, les certificats et les mécanismes TLS de python < 2.7.9 sont obsolètes
- si vous pouvez, installez & utilisez python 2.7.15
- chez moi (4 radiateurs Thermor Bilbao + vieux domoticz 3.5xxx sur un raspeberry pi 2 sous raspbian wheezy avec python 2.7.3), le script ne marchait pas pour de multiples raisons, que j'ai corrigées. Je publierai mes changements, dont un sans lequel je me demande comment ça marche chez vous : le script extrait les infos de la trame reçue du serveur Atlantic par numéro ; exemple : "consigne" = paramètre 3, "on/off" = paramètre 2 etc. Or Atlantic semble avoir reformaté ses trames et changé l'ordre des paramètres... J'ai donc modifié le script pour qu'il extraie les paramètres par nom (invariant) et non par numéro (variant).
- au vu de la montagne d'infos renvoyées par le serveur Atlantic, il y a plein de paramètres qui pourraient être intéressants, que j'ajouterai au script de façon optionnelle
- le bridge cozytouch fait aussi partie des équipements pour lesquels le serveur renvoie des infos ; a minima on peut afficher son état de connectivité au serveur Atlantic dans domoticz

Cordialement,
--
Stéphane
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: Cozytouch Thermor

Message par vr6man »

Merci


Un peu de news

en faisant :

sudo pip install requests shelves
j'ai cette réponse
Successfully installed certifi-2018.11.29 chardet-3.0.4 idna-2.8 requests-2.21.0 shelves-0.3.8 urllib3-1.24.1

Du coup maintenant quand je lance le script a la main :

sudo /usr/bin/python2.7 /home/pi/domoticz/scripts/python/cozytouch.py

pi@rasp_home:~ $ sudo /usr/bin/python2.7 /home/pi/domoticz/scripts/python/cozytouch2.py
¤¤¤¤ DEMARRAGE SCRIPT ¤¤¤¤
**** Fonction test ****
repertoire actuel : /home/pi/domoticz/scripts/python/cozytouch_save
idx materiel dans cozytouch_save -> n°10
idx cozytouch trouve dans domoticz -> n°10
**** Fin fonction test ****
**** Tentative interrogation serveur Cozytouch ****
Requete GET : refreshAllStates
Requete de test reussie : Interrogation serveur...
**** Fonction decouverte devices ****
Requete GET : getSetup
**** Demarrage mise a jour devices ****
Mise a jour device :0
Traceback (most recent call last):
File "/home/pi/domoticz/scripts/python/cozytouch2.py", line 846, in <module>
decouverte_devices ()
File "/home/pi/domoticz/scripts/python/cozytouch2.py", line 507, in decouverte_devices
maj_device (data,name,p,x) # mise à jour du device
File "/home/pi/domoticz/scripts/python/cozytouch2.py", line 790, in maj_device
save (switch, ('save_onoff_'+str(classe.get('idx_on_off'))))
UnboundLocalError: local variable 'switch' referenced before assignment

Les devices sont bien créés mais pas mis à jour, tout les valeurs restent à zero

Tu aurais une idée ?

Merci de ton aide
sg2
Messages : 63
Inscription : 24 déc. 2015, 13:30

Re: Cozytouch Thermor

Message par sg2 »

Rebonjour’

Quelle version de domoticz utilises-tu ?

J’ai eu le même problème avec ma version 3.5033 de 2016, qui ne renvoie pas l’index des devices créés par le script dans son retour json.

Comme je veux garder ma version, que j’ai beaucoup modifiée par ailleurs, j’ai ajouté les quelques lignes de code qui renvoient l’index, recompilé domoticz et c’est tombé en marche.

Si tu utilises une version récente, il y a un autre souci.
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: Cozytouch Thermor

Message par vr6man »

Je suis en V4.9700
sg2
Messages : 63
Inscription : 24 déc. 2015, 13:30

Re: Cozytouch Thermor

Message par sg2 »

Bonjour,

Ok, alors tu as le problème que j'ai évoqué, de changement d'ordre des paramètres de la trame Atlantic, avec laquelle le script n'est plus compatible. A priori, tous les utilisateurs du script devraient avoir ce souci.

Je publierai un correctif ; en attendant voici des changements provisoires dans la fonction maj_device() qui devraient refaire marcher le script :

- remplacer :
# Switch selecteur : définition des levels du switch
on_off = value(data,x,4)
mode = value(data,x,3)

par :
# Switch selecteur : définition des levels du switch
on_off = value(data,x,3)
mode = value(data,x,2)

- remplacer :
# Lecture et comparaison de la consigne de température actuelle :
comparaison_consigne ('confort',classe.get('url'),classe.get('nom'),classe.get('idx_cons_temp_confort'),value(data,x,10),("setComfortTemperature"))

par
# Lecture et comparaison de la consigne de température actuelle :
comparaison_consigne ('confort',classe.get('url'),classe.get('nom'),classe.get('idx_cons_temp_confort'),value(data,x,9),("setComfortTemperature"))

A priori ça devrait suffire.

Cordialement,
--
Stéphane
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: Cozytouch Thermor

Message par vr6man »

ok super, j'attends le nouveau script dans ce cas

pour info avec une réinsatllation de la raspbian lite

la commande sudo pip install requests shelves ne fonctionne pas

j'ai du faire

sudo apt install python-pip
pip install requests

et enfin

sudo pip install requests shelves
sg2
Messages : 63
Inscription : 24 déc. 2015, 13:30

Re: Cozytouch Thermor

Message par sg2 »

Essaye quand même les changements de mon post précédent, si possible
vr6man
Messages : 627
Inscription : 18 juil. 2017, 12:15

Re: Cozytouch Thermor

Message par vr6man »

ok tu parles de quel changement ?
sg2
Messages : 63
Inscription : 24 déc. 2015, 13:30

Re: Cozytouch Thermor

Message par sg2 »

Ceux de mon post plus haut : "en attendant voici des changements provisoires dans la fonction maj_device() qui devraient refaire marcher le script" ...

Tu ouvres le script dans un éditeur de texte et tu fais les 3 changements indiqués.
Répondre