Bonjour,
Aujourd’hui je me suis aperçu qu’il n’était possible de faire une mise à jour du firmware de ma clé car la liste de firmware reste vide. J’ai donc debug le code et j’ai découvert que la page qui est « parsé » a changé de structure. Je partage le code que j’ai changé pour que cela fonctionne de nouveau, si ça peut servir à quelqu’un ^^
plugins/deconz/core/class/deconz.class.php
....
public static function infoForFirmwareUpdate(){
$return = array('device' => array(),'firmware' => array());
$result = explode("\n",shell_exec(system::getCmdSudo().' GCFFlasher_internal -l | grep "ConBee II"'));
if(is_array($result) && count($result) > 0){
foreach ($result as $line) {
if(trim($line) == ''){
continue;
}
$data = explode('|',$line);
$return['device'][] = array('path' => trim($data[0]),'vendor' => trim($data[1]),'product' => trim($data[2]),'serial' => trim($data[3]),'type' => trim($data[4]));
}
}
$request_http = new com_http('http://deconz.dresden-elektronik.de/deconz-firmware/');
$result = explode("\n",$request_http->exec());
if(is_array($result) && count($result) > 0){
foreach ($result as $line) {
if(strpos($line,'<a href=') === false || strpos($line,'deCONZ_ConBeeII') === false){
continue;
}
if(strpos($line,'.md5') !== false){
continue;
}
preg_match('/<a href="(.*?)">.*([0-9]{2}-[a-z]{3}-[0-9]{4} [0-9]{2}:[0-9]{2}).*( [0-9]{1,9})/i',$line, $matches);
if(!is_array($matches) || count($matches) != 4){
continue;
}
$return['firmware'][strtotime(trim($matches[3]))] = array('name' => trim($matches[1]),'datetime' => date('Y-m-d H:i',strtotime(trim($matches[2]))));
}
ksort($return['firmware']);
$return['firmware'] = array_reverse(array_values($return['firmware']));
}
return $return;
}