Commande vide lors de changement via scénario

Bonjour,

Comme indiqué ici je développe un plugin pour interfacer les pompes à chaleur Mitsubishi reliées aux serveurs MELCloud.
Un utilisateur me remonte un problème : Recherche beta-testeurs pour plugin Mitsubishi Melcloud - #25 par jlequen, comme quoi le fait d’envoyer une action via un scénario envoie un champ vide ou 0.

Je reproduit ce phénomène, mais je ne sais pas du tout quel peut en être l’origine, ni comment le résoudre.
Je vous sollicite donc pour avoir des pistes de recherche afin de corriger ce soucis.

Salut,

C’est un peu vague là. On n’a même pas le log du scenario. Je n’ai pas compris le problème.

C’est quoi le subtype de la commande ?
Tu as fait un template pour le scénario? L’affichage me semble bizarre mais c’est peut-être juste l’écran qui est étroit.

Bonjour Mips,

Je me doute bien que c’est un peu vague, mais honnêtement, je ne sais pas trop comment expliquer, à part en vous faisant tester le plugin (encore faut-il avoir un accès MELCloud, j’en suis bien conscient).

La commande est définie ainsi :

Oui, j’utilise un template. Mais par contre, je ne comprends pas pourquoi tu indiques que ça fait étroit. Ce n’est, normalement, pas le cas. Voir le poste de présentation, en lien dans mon 1er message.

Voici ce que ça donne tel que la commande a été définie actuellement.

Scénario :


Log du scénario :

[2022-11-09 14:22:14][SCENARIO] -- Start : Scenario lance manuellement.
[2022-11-09 14:22:14][SCENARIO] - Exécution du sous-élément de type [action] : action
[2022-11-09 14:22:14][SCENARIO] Exécution de la commande  [Chambre 4][Chambre rose][Température consigne] avec comme option(s) : {"background":"0","slider":19}
[2022-11-09 14:22:15][SCENARIO] Fin correcte du scénario

Log du plugin :

[2022-11-09 14:22:14]DEBUG : New Temperature set : 0

Alors que quand on passe par le template du plugin, cette ligne dans le log du plugin indique la bonne température.

Du coup, j’ai testé, en changeant le subtype de la commande (dans le code .class.php), en mettant une liste, mais ça fait exactement la même chose.

Actuellement, dans le code, cette commande est défini ainsi (si ça peut aider à comprendre) :

Et jlequen indique qu’en mettant le subtype en message, ça fonctionne.
Le soucis que j’ai avec ce subtype, c’est que l’utilisateur peut envoyer n’importe quoi à travers un scénario (même du texte).

Je parlais d’un template pour le scénario mais je pense pas que tu aies fait ca; je viens de regarder rapidement ton code;

ton problème est dans le execute de la commande:

    if('OperationMode' == $this->logicalId) {
      log::add('mitsubishimelcloud', 'debug', 'New mode requested, value : '.$_options['message']);
      mitsubishimelcloud::SendDeviceUpdate($_options['message'], $this->getEqLogic(), 'OperationMode', 6);
    }
    if('FanSpeed' == $this->logicalId) {
      log::add('mitsubishimelcloud', 'debug', 'New Fan speed requested, value : '.$_options['message']);
      mitsubishimelcloud::SendDeviceUpdate($_options['message'], $this->getEqLogic(), 'SetFanSpeed', 8);
    }
    if('SetTemperature' == $this->logicalId) {
      log::add('mitsubishimelcloud', 'debug', 'New Temperature set : '.floatval($_options['message']));
      mitsubishimelcloud::SendDeviceUpdate($_options['message'], $this->getEqLogic(), 'SetTemperature', 4);
    }
    if('VaneHorizontalDirection' == $this->logicalId) {
      log::add('mitsubishimelcloud', 'debug', 'New horizontal vane direction, value : '.intval($_options['message']));
      mitsubishimelcloud::SendDeviceUpdate($_options['message'], $this->getEqLogic(), 'VaneHorizontal', 256);
    }
    if('VaneVerticalDirection' == $this->logicalId) {
      log::add('mitsubishimelcloud', 'debug', 'New Vertical vane direction, value : '.intval($_options['message']));
      mitsubishimelcloud::SendDeviceUpdate($_options['message'], $this->getEqLogic(), 'VaneVertical', 16);
    }
  }

je ne sais pas quelle commande c’est exactement mais sur une commande slider tu dois utiliser la clé slider de l’array d’options ($_options dans ton code)

  • message & title c’est uniquement pour les commandes de type message
  • select pour les commande listes
  • color pour les commandes de type couleur
  • slider pour les commandes curseur

on le voit dans le log du scénario, il t’envoie bien la clé slider dans les options (valeur à 19 dans l’exemple):

mais toi tu lis message donc t’as rien, normal :wink:

=> du coup ton template widget doit être incorrecte probablement (je n’ai pas vérifié), ton widget utilise surement message mais il ne devrait pas, tu dois t’aligner sur le core

=> tu peux tester dans l’écran des commandes directement, tu auras le même problème que lors de l’utilisation depuis un scénario

Merci Mips pour l’aide.
C’est exactement ceci le problème. J’ai surement démarré avec un message puis gardé et fait des copier/coller sans y réfléchir.

J’ai mis à jour le .class.php et le template qui utilisait un message au lieu d’un slider.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.