Bug si pas de capteur luminosité sur le plugin ‘lightmanager’

Bonjour @Loic

Je viens de trouver un autre petit bug sur le plugin gestion de la lumière en beta

Il se trouve que pour mon atelier je ne souhaite pas définir de capteur de luminosité
Je veux que systématiquement dès qu’une présence est détecté le système de gestion de lumière se déclenche
Or cela ne fonctionne jamais et dans les log en mode debug on voit que la condition de luminosité n’est pas respecté

Si tu peux regarder quand tu as le temps merci

Bonjour,

Pour moi c’est normal le plugin ne marche que si tu as un capteur de luminosité

Bonjour @Loic

A ok , si il est pensé ainsi why not , il faudrait imposer d’en declarer un alors !
Mais pourquoi ne pas valider la condition si aucun capteur de luminosité renseigné ?

Bref sinon je vais mettre une valeur bidon pour forcer à true

Merci du retour !

ci-dessous petite proposition d’evol :slight_smile: (je regarde le nombre d’équipement activé de luminosité, si j’en ai 0 je retourne true

public function getLuminosityState() {
    $luminositys = $this->getConfiguration('luminositys', '');
    $nbrL=0;
    if ($luminositys != '') {
      foreach ($luminositys as $luminosity) {
        if ($luminosity['enable'] != 1) {
          continue;
        }
        $nbrL++;
        if (!isset($luminosity['min_last_min']) || $luminosity['min_last_min'] == 0) {
          $value = cmd::cmdToValue($luminosity['cmdLuminosity']);
        } else {
          $cmd = cmd::byId(str_replace('#', '', $luminosity['cmdLuminosity']));
          if (!is_object($cmd)) {
            continue;
          }
          if (!$cmd->getIsHistorized()) {
            throw new Exception(__('Impossible de calculer la luminositée car la commande n\'est pas historisée', __FILE__) . ' : ' . $luminosity['cmdLuminosity']);
          }
          $stats = $cmd->getStatistique(date('Y-m-d H:i:s', strtotime('now -' . $luminosity['min_last_min'] . ' min')), date('Y-m-d H:i:s', strtotime('now')));
          $value = $stats['min'];
          if (!isset($stats['min']) || $value === null) {
            $value = $cmd->execCmd();
          }
        }
        log::add('lightmanager', 'debug', $this->getHumanName() . '[getLuminosityState] Luminosity ' . $value . ' threshold : ' . $luminosity['threshold']);
        if ($value < $luminosity['threshold']) {
          log::add('lightmanager', 'debug', $this->getHumanName() . '[getLuminosityState] Luminosity check => 1');
          return true;
        }
      }
    }
    if($nbrL===0){
      return true;
    }
    log::add('lightmanager', 'debug', $this->getHumanName() . '[getLuminosityState] Luminosity check => 0');
    return false;
  }

Merci faut je trouve le temps de regarder ton fix va planter chez certain c’est pas bon. La correction est surement très simple mais pour etre sur de rien planter chez personne c’est beaucoup plus compliqué et j’ai pas le temps de me lancer la dedans.

1 « J'aime »

Pas de soucis