[Store] Climatisation Mitsubishi / Melcloud

Discussion et échanges de scripts pour la box eedomus

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 26 Mars 2020 08:23

Merci à Matthieu366 et parabellum, je vais tester cela dans la journée et me permettrais de revenir vers vous en cas de problème (et également pour confirmer si c’est ok [WINKING FACE]).
Merci
Dominic


Envoyé de mon iPhone en utilisant Tapatalk
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 26 Mars 2020 09:25

Re-bonjour,

Après avoir mis mon appareil (1 seule pour faire les tests) au niveau 0 (Maison) et modifié le script et mis sur Marche dans Melcloud, j'ai toujours le message d'erreur suivant (voir images).
Peut-être faut-il désinstaller et réinstaller ?
Sinon, dans la doc on parle de 2 paramètres obligatoires (ID pièce et ID machine), comment les récupérer et où les renseigner ?
Merci d'avance
Dominic
Pièces jointes
Melcloud.jpg
Melcloud.jpg (23.63 Kio) Consulté 1388 fois
Config.jpg
Config.jpg (84.1 Kio) Consulté 1388 fois
Erreur.jpg
Erreur.jpg (17.93 Kio) Consulté 1388 fois
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar parabellum » 26 Mars 2020 19:23

@Matthieu366:
De rien! ;-) ça fait plaisir d'aider et de voir que l'on peu être utile aux autres.
parabellum
 
Messages : 5
Inscription : 26 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar parabellum » 26 Mars 2020 19:31

@Dominic :
dans eedomus, les parametres doivent etre les suivants:
VAR1: tutut@totto.com:motdepass.....ça c'est bon, j'imagine
VAR2: nomdelaclim.....et pas le nom de ta maison, donc=> Chambre
VAR3: vide ou off...mais pas la valeur par défaut: plugin.parameter.session

en espérant que ça suffise.
pour les ID, ce n'est pas la peine, le script se charge de les recupérer d'apres le nom de ta clim et ton login/psw
parabellum
 
Messages : 5
Inscription : 26 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 26 Mars 2020 20:38

parabellum a écrit:@Dominic :
dans eedomus, les parametres doivent etre les suivants:
VAR1: tutut@totto.com:motdepass.....ça c'est bon, j'imagine
VAR2: nomdelaclim.....et pas le nom de ta maison, donc=> Chambre
VAR3: vide ou off...mais pas la valeur par défaut: plugin.parameter.session

en espérant que ça suffise.
pour les ID, ce n'est pas la peine, le script se charge de les recupérer d'apres le nom de ta clim et ton login/psw


@parabellum,
Merci beaucoup pour ton aide mais malheureusement, toujours le même message : Impossible de parser le XML avec la fenêtre suivante :

Je pense que demain j'essayerai de désinstaller puis réinstaller le plugin (en pensant à modifier les lignes de script.
Dominic
Pièces jointes
Erreur.jpg
Erreur.jpg (17.93 Kio) Consulté 1380 fois
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 27 Mars 2020 09:53

Bonjour,

Toujours pas mieux après réinstallation du plugin et script !
Même message d'erreur.
Je cale !

Dominic
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Matthieu366 » 28 Mars 2020 10:53

Bonjour @dominic et @parabellum,
En réalité, ca ne fonctionne toujours pas chez moi (contrairement à ce que je pensais). [i]J'y ai cru mais cela viens simplement du fait que j'avais coché la case "Marche" sous Mel Cloud. La clim a donc démarré suite à une légère tempo... :roll: (j'ai honte de moi)

En résumé, je bloque aussi ! J'ai testé plusieurs alternatives ce matin...mais en vain ! J'ai tout vérifié...mais il doit rester une coquille quelques part :oops: Est ce que CHAUFFAGE est le bon dans la partie USAGE ?
Voici ma page :
28-03-2020 10-41-26.jpg
28-03-2020 10-41-26.jpg (50.19 Kio) Consulté 1358 fois

Matthieu
Matthieu366
 
Messages : 4
Inscription : 23 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 28 Mars 2020 13:18

@Matthieu366, j'ai la même configuration que toi. As-tu le même message que moi (pj) ?
Tu as bien changé la ligne de script comme le préconise parabellum ?
Si oui, nous sommes dans le même cas.

Dominic
Pièces jointes
Erreur.jpg
Erreur.jpg (17.93 Kio) Consulté 1355 fois
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Matthieu366 » 30 Mars 2020 11:33

Bonjour Dominic, l'ensemble des mes réponses a tes questions est OUI.
Nous en sommes dans le même cas.
Caressons l'espoir qu'un âme charitable nous aide... :?
Matthieu366
 
Messages : 4
Inscription : 23 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar parabellum » 30 Mars 2020 19:29

Bonjour,
à distance je peux pas trop vous aider, par contre je peux vous dire comment essayer de trouver l'origine de votre problème.
l'idée est de mettre dans le code php des lignes de code afin de retourner le valeur des variables au fur et à mesure de leur utilisation et ainsi de trouver ce qui cloche.

est ce que l'authentification se passe bien? est ce que la recuperation des id de batiment et de clim est ok? etc...

pour cela il faut ajouter des lignes du type:
Echo "mavariabletoto=".$mavariabletoto."<br>";

ou s'il s'agit de tableau:
Echo "montableau=<br>";
var_dump($montableau);
Echo "<br>";

c'est long et fastidieux, mais la seule façon de trouver l'origine du problème.
Dernière édition par parabellum le 30 Mars 2020 19:38, édité 1 fois.
parabellum
 
Messages : 5
Inscription : 26 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar parabellum » 30 Mars 2020 19:32

par chance, j'avais gardé le script avec tous mes "echo" et "var_dump"....en les commentant les uns apres les autres, ça vous fera peut etre gagner du temps.
bon courage ;-)



<?php
/**
* Build context header
*
* */
function sdk_getHeader(){
Echo "100. debut. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$contextKey = loadVariable('ContextKey');
Echo "101. contextKey = ".$contextKey." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

return array("X-MitsContextKey: $contextKey", "Content-Type: application/json");

}

/**
* Get Building Id and DeviceId from deviceName
* DeviceNme could be full name or serial number recored in melcloud
*
* */
function sdk_setIds($moduleId, $deviceName, $username, $password){

$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices", "GET", "", "", sdk_getHeader(), false);
Echo "<br>";
Echo "25. json = ".$json." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";

$result = sdk_json_decode($json);
Echo "26. result = ".$result." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";
var_dump($result,true);
Echo "<br>";

Echo "26bis. result['Success'] = ".$result['Success']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";


//if (isset($result['Success'])) { /////old
if (isset($result['0'])) {
Echo "27. On va vers sdk_connect($username, $password) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

sdk_connect($username, $password);



$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices", "GET", "", "", sdk_getHeader(), false);
Echo "<br>";
Echo "28. json = ".$json." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";
$result = sdk_json_decode($json);
Echo "29. result = ".$result." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";
var_dump($result);
Echo "<br>";


}

Echo "30. On est la xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

//$devices = $result[0]['Structure']['Devices']; ///OLD
$devices = $result[0]['Structure']['Areas'][0]['Devices'];

Echo "31. devices = ".$devices." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";
var_dump($devices);
Echo "<br>";

Echo "31_1_. deviceName = ".$deviceName." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "31_2_. devices[0]['BuildingID'] = ".$devices[0]['BuildingID']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "31_3_. devices[0]['DeviceName'] = ".$devices[0]['DeviceName']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "31_4_. devices[1]['DeviceName'] = ".$devices[0]['DeviceName']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "31_5_. devices[2]['DeviceName'] = ".$devices[0]['DeviceName']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";



foreach ($devices as $device){
if ($device['DeviceName'] == $deviceName || $device['SerialNumber'] == $deviceName){
saveVariable($moduleId.'-buildingId', $device['BuildingID']);
saveVariable($moduleId.'-deviceId', $device['DeviceID']);
Echo "31bis. device['BuildingID'] = ".$device['BuildingID']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "31ter. device['DeviceID'] = ".$device['DeviceID']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

}
}
Echo "31_fin. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

}

/**
* Log and set ContextId
*
* */
function sdk_connect( $username, $password ){

Echo "16. Entree dans. sdk_connect( $username, $password ). xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
$headers = array("Content-Type: application/json");
Echo "17. headers = ".$headers." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";


$jsonTest = '{Email: "' . $username . '", Password: "' . $password . '", Language: 7, AppVersion: "1.15.3.0", Persist: true}';
Echo "18. jsonTest = ".$jsonTest." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$relogin = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin', 'POST', $jsonTest, '', sdk_getHeader(), false);
Echo "19. relogin = ".$relogin." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$loginResult = sdk_json_decode($relogin);
Echo "20. loginResult = ".$loginResult." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "<br>";
var_dump($loginResult);
Echo "<br>";

if ($loginResult['ErrorId'] == null) {
$contextKey = $loginResult['LoginData']['ContextKey'];
Echo "21. contextKey = ".$contextKey." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

saveVariable('ContextKey', $contextKey);
} else
echo "Erreur de login " . "<br>";//TODO : handle exceptions*/

}

/**
* Get informations from MelCloud
* rebuild context if needed
* rebuild buildingId and DeviceId if needed
*
* */
function sdk_get($moduleId, $deviceName, $username, $password){

Echo "13. Entree dans sdk_get($moduleId, $deviceName, $username, $password) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

//if no contextKey reconnect
$contextKey = loadVariable('ContextKey');
Echo "14. contextKey = ".$contextKey." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

if ($contextKey == '')
Echo "15. On va vers. sdk_connect($username, $password). xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
sdk_connect($username, $password);

//get building ids
$buildingId = loadVariable($moduleId.'-buildingId');
Echo "22. buildingId = ".$buildingId." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$deviceId = loadVariable($moduleId.'-deviceId');
Echo "23. deviceId = ".$deviceId." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

if ($buildingId == ''){
Echo "24. On va vers. sdk_setIds($moduleId, $deviceName, $username, $password) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
sdk_setIds($moduleId, $deviceName, $username, $password);




$buildingId = loadVariable($moduleId.'-buildingId');
Echo "40. buildingId = ".$buildingId." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$deviceId = loadVariable($moduleId.'-deviceId');
Echo "41. deviceId = ".$deviceId." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";


}
$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=$deviceId&buildingId=$buildingId", "GET", "", "", sdk_getHeader(), false);
Echo "42. json = ".$json." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$result = sdk_json_decode($json);
Echo "43. result = ".$result." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
Echo "44. result['Success'] = ".$result['Success']." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

//if (count($device) == 2) {//if no session only 2 datas are raised : { Success: false, ErrorMessage: ""}
if (isset($result['Success']) && $result['Success'] == false) {
sdk_connect($username, $password);
$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=$deviceId&buildingId=$buildingId", "GET", "", "", sdk_getHeader(), false);
Echo "45bis. json = ".$json." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

}
return $json;
}

//get devicename
$deviceName = getArg('deviceName');
Echo "1. deviceName= ".$deviceName." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

//get User and password
$userPass = getArg('userpass');
Echo "2. userPass = ".$userPass." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$tabUserPass = explode(":", $userPass);
Echo "3. tabUserPass = ".$tabUserPass." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$username = $tabUserPass[0];
Echo "4. username = ".$username." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$password = $tabUserPass[1];
Echo "5. password = ".$password." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";


//get parameters

$onoff = getArg('power', false, "");
Echo "6. onoff = ".$onoff." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$fanspeed = getArg('fanspeed', false, "");
Echo "7. fanspeed = ".$fanspeed." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$temperature = getArg('temperature', false, "");
Echo "8. temperature = ".$temperature." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$mode = getArg('mode', false, '');
Echo "9. mode = ".$mode." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

/*
* 1 => Heating
* 8 => Auto
* 7 => Fan
* 2 => Drying
* 3 => Cooling
*/

$moduleId = getArg('eedomus_controller_module_id');
Echo "10. moduleId = ".$moduleId." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

/**
* Session managing
*
* off => nothing recorded
* contextOnly => buildingid and contextid not recorded
* idsOnly => contextKey not recorded
* azzerty => change contextKey to defaut value to test timeouts
*
*/

$resetSession = getArg('session', false, '');
Echo "11. resetSession = ".$resetSession." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

if ($resetSession == "off") {
Echo "11.bis on passe par ici xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

saveVariable('ContextKey', '');
saveVariable($moduleId.'-buildingId', '');
saveVariable($moduleId.'-deviceId', '');

}else if ($resetSession == "contextOnly") {
saveVariable($moduleId.'-buildingId', '');
saveVariable($moduleId.'-deviceId', '');

} else if ($resetSession == "idsOnly") {
saveVariable('ContextKey', '');

sdk_connect($username, $password);
} else if ($resetSession == "azerty") {
saveVariable('ContextKey', 'azerty');
}


Echo "12. On va appeler: $json = sdk_get($moduleId, $deviceName, $username, $password) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
$json = sdk_get($moduleId, $deviceName, $username, $password);


Echo "50. On va appeler: $device = sdk_json_decode($json) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";
$device = sdk_json_decode($json);
Echo "51. device = ".$device." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";


$resultat = "";
Echo "52. resultat = ".$resultat." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";


if ($onoff != "") {

$aremplacer = array('"Power":false', '"Power":true');
Echo "53. aremplacer = ".$aremplacer." xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br>";

$json = str_replace($aremplacer, '"Power":' . $onoff, $json);

$aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
$json = str_replace($aremplacer, '"EffectiveFlags":1', $json);

$aremplacer = '"HasPendingCommand":false';
$json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

$json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

} else if ($fanspeed != "") {

$aremplacer = '"SetFanSpeed":' . $device['SetFanSpeed'];
$json = str_replace($aremplacer, '"SetFanSpeed":' . $fanspeed, $json);

$aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
$json = str_replace($aremplacer, '"EffectiveFlags":8', $json);

$aremplacer = '"HasPendingCommand":false';
$json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

$json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

} else if ($temperature != "") {

$aremplacer = '"SetTemperature":' . $device['SetTemperature'];
$json = str_replace($aremplacer, '"SetTemperature":' . $temperature, $json);

$aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
$json = str_replace($aremplacer, '"EffectiveFlags":4', $json);

$aremplacer = '"HasPendingCommand":false';
$json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

$json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);
} else if ($mode != "") {

$aremplacer = '"OperationMode":' . $device['OperationMode'];
$json = str_replace($aremplacer, '"OperationMode":' . $mode, $json);

$aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
$json = str_replace($aremplacer, '"EffectiveFlags":6', $json);

$aremplacer = '"HasPendingCommand":false';
$json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

$json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

}

echo jsonToXML($json);
parabellum
 
Messages : 5
Inscription : 26 Mars 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 30 Mars 2020 19:50

Merci parabellum,

Je regarde cela demain.
Merci d'avance
Dominic
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 01 Mai 2020 17:57

Effectivement ce plugin n'est pas plug and play. Je viens de l'installer et ça ne marche po...

je debuggue :D
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 1663
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 01 Mai 2020 19:49

@Merguez07, j'avais un peu mis de côté mais si tu trouves quelque chose, je suis preneur. Je peux faire des tests...
Merci
Dominic
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 01 Mai 2020 20:12

Salut Dominic,

chez moi il y a déjà un problème entre le résultat des requêtes.

par exemple si je fais
Code : Tout sélectionner
sdk_connect($username, $password);
$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices", "GET", "", "", sdk_getHeader(), false);
$result = sdk_json_decode($json);


j'ai bien des résultats qui démontre que la requête fonctionne. Par contre le format ne permet pas de rappatrier quelque chose dans l'expression
Code : Tout sélectionner
$devices = $result[0]['Structure']['Devices'];


peut être que mitsubishi a changé la forme des données ce qui explique le problème

As tu un lien vers leur API ?
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 1663
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 02 Mai 2020 08:32

merguez07 a écrit:
As tu un lien vers leur API ?


Salut Merguez07,

Non je n'ai pas de lien vers leur API.
De mon côté, j'ai le message suivant :
Pièces jointes
Message.jpg
Message.jpg (18.94 Kio) Consulté 836 fois
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 02 Mai 2020 08:45

pour être plus précis

quand on fait la requête
Code : Tout sélectionner
sdk_connect($username, $password);
$json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices", "GET", "", "", sdk_getHeader(), false);


le json obtenu est de la forme :
Capture.JPG
Capture.JPG (86.34 Kio) Consulté 835 fois


On voit bien que le code suivant
Code : Tout sélectionner
$devices = $result[0]['Structure']['Devices'];


ne va rien rappatrier puisqu'en fait toutes les données , du moins chez moi, se trouvent dans
Code : Tout sélectionner
$devices = $result['Structure']['Floors'][0]['Devices'];


A suivre....
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 1663
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 04 Mai 2020 08:41

bon je me suis fait une modif qui fonctionne chez moi.
A vous de tester et de me dire (il suffit de remplacer l'ancien script par celui ci dessous)

Code : Tout sélectionner
<?php

/******modifié par Merguez07
 ****** le 04 Mai 2020*****/


function sdk_getHeader(){
    $contextKey = loadVariable('ContextKey');
    return array("X-MitsContextKey: $contextKey", "Content-Type: application/json");
}

/**
 * Get Building Id and DeviceId from deviceName
 * DeviceNme could be full name or serial number recored in melcloud
 *
 * */
function sdk_setIds($moduleId, $deviceName, $username, $password){


    $json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices?id=227688", "GET", "", "", sdk_getHeader(), false);
    $result = sdk_json_decode($json);


    if (isset($result['Success'])) {
        sdk_connect($username, $password);
        $json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices?id=227688", "GET", "", "", sdk_getHeader(), false);
        $result = sdk_json_decode($json);
    }
   
    $Floors=$result[0]['Structure']['Floors'];
    foreach ($Floors as $Floor){
        $Tdevices=$Floor['Devices'];
        foreach ($Tdevices as $device){
            $devices[]=$device;
        }
    }   

    foreach ($devices as $device){

        if ($device['DeviceName'] == $deviceName || $device['SerialNumber'] == $deviceName){
            saveVariable($moduleId.'-buildingId', $device['BuildingID']);
            saveVariable($moduleId.'-deviceId', $device['DeviceID']);
        }
    }
}

/**
 * Log and set ContextId
 *
 * */
function sdk_connect( $username, $password ){

   
    $headers    = sdk_getHeader();
    $jsonTest   = '{Email: "' . $username . '", Password: "' . $password . '", Language: 7, AppVersion: "1.15.3.0", Persist: true}';
    $login      = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin', 'POST', $jsonTest, '', $headers, false);
    $loginResult= sdk_json_decode($login);

    if ($loginResult['ErrorId'] == null) {
        $contextKey = $loginResult['LoginData']['ContextKey'];
        saveVariable('ContextKey', $contextKey);
    } else
        echo "Erreur de login " . "<br>";//TODO : handle exceptions*/
}

/**
 * Get informations from MelCloud
 * rebuild context if needed
 * rebuild buildingId and DeviceId if needed
 *
 * */
function sdk_get($moduleId, $deviceName, $username, $password){

    $contextKey = loadVariable('ContextKey');
    if ($contextKey == '') sdk_connect($username, $password);

    //get building ids
    $buildingId = loadVariable($moduleId.'-buildingId');
    $deviceId = loadVariable($moduleId.'-deviceId');

    if ($buildingId == ''){
        sdk_setIds($moduleId, $deviceName, $username, $password);
        $buildingId = loadVariable($moduleId.'-buildingId');
        $deviceId = loadVariable($moduleId.'-deviceId');
    }

    $json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=$deviceId&buildingID=$buildingId", "GET", "", "", sdk_getHeader(), false);

    $result = sdk_json_decode($json);

    //if (count($device) == 2) {//if no session only 2 datas are raised : { Success: false, ErrorMessage: ""}
    if (isset($result['Success']) &&  $result['Success'] == false) {
        sdk_connect($username, $password);
        $json = httpQuery("https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=$deviceId&buildingID=$buildingId", "GET", "", "", sdk_getHeader(), false);
    }

    return $json;

}


$deviceName     = getArg('deviceName');

$userPass       = getArg('userpass');
$tabUserPass    = explode(":", $userPass);
$username       = $tabUserPass[0];
$password       = $tabUserPass[1];

//get parameters

$onoff          = getArg('power', false, "");
$fanspeed       = getArg('fanspeed', false, "");
$temperature    = getArg('temperature', false, "");
$mode           = getArg('mode', false, '');
/*
 * 1 => Heating
 * 8 => Auto
 * 7 => Fan
 * 2 => Drying
 * 3 => Cooling
 */

$moduleId       =  getArg('eedomus_controller_module_id');

/**
 * Session managing
 *
 * off => nothing recorded
 * contextOnly => buildingid and contextid not recorded
 * idsOnly => contextKey not recorded
 * azzerty => change contextKey to defaut value to test timeouts
 *
 */

$resetSession = getArg('session', false, '');
if ($resetSession == "off") {
    saveVariable('ContextKey', '');
    saveVariable($moduleId.'-buildingId', '');
    saveVariable($moduleId.'-deviceId', '');

}else if ($resetSession == "contextOnly") {
    saveVariable($moduleId.'-buildingId', '');
    saveVariable($moduleId.'-deviceId', '');

} else if ($resetSession == "idsOnly") {
    saveVariable('ContextKey', '');

    sdk_connect($username, $password);
} else if ($resetSession == "azerty") {
    saveVariable('ContextKey', 'azerty');
}

$json = sdk_get($moduleId, $deviceName, $username, $password);


$device = sdk_json_decode($json);

$resultat = "";

if ($onoff != "") {

    $aremplacer = array('"Power":false', '"Power":true');
    $json = str_replace($aremplacer, '"Power":' . $onoff, $json);

    $aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
    $json = str_replace($aremplacer, '"EffectiveFlags":1', $json);

    $aremplacer = '"HasPendingCommand":false';
    $json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

    $json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

} else if ($fanspeed != "") {

    $aremplacer = '"SetFanSpeed":' . $device['SetFanSpeed'];
    $json = str_replace($aremplacer, '"SetFanSpeed":' . $fanspeed, $json);

    $aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
    $json = str_replace($aremplacer, '"EffectiveFlags":8', $json);

    $aremplacer = '"HasPendingCommand":false';
    $json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

    $json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

} else if ($temperature != "") {

    $aremplacer = '"SetTemperature":' . $device['SetTemperature'];
    $json = str_replace($aremplacer, '"SetTemperature":' . $temperature, $json);

    $aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
    $json = str_replace($aremplacer, '"EffectiveFlags":4', $json);

    $aremplacer = '"HasPendingCommand":false';
    $json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

    $json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);
} else if ($mode != "") {

    $aremplacer = '"OperationMode":' . $device['OperationMode'];
    $json = str_replace($aremplacer, '"OperationMode":' . $mode, $json);

    $aremplacer = '"EffectiveFlags":' . $device['EffectiveFlags'];
    $json = str_replace($aremplacer, '"EffectiveFlags":6', $json);

    $aremplacer = '"HasPendingCommand":false';
    $json = str_replace($aremplacer, '"HasPendingCommand":true', $json);

    $json = httpQuery('https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta', 'POST', $json, '', sdk_getHeader(), false);

}

echo jsonToXML($json);

tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 1663
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 04 Mai 2020 10:05

merguez07 a écrit:bon je me suis fait une modif qui fonctionne chez moi.
A vous de tester et de me dire (il suffit de remplacer l'ancien script par celui ci dessous)

[/code]


Salut Merguez,

Merci, j'essaye ça de mon côté, mais ce ne sera pas avant ce soir je pense.
Je te tiens au courant.
Merci
Dominic
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 05 Mai 2020 08:30

Salut Merguez,

Je viens de faire le test en modifiant le script mais j'ai toujours le même message :
Impossible de parser le XML

Par contre, je vois que tu as renseigné un ID en dur dans le script, il correspond à quoi ?

Merci

Dominic
Eedomus+ - RFXcom USB - RFPlayer - Onduleur - Clé4G - NAS Qnap - Caméras - Modules Fibaro - Modules 433Mhz - Prises POPP - Stores orientables Somfy - Pergola bioclimatique moteurs Somfy - Impérihome
Dominic
 
Messages : 260
Inscription : 09 Sep 2016

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Majestic-12 [Bot] et 6 invité(s)