Problème dépendances installées sans erreur mais statut "NOK"

Bonjour à la communauté,

Je sais que le plug-in n’est plus réellement maintenu mais peut-être que certains pourront m’aider malgré tout.

J’ai un « NOK » sur les dépendances alors que les logs ne montrent pas d’erreur ; Donc je ne sais pas vraiment où chercher !

Merci d’avance pour votre aide ; J’ai désactiver la gestion automatique, retirer et remis le plugin … rien n’y fait malheureusement.

Jeedom 4.4.19 (Atlas) / Debian 11

======================================================================
== 26/05/2025 13:15:35 == Dependencies installation for reolink
======================================================================
[  5% ] : Clean apt...
[  9% ] : Clean apt : [  OK  ]
[ 10% ] : Update apt...
[ 19% ] : Update apt : [  OK  ]
[ 20% ] : Init python3 & prerequisites...
[ 29% ] : Init python3 & prerequisites : [  OK  ]
[ 30% ] : Init PyEnv...
** PyEnv not required: 3.9.2 >= 3.9 **
** python3 path: python3 **
[ 39% ] : Init PyEnv : [  OK  ]
[ 40% ] : Setting up virtual environment...
** Version of python in VENV: Python 3.9.2
[ 69% ] : Setting up virtual environment : [  OK  ]
[ 70% ] : Install the required python packages...
[ 79% ] : Install the required python packages : [  OK  ]
[ 80% ] : Restoring folders and files rights...
[ 89% ] : Restoring folders and files rights : [  OK  ]
[ 90% ] : Summary of installed packages...
[ 99% ] : Summary of installed packages : [  OK  ]
[100% ] : Finished !
======================================================================
==OK== Installation Successful
======================================================================

Bonjour

Merci de donner la page santé de votre jeedom même si tout est vert. Que l’on sache au moins sur quoi tourne votre installation.

Antoine

Merci pour le retour : Tout est en vert, sauf pour ce qui est du plug-in ReoLink.

Ce que je voudrais comprendre dans un premier temps, c’est comment / pourquoi il y a « NOK » dans les dépendances. Qu’est ce qui est vérifier par Jeedom pour afficher ce statut ?

Je suppose qu’il y a un liste de dépendance définie dans le plugin ; même où la trouver dans le code (GitHub - Jezza34000/jeedom_reolink_plugin: Plugin Jeedom pour les caméras Reolink) ? Je veux bien aller dans le code du plugin ReoLink mais j’aurais besoin d’un peu d’aide pour savoir quoi chercher.

Matériel	Atlas	
Cron actif	OK	
Scénario actif	OK
Démarré	OK 2025-03-17 21:36:04	
Date système (dernière heure enregistrée)	OK 2025-05-26 20:37:27 (2025-05-26 19:47:02)
Droits sudo	OK	
Version Jeedom	4.4.19
Version OS	debian 11.11	
Version PHP	7.4.33
Nombre de processus Apache	11	
Version OS	Linux JeedomAtlas 6.6.47-current-rockchip64 #1 SMP PREEMPT Mon Aug 19 04:04:32 UTC 2024 aarch64 GNU/Linux [11.11]
Version database	10.5.26-MariaDB-0+deb11u2	
Espace disque libre	83 %
Connexion active/max/autorisée	13/40/151	
Taille base de données	146.97 MB
Espace disque libre tmp	95 %	
Mémoire disponible	48 % (Total 3860 Mo)
Mémoire suffisante	0	Erreur I/O	0
Swap disponible	100 % (Total 1930 Mo)	
Swapiness	100 %
Charge	0.53 - 0.49 - 0.53	
Configuration réseau interne	OK
Configuration réseau externe	OK	
Node	v20.18.0
Python 3	Python 3.9.2	
Persistance du cache	OK (2025-05-26 20:30:03)
Apache private tmp	OK	
Plugins 	1 NOK

Je pense avoir trouvé le début d’une piste ;

Dans les sources du plugin, j’ai identifié la vérification des dépendances (jeedom_reolink_plugin/core/class/reolink.class.php at d84f7ff314073ca4a79ef85fd78d12940a9e8331 · Jezza34000/jeedom_reolink_plugin · GitHub)

public static function dependancy_info() {
    $return = array();
    $return['log'] = log::getPathToLog(__CLASS__ . '_update');
    $return['progress_file'] = jeedom::getTmpFolder(__CLASS__) . '/dependance';
    $return['state'] = 'ok';
    if (file_exists(jeedom::getTmpFolder(__CLASS__) . '/dependance')) {
      $return['state'] = 'in_progress';
    } elseif (!file_exists(self::PYTHON_PATH)) {
      $return['state'] = 'nok';
    } elseif (exec(self::PYTHON_PATH . ' -m pip list | grep -Ewc "aiosignal|aiohttp|uvicorn|fastapi|urllib3|requests|charset-normalizer"') < 7) {
      $return['state'] = 'nok';
    }
    return $return;
  }

Il y a 7 bibliothèques vérifier et effectivement il me manque « uvicorn » et « fastapi » ! Donc le résultat NOK s’explique bien. J’ai finalement pu installer « uvicorn » (en relancant manuellement « python3 -m pip install --upgrade -r /var/www/html/plugins/reolink/resources/requirements.txt »)

Je bloque sur la « fastapi » j’ai une erreur avec un time out qui semble liée à une autre dépendance à « pydantic » :

Downloading pydantic-2.11.5-py3-none-any.whl (444 kB)

[notice] A new release of pip is available: 24.3.1 -> 25.1.1
[notice] To update, run: python3 -m pip install --upgrade pip
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 561, in read
    data = self._fp_read(amt) if not fp_closed else b""
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 527, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/cachecontrol/filewrapper.py", line 98, in read
    data: bytes = self.__fp.read(amt)
  File "/usr/lib/python3.9/http/client.py", line 458, in read
    n = self.readinto(b)
  File "/usr/lib/python3.9/http/client.py", line 502, in readinto
    n = self.fp.readinto(b)
  File "/usr/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.9/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper
    status = _inner_run()
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run
    return self.run(options, args)
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py", line 67, in wrapper
    return func(self, options, args)
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/commands/install.py", line 379, in run
    requirement_set = resolver.resolve(
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 179, in resolve
    self.factory.preparer.prepare_linked_requirements_more(reqs)
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/operations/prepare.py", line 554, in prepare_linked_requirements_more
    self._complete_partial_requirements(
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/operations/prepare.py", line 469, in _complete_partial_requirements
    for link, (filepath, _) in batch_download:
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/network/download.py", line 184, in __call__
    for chunk in chunks:
  File "/usr/local/lib/python3.9/dist-packages/pip/_internal/network/utils.py", line 65, in response_chunks
    for chunk in response.raw.stream(
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 587, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/usr/lib/python3.9/contextlib.py", line 135, in __exit__
    self.gen.throw(type, value, traceback)
  File "/usr/local/lib/python3.9/dist-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

Vous avez une box Atlas, faites un ticket avant de trafiquer votre box et de possiblement perdre vos droits à un support.

Je ne pense pas que le support interviendra car le plugin n’est pas supporté.

Finalement j’ai pu résoudre le problème en supprimant l’environnement virtuel du plugin (venv) et en relançant l’installation des dépendances. L’environnement du plugin c’est bien re-créé et plus d’erreur au niveau des dépendances !

Je n’ai donc pas touché à l’environnement de la Jeedom Atlas mais uniquement forcé la réinstallation de l’environnement « venv »

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