Mise à jour firmware local - liste vide

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;
  }

C’est pas un mal; C’est une source d’erreur et de plantage. Methode la plus sûre : maj via windows.

1 « J'aime »

Comme le dit Idaho947, il est préfèrable de faire la maj de la conbee par un windows 10, cela évite bien des galères et des posts de personnes ayant foiré la maj depuis jeedom.

Je ne peux qu’abonder dans le sens des remarques précédentes. Je préconiserais même de retirer cette fonctionnalité des applications de haut niveau comme Deconz ou autres pour la réserver à une application spécifique (je vous laisse faire le parallèle si Word ou Firefox par exemple permettaient la mise à jour du BIOS de votre PC …)

1 « J'aime »