Propositions d'évolutions et de corrections du plugin (suite tests sur Xiaomi X20+)

Bonsoir,

Récemment, des belles promos sur le Xiaomi X20+ m’ont poussé à ajouter des camarades à mes vieillissants Xiaomi V1 et S5.
@sagitaz a suivi le mouvement. Du coup, on a joué un peu avec pour une intégration Jeedom et plugin-jeemate avec le plugin-mirobot.

Suite à cette intégration, on propose donc les corrections et évolutions suivantes :

  • Brosse principale doit être remplacé par Brosse latérale dans le fichier de config :
    (bizarrement, les commandes de la brosse principale ne remontent pas dans la commande status : brush-cleaner:brush-left-time-2 et brush-cleaner:brush-life-level-2)
        {
            "logicalId": "brush-cleaner:brush-left-time",
            "name": "{{Temps restant brosse latérale}}",
            "type": "info",
            "subtype": "numeric",
            "isVisible": 1,
            "unite": "h",
            "template": {
                "dashboard": "line",
                "mobile": "line"
            }
        },
        {
            "logicalId": "brush-cleaner:brush-life-level",
            "name": "{{Brosse latérale}}",
            "type": "info",
            "subtype": "numeric",
            "isVisible": 1,
            "unite": "%",
            "template": {
                "dashboard": "line",
                "mobile": "line"
            }
        },
  • Passer le sous-type de la commande « Equipement en erreur » (libellé de l’erreur en cours) à string au lieu de numeric
        {
            "logicalId": "error_device",
            "name": "{{Equipement en erreur}}",
            "type": "info",
            "subtype": "string",
            "isVisible": 1,
            "template": {
                "dashboard": "line",
                "mobile": "line"
            },
            "configuration": {
                "request": "none"
            }
        },
  • Ajout de la gestion de nouveaux états
        } elseif ($modelType == 'genericmiot') {
            $device_status_str = "";
            if (($statusOutput["vacuum:status"] == 2) && ($statusOutput["battery:charging-state"] == 1)) $device_status_str = __("Prêt à démarrer", __FILE__);
            if ($statusOutput["vacuum:status"] == 1) $device_status_str =  __("Aspiration en cours", __FILE__);
            if (($statusOutput["vacuum:status"] == 2) && ($statusOutput["battery:charging-state"] != 1)) $device_status_str =  __("Arrêt", __FILE__);
            if (($statusOutput["vacuum:status"] == 3) && ($statusOutput["battery:charging-state"] != 1)) $device_status_str =  __("En pause", __FILE__);
            if ($statusOutput["vacuum:status"] == 4) $device_status_str =  __("Erreur", __FILE__);
            if (($statusOutput["vacuum:status"] == 5) && ($statusOutput["battery:charging-state"] == 5)) $device_status_str =  __("Retour maison", __FILE__);
            if (($statusOutput["vacuum:status"] == 6) && ($statusOutput["battery:charging-state"] == 1)) $device_status_str =  __("En charge", __FILE__);
            if ($statusOutput["vacuum:status"] == 7) $device_status_str =  __("Aspiration et lavage en cours", __FILE__);
            if ($statusOutput["vacuum:status"] == 8) $device_status_str =  __("Séchage de la serpillère", __FILE__);
            if ($statusOutput["vacuum:status"] == 9) $device_status_str = __("Nettoyage de la serpillère", __FILE__);
            if ($statusOutput["vacuum:status"] == 10) $device_status_str = __("Retour pour nettoyage de la serpillère", __FILE__);
            if ($statusOutput["vacuum:status"] == 12) $device_status_str =  __("Nettoyage en cours de la Zone", __FILE__);
            if ($statusOutput["vacuum:status"] == 13) $device_status_str =  __("En veille", __FILE__);
            if ($device_status_str != "")  $this->checkAndUpdateCmd("device_status_str", $device_status_str);
  • Ajout de la gestion de plusieurs erreurs

Vu que le X20+ est remonté en generic, à voir si il faut différencier les erreurs en fonction du modèle d’aspirateur ?

Idéalement, il faudrait proposer une liste modifiable des erreurs [id, libellé] à gérer (Ajout, Suppression, Coche d’activation)

          	$error_device = "";
            if ($statusOutput["vacuum:fault"] == 1) $error_device = __("Les roues sont suspendues. Replacer le robot.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 2) $error_device = __("Robot bloqué. Nettoyer les capteurs.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 18) $error_device = __("Robot bloqué ou coincé.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 51) $error_device = __("Le filtre est mouillé.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 105) $error_device = __("Remettre le réservoir d'eau propre retiré.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 106) $error_device = __("Vider le bac et nettoyer la planche de lavage.", __FILE__);
            if ($statusOutput["vacuum:fault"] == 107) $error_device = __("Insuffisance d'eau propre dans réservoir.", __FILE__);
  • Suppression du message d’erreur (libellé "Equipement en erreur " vidé) sur retour à la normale
          	/*if ($error_device != "") */$this->checkAndUpdateCmd("error_device", $error_device);
  • Ajout de nouvelles commandes : genericmiot.json ci-joint
  • Récapitulatif des modifications du code : mirobot.class.php ci-joint

genericmiot.json.txt (10,5 Ko)
mirobot.class.php.txt (32,6 Ko)

Je ne crois pas qu’il existe de github sur la nouvelle version de plugin pour proposer des PRs ?

2 « J'aime »

Voici la tuile de l’intégration du v20+ sur JeeMate

Pour le moment j’ai bloqué les majs du plugin, donc petit up, on peut proposer des PR’s pour une intégration plus poussé de ce modèle.

désolé vraiment pas eu le tps de me pencher sur la question

en lecture diagonale, pas sur de pouvoir tout accepter en l état

je me mets un rappel pr regarder des que j ai un moment

2 « J'aime »