[Store] Climatisation Mitsubishi / Melcloud

Discussion et échanges de scripts pour la box eedomus

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 05 Mai 2020 11:01

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


c'etait pour faire un test mais a priori ça ne change rien. Enlève le (juste le " id=227688") et refait le test.

sinon as tu bien mis en VAR1 tes identifiants de connexion email:password
et en VAR2 le nom de ton appareil à contrôler (attention au respect de la casse)

si ça marche toujours pas met en ligne 29 le code
var_dump($json);die;
fais un test et envois moi le résultat à mon adresse email
xavierpowaga1@gmail.com
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 : 1741
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 05 Mai 2020 13:21

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


c'etait pour faire un test mais a priori ça ne change rien. Enlève le (juste le " id=227688") et refait le test.

sinon as tu bien mis en VAR1 tes identifiants de connexion email:password
et en VAR2 le nom de ton appareil à contrôler (attention au respect de la casse)

si ça marche toujours pas met en ligne 29 le code
var_dump($json);die;
fais un test et envois moi le résultat à mon adresse email
xavierpowaga1@gmail.com


Pas mieux en supprimant l'ID dans le script.
En ajoutant le test, j'ai l'erreur :
Erreur : Veuillez préciser la valeur de l'argument deviceName afin d'appeler ce script Editer.

Pourtant, j'ai bien le nom du device idem dans Eedomus et dans Melcloud.

(Pour info, je ne peux plus ajouter de pièces jointes dans mon message... je voulais t'envoyer des copies d'écrans)


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 : 263
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 05 Mai 2020 15:43

bon on n'y arrivera pas comme ça, moi j'ai besoin d'image, de fichier etc sinon je travaille dans le vide
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 : 1741
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 08 Mai 2020 13:11

Voici le nouveau code qui fonctionne chez Dominic et moi
En effet, pour une raison que j'ignore, suivant le type d'installation, la reponse à la requête n'a pas du tout la même forme

le code suivant prend en compte les 2 formes connues
Code : Tout sélectionner
<?php

/******modifié par Merguez07
****** le 08 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?", "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?", "GET", "", "", sdk_getHeader(), false);
        $result = sdk_json_decode($json);
    }
   
 
   
   
    $Floors=$result[0]['Structure']['Floors'];
    if (isset($floors)) {
        foreach ($Floors as $Floor){
            $Tdevices=$Floor['Devices'];
            foreach ($Tdevices as $device){
                $devices[]=$device;
            }
        }
    } else {
        $devices=$result[0]['Structure']['Devices'];
    } 
   
   
    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 : 1741
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Dominic » 08 Mai 2020 13:23

merguez07 a écrit:Voici le nouveau code qui fonctionne chez Dominic et moi
En effet, pour une raison que j'ignore, suivant le type d'installation, la reponse à la requête n'a pas du tout la même forme

le code suivant prend en compte les 2 formes connues



Un grand merci à Merguez07 d'avoir pris le temps aujourd'hui de débuguer le script.
Fonctionne maintenant parfaitement, je confirme ! :D

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 : 263
Inscription : 09 Sep 2016

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Bart78 » 02 Août 2020 16:44

Un grand merci à Merguez07 ;) qui a pris le temps en privé de vérifier ce qui ne fonctionnait pas dans mon cas.

Etant totalement profane en matière de script, il a mis à jour le plugin.

Le plugin fonctionne à merveille pour ma part avec mes 2 unités intérieures modèle 2020.

:thumbup:
Bart78
 
Messages : 12
Inscription : 25 Oct 2017

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar AquaWide » 14 Oct 2020 18:47

Hello,
Après quelques heures de tests, j'ai un problème différent :)

en lançant le script, je me retrouve avec ce message d'erreur

Code : Tout sélectionner
## ERROR: Querying [https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin] Error 35: Unknown SSL protocol error in connection to app.melcloud.com:443 ## ERROR: Querying [https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices?] Error 35: Unknown SSL protocol error in connection to app.melcloud.com:443 ## ERROR: Querying [https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=&buildingID=] Error 35: Unknown SSL protocol error in connection to app.melcloud.com:443 XML error: Unknown SSL protocol error in connection to app.melcloud.com:443


Quelqu'un aurait une piste ?
Merci :)
AquaWide
 
Messages : 13
Inscription : 25 Mars 2013

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 14 Oct 2020 20:14

AquaWide a écrit:Quelqu'un aurait une piste ?


envois moi en MP ce que tu as en VAR1 et en VAR2 et je debugge
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 : 1741
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar AquaWide » 16 Oct 2020 12:30

Hello, quelqu'un utilise t-il ce script sur une box eedomus v1 ?

Merci
AquaWide
 
Messages : 13
Inscription : 25 Mars 2013

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 20 Oct 2020 08:41

AquaWide a écrit:Hello, quelqu'un utilise t-il ce script sur une box eedomus v1 ?


Désolé mais c'est officiel, le plugin ne fonctionne pas sur les versions V1.
Ci dessous la réponse de Bart :

"...Après analyse c’est l’évolution du protocole SSL sur le serveur Mitsubishi que la box eedomus de 1ère génération ne sait suivre.

Malheureusement nous ne pensons pas faire évoluer cela, les 1ère box eedomus ont prêt de 10 ans, nous continuerons de les faire évoluer mais pas sur certains sujets qui ne sont pas « rentables »
En revanche nous pouvons proposer des eedomus+ a tarifs très avantageux pour les clients qui nous ont fait confiance avec le 1er modèle....
"
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 : 1741
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Précédent

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)