domotruc / jMQTT

Jeedom plugin to interface as a client with an MQTT broker.
16 stars 8 forks source link

Remonté de la batterie dans Analyse->Equipements #110

Open Micka41 opened 3 years ago

Micka41 commented 3 years ago

Remonté de la batterie dans Analyse->Equipements

Domochip commented 3 years ago

Intéréssant. J'avais fait la même remarque sur le plugin MQTT de lunarok. Par contre, le nom "Batterie" ne conviendra pas forcement à tout le monde. Du coup, 2 idées :

je vois pour forker ton repo et te proposer une implémentation dès que j'ai le temps.

@++

nechry commented 3 years ago

J'ai des équipements avec un info battery_ok qui retourne 1 ou 0 à savoir Ok ou Low qu'on peut interpréter comme 100 ou 10. Je fais un calcul sur valeur, mais ici avec le PR c'est la valeur brute avant le passage dans le cache de jeedom. donc ça ne fonctionne pas. J'ai donc étendue le PR avec un test supplémentaire:

 if ($this->getName() == "Batterie_ok") {
          $value = ($value == 1) ? 100 : 10;
          $this->getEqLogic()->batteryStatus($value, date('Y-m-d H:i:s'));
          $this->getEqLogic()->log('info', '-> Update battery status');
 }

J'ai encore d'autre équipement avec une valeur en pourcentage:

if ($this->getName() == "Batterie_percent") {
          $value = $value * 100;
          $this->getEqLogic()->batteryStatus($value, date('Y-m-d H:i:s'));
          $this->getEqLogic()->log('info', '-> Update battery status');
}

Du coup faudrait avoir 3 tests avec 3 possibles nom de commandes pour respecter cette convention.

bdbogjoe commented 3 years ago

à mon avis mieux de récupérer le type générique BATTERY pour trouver la commande, et en fonction du type binary ou numeric on sait si c'est un pourcentage ou un ok

nechry commented 3 years ago

oui l'idée est intéressante, en cas de numérique on doit juste différencier si on reçoit des centièmes ou en unité mais c'est simple

Domochip commented 3 years ago

Ca donne un truc comme ca :

    if ($this->getGeneric_type() == 'BATTERY') {
        if ($this->getSubType() == 'binary') {
            $this->getEqLogic()->batteryStatus($value ? 100 : 10);
        } else {
            $this->getEqLogic()->batteryStatus($value);
        }
        $this->getEqLogic()->log('info', '-> Update battery status');
    }

@nechry : que voulais-tu dire par différencier les centièmes ou les unités?

nechry commented 3 years ago

@Domochip : dans certain cas on peut avoir 10 pour 10% ou 0.10

nechry commented 3 years ago

@Domochip jeedom attend une valeur entre 0 et 100, faut multiplier par 10 si on a des centième. il y aura par contre un possible overlape entre 1=>1% ou 1.00 pour 100%

nechry commented 3 years ago

un dérivé de ce PR est inclue dans la dernière version du plugin et donne satisfaction selon mes premiers tests. Ce PR peut donc être fermé