Forum Lifedomus
Demande d'aide Intégration Clim Daikin Wifi - Version imprimable

+- Forum Lifedomus (http://forum-lifedomus.com)
+-- Forum : Vos automates et applications (http://forum-lifedomus.com/forumdisplay.php?fid=52)
+--- Forum : Chauffage (http://forum-lifedomus.com/forumdisplay.php?fid=58)
+---- Forum : Demande d'aide (http://forum-lifedomus.com/forumdisplay.php?fid=65)
+---- Sujet : Demande d'aide Intégration Clim Daikin Wifi (/showthread.php?tid=4885)



Intégration Clim Daikin Wifi - natha571 - 10-30-2021

Bonjour à tous,
suite à l'arrêt annoncé de lifedomus, les options sont toutes devenues gratuites  Out-2bf5

Ayant chez moi un tri-split avec trois unités intérieures DAIKIN, j'ai voulu essaye d'enfin les intégrer dans mon appli lifedomus afin d'éviter d'utiliser plusieurs applis
Malheureusement, mes connaissances sont plus que limitées...

Bref, je me lance 
Suite à la création du connecteur IP  "Clim Salon" utilisant mon IP locale.
L'API daikin se trouve ici : https://github.com/ael-code/daikin-control
j'ai créer un équipement "Climatisation KNX/Daikin" et là, tout se complique pour moi.
j'ai réussi a faire plusieurs trucs mais ça casse pas 3 pattes à un canard


Pour allumer j'utilise la commande (JS) suivante :
command ='aircon/set_control_info?pow=1&mode=1&stemp=26&shum=0&f_rate=B&f_dir=3';
Méthode : GET (Post ne marche pas?)

En gros ça dit : allume la clim en mode auto sur 26, en silencieux avec les pales actives.

pour éteindre :
command ='aircon/set_control_info?pow=0&mode=1&stemp=26&shum=0&f_rate=B&f_dir=3';

ca fonctionne mais impossible de configurer la température ou bien de modifier un paramètre
A priori il faudrait plutôt quelque chose du genre :
command ='aircon/set_control_info?pow={POWER}&mode={MODE}&stemp={STEMP}&f_rate={FAN_RATE}&f_dir={FAN_DIR}';
mais je ne sais pas comment l'implémenter dans lifedomus...

J'ai compris qu'il fallait stipuler des paramètres en mode POST, mais quand je met en post, impossible d'envoyer l'info (le listener ne m'affiche rien)

Donc a priori j'arrive envoyer l'info "statique" en figeant tous les paramètres, mais impossible d'avoir un truc variable
Savez vous comment faire pour configurer correctement ?
Il faut des automates qui remplissent les valeurs de base des variables ?

Par contre j'ai enfin réussi in récupérer la température de la pièce via un tuto dispo sur le forum (oui je ne savais pas ou mettre le code et la commande 35-4134 )
et le listener me donne bien la bonne température !  

Mais comment faire pour avoir le retour d'état de la clim allumée/éteinte ?
j'arrive bien envoyé la commande /aircon/get_control_info
qui me renvoie
ret=OK,pow=0,mode=7,adv=,stemp=26.0,shum=0,dt1=26.0,dt2=M,dt3=25.0,dt4=25.0,dt5=25.0,dt7=26.0,dh1=0,dh2=50,dh3=0,dh4=0,dh5=0,dh7=0,dhh=50,b_mode=7,b_stemp=26.0,b_shum=0,alert=255,f_rate=A,f_dir=3,b_f_rate=A,b_f_dir=3,dfr1=A,dfr2=5,dfr3=5,dfr4=5,dfr5=5,dfr6=5,dfr7=A,dfrh=5,dfd1=3,dfd2=0,dfd3=0,dfd4=0,dfd5=0,dfd6=0,dfd7=3,dfdh=0
Mais quand j'utilise JSON.parse(trame) (dans le code try .... catch  pour les erreurs)
j'ai SyntaxError: Unexpected token: r

Bref,
Si quelqu'un a une idée et serait a même de m'aider , ce serait super  Amen-1fb6
merci d'avance


RE: Intégration Clim Daikin Wifi - natha571 - 10-30-2021

les captures d'écrans...


RE: Intégration Clim Daikin Wifi - sud-domotique-expert - 10-31-2021

peux-tu faire une copie d'écran de ton connecteur , floute juste la partie password ou IP

pour la partie commande : command ='aircon/set_control_info?pow={POWER}&mode={MODE}&stemp={STEMP}&f_rate={FAN_RATE}&f_dir={FAN_DIR}';

EDIT2:  il faut que les variables soient exactement de la même syntaxe - sensible à la casse
en général pour contrôler la ligne de commande j'utilise une astuce consistant à mettre dans une variable locale la ligne de commande pour la publier avec ldprint:
command_line ='aircon/set_control_info?pow={POWER}&mode={MODE}&stemp={STEMP}&f_rate={FAN_RATE}&f_dir={FAN_DIR}';
ldprint(command_line);
command = command_line;


toutes données qui sont entre {} sont des variables ,
- soit directes = nom de la variable de l'équipement  ==> et dans ce cas elles sont prises sans rien faire, mais il faut les mettre à jour par exemple avec DS
- soit indirectes = automate qui va mettre une valeur dans cette variable ==> alors il faut écrire un automate qui va récupérer une valeur pour la mettre dans cette variable


mais en aucun cas ces variables ne sont des params comme vu dans ton screen


pour la partie retour: ret=OK,pow=0,mode=7,adv=,stemp=26.0,shum=0,dt1=26.0,dt2=M,dt3=25.0,dt4=25.0,dt5=25.0,dt7=26.0,dh1=0,dh2=50,dh3=0,dh4=0,dh5=0,dh7=0,dhh=50,b_mode=7,b_stemp=26.0,b_shum=0,alert=255,f_rate=A,f_dir=3,b_f_rate=A,b_f_dir=3,dfr1=A,dfr2=5,dfr3=5,dfr4=5,dfr5=5,dfr6=5,dfr7=A,dfrh=5,dfd1=3,dfd2=0,dfd3=0,dfd4=0,dfd5=0,dfd6=0,dfd7=3,dfdh=0

si c'est ce que te donne le listener alors  le retour n'est pas du json, mais juste du texte et dans ce cas le JSON.parse(trame) ne peut pas marcher , il faut écrire ton .js avec JSON.stringify (trame), qui va mettre le texte en format json pour ensuite exploiter les variables avec leur valeurs

tu peux aussi utiliser dans .js du connecteur la fonction .split() qui va permettre de mettre sous forme de tableau les valeurs retournées
ex: (dans ton cas le délimiteur ne sera pas '&' mais ',' et ton premier argument sera 'trame' à la place de
Code PHP :
string.substring(string.indexOf('?')+1
Code PHP :
// create a data object to store the information below.
 
   var data   = new Object();
// this could be a suffix of a url string. 
 
   var string "?id=5&first=John&last=Doe";
// this will now loop through the string and pull out key value pairs seperated 
// by the & character as a combined string, in addition it passes up the ? mark
 
   var pairs string.substring(string.indexOf('?')+1).split('&');
 
   for(var key in pairs)
 
   {
 
       var value pairs[key].split("=");
 
       data[value[0]] = value[1];
 
   }

// creates this object 
 
   var data = {"id":"5""first":"John""last":"Doe"};

// you can then access the data like this
 
   data.id    "5";
 
   data.first "John";
 
   data.last  "Doe"



RE: Intégration Clim Daikin Wifi - natha571 - 11-01-2021

Super merci pour ta réponse ! et merci pour l'astuce
voilà le connecteur
[attachment=2769]
j'ai rien mis de spécial pour l'instant... j'essaye en local. Ensuite j'ai compris que ca passait via le cloud Daikin (comme dans l'appli daikin)


Pour la commande : command ='aircon/set_control_info?pow={POWER}&mode={MODE}&stemp={STEMP}&f_rate={FAN_RATE}&f_dir={FAN_DIR}';
J'arrive l'intégrer et si je défini les paramètres manuellement ca marche. 
j'ai fais la commutation
[attachment=2771]

Par contre je me heurte a un nouveau soucis...
dans l'application windows, les boutons sont toujours activés, donc les variables restent actives. Dans les applis android c'est un plutôt un appui sec, donc impossible de l'utiliser via l'appli android
as tu une solution?

et pour le moment, je ne sais pas faire la consigne pour régler la température
[attachment=2770]
Je ne sais pas comment faire pour que ca fonctionne correctement 
si ici tu pouvais m'aider...

je me pencherai sur le retour d'état quand tout fonctionnera je pense.... mais le code que tu m'as donné, il se charge dans le connecteur c'est bien ça ?
merci


RE: Intégration Clim Daikin Wifi - sud-domotique-expert - 11-01-2021

on va y aller pas par pas,

utilises l'équipement chauffage/climatisation/climatisationKNX/DAIKIN  comme support de tes commandes et variables, que tu vas lier au connecteur que tu as
là tu vas personnaliser les variables qui existent déjà avec les noms : POWER, MODE, STEMP, F_RATE,F_DIR (et SHUM)
si elles n'existent pas en standard ajoute les en string/double en fonction si c'est du texte ou des nombres

comme cela ton équipement est déjà tout prêt dans DS (que ce soit en windows ou android)

une fois cela fait.

tu vas remplir les commandes déjà pré-existantes avec tes lignes de commandes - exactement comme si elles n'existaient pas.

quand tu vas activer ou modifier une valeur / bouton dans DS alors ta ligne de commande va s’exécuter directement.

ce n'a pas d'importance si toutes les commandes ne sont pas remplies (dans 1 premier  temps), rien ne se passera alors lors des appui/modif dans DS
je t'invites à remplir toutes les commandes par la suite pour avoir un widget lui-même complet.

tu ajouteras par la suite une commande info ou état ou tu pourras ajouter la commande de retour d'état et y mettre le script qui va bien


RE: Intégration Clim Daikin Wifi - natha571 - 11-01-2021

(11-01-2021, 03:16 PM)sud-domotique-expert a écrit : on va y aller pas par pas,

utilises l'équipement chauffage/climatisation/climatisationKNX/DAIKIN  comme support de tes commandes et variables, que tu vas lier au connecteur que tu as
là tu vas personnaliser les variables qui existent déjà avec les noms : POWER, MODE, STEMP, F_RATE,F_DIR (et SHUM)
si elles n'existent pas en standard ajoute les en string/double en fonction si c'est du texte ou des nombres

comme cela ton équipement est déjà tout prêt dans DS (que ce soit en windows ou android)

une fois cela fait.

tu vas remplir les commandes déjà pré-existantes avec tes lignes de commandes - exactement comme si elles n'existaient pas.

quand tu vas activer ou modifier une valeur / bouton dans DS alors ta ligne de commande va s’exécuter directement.

ce n'a pas d'importance si toutes les commandes ne sont pas remplies (dans 1 premier  temps), rien ne se passera alors lors des appui/modif dans DS
je t'invites à remplir toutes les commandes par la suite pour avoir un widget lui-même complet.

tu ajouteras par la suite une commande info ou état ou tu pourras ajouter la commande de retour d'état et y mettre le script qui va bien

Oui c'est bien ce que j'ai fais.
Le connecteur et l équipement sont créer. 
Les variables ont bien été renommées (et créé pour SHUM)

Pour les commandes j'ai créé avec la commande précédente (en fixant par exemple pow=1 au lieu de pow={Power} pour allumer)
Pareil sur les différents mode
Et j'ai aussi créé des actions pour la direction des volets avec F_DIR
Mais pour la régler la température de consigne je ne sais pas comment faire


RE: Intégration Clim Daikin Wifi - sud-domotique-expert - 11-01-2021

normalement tu as une commande:  régler la température de consigne
dedans tu as un i en bleu qui te donnes le nom de la variable qui a été affectée par lifedomus à la température de consigne (pas CLSID_...., mais "temperature"), tu utilises cette variable {temperature} dans ta commande:  régler la température de consigne 
Nota:  au passage c'est n'est pas forcément le nom que tu as mis dans le label de la variable "température de consigne confort", ce label va te servir pour le retour quand tu pourras mettre à niveau les données retour


RE: Intégration Clim Daikin Wifi - sud-domotique-expert - 11-01-2021

remarque1: attention dans les variables déjà existantes, beaucoup ne sont pas des STRING/DOUBLE donc dans la partie javascript, il est fort probable que ça ne colle pas lors des comparatifs d'égalité ou même quand tu vas envoyer des données

par exemple : est démarré est boolean donc prend les valeurs true/false  si tu test POWER==0 ou POWER==1 ça marche pas , il me semble que si test POWER==true non plus
je me rappelle plus mais il me semble que ce qui fonctionne c'est POWER=='true' ou 'TRUE'  - à retester mais je sais que j'ai eu des galères

remarque2: si tu utilises une variable de ton équipement en dehors des quotes "" ou '' alors la syntaxe est POWER pas {POWER}

remarque3: if (POWER=1}  n'est pas un comparatif mais une affectation qui te retournera toujours true ,  si tu veux tester c'est if (POWER==1)