10-31-2021, 05:52 AM
(Modification du message : 10-31-2021, 09:26 AM par sud-domotique-expert.)
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";