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.