Erreur à l'intégration d'un capteur vl53l1x sur jeedom en script python

Bonjour,

Je cherche a intégrer un capteur de distance vl53l1x sur mon jeedom.
Pour cela je l’ai relié à mon raspberry. J’ai utilisé les informations du lien suivant: GitHub - pimoroni/vl53l1x-python: Python library for the VL53L1X Laser Ranger
Sur le thonny du raspberry pi j’ai bien les informations de distance que je souhaite. Jusque là tout est ok.
Je cherche maintenant à l’inclure dans jeedom via le plugin script (c’est ce qui m’a paru le plus simple mais peut être pas!) J’ai donc créé un nouveau script et j’ai copié collé le programme du lien directement dans le nouveau script créé (vl53l1x.py). Et j’obtiens le défaut suivant :

Erreur pour [Extérieur - Cour][Sonde distance cuvevl53l1x][dist] : Erreur sur python /var/www/html/plugins/script/data/vl53l1x.py 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/vl53l1x.py », line 1, in import VL53L1X ImportError: No module named VL53L1X

J’ai l’impression qu’il ne trouve pas la librairie. Or elle est bien installée sur le raspberry puisque cela fonctionne par ailleurs. Faut il que je l’intègre à jeedom? je n’ai pas trouvé comment faire ou du moins comment copier celler le dossier du lien ci avant que j’ai téléchargé sur github. J’ai donc tapé dans l’interface d’administration système de jeedom la commande suivante : sudo pip install vl53l1x. J’en déduis que c’est installé mais avec des erreurs.

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: vl53l1x in /usr/local/lib/python3.7/dist-packages (0.0.5)
Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (from vl53l1x) (0.4.2)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip
    os.path.join(binary_prefix, exe_name),
  File "/usr/lib/python3.7/genericpath.py", line 97, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip'
Call stack:
  File "/usr/local/bin/pip", line 8, in 
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)

J’ai également vu sur la notice du plug in:

A savoir que pour exécuter un script, celui-ci doit avoir les droits www-data.

J’ai essayé sudo chown www-data:www-data vl53l1x.py mais cela n’a rien fait.
dois-je attribuer des droits quelconques d’une certaine manière?

Je suis plutôt nouvelle dans la programmation alors je ne comprends pas toujours toutes les subtilités… en tout cas j’ai fait plusieurs recerches sur le forum et je n’arrive à rien de concluant.

Auriez vous des pistes pour m’aider.
Voici ma config sur jeedom


En vous remerciant grandement par avance!

bonjour,

a la première ligne du script on trouve un import avec un nom de librairie VL53L1X.
le système python ne trouve pas cette librairie et n’arrive donc pas à la charger.

ce n’est pas un souci de droit, il ne trouve pas le fichier avec la librairie dans ses chemins par défaut.

il faut donc copier et enregistrer cette librairie sur python avant de l’utiliser.

C’est ce qu’il me semblait mais j’ai bien fait :

sudo pip install smbus2
sudo pip install vl53l1x

en ssh sur mon raspberry pi c’est ce qui me permet de pouvoir lire le capteur dans l’interface du raspberry. Dois-je le faire dans le jeedom? si oui ou? et comment?

En vous remerciant,

1 « J'aime »

Bonjour,

Là il n’y a que root qui peut accéder à ces paquets. et c’est www-data qui exécute le script.

Teste avec les commandes suivantes :

sudo -u www-data pip install smbus2
sudo -u www-data pip install vl53l1x

Je viens de tester mais je pense qu’il ne peut pas le faire voici ce qu’il me dit :

pi@raspberrypi:~ $ sudo -u www-data pip install smbus2
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (0.4.2)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip
    os.path.join(binary_prefix, exe_name),
  File "/usr/lib/python3.7/genericpath.py", line 97, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/usr/bin/pip'
Call stack:
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)
pi@raspberrypi:~ $ sudo -u www-data pip install vl53l1x
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: vl53l1x in /usr/local/lib/python3.7/dist-packages (0.0.5)
Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (from vl53l1x) (0.4.2)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip
    os.path.join(binary_prefix, exe_name),
  File "/usr/lib/python3.7/genericpath.py", line 97, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/usr/bin/pip'
Call stack:
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)

Fait d’abord la commande :

sudo su

et ensuite les 2 commandes que j’ai mises dans le poste précédent

même chose…

pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# sudo -u www-data pip install smbus2
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (0.4.2)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip
    os.path.join(binary_prefix, exe_name),
  File "/usr/lib/python3.7/genericpath.py", line 97, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/usr/bin/pip'
Call stack:
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)
root@raspberrypi:/home/pi# sudo -u www-data pip install vl53l1x
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: vl53l1x in /usr/local/lib/python3.7/dist-packages (0.0.5)
Requirement already satisfied: smbus2 in /usr/local/lib/python3.7/dist-packages (from vl53l1x) (0.4.2)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 177, in emit
    self.console.print(renderable, overflow="ignore", crop=False, style=style)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1752, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1390, in render
    for render_output in iter_render:
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 134, in __rich_console__
    for line in lines:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/segment.py", line 245, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", line 1368, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", line 36, in rich_cast
    renderable = cast_method()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 130, in __rich__
    pip_cmd = get_best_invocation_for_this_pip()
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip
    os.path.join(binary_prefix, exe_name),
  File "/usr/lib/python3.7/genericpath.py", line 97, in samefile
    s2 = os.stat(f2)
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/usr/bin/pip'
Call stack:
  File "/usr/local/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    self.handle_pip_version_check(options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check
    pip_self_version_check(session, options)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check
    logger.info("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info
    self._log(INFO, msg, args, **kwargs)
  File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/usr/local/lib/python3.7/dist-packages/pip/_internal/utils/logging.py", line 179, in emit
    self.handleError(record)
Message: '[present-rich] %s'
Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),)

dernière tentative :wink:

sudo -u www-data pip install smbus2 --user

Chez moi :

root@jeedom:/home/jeedom# sudo -u www-data pip install smbus2 --user
Collecting smbus2
  Using cached https://files.pythonhosted.org/packages/71/2f/73aad66cdee8d4b94068bbc80164aa6a24b3f83541de7b04974438fd70e6/smbus2-0.4.2-py2.py3-none-any.whl
Installing collected packages: smbus2
Successfully installed smbus2-0.4.2
root@jeedom:/home/jeedom# sudo -u www-data pip list --user
Package Version
------- -------
smbus2  0.4.2  
root@jeedom:/home/jeedom# sudo -u www-data pip uninstall smbus2
Uninstalling smbus2-0.4.2:
  Would remove:
    /var/www/.local/lib/python2.7/site-packages/smbus2-0.4.2.dist-info/*
    /var/www/.local/lib/python2.7/site-packages/smbus2/*
Proceed (y/n)? y
  Successfully uninstalled smbus2-0.4.2
root@jeedom:/home/jeedom# 

toujours pareil…
par contre je vois que toi tu as au début root@jeedom et moi root@raspberrypi. Comment fait tu pour être sur le jeedom?
(de mon côté mon jeedom est installé sur le raaspberry pi 4)
En te remerciant pour ton aide en tout cas!

Le nom à droite de @ est juste le nom de la machine (moi, elle s’appelle jeedom).

Je ne pense pas que ça soit un problème de root ou pas.
Une lib installée avec sudo est installée sur le système et accessible par tous les utilisateurs, toutes les dépendances des plugins sont toujours installées comme ça.

Je pense plutôt que le problème est sur un problème python2 vs python3.

Déjà peut-on voir une capture de la page santé jeedom? A priori une debian 10 vu que je vois du python3.7

Et la commande script est appelée comment ?
Peut-on voir la config de la commande ?

Si votre script se nomme xxxx.py avec py minuscule alors jeedom va appeler python2 pour l’exécuter, hors c’est probablement un script python3 et votre lib est installée sous python3 donc dès le départ il ne la trouve pas et s’il l’a trouvait il y aurait des erreurs de syntaxes.

Renommez le script appelé dans la commande avec l’extension PY en majuscule et rajoutez l’en-tête dans le fichier pour spécifier d’utiliser python3 si pas encore présent et cela devrait fonctionner.

Voici l’imprim écran pour le santé jeedom

J’ai donc modifié en PY et j’ai ajouté l’entête voici la config sur jeedom


et le code

#!/usr/bin/env python3

import VL53L1X

# Open and start the VL53L1X sensor.
# If you've previously used change-address.py then you
# should use the new i2c address here.
# If you're using a software i2c bus (ie: HyperPixel4) then
# you should `ls /dev/i2c-*` and use the relevant bus number.
tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
tof.open()

# Optionally set an explicit timing budget
# These values are measurement time in microseconds,
# and inter-measurement time in milliseconds.
# If you uncomment the line below to set a budget you
# should use `tof.start_ranging(0)`
# tof.set_timing(66000, 70)

tof.start_ranging(3)  # Start ranging
                      # 0 = Unchanged
                      # 1 = Short Range
                      # 2 = Medium Range
                      # 3 = Long Range

# Grab the range in mm, this function will block until
# a reading is returned.
distance_in_mm = tof.get_distance()

tof.stop_ranging()

mais voici la nouvelle erreur

Erreur pour [Extérieur - Cour][Sonde distance cuvevl53l1x][dist] : Erreur sur /var/www/html/plugins/script/data/vl53l1x.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File « /var/www/html/plugins/script/data/vl53l1x.PY », line 10, in tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29) File « /usr/local/lib/python3.7/dist-packages/VL53L1X.py », line 92, in init self._i2c = SMBus(i2c_bus) File « /usr/local/lib/python3.7/dist-packages/smbus2/smbus2.py », line 280, in init self.open(bus) File « /usr/local/lib/python3.7/dist-packages/smbus2/smbus2.py », line 310, in open self.fd = os.open(filepath, os.O_RDWR) PermissionError: [Errno 13] Permission denied: ‹ /dev/i2c-1 ›

je dois louper quelque chose…

Donc le script a tourné je pense et donc erreur d’origine est solutionnée :wink:

Là pour c’est le user qui n’a pas les droits sur le device /dev/i2c-1 ce qui semble logique car www-data de base n’a probablement pas les permissions d’accès la dessus.

et comment je peux lui donner les droits?

Avant de faire cela, faudrait voir si le script est exécuté avec sudo ou pas par jeedom, je ne me rappelle plus par coeur et je suis sur mobile donc compliqué de vérifier.

Sinon, proposition un peu au hasard, tentez de mettre sudo devant /var... dans la config de la commande

Bonjour
en mettant sudo devant /var/… j n’ai plus aucun message d’erreur mais la lecture du capteur ne se fait plus il me renvoie 0.
par contre en ssh

pi@raspberrypi:~ $ import VL53L1X
bash: import : commande introuvable
pi@raspberrypi:~ $ sudo import VL53L1X
sudo: import : commande introuvable
pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# import VL53L1X
bash: import : commande introuvable

par contre j’arrive à le lancer dans l’environnement thonny du raspberry

Bien sûr, vous ne pouvez pas exécuter du python en ssh :wink:

Et moi je ne vois aucun « print » dans votre script donc aucune chance qu’une info remonte dans jeedom.
Dans une commande script, la commande info aura comme valeur l’output du script.
Si le script ne renvoit rien, pas de valeur.

Vous avez un environnement graphique sur le pi faisant tourner jeedom ? Ce n’est pas recommandé.

Pour exécuter un script python vous pouvez le lancer en ssh python3 monscript.py

Je ne connais pas cet outils mais je ne vois aucun output non plus.

Slt, j’ai déjà eu le soucis avec d’autre script python.
Lance tes commandes d’installation depuis jeedom et ça les installera au bon endroit

L’élément que je veux récupérer est distance_in_mm sur la droite dans les variables il me dit bien la bonne disatnce (52).
Il me faut peut être juste lui spécifier que je veux cette variable.

Lance tes commandes d’installation depuis jeedom et ça les installera au bon endroit

Tu veux dire depuis systeme>configuration>OS/DB>Administration système ?
Si c’est ça je regarde ce soir en rentrant du boulot!

Non, il faut juste l’écrire sur la sortie.
Genre print(distance_in_mm) à la fin devrait faire l’affaire

Et il n’y a plus de problème d’import donc les libs sont là