Cozytouch
#11
Salut la communauté Lifedomus

En cherchant un peu sur internet dans la communauté Domoticz, j'ai trouvé un programme en python, il me semble qui permet de se connecter au Cozytouch et avoir des infos.

Je n'y connais rien, mais il y a une démarche à creuser.


L'adresse de l'api semble être cela :
https://ha110-1.overkiz.com/enduser-mobi...alAPI/json

avec le userId= xxxx@XXXX (login sur Cozytouch)
& userPassword = XXXXXX (Password sur Cozytouch) à ajouter à la suite
je peux donner mes identifiants en MP, si l'un d'entre-vous veux s'y atteler pour des test

en entête :
content-type : application/x-www-form-urlencoded
cache-control : no-cache
J'ai cherché de mon coté à créer un connecteur, il se connecte passe au vert mais le Listener ne renvoie rien.

Je ne vois pas comment créer un connecteur pour Cozytouch avec toutes ces infos qui permettrait de faire remonter des données.

Je mets le programme python pour Domoticz en  fichier joint.

Si Hsd, Tony, ou un autre peut jeter un œil et m'indique comment créer le connecteur, merci à eux.


Pièces jointes
.txt   Cozytouch_txt.txt (Taille : 80.83 Ko / Téléchargements : 23)
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#12
(01-07-2020, 07:32 PM)Al_Bla a écrit : Salut la communauté Lifedomus

En cherchant un peu sur internet dans la communauté Domoticz, j'ai trouvé un programme en python, il me semble qui permet de se connecter au Cozytouch et avoir des infos.

Je n'y connais rien, mais il y a une démarche à creuser.


L'adresse de l'api semble être cela :
https://ha110-1.overkiz.com/enduser-mobi...alAPI/json

avec le userId= xxxx@XXXX (login sur Cozytouch)
& userPassword = XXXXXX (Password sur Cozytouch) à ajouter à la suite
je peux donner mes identifiants en MP, si l'un d'entre-vous veux s'y atteler pour des test

en entête :
content-type : application/x-www-form-urlencoded
cache-control : no-cache
J'ai cherché de mon coté à créer un connecteur, il se connecte passe au vert mais le Listener ne renvoie rien.

Je ne vois pas comment créer un connecteur pour Cozytouch avec toutes ces infos qui permettrait de faire remonter des données.

Je mets le programme python pour Domoticz en  fichier joint.

Si Hsd, Tony, ou un autre peut jeter un œil et m'indique comment créer le connecteur, merci à eux.

je viens de jeter un coup d'oeil au script python que tu as posté,
la 1ère chose qui est faite c'est d'obtenir un N° de session (cookie) qui sera utilisé par la suite pour tous les dialogues avec cozytouch, donc dans ton listener si tu ne vois rien c'est que ce 1er dialogue n'est pas bon.


Code PHP :
def cozytouch_login(login,password):
 
   """ Fonction d'authentification à l'API Cozytouch, transmets une
    requete POST avec le couple login/password et sauvegarde le cookie de session
    """
 
   # Headers HTTP
 
   headers= {
 
   'content-type'"application/x-www-form-urlencoded",
 
   'cache-control'"no-cache"
 
   }
 
   myurl=url_cozytouch+'login'
 
   payload 'userId='+login+'&'+'userPassword='+password

    req 
requests.post(myurldata=payloadheaders=headers)
 
   if debug:
 
       print(' POST-> '+myurl+" | userId=****&userPassword=**** : "+str(req.status_code))

 
   if req.status_code==200 # Réponse HTTP 200 : OK
 
       print("Authentification serveur cozytouch OK")
 
       cookies =dict(JSESSIONID=(req.cookies['JSESSIONID'])) # Récupération cookie ID de session
 
       var_save(cookies,'cookies'#Sauvegarde cookie
 
       return True

    print
("!!!! Echec authentification serveur cozytouch")
 
   http_error(req.status_code,req.reason)
 
   return False 

grosso modo, il va falloir créer un connecteur
l'invariant : provient de sa variable url_cozytouch=u'https://ha110-1.overkiz.com/enduser-mobile-web/externalAPI/json/'  doit être dans l'URL du connecteur

pour les tests
le header et le login dans le corps de la commande de l'équipement,  exemple commande "login"
tu créés aussi une variable : cozy_touch_sessionId en double

dans ton équipement, lier au connecteur construire une requête en POST:
dans ta requête (commande 'login' de l'équipement)
tu va mettre en
- POST
- le header : doit comprendre
Code PHP :
{
 
   'content-type'"application/x-www-form-urlencoded",
 
   'cache-control'"no-cache"
 
   
la requête : va être command="login"
et tu dois ajouter un espace data qui va reprendre : 'userId='+login+'&'+'userPassword='+password 
pour le test tu peux mettre login et password en dur

normalement tu devrais voir quelquechose dans le connecteur en mode listener , dans tous les cas je t'invite à mettre dans la commande

ldrpint("début de requête")
command='login';

dans le parser json tu dois récupérer le contenu retour

Code PHP :
try {
    var obj_cozytouch JSON.parse(trame);    
} catch (e) {
    ldprint("Error parse JSON: " e.message);
}
ldprint(obj_cozytouch.status_code)
cozytouch_sessionId obj_cozytouch.cookies['JSESSIONID']) 


voilà pour le début le reste est à faire, y a pas mal de commande et c'est à reprendre en javascript (je ne sais pas si LD sait directement traiter le php ? - en tout cas je n'ai jamais fait donc il faudra quelqu'un d'autre te renseigne)

si tout cela fonctionne alors tu vas pouvoir avancer.
Répondre
#13
Bonjour Sud Domotique expert,

Désolé je ne connais pas ton prénom.

Merci pour ton aide.

Comme tu me l'as proposé j'ai créé :

1. un connecteur Cozytouch avec en URL : "https://ha110-1.overkiz.com/enduser-mobile-web/externalAPI/json/"
et rien d'autre.
   

2. un équipement Cozy Zone Control 2 avec :

une variable : cozy_touch_sessionId en double

une commande :
Label : CozyLogin
Type : Ascii
Commande : command="login"
Lecture cyclique : RAS
Méthode : POST
Paramètres : command="login userId=xxxxxx&userPassword=xxxxxx"
En-tête : 
Nom : cache-control   Valeur : no-cache
Nom : content-type    Valeur : application/x-www-form-urlencoded

Parseur JS de la commande :
J'ai recopier le parseur "Try...." mais il me dit qu'il manque ";" avant la ligne 7, Il y a-t-il une erreur ?
ldprint("Début de requète")
command='login

   

Je dois faire une erreur quelque part, car rien ne remonte dans le Listener.

Je te joins les écrans.
 D'avance merci.
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#14
la commande est dans la partie haute commande et pas dans le parser
dans le parser en bas tu mets le json qui va récupérer le résulat  du retour

le 1 à l'air d'être bon
le 2
a ==> OK
b :  non tu mets les data :  userId=alain_blanca@orange.fr&userPassword=3157ajcb  (je ne sais plus si c'est {userId=alain_blanca@orange.fr&userPassword=3157ajcb} ou direct userId=alain_blanca@orange.fr&userPassword=3157ajcb ou "userId=alain_blanca@orange.fr&userPassword=3157ajcb"
c ==> OK
d: non
tu mets

Code :
try {
    var obj_cozytouch = JSON.parse(trame);    
} catch (e) {
    ldprint("Error parse JSON: " + e.message);
}
ldprint(obj_cozytouch.status_code);
cozy_touch_sessionId = obj_cozytouch.cookies['JSESSIONID']);
Répondre
#15
Merci de ta rapide réponse.

mais il me signale une erreur dans le script.
il manque soi-disant un ";" avant une instruction (js#7).
Je ne vois pas où ?
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#16
(01-08-2020, 12:13 PM)Al_Bla a écrit : Merci de ta rapide réponse.

mais il me signale une erreur dans le script.
il manque soi-disant un ";" avant une instruction (js#7).
Je ne vois pas où ?

oui je penses que qu'il y a un ) fermante et pas ouvrante enlève le ), il sert à rien
Code :
obj_cozytouch.cookies['JSESSIONID']);
Répondre
#17
(01-08-2020, 12:21 PM)sud-domotique-expert a écrit :
(01-08-2020, 12:13 PM)Al_Bla a écrit : Merci de ta rapide réponse.

mais il me signale une erreur dans le script.
il manque soi-disant un ";" avant une instruction (js#7).
Je ne vois pas où ?

oui je penses que qu'il y a un ) fermante et pas ouvrante enlève le ), il sert à rien
Code :
obj_cozytouch.cookies['JSESSIONID']);

J'ai essayé avec les 3 manières de mettre le userId & userPassword, il ne remonte rien.
As-tu une idée ?
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#18
(01-08-2020, 12:40 PM)Al_Bla a écrit :
(01-08-2020, 12:21 PM)sud-domotique-expert a écrit : oui je penses que qu'il y a un ) fermante et pas ouvrante enlève le ), il sert à rien
Code :
obj_cozytouch.cookies['JSESSIONID']);

J'ai essayé avec les 3 manières de mettre le userId & userPassword, il ne remonte rien.
As-tu une idée ?

oui j'ai testé avec juste un navigateur et http request il me signale une erreur 403 ou 401 , c'est donc qu'il y a une erreur dans la requête, je cherche et je reviens dès que j'ai trouvé  - tu es certains des userId et Password ?
Répondre
#19
(01-08-2020, 12:48 PM)sud-domotique-expert a écrit :
(01-08-2020, 12:40 PM)Al_Bla a écrit : J'ai essayé avec les 3 manières de mettre le userId & userPassword, il ne remonte rien.
As-tu une idée ?

oui j'ai testé avec juste un navigateur et http request il me signale une erreur 403 ou 401 , c'est donc qu'il y a une erreur dans la requête, je cherche et je reviens dès que j'ai trouvé  - tu es certains des userId et Password ?

Oui je suis certain de mes identifiants, je les ai malencontreusement diffusés, je viens de les modifier et de me connecter avec mon smartphone cela fonctionne bien.
Merci de prendre en charge mon problème.
Je peux te transmettre mes nouveaux identifiants pour test en MP, si tu en as besoin.
A +
C'est en cherchant que l'on trouve...
Al_Bla
Répondre
#20
Salut JL,
En bidouillant un peu.
dans l'équipement j'ai mis dans
Commande : login (et non pas command ="login")
J'ai un Listener qui m'a envoyer ceci.

   

Qu'en penses-tu ?
C'est en cherchant que l'on trouve...
Al_Bla
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)