[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 : 2046
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 : 277
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 : 2046
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 : 2046
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 : 277
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 : 14
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 : 2046
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 : 14
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 : 2046
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar AquaWide » 06 Nov 2020 17:32

Merci pour le retour, je n'avais pas vu la réponse.
AquaWide
 
Messages : 14
Inscription : 25 Mars 2013

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Fab_Rice » 27 Déc 2020 12:10

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:
Dire que l'on ne sait pas est une preuve d'intelligence
Fab_Rice
 
Messages : 116
Inscription : 27 Déc 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Fab_Rice » 02 Jan 2021 23:14

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 [...]
Dire que l'on ne sait pas est une preuve d'intelligence
Fab_Rice
 
Messages : 116
Inscription : 27 Déc 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 03 Jan 2021 09:40

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


donne moi ton VAR1 et VAR2 en MP et je regarde
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 : 2046
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 03 Jan 2021 11:08

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
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 : 2046
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 03 Jan 2021 11:20

plugin à jour
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 : 2046
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Fab_Rice » 03 Jan 2021 11:23

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 ;)
Dire que l'on ne sait pas est une preuve d'intelligence
Fab_Rice
 
Messages : 116
Inscription : 27 Déc 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Fab_Rice » 14 Jan 2021 22:13

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
Dire que l'on ne sait pas est une preuve d'intelligence
Fab_Rice
 
Messages : 116
Inscription : 27 Déc 2020

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar merguez07 » 15 Jan 2021 13:06

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 ?
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 : 2046
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: [Store] Climatisation Mitsubishi / Melcloud

Messagepar Fab_Rice » 15 Jan 2021 14:01

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
Dire que l'on ne sait pas est une preuve d'intelligence
Fab_Rice
 
Messages : 116
Inscription : 27 Déc 2020

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Fab_Rice et 2 invité(s)