Pytapo avec caméra C510w

Bonjour

J’ai une caméra TAPO C510w et j’essaie d’utiliser le tuto suivant [TUTO] piloter une caméra Tp-link Tapo
pour faire bouger ma camera dans des scénarios

Clairement je ne m’en sors pas et mes compétences relativement restreintes m’empêchent d’avancer beaucoup.

J’ai installé PYTAPO (par défaut) et j’ai créé le script moveX.PY : msg d’erreur
J’ai aussi installé une version antérieure de PYTAPO (1.2.1) : msg d’erreur aussi mais différent

Je poste donc ici au cas où …

Ma page santé jeedom

en version Pytapo par defaut : erreur suivante :

Erreur exécution de la commande [Automation][PyTapo][moveX] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/moveX.PY 2>/dev/null;/var/www/html/plugins/script/data/moveX.PY 10 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/moveX.PY", line 3, in from pytapo import Tapo File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 12, in from kasa.transports import KlapTransportV2, KlapTransport ModuleNotFoundError: No module named 'kasa.transports'

en version Pytapo 1.2.1 : erreur suivante :

Erreur exécution de la commande [Automation][PyTapo][moveX] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/moveX.PY 2>/dev/null;/var/www/html/plugins/script/data/moveX.PY 10 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/moveX.PY", line 23, in moveX(sys.argv[1]) File "/var/www/html/plugins/script/data/moveX.PY", line 11, in moveX tapo2=Tapo(host, user, password) File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 34, in __init__ self.basicInfo = self.getBasicInfo() File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 220, in getBasicInfo return self.performRequest( File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 85, in performRequest self.ensureAuthenticated() File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 51, in ensureAuthenticated return self.refreshStok() File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 70, in refreshStok raise Exception("Invalid authentication data") Exception: Invalid authentication data

Si ça inspire qq’un…

Merci d’vance

Michel

Bonjour,

Dans le premier cas, il manque le module kasa qu’il faut installer :

sudo python3 -m pip install python-kasa

Github du projet python-kasa
Python API for TP-Link smarthome products

À+
Michel

PS : je n’y connais rien en tapo ou kasa, je donne la solution à une erreur python

Moi je n’y connais rien tout court, donc on peut se complèter :wink:

Plaisanterie mise à part, merci pour ta réponse …
Mais c’est vrai que je n’ai aucune formation IT et très peu de compétences dans ce domaine ; en fait, j’essaie de suivre des tutos…

Ce soir j’essaie d’installer le module dont tu parle et je poste ici le résultat …

1 « J'aime »

Une conversation d’un jour aussi pour pytado et kasa :slight_smile:

Attention . Ce n’est pas la solution, mais une source d’inspiration

J’ai lancé la ligne de de pour installé python-kasa …

Je crois que ça n’a rien changé. Mon erreur est toujours :

Erreur exécution de la commande [Aucun][CamSpa][moveX] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/moveX.PY 2>/dev/null;/var/www/html/plugins/script/data/moveX.PY 10 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/moveX.PY", line 3, in from pytapo import Tapo File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 12, in from kasa.transports import KlapTransportV2, KlapTransport ModuleNotFoundError: No module named 'kasa.transports'

Moi ça ne me parle absolument pas mais voilà les log de la cde d’installation de python-kasa

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: python-kasa in /usr/local/lib/python3.9/dist-packages (0.7.7)
Requirement already satisfied: aiohttp>=3 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (3.12.13)
Requirement already satisfied: async-timeout>=3.0.0 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (5.0.1)
Requirement already satisfied: asyncclick>=8.1.7 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (8.1.8)
Requirement already satisfied: cryptography>=1.9 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (42.0.5)
Requirement already satisfied: pydantic>=1.10.15 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (2.11.7)
Requirement already satisfied: typing-extensions<5.0,>=4.12.2 in /usr/local/lib/python3.9/dist-packages (from python-kasa) (4.14.0)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (2.6.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (1.3.2)
Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (25.3.0)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (1.7.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (6.4.4)
Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (0.3.2)
Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.9/dist-packages (from aiohttp>=3->python-kasa) (1.20.1)
Requirement already satisfied: idna>=2.0 in /usr/local/lib/python3.9/dist-packages (from yarl<2.0,>=1.17.0->aiohttp>=3->python-kasa) (3.10)
Requirement already satisfied: anyio~=4.0 in /usr/local/lib/python3.9/dist-packages (from asyncclick>=8.1.7->python-kasa) (4.9.0)
Requirement already satisfied: exceptiongroup>=1.0.2 in /usr/local/lib/python3.9/dist-packages (from anyio~=4.0->asyncclick>=8.1.7->python-kasa) (1.3.0)
Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.9/dist-packages (from anyio~=4.0->asyncclick>=8.1.7->python-kasa) (1.3.1)
Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=1.9->python-kasa) (1.16.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=1.9->python-kasa) (2.22)
Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.9/dist-packages (from pydantic>=1.10.15->python-kasa) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /usr/local/lib/python3.9/dist-packages (from pydantic>=1.10.15->python-kasa) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.9/dist-packages (from pydantic>=1.10.15->python-kasa) (0.4.1)
WARNING: Error parsing dependencies of gpg: Invalid version: '1.14.0-unknown'
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.

Pour ce qui est du lien dans le dernier message, j’avais vu ce fil. J’ai même échangé rapidement avec @rom.jou sur l’utilisation du venv. Franchement, j’ai peur que ça me dépasse très rapidement.

Hello Michel, je vais essayer de retrouver ce que j’ai fait, maintenant que j’ai le temps :).
Tu es dans la même conf que moi : python 3.9.
Il faut donc que tu installes la version 3.3.33 de pytapo car une de ces dépendances (kasa) n’est compatible avec python 3.9 qu’en version 0.7.7 qui est justement celle appelée par la 0.3.33 de pytapo.
Bref, il faudrait tout désinstaller, mais je maîtrise pas trop les commandes du genre pip uninstall pytapo puis pip uninstall python-kasa donc je propose de demander confirmation à @Michel_F .

Et ensuite de réinstaller la version souhaitée de pytapo: pip install pytapo==3.3.33

Et ensuite vérifie les versions installées en lançant ça python3 -m pip freeze .

Attention : je réitère le fait que je ne suis pas expert mais j’essaie de retrouver ce que j’avais fait avec MichelF sans pour autant partir sur la solution du venv :slight_smile:

C’est vrai que @rom.jou utilise un venv d’une version 3.11 de python via pyenv.

Je vais faire une procédure pour partir de zéro sauf si qq1 est plus rapide que moi.

En fait j’ai fait les deux, un venv grâce à ton aide, et l’ancienne version de pytapo comme expliqué plus haut. Chez moi tout marche avec la vieille version donc ça me paraît plus accessible aux néophytes comme moi.

Bonjour,

… et merci à tous les 2 (@Michel_F et @rom.jou) de consacrer une partie de votre temps à ce sujet.

Le problème, c’est que comme vous avez (si je comprends bien) chacun votre approche, je ne sais pas par quoi commencer.
A noter que je fais les essais en question sur un disque SSD de test et je peux repartir facilement de zéro (ou en tous cas de ma version de Jeedom actuelle avec un python 3.9.2)

Bon j’essaie de m’y remettre ce soir, en installant les versions préconisées par @rom.jou pour voir ce que ça dit …

Puis j’essayerai aussi de commencer la méthode @Michel_F

Merci encore

Michel

Je n’ai pas fini. Hier soir, j’ai eu un coup de mou et suis allé me coucher, je finirai le post ce soir

1 « J'aime »

J’ai essayé d’installer pytapo 0.3.33 … ça veut pas

ERROR: Could not find a version that satisfies the requirement pytapo==0.3.33 

Methode de Michel_F :
nota : j’ai bien /opt/pyenv sur mon système

Logique, je me suis trompé :person_facepalming:t3:. C’est la version 3.3.33 qu’il faut…
J’ai édité mon message précédent.
Mes excuses.

1. Installation de pyenv

Donc installation inutile, c’est déjà installé.

Sous le répertoire /opt/pyenv/versions sont listées les versions de python disponibles. Chez moi :

root@Jeedom-dev:~# ls /opt/pyenv/versions/
3.11.8

Je n’ai donc que la version 3.11.8, je vais continuer ce mini tuto avec cette version, à toi d’adapter ou d’installer la version dont tu as besoin.

2. Installer une version de python (si nécessaire)

Pour ce chapitre il faut tout faire dans le même shell pour que l’environnement pyenv activé le reste. Il vaut mieux être root pour ce chapitre afin d’avoir les droits d’écriture dans le répertoire /opt/pyenv et pouvoir faire la mise à jour et l’installation de la version de python.

export PYENV_ROOT="/opt/pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
pyenv update

La dernière ligne c’est pour mettre à jour pyenv afin que les dernières versions de python à ce jour soient installables.

Cette commande te montre quelles versions de python sont installées :

pyenv versions

Chez moi ça retourne :

root@Jeedom-dev:~# pyenv versions
* system (set by /opt/pyenv/version)
  3.11.8

Si tu veux installer la dernière version 3.13, par exemple :

pyenv install 3.13

Aujourd’hui ça installera la version 3.13.5 .

3. Créer un venv dédié à pytapo/kasa

Dans un nouveau shell avec un utilisateur non root :

python3 --version
sudo /opt/pyenv/versions/3.11.8/bin/python3 -m venv ~www-data/html/plugins/script/data/pytapo_venv
sudo chown -R www-data:www-data ~www-data/html/plugins/script/data/pytapo_venv
source ~www-data/html/plugins/script/data/pytapo_venv/bin/activate
python3 --version
python3 -m pip install --upgrade pip wheel
python3 -m pip install pytapo python-kasa
python3 -m pip freeze

1ère ligne test de version de python, ça doit être 3.9.2
2ème ligne : création d’un venv dédié à pytapo (attention : j’utilise ma version de python, ici tu dois adapter la version) avec sudo pour avoir les droits d’écriture
3ème ligne : propriétaire du répertoire venv : www-data afin que les scripts fonctionnent
4ème ligne activation du venv avec lequel on va faire les tests
5ème ligne test de version de python, maintenant ça doit être 3.11.8 puisque le venv est activé
6ème ligne mise à jour de base
7ème ligne: installation de pytapo et de python-kasa
8ème ligne vérification des versions installées

On va déjà voir si ça fonctionne jusque là.

1 « J'aime »

Ok merci de nouveau
Je m’y remets ce soir

1 « J'aime »

Alors …

chapitre 1

root@Jeedom:~# ls /opt/pyenv/versions/
3.11.11

Le pb c’est que je ne sais pas au juste quelle est la version dont j’ai besoin (celles qui sont compatibles entre elle si j’ai bien compris)
Pour l’instant, je reste donc en 3.11.11, j’essaie de réaliser ton tuto et je verrai ensuite, peut-etre avec @rom.jou

Chapitre 2
Tout semble s’être bien passé …
Je mets ici les retours du shell au cas où …

root@Jeedom:~# export PYENV_ROOT="/opt/pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
root@Jeedom:~# pyenv update
Updating /opt/pyenv...
remote: Enumerating objects: 945, done.
remote: Counting objects: 100% (480/480), done.
remote: Compressing objects: 100% (128/128), done.
remote: Total 298 (delta 209), reused 235 (delta 156), pack-reused 0 (from 0)
Receiving objects: 100% (298/298), 70.44 KiB | 1001.00 KiB/s, done.
Resolving deltas: 100% (209/209), completed with 34 local objects.
From https://github.com/pyenv/pyenv
 * branch              master     -> FETCH_HEAD
 * [new tag]           v1.3.1     -> v1.3.1
 * [new tag]           v1.3.2     -> v1.3.2
 * [new tag]           v2.5.5     -> v2.5.5
 * [new tag]           v2.5.6     -> v2.5.6
 * [new tag]           v2.5.7     -> v2.5.7
 * [new tag]           v2.6.0     -> v2.6.0
 * [new tag]           v2.6.1     -> v2.6.1
 * [new tag]           v2.6.2     -> v2.6.2
   c579b636..e13b5848  master     -> origin/master
Updating c579b636..e13b5848
Fast-forward
 .github/CODEOWNERS                                 |   1 +
 CHANGELOG.md                                       |  31 ++
 COMMANDS.md                                        |   7 +
 README.md                                          |  60 ++--
 libexec/pyenv---version                            |   2 +-
 libexec/pyenv-version                              |  24 +-
 plugins/python-build/README.md                     |  13 +
 plugins/python-build/bin/python-build              | 251 ++++++++++++---
 plugins/python-build/share/python-build/3.10-dev   |   2 +-
 plugins/python-build/share/python-build/3.10.0     |   2 +-
 plugins/python-build/share/python-build/3.10.1     |   2 +-
 plugins/python-build/share/python-build/3.10.10    |   2 +-
 plugins/python-build/share/python-build/3.10.11    |   2 +-
 plugins/python-build/share/python-build/3.10.12    |   2 +-
 plugins/python-build/share/python-build/3.10.13    |   2 +-
 plugins/python-build/share/python-build/3.10.14    |   2 +-
 plugins/python-build/share/python-build/3.10.15    |   2 +-
 plugins/python-build/share/python-build/3.10.16    |   2 +-
 plugins/python-build/share/python-build/3.10.17    |   9 +
 plugins/python-build/share/python-build/3.10.18    |   9 +
 plugins/python-build/share/python-build/3.10.2     |   2 +-
 plugins/python-build/share/python-build/3.10.3     |   2 +-
 plugins/python-build/share/python-build/3.10.4     |   2 +-
 plugins/python-build/share/python-build/3.10.5     |   2 +-
 plugins/python-build/share/python-build/3.10.6     |   2 +-
 plugins/python-build/share/python-build/3.10.7     |   2 +-
 plugins/python-build/share/python-build/3.10.8     |   2 +-
 plugins/python-build/share/python-build/3.10.9     |   2 +-
 plugins/python-build/share/python-build/3.11-dev   |   2 +-
 plugins/python-build/share/python-build/3.11.0     |   2 +-
 plugins/python-build/share/python-build/3.11.1     |   2 +-
 plugins/python-build/share/python-build/3.11.12    |  10 +
 plugins/python-build/share/python-build/3.11.13    |  10 +
 plugins/python-build/share/python-build/3.11.2     |   2 +-
 plugins/python-build/share/python-build/3.11.3     |   2 +-
 plugins/python-build/share/python-build/3.11.4     |   2 +-
 plugins/python-build/share/python-build/3.12.10    |   9 +
 plugins/python-build/share/python-build/3.12.11    |   9 +
 plugins/python-build/share/python-build/3.13.3     |   9 +
 plugins/python-build/share/python-build/3.13.3t    |   2 +
 plugins/python-build/share/python-build/3.13.4     |   9 +
 plugins/python-build/share/python-build/3.13.4t    |   2 +
 plugins/python-build/share/python-build/3.13.5     |   9 +
 plugins/python-build/share/python-build/3.13.5t    |   2 +
 plugins/python-build/share/python-build/3.14-dev   |   2 +-
 plugins/python-build/share/python-build/3.14.0a6t  |   2 -
 .../share/python-build/{3.14.0a6 => 3.14.0b2}      |   4 +-
 plugins/python-build/share/python-build/3.14.0b2t  |   2 +
 plugins/python-build/share/python-build/3.15-dev   |   7 +
 plugins/python-build/share/python-build/3.15t-dev  |   2 +
 plugins/python-build/share/python-build/3.9-dev    |   2 +-
 plugins/python-build/share/python-build/3.9.0      |   2 +-
 plugins/python-build/share/python-build/3.9.1      |   2 +-
 plugins/python-build/share/python-build/3.9.10     |   2 +-
 plugins/python-build/share/python-build/3.9.11     |   2 +-
 plugins/python-build/share/python-build/3.9.12     |   2 +-
 plugins/python-build/share/python-build/3.9.13     |   2 +-
 plugins/python-build/share/python-build/3.9.14     |   2 +-
 plugins/python-build/share/python-build/3.9.15     |   2 +-
 plugins/python-build/share/python-build/3.9.16     |   2 +-
 plugins/python-build/share/python-build/3.9.17     |   2 +-
 plugins/python-build/share/python-build/3.9.18     |   2 +-
 plugins/python-build/share/python-build/3.9.19     |   2 +-
 plugins/python-build/share/python-build/3.9.2      |   2 +-
 plugins/python-build/share/python-build/3.9.20     |   2 +-
 plugins/python-build/share/python-build/3.9.21     |   2 +-
 plugins/python-build/share/python-build/3.9.22     |  12 +
 plugins/python-build/share/python-build/3.9.23     |  12 +
 plugins/python-build/share/python-build/3.9.4      |   2 +-
 plugins/python-build/share/python-build/3.9.5      |   2 +-
 plugins/python-build/share/python-build/3.9.6      |   2 +-
 plugins/python-build/share/python-build/3.9.7      |   2 +-
 plugins/python-build/share/python-build/3.9.8      |   2 +-
 plugins/python-build/share/python-build/3.9.9      |   2 +-
 .../python-build/share/python-build/graalpy-24.2.1 |  64 ++++
 .../share/python-build/graalpy-community-24.2.1    |  54 ++++
 .../share/python-build/miniforge3-24.11.3-1        |  25 ++
 .../share/python-build/miniforge3-24.11.3-2        |  25 ++
 .../share/python-build/miniforge3-25.1.1-1         |  25 ++
 .../share/python-build/miniforge3-25.1.1-2         |  25 ++
 plugins/python-build/test/build.bats               | 342 +++++++++++++++++----
 plugins/python-build/test/compiler.bats            |  12 +-
 plugins/python-build/test/definitions.bats         |   2 +-
 plugins/python-build/test/pyenv_ext.bats           |  22 +-
 test/version.bats                                  |   9 +
 85 files changed, 1025 insertions(+), 193 deletions(-)
 create mode 100644 .github/CODEOWNERS
 create mode 100644 plugins/python-build/share/python-build/3.10.17
 create mode 100644 plugins/python-build/share/python-build/3.10.18
 create mode 100644 plugins/python-build/share/python-build/3.11.12
 create mode 100644 plugins/python-build/share/python-build/3.11.13
 create mode 100644 plugins/python-build/share/python-build/3.12.10
 create mode 100644 plugins/python-build/share/python-build/3.12.11
 create mode 100644 plugins/python-build/share/python-build/3.13.3
 create mode 100644 plugins/python-build/share/python-build/3.13.3t
 create mode 100644 plugins/python-build/share/python-build/3.13.4
 create mode 100644 plugins/python-build/share/python-build/3.13.4t
 create mode 100644 plugins/python-build/share/python-build/3.13.5
 create mode 100644 plugins/python-build/share/python-build/3.13.5t
 delete mode 100644 plugins/python-build/share/python-build/3.14.0a6t
 rename plugins/python-build/share/python-build/{3.14.0a6 => 3.14.0b2} (59%)
 create mode 100644 plugins/python-build/share/python-build/3.14.0b2t
 create mode 100644 plugins/python-build/share/python-build/3.15-dev
 create mode 100644 plugins/python-build/share/python-build/3.15t-dev
 create mode 100644 plugins/python-build/share/python-build/3.9.22
 create mode 100644 plugins/python-build/share/python-build/3.9.23
 create mode 100644 plugins/python-build/share/python-build/graalpy-24.2.1
 create mode 100644 plugins/python-build/share/python-build/graalpy-community-24.2.1
 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.3-1
 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.3-2
 create mode 100644 plugins/python-build/share/python-build/miniforge3-25.1.1-1
 create mode 100644 plugins/python-build/share/python-build/miniforge3-25.1.1-2
Updating /opt/pyenv/plugins/pyenv-doctor...
From https://github.com/pyenv/pyenv-doctor
 * branch            master     -> FETCH_HEAD
Already up to date.
Updating /opt/pyenv/plugins/pyenv-update...
From https://github.com/pyenv/pyenv-update
 * branch            master     -> FETCH_HEAD
Already up to date.
Updating /opt/pyenv/plugins/pyenv-virtualenv...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 5), reused 5 (delta 3), pack-reused 0 (from 0)
Unpacking objects: 100% (8/8), 1.58 KiB | 101.00 KiB/s, done.
From https://github.com/pyenv/pyenv-virtualenv
 * branch            master     -> FETCH_HEAD
   aa9b8e9..4b3f5f8  master     -> origin/master
Updating aa9b8e9..4b3f5f8
Fast-forward
 .github/workflows/tests.yml | 3 ++-
 README.md                   | 6 ++++++
 2 files changed, 8 insertions(+), 1 deletion(-)
root@Jeedom:~# pyenv versions
* system (set by /opt/pyenv/version)
  3.11.11

Chapitre 3 : ça se complique
Jusqu’à la ligne 5 inclus, tout va bien (log ci-après)
Ligne 6 : une ERROR : could not install … (log ci-après)
J’aurais pu essayer des choses (sudo …). Mais je sens que je vais faire plus de mal que de bien

pi@Jeedom:~ $ python3 --version
Python 3.9.2
pi@Jeedom:~ $ sudo /opt/pyenv/versions/3.11.11/bin/python3 -m venv ~www-data/html/plugins/script/data/pytapo_venv
pi@Jeedom:~ $ sudo chown -R www-data:www-data ~www-data/html/plugins/script/data/pytapo_venv
pi@Jeedom:~ $ source ~www-data/html/plugins/script/data/pytapo_venv/bin/activate
(pytapo_venv) pi@Jeedom:~ $ python3 --version
Python 3.11.11
(pytapo_venv) pi@Jeedom:~ $ python3 -m pip install --upgrade pip wheel
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in /var/www/html/plugins/script/data/pytapo_venv/lib/python3.11/site-packages (24.0)
Collecting pip
  Downloading pip-25.1.1-py3-none-any.whl.metadata (3.6 kB)
Collecting wheel
  Downloading https://www.piwheels.org/simple/wheel/wheel-0.45.1-py3-none-any.whl (72 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.5/72.5 kB 1.0 MB/s eta 0:00:00
Downloading pip-25.1.1-py3-none-any.whl (1.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 4.0 MB/s eta 0:00:00
Installing collected packages: wheel, pip
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/var/www/html/plugins/script/data/pytapo_venv/lib/python3.11/site-packages/wheel'
Check the permissions.


[notice] A new release of pip is available: 24.0 -> 25.1.1
[notice] To update, run: pip install --upgrade pip

Bon voilà …
Pendant un moment (très court moment) j’ai failli me prendre pour un informaticien
Là je redeviens très humble et attends tes suggestions

Michel

Bon comme tu utilises l’utilisateur pi, on va faire avec celui-ci. J’espère que le groupe est aussi pi, en tout cas, je suis parti de ce postulat.

sudo chown -R pi:pi ~www-data/html/plugins/script/data/pytapo_venv
source ~www-data/html/plugins/script/data/pytapo_venv/bin/activate
python3 --version
python3 -m pip install --upgrade pip wheel
python3 -m pip install pytapo python-kasa
python3 -m pip freeze
sudo chown -R www-data:www-data ~www-data/html/plugins/script/data/pytapo_venv

Comme ça tout le venv appartient à l’utilisateur pi, puis on fait tout ce qu’il faut pour activer le venv et installer pytapo et kasa puis on rend le répertoire du venv à www-data pour que le plugin script fonctionne.

Voyons avec ça maintenant.

J’ai fait exactement ce que tu as écrit
Mais clairement je ne sais pas ce que j’ai fait :rofl:

Pas de msg d’erreur , jute un warning

pi@Jeedom:~ $ sudo chown -R pi:pi ~www-data/html/plugins/script/data/pytapo_venv
pi@Jeedom:~ $ source ~www-data/html/plugins/script/data/pytapo_venv/bin/activate
(pytapo_venv) pi@Jeedom:~ $ python3 --version
Python 3.11.11
(pytapo_venv) pi@Jeedom:~ $ python3 -m pip install --upgrade pip wheel
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in /var/www/html/plugins/script/data/pytapo_venv/lib/python3.11/site-packages (24.0)
Collecting pip
  Using cached pip-25.1.1-py3-none-any.whl.metadata (3.6 kB)
Collecting wheel
  Using cached https://www.piwheels.org/simple/wheel/wheel-0.45.1-py3-none-any.whl (72 kB)
Using cached pip-25.1.1-py3-none-any.whl (1.8 MB)
Installing collected packages: wheel, pip
  Attempting uninstall: pip
    Found existing installation: pip 24.0
    Uninstalling pip-24.0:
      Successfully uninstalled pip-24.0
Successfully installed pip-25.1.1 wheel-0.45.1
(pytapo_venv) pi@Jeedom:~ $ python3 -m pip install pytapo python-kasa
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pytapo
  Downloading pytapo-3.3.46-py3-none-any.whl.metadata (5.8 kB)
Collecting python-kasa
  Downloading https://www.piwheels.org/simple/python-kasa/python_kasa-0.10.2-py3-none-any.whl (261 kB)
Collecting requests (from pytapo)
  Downloading requests-2.32.4-py3-none-any.whl.metadata (4.9 kB)
Collecting urllib3 (from pytapo)
  Downloading urllib3-2.5.0-py3-none-any.whl.metadata (6.5 kB)
Collecting pycryptodome (from pytapo)
  Downloading pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.4 kB)
Collecting rtp (from pytapo)
  Downloading rtp-0.0.4-py3-none-any.whl.metadata (2.1 kB)
Collecting aiohttp>=3 (from python-kasa)
  Downloading aiohttp-3.12.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (7.6 kB)
Collecting asyncclick>=8.1.7 (from python-kasa)
  Downloading https://www.piwheels.org/simple/asyncclick/asyncclick-8.1.8-py3-none-any.whl (99 kB)
Collecting cryptography>=1.9 (from python-kasa)
  Downloading cryptography-45.0.4-cp311-abi3-manylinux_2_28_aarch64.whl.metadata (5.7 kB)
Collecting mashumaro>=3.14 (from python-kasa)
  Downloading mashumaro-3.16-py3-none-any.whl.metadata (118 kB)
Collecting aiohappyeyeballs>=2.5.0 (from aiohttp>=3->python-kasa)
  Downloading https://www.piwheels.org/simple/aiohappyeyeballs/aiohappyeyeballs-2.6.1-py3-none-any.whl (15 kB)
Collecting aiosignal>=1.1.2 (from aiohttp>=3->python-kasa)
  Downloading https://www.piwheels.org/simple/aiosignal/aiosignal-1.3.2-py2.py3-none-any.whl (7.6 kB)
Collecting attrs>=17.3.0 (from aiohttp>=3->python-kasa)
  Downloading https://www.piwheels.org/simple/attrs/attrs-25.3.0-py3-none-any.whl (63 kB)
Collecting frozenlist>=1.1.1 (from aiohttp>=3->python-kasa)
  Downloading frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (18 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp>=3->python-kasa)
  Downloading multidict-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (5.3 kB)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /simple/propcache/
Collecting propcache>=0.2.0 (from aiohttp>=3->python-kasa)
  Downloading propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (12 kB)
Collecting yarl<2.0,>=1.17.0 (from aiohttp>=3->python-kasa)
  Downloading yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (73 kB)
Collecting idna>=2.0 (from yarl<2.0,>=1.17.0->aiohttp>=3->python-kasa)
  Downloading https://www.piwheels.org/simple/idna/idna-3.10-py3-none-any.whl (70 kB)
Collecting anyio~=4.0 (from asyncclick>=8.1.7->python-kasa)
  Downloading https://www.piwheels.org/simple/anyio/anyio-4.9.0-py3-none-any.whl (100 kB)
Collecting sniffio>=1.1 (from anyio~=4.0->asyncclick>=8.1.7->python-kasa)
  Downloading https://www.piwheels.org/simple/sniffio/sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting typing_extensions>=4.5 (from anyio~=4.0->asyncclick>=8.1.7->python-kasa)
  Downloading typing_extensions-4.14.0-py3-none-any.whl.metadata (3.0 kB)
Collecting cffi>=1.14 (from cryptography>=1.9->python-kasa)
  Downloading cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (1.5 kB)
Collecting pycparser (from cffi>=1.14->cryptography>=1.9->python-kasa)
  Downloading https://www.piwheels.org/simple/pycparser/pycparser-2.22-py3-none-any.whl (117 kB)
Collecting charset_normalizer<4,>=2 (from requests->pytapo)
  Downloading charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (35 kB)
Collecting certifi>=2017.4.17 (from requests->pytapo)
  Downloading certifi-2025.6.15-py3-none-any.whl.metadata (2.4 kB)
Downloading pytapo-3.3.46-py3-none-any.whl (41 kB)
Downloading aiohttp-3.12.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 9.6 MB/s eta 0:00:00
Downloading multidict-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (236 kB)
Downloading yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (347 kB)
Downloading cryptography-45.0.4-cp311-abi3-manylinux_2_28_aarch64.whl (4.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 9.5 MB/s eta 0:00:00
Downloading cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (469 kB)
Downloading frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (237 kB)
Downloading mashumaro-3.16-py3-none-any.whl (93 kB)
Downloading propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (217 kB)
Downloading typing_extensions-4.14.0-py3-none-any.whl (43 kB)
Downloading pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 8.9 MB/s eta 0:00:00
Downloading requests-2.32.4-py3-none-any.whl (64 kB)
Downloading charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (142 kB)
Downloading urllib3-2.5.0-py3-none-any.whl (129 kB)
Downloading certifi-2025.6.15-py3-none-any.whl (157 kB)
Downloading rtp-0.0.4-py3-none-any.whl (14 kB)
Installing collected packages: rtp, urllib3, typing_extensions, sniffio, pycryptodome, pycparser, propcache, multidict, idna, frozenlist, charset_normalizer, certifi, attrs, aiohappyeyeballs, yarl, requests, mashumaro, cffi, anyio, aiosignal, cryptography, asyncclick, aiohttp, python-kasa, pytapo
Successfully installed aiohappyeyeballs-2.6.1 aiohttp-3.12.13 aiosignal-1.3.2 anyio-4.9.0 asyncclick-8.1.8 attrs-25.3.0 certifi-2025.6.15 cffi-1.17.1 charset_normalizer-3.4.2 cryptography-45.0.4 frozenlist-1.7.0 idna-3.10 mashumaro-3.16 multidict-6.5.0 propcache-0.3.2 pycparser-2.22 pycryptodome-3.23.0 pytapo-3.3.46 python-kasa-0.10.2 requests-2.32.4 rtp-0.0.4 sniffio-1.3.1 typing_extensions-4.14.0 urllib3-2.5.0 yarl-1.20.1
(pytapo_venv) pi@Jeedom:~ $ python3 -m pip freeze
aiohappyeyeballs==2.6.1
aiohttp==3.12.13
aiosignal==1.3.2
anyio==4.9.0
asyncclick==8.1.8
attrs==25.3.0
certifi==2025.6.15
cffi==1.17.1
charset-normalizer==3.4.2
cryptography==45.0.4
frozenlist==1.7.0
idna==3.10
mashumaro==3.16
multidict==6.5.0
propcache==0.3.2
pycparser==2.22
pycryptodome==3.23.0
pytapo==3.3.46
python-kasa==0.10.2
requests==2.32.4
rtp==0.0.4
sniffio==1.3.1
typing_extensions==4.14.0
urllib3==2.5.0
yarl==1.20.1
(pytapo_venv) pi@Jeedom:~ $ sudo chown -R www-data:www-data ~www-data/html/plugins/script/data/pytapo_venv

Suite demain
En fait, je ne sais pas s’il reste bcp à faire

Merci encore

Le warning est dû à une interruption de connexion réseau lors de la tentative de téléchargement du paquet propcache.
Mais la dernière ligne indique que tout s’est finalement bien passé après nouvelle tentative de téléchargement :


:+1:

Donc maintenant tu as un venv en python 3.11.11 avec les dernières versions de pytapo et python-kasa.
J’imagine que ça te ravit ! :rofl:

Bon, à quoi ressemble ta commande [Automation][PyTapo][moveX] du plugin script (c’est celui-là que tu veux faire fonctionner, me semble-t-il) ?
Capture de la config de la commande STP.

Bonjour,

Voilà la cmd ‹ ‹ moveX › ›

Le fichier script et son contenu


Et l’erreur que ça génère maintenant

Erreur exécution de la commande [Automation][PyTapo][moveX] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/moveX.PY 2>/dev/null;/var/www/html/plugins/script/data/moveX.PY 10 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/moveX.PY", line 3, in from pytapo import Tapo ModuleNotFoundError: No module named 'pytapo'

J’imagine que c’est parce que ça ne pointe pas sur le venv …

Que dois-je modifier ?

Le plus simple dans ton cas est de modifier la toute première ligne du script python.
Actuellement :

#!/usr/bin/env python3

A modifier en :

#!~www-data/html/plugins/script/data/pytapo_venv/bin/python3

Attention si tu partages ce script, celui à qui tu le partages doit adapter cette ligne.