Forum eedomus
https://forum.eedomus.com/

[Store] Climatisation Mitsubishi / Melcloud
https://forum.eedomus.com/viewtopic.php?f=50&t=6982
« Précédent  Page 4 sur 12  Suivant »
Auteur:  merguez07 [ 05 Mai 2020 11:01 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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
Auteur:  Dominic [ 05 Mai 2020 13:21 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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
Auteur:  merguez07 [ 05 Mai 2020 15:43 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

bon on n'y arrivera pas comme ça, moi j'ai besoin d'image, de fichier etc sinon je travaille dans le vide
Auteur:  merguez07 [ 08 Mai 2020 13:11 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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);
Auteur:  Dominic [ 08 Mai 2020 13:23 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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
Auteur:  Bart78 [ 02 Août 2020 16:44 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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:
Auteur:  AquaWide [ 14 Oct 2020 18:47 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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 :)
Auteur:  merguez07 [ 14 Oct 2020 20:14 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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


envois moi en MP ce que tu as en VAR1 et en VAR2 et je debugge
Auteur:  AquaWide [ 16 Oct 2020 12:30 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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

Merci
Auteur:  merguez07 [ 20 Oct 2020 08:41 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

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....
"
Auteur:  AquaWide [ 06 Nov 2020 17:32 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Merci pour le retour, je n'avais pas vu la réponse.
Auteur:  Fab_Rice [ 27 Déc 2020 12:10 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Si j'adhère à la Eedomus+ je reviendrai sûrement sur ce post étant équipé en Mitsu, en particulier pour savoir si l'on peut faire des choix de scénarios et sur les limites du plugin. :thumbup:
Auteur:  Fab_Rice [ 02 Jan 2021 23:14 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Bonsoir à vous,
Bon ben voilà la box est arrivée, j'ai rentré mes têtes thermostatiques Tado, pas du 1er coup mais maintenant c'est bon. :D

Mais là, ça coince pour la climatisation Mitsu et Melcloud que j'utilise pourtant depuis plusieurs mois.
J'ai chargé le plugin (qui semble être le dernier) du store, rentré identifiant:mot de passe, le nom d'une des unités intérieur et plop, rien, pas de retour d'info ni de commande fonctionnelle.

Y aurait il quelque chose que j'ai loupé ? :shock:

Si une âme charitable pouvait m'aider, merci à vous.

P.S : J'ai ce type de notification
Erreur XML:

<! DOCTYPE html>

<html>
<head>
<meta name = "viewport" content = "width = device-width" />
<title> Erreur </ t [...]
Auteur:  merguez07 [ 03 Jan 2021 09:40 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Fab_Rice a écrit:Si une âme charitable pouvait m'aider, merci à vous.


donne moi ton VAR1 et VAR2 en MP et je regarde
Auteur:  merguez07 [ 03 Jan 2021 11:08 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

bon j'ai piégé le défaut .
Le plugin a été construit sur la base de ce qu'on trouve généralement comme structure d'info. Dans ta config, la structure d'info est différente. J'ai donc enrichi le script afin de prendre en compte ton cas qui, je l'espère , va permettre désormais au plugin de prendre en compte tous les cas de figure.

Je mets à jour le plugin dans la demi-heure, tu n'auras juste qu'à mettre à jour le script
Auteur:  merguez07 [ 03 Jan 2021 11:20 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

plugin à jour
Auteur:  Fab_Rice [ 03 Jan 2021 11:23 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Merci à toi :thumbup:
Je testerai ça ;)

P.S: ça marche nickel :clap:

Autres points constatés:
- Ne pas mettre de caractère spéciaux (accent par ex) sur les noms des unités intérieures, ça ne semble pas passer (Séjour -> Sejour)
- Plus tard faudra que l'on se penche sur les variables de scénarios, il doit y en avoir pour le "bâtiment" (unité par unité) et dans chaque unité (3 préréglages), mais plus tard hein ;)
Auteur:  Fab_Rice [ 14 Jan 2021 22:13 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Bonsoir,
Je reviens sur le sujet afin de démarrer un peu de programmation de mes climatisations.
Est-il possible, ou concevable d'intégrer des accès aux variables Melcloud suivantes :
SceneOwner (scénarios multiples d'états programmés)
VaneHorizontal & VaneVertical (contrôles de positions de soufflage)

Merci à vous de vos retours
Auteur:  merguez07 [ 15 Jan 2021 13:06 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Fab_Rice a écrit:Est-il possible, ou concevable d'intégrer des accès aux variables Melcloud suivantes :
SceneOwner (scénarios multiples d'états programmés)
VaneHorizontal & VaneVertical (contrôles de positions de soufflage)


Oui je pense que c'est possible mais il faut trouver les variables qui vont bien. En effet il n'y a pas d'API disponible et donc on doit les trouver par du reverse engineering .

Parmi les variables à trouver, il y a la variable EffectiveFlags. En cherchant sur le net j'ai vu que pour le VaneVertical et VaneHorizontal elle était égal à 16 (infos trouvées ici)
Quid de l'EffectiveFlags lié au SceneOwner ?
Auteur:  Fab_Rice [ 15 Jan 2021 14:01 ]
Sujet du message:  Re: [Store] Climatisation Mitsubishi / Melcloud

Bonjour,

J'étais "tombé" également sur le même lien concernant les orientations de soufflages. ;)
Autrement oui, on doit pouvoir passer "par la petite porte" via Fibaro, Tado° ou encore en passant par ma Logitech Harmony :D
Page 4 sur 12 Le fuseau horaire est UTC+1 heure