01-08-2020, 08:07 AM
(Modification du message : 01-08-2020, 08:09 AM par sud-domotique-expert.)
(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(myurl, data=payload, headers=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"
}
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.