Modification d'un plugin : comment faire

Bonjour,
J’ai apporté une modification au plugin Nuki Web de @lunarok (ajout une fonctionnalité permettant de changer le temps de maintien de la gâche (unlatchDuration).

J’avais besoin de cette fonctionnalité parce que le temps de maintien de la gâche n’est le même si je suis devant ma porte d’entrée ou si je déclenche l’ouverture depuis la télécommande qui se trouve dans la voiture. Donc, si je déclenche l’ouverture depuis ma voiture, j’augmente le temps de maintien de la gâche pour me laisser le temps d’arriver à la porte et de la pousser… Ensuite, je réinitialise la valeur sur un temps de maintien plus court pour les cas où je me trouverai devant la porte.

Voilà pour les détails, maintenant, comment je fais pour proposer cette mise à jour et qu’elle profite à d’autres ?

Merci.

Bonsoir.

Si le plugin est gratuit, vous pouvez soumettre ces modifications directement sur le dépôt Github de Lunarok.

Sinon, patientez ici, pour qu’il rentre en contact avec vous.

Merci.

Bonjour,
J’ai retiré le tag #plugin-nuki qui est pour le plug-in officiel nuki.

Ce plug-in n’a pas de tag car il n’est pas en stable (et apparemment ne le sera jamais si j’ai bien suivi la volonté de lunarok)

Tu peux mettre le code ici que tu veux intégrer

Dans le fichier nukiweb.class.php :

class nukiwebCmd extends cmd {
  public function execute($_options = null) {
    $eqLogic = $this->getEqLogic();    
    if (strpos($this->getLogicalId(), 'auth') !== false) {
      if (($this->getLogicalId() == 'authDisable') || ($this->getLogicalId() == 'authEnable')) {
        nukiweb::callWeb('smartlock/' . $eqLogic->getLogicalId() . '/auth/' . $_options['select'], 'post', array($this->getConfiguration('request') => $this->getConfiguration('requestValue')));
      }  
      
      if ($this->getLogicalId() == 'authMessage') {
        $conf = explode(',', $_options['title']);
        $data = array();
        $id = '';
        $mode = "post";
				foreach ($conf as $elt) {
					$conf2 = explode('=', $elt);
					if ($conf2[0] == 'auth') {
            $cmd = cmd::byEqLogicIdAndLogicalId($eqLogic->getId(),'authEnable');
            if (!is_object($cmd)) {
              return;
            }
            $values = explode(';',$cmd->getConfiguration('listValue'));
            foreach ($values as $value) {
              $list = explode('|', $value);
              if ($list[1] == $conf2[1]) {
                $id = $list[0];
                break;
              }
            }
					} else if ($conf2[0] == 'mode') {
						$mode = $conf2[1];
					} else {
						$data[$conf2[0]] = $conf2[1];
					}
				}
        if ($id == '') {
          return;
        }
        nukiweb::callWeb('smartlock/' . $eqLogic->getLogicalId() . '/auth/' . $id, $mode, $data);
        $eqLogic->fillAuthCmds();
      }
/*MES MODIFICATIONS */
    } elseif ($this->getLogicalId() == 'unlatch_duree') {
      // Objet de la modif : permettre de modifier le temps d'ouverture de la gâche
      //récupère la configuration depuis l'API Web Nuki
      $conf = nukiweb::getConfig($eqLogic->getLogicalId());
      log::add('nukiweb', 'debug', 'Config NUKI originale :' . print_r($conf,true));
      //update de la valeur pour l'unlatchDuration selon l'option sélectionnée (sur le widget ou via scénario)
      $conf['advancedConfig']['unlatchDuration'] = $_options['select'];
      log::add('nukiweb', 'debug', 'Config MODIFIEE (unlatch duration) :' . print_r($conf['advancedConfig'],true));
      //$arr = array($this->getConfiguration('request0') => $this->getConfiguration('requestValue0'),$this->getConfiguration('request1') => $this->getConfiguration('requestValue1'));
      nukiweb::callWeb('smartlock/' . $eqLogic->getLogicalId() . '/advanced/config', 'post', $conf['advancedConfig']);
 /*FIN DE MES MODIFICATIONS */
      } else {
      if ($this->getLogicalId() != 'refresh'){
        if ($this->type == 'action') {
          $result = nukiweb::callBridge('lockAction?nukiId='. $eqLogic->getLogicalId() . '&action=' . $this->getConfiguration('request') . '&noWait=1&');
        }
      }
      nukiweb::updateValues();
    }
  }
}

Dans le même fichier, ligne 249 : je suggère de mettre :
$battery = ($nuki['batteryCritical'] == false) ? $_array['batteryChargeState'] : 0;
au lieu de
$battery = ($nuki['batteryCritical'] == false) ? 100 : 0;

Cela permet de remonter le niveau de batterie dans le widget plutôt que d’avoir 100 ou 0.

Et pour terminer, dans le fichier config/devices/smartlock.json, rajouter cette commande d’équipement pour que la modification de la classe cmd fonctionne :

{
      "name": "Temps ouverture gache (en sec)",
      "type": "action",
      "subtype": "select",
      "display": {
        "generic_type": "DONT"
      },
      "configuration" : {
        "listValue" : "1|1;3|3;5|5;7|7;10|10;15|15;20|20;30|30"
      },
      "isVisible": 1,
      "logicalId": "unlatch_duree"
    }

Merci.

1 « J'aime »

C’est fait, ca devrait etre dispo en mise à jour demain au market

2 « J'aime »

Parfait, merci !

Bonjour Lunarock,

Confirme tu ce que Mpis cite?

Voila, j’ai retrouvé le post:

En tous cas, j’utilise ce plugin depuis un peu plus d’1 mois et je n’ai rencontré aucun pb de stabilité.

Je n’en doute pas et là n’était pas la question: relisez mes messages

En tant qu’utilisateur simple, de mon point de vue, si le plugin est dispo sur le market (payant qui plus est), il devrait avoir son tag, sinon ça conduit à ce genre de discussion et ça perd ceux qui veulent y contribuer.

Vous n’êtes pas un « utilisateur simple » ni un « simple utilisateur » :wink: vu que vous avez activé l’accès aux plugins beta sinon vous n’auriez même pas vu le plugin sur le market.
Donc nous sommes d’accord, les « simple utilisateurs » n’ont pas accès à ce plugin pour éviter la confusion :slight_smile:

1 « J'aime »

Effectivement, j’avais omis ce détail :wink: !
+1 pour vous !

1 « J'aime »

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