Skip to the content.

Plugin Mideawifi - STABLE

mideawifi_icon

[!warning]
MAJ 07/01/2023 => Midea est en train d’unifier leur cloud dans une seule et nouvelle appli mobile smarthome, rendant le fonctionnement de mon plugin hazardeux. Aucune garantie de fonctionnement!”}

Mideawifi permet de contrôler et historiser les informations de climatiseurs construits par Midea avec modules Wi-Fi. Si vous utilisez l’application smartphone Nethome plus, Midea Air ou MSmartHome, c’est probablement le constructeur Midea qui est derrière le contrôleur de climatiseur.
/!\ Attention: Entre les dépendances docker et mideawifi, il faudra environ 9Go d’espace disque disponible /!\

Voici une liste non exhaustive de marques ayant parfois des contrôleurs électroniques Midea:

Aperçu

image

Dépendances

La première étape est d’installer les dépendances. Le plugin mideawifi utilise un autre plugin, Docker Management (docker2) qui est maintenu par Jeedom directement.
image

Configuration générale

Une fois les dépendances installées, il faut saisir les identifiants de l’application Midea que vous utilisez.
Le port n’est à changer que si vous utilisez déjà ce dernier.

Sauvegardez puis appuyez sur “Activation Docker”.
L’action peut-être assez longue la première fois, dépendant de la puissance de votre machine (environ 5-10min sur un raspberry 3B+, sinon moins) car cela créé une image spécialement préparée pour être compatible avec votre système.

Une fois que la première pastille docker est verte, vous pouvez appuyer sur le second bouton “Démarrage du container Midea

image

C’est en principe plus rapide, moins d’une minute.

Voilà le plugin est configuré pour communiquer avec l’univers PAC/clim/déshumidificateur de Midea!

Configuration d’un équipement

Après avoir lancé l’ajout automatique, vous devriez retrouver tous les équipements liés à votre compte.

image

En principe il n’y a rien à toucher à l’intérieur des équipements. (sauf le rendre visible, son objet parent et le catégoriser si vous souhaitez)

image

Précision importante: si vous avez les anciens contrôleurs wifi OSK-102, qui ne sont pas “cloud only” vous n’aurez ni token, ni key, laissez les champs vides.

Scénarios

image

Niveau scénario, vous avez possibilité de mettre une température au ½ °C près. (alors que via le dashboard c’est au °C)
Note pour la vitesse de ventilation: 102 est la valeur pour que la ventilation soit automatique, sinon c’est entre 20 et 80. Le pas sera de 20 (pour respecter les paliers classiques: silencieux normal rapide etc…)

Notez que l’on peut passer une série de commandes en bloc code (cela évite d’avoir un bug du cloud quand on envoi trop d’ordres d’un coup)
La commande action se nomme “Commandes personnalisées”. Voici commment procéder:

  // mettez l'équipement qui vous correspond
  $equipement = "#[test][Clim Salon][Commandes personnalisées]#";
  // voir doc en dessous pour la liste des possibilités
  $mesCommandes = "--running 1 --fan-speed 60";
  
  // laissez comme ça
  $sendCmd = cmd::byString($equipement);
  $sendCmd->execute(array('text' => $mesCommandes));

Voici la liste de toutes les commandes possibles:

  --beep-prompt BEEP_PROMPT
                        turn beep prompt on/off (dehumidifier, air conditioner)
  --fan-speed FAN_SPEED
                        Current fan speed (dehumidifier, air conditioner)
  --ion-mode ION_MODE   ion (anion) mode on/off (dehumidifier)
  --mode MODE           operating mode (dehumidifier, air conditioner)
  --pump PUMP           water pump on/off (dehumidifier)
  --pump-switch-flag PUMP_SWITCH_FLAG
                        Pump switch flag - Disables pump (dehumidifier)
  --running RUNNING     turn on/off (dehumidifier, air conditioner)
  --sleep-mode SLEEP_MODE
                        sleep mode on/off (dehumidifier)
  --target-humidity TARGET_HUMIDITY
                        Target humidity (dehumidifier)
  --vertical-swing VERTICAL_SWING
                        vertical swing mode on/off (dehumidifier, air conditioner)
  --comfort-sleep COMFORT_SLEEP
                        sleep comfort mode on/off (air conditioner)
  --dryer DRYER         dryer mode on/off (air conditioner)
  --eco-mode ECO_MODE   eco mode on/off (air conditioner)
  --fahrenheit FAHRENHEIT
                        use Fahrenheit degrees on/off (air conditioner)
  --horizontal-swing HORIZONTAL_SWING
                        fan left/right swing on/off (air conditioner)
  --purifier PURIFIER   dryer mode on/off (air conditioner)
  --show-screen SHOW_SCREEN
                        display on/off (air conditioner)
  --target-temperature TARGET_TEMPERATURE
                        A/C target temperature (air conditioner)
  --turbo TURBO         turbo (boost) mode on/off (air conditioner)
  --turbo-fan TURBO_FAN
                        turbo fan mode on/off (air conditioner)

A vous de faire attention avec les possiblités, fiez-vous à l’appli pour ne choisir que des commandes acceptées par votre appareil.

Voici un second exemple de code à mettre dans un scénario sans déclencheur, qui sera appelé par “Action de chauffe” dans le plugin Thermostat.

image

Réalisé par JulienB80, utilisateur et collaborateur au développement du plugin:

Cliquez pour voir le code pour le scénario hiver
// Par JulienB80 - 12/2022
// Les sondes midea étant peu fiables, tout se base sur un thermostat annexe géré par le plugin thermostat
// De plus, cela évite les commandes à répétition car tout est envoyé d'un coup.
// Pas de problème de cloud de cette manière.

// #########################################################################################
// ne changez que les éléments dans cet encart
  
//récupération de la puissance du thermostat
$cmdPower = cmd::byString("#[ChauffageClimatisation][Thermostat toto][Puissance]#");
$statePower = $cmdPower->execCmd();

//récupération de la consigne demandée à ce thermostat
$cmdConsigne = cmd::byString("#[ChauffageClimatisation][Thermostat toto][Consigne]#");
$stateConsigne = $cmdConsigne->execCmd();

// La commande citée plus haut pour envoyer les commandes personnalisées à votre appareil midea
$cmdPac = cmd::byString("#[ChauffageClimatisation][PAC toto][Commandes personnalisées]#");

// #########################################################################################

$scenario->setLog("Début d'exécution Bloc Code : Consigne : ".$stateConsigne."°C // Puissance :".$statePower."%");

// Si thermostat coupé, on coupe aussi la PAC
if ($statePower == 0) {
    $cmdPac->execute(array('text'=> '--running 0'));
    $scenario->setLog("Puissance Demandée : ".$statePower." % donc extinction PAC");
}

// Si peu de puissance demandée,
// on met une vitesse de ventilation faible
// petite correction sur température demandée
if (($statePower > 0) AND ($statePower <= 25))  {
    $temperature = $stateConsigne + 3;
    if ($temperature > 30)  {
          $temperature = 30;
    }
    $cmdPac->execute(array('text'=> '--mode 4 --turbo 0 --running 1 --fan-speed 40 --target-temperature '.$temperature));
    $scenario->setLog("Puissance Demandée : ".$statePower." % donc fan-speed = 40 + target-temperature ".$temperature.'°C');
}

// Si un peu plus de puissance demandée,
// on met une vitesse de ventilation normale
// moyenne correction sur température demandée
if (($statePower > 25) AND ($statePower <= 50))  {
    $temperature = $stateConsigne + 4;
    if ($temperature > 30)  {
          $temperature = 30;
    }
    $cmdPac->execute(array('text'=> '--mode 4 --turbo 0 --running 1 --fan-speed 60 --target-temperature '.$temperature));
    $scenario->setLog("Puissance Demandée : ".$statePower." % donc fan-speed = 60 + target-temperature ".$temperature.'°C');
}

// Si puissance demandée assez importante,
// on met une vitesse de ventilation forte
// moyenne correction sur température demandée
if (($statePower > 50) AND ($statePower <= 75))  {
    $temperature = $stateConsigne + 5;
    if ($temperature > 30)  {
          $temperature = 30;
    }
    $cmdPac->execute(array('text'=> '--mode 4 --turbo 0 --running 1 --fan-speed 80 --target-temperature '.$temperature));
    $scenario->setLog("Puissance Demandée : ".$statePower." % donc fan-speed = 80 + target-temperature ".$temperature.'°C');
}

// Si puissance demandée très importante,
// on met le mode turbo
// forte correction sur température demandée
if ($statePower > 75) {
    $temperature = $stateConsigne + 6;
    if ($temperature > 30)  {
          $temperature = 30;
    }
    $cmdPac->execute(array('text'=> '--mode 4 --turbo 1 --running 1 --fan-speed 80 --target-temperature '.$temperature));
    $scenario->setLog("Puissance Demandée : ".$statePower." % donc fan-speed = 80 + target-temperature ".$temperature.'°C + Turbo');
}

Scripts Tiers

Mideawifi repose sur le script tiers npm midea-beautiful-air en version v0.9.15
Vous pouvez trouver le code github original ici: nbogojevic/midea-beautiful-air

Informations complémentaires

Aide - FAQ

La température est incorrecte

Dans votre application aussi. Sur beaucoup de modèles les capteurs sont mal placés dans les unités.

Il y a un délai entre les actions sur jeedom et l’effet sur l’appareil

Effectivement, la détection peut mettre jusqu’à 20-30secondes, la récupération d’informations et les envois entre 5 et 15secondes. Tout dépend de la rapidité de réponse du cloud.

Problèmes connus


Pour toutes autres questions, merci de regarder si il n’y a pas déjà une réponse à votre interrogation, sinon demandez sur le community jeedom