Pytapo 3.3.42 et caméra C210 inopérants

Hello,
J’ai essayé de me lancer sur l’utilisation de pytapo pour piloter ma caméra C210 fraîchement installée (et opérationnelle autrement via le plugin-camera, y compris avec les commandes ptz) et je bloque.
L’install du module semble fonctionnel puisque la commande ssh pip show pytapo montre que la version 3.3.42 est installée.

J’ai créé le script initiate.py proposé sur le git en remplaçant dans celui les login MDP et ip, et dès l’exécution de celui-ci j’ai un message d’erreur :

0015|[2025-03-14 09:17:26] ERROR  : Erreur exécution de la commande [Aucun][tapo][test] : Erreur sur sudo chmod +x /var/www/html/plugins/script/data/Initiate.PY 2>/dev/null;/var/www/html/plugins/script/data/Initiate.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last):   File "/var/www/html/plugins/script/data/Initiate.PY", line 3, in <module>     from pytapo import Tapo   File "/usr/locl/lib/python3.9/dist-packages/pytapo/__init__.py", line 12a, in <module>     from kasa.transports import KlapTransportV2, KlapTransport ModuleNotFoundError: No module named 'kasa'

Une idée ?

Mon script initiate.py en question:

#!/usr/bin/env python3

from pytapo import Tapo

user = "****" # user you set in Advanced Settings -> Camera Account
password = *****:" # password you set in Advanced Settings -> Camera Account
host = "192.168.1.47" # ip of the camera, example: 192.168.1.52

tapo = Tapo(host, user, password)

request = tapo.getBasicInfo()
print (request)

Bonjour,

le message d’erreur indique que le module python kasa n’est pas installé. Il faudrait l’installer pour respecter les pré-requis.

A+
Michel

Merci Michel pour ta réponse rapide. J’ai donc installé le module « python-kasa » (car « kasa » tout seul c’est une librairie en ghanéen :smiley: ) en faisant la commande sudo python3 -m pip install python-kasa mais maintenant j’ai le message suivant :

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

J’aurais pensé que kasa.transports était inclus dans kasa :thinking:. Comme tu peux le vois je suis novice en python :slight_smile:

Est-ce que tu as un accès ssh ?
Si oui que retourne ceci ?

python3 -m pip list | grep kasa
python3

Là tu seras dans l’interpréteur python3, la version te sera indiquée, la ligne commencera par >>> et là :

from kasa.transports import KlapTransportV2, KlapTransport
exit()

Mais je suis surpris de voir qu’un module pour communiquer avec du matériel TPlink soit utilisé par un script qui communique avec des caméras…

Oui tout ce que je fais jusque là est en ssh. Le résultat est là (j’ai corrigé l’espace entre le - et le m :stuck_out_tongue: ) :

jeedom@JeedomAtlas:~$ python3 -m pip list | grep kasa
python-kasa         0.7.7
jeedom@JeedomAtlas:~$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more informati
on.
>>> from kasa.transports import KlapTransportV2, KlapTransport
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'kasa.transports'
>>> exit()

En fait Tapo est la marque de TPLink pour la domotique donc ça ne me paraît pas si déconnant, si ?

Est-ce que le problème ne viendrait pas du fait que dans l’arborescence du module kasa il n’y a pas de fichier transports.py mais un répertoire transports ?

oups…

OK, je n’avais pas cherché plus d’info, mais ça se tient.

Non, c’est correcte. Les classes sont linkées dans le fichier __init__.py

Par contre tu as la version 0.7.7 de python-kasa alors que la dernière version est la 0.10.2. Je ne suis pas un spécialiste de pip, d’instinct, je désinstallerais le module et le réinstallaerais dans un venv en forçant la version à 0.10.2 pour voir quels sont les messages d’erreur. Il y a sans doute plus propre/élégant mais au moins dans un venv, c’est indépendant du système et si le venv est cassé, il suffit de le supprimer.

Hmm étonnant je l’ai installé avec pip donc je pensais que ça prenait par défaut la dernière version dispo.
Par contre tu m’as perdu avec venv :sweat_smile:.

J’ai tenté pip uninstall puis pip install python-kasa==0.10.2 mais il trouve pas cette version.

Edit : je crois que j’ai compris, kasa nécessite python >=3.11 et je suis en 3.9 :frowning:

Est-ce que tu utilises un plugin de Mips ou MyModbus ou tout autre plugin qui utilise la bibliothèque développée par Mips et nebz, celle qui installe pyenv ?
Pour le savoir, que retourne : ls -l /opt ? S’il y a un répertoire pyenv c’est que c’est le cas.

jeedom@JeedomAtlas : -$ ls -l /opt total 4
drwxr-xr-x 14 root root 4096 3 mars 19: 22 pyenv

J’ai essayé d’installer une version plus ancienne de pytapo (0.3.33) qui correspond à la date de la release de la version 0.7.7 de kasa (la dernière compatible avec python 3.9) et ça semble marcher un peu mieux (message d’erreur différent en rapport avec l’impossibilité de connexion à la caméra, car entre temps j’ai fait une autre manip’ et du coup elle est débranchée). Mais j’ai l’impression que je progresse :clown_face:

Je vais essayer de te guider vers l’utilisation d’un venv pyenv sous python 3.11 que tu as sans doute déjà sur ta machine et sinon, on va l’installer, ce n’est pas grand chose. Que retournent ces commandes ?

ls -l /opt/pyenv/versions
df -h
jeedom@JeedomAtlas:~$ ls -l /opt/pyenv/versions
total 12
drwxr-xr-x 6 root root 4096 24 oct.  20:41 3.11.10
drwxr-xr-x 6 root root 4096 27 janv. 19:44 3.11.11
drwxr-xr-x 6 root root 4096 21 avril  2024 3.11.8
jeedom@JeedomAtlas:~$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,9G       0  1,9G   0% /dev
tmpfs              387M     40M  347M  11% /run
/dev/mmcblk1p1      29G    8,9G   20G  32% /
tmpfs              1,9G       0  1,9G   0% /dev/shm
tmpfs              5,0M    4,0K  5,0M   1% /run/lock
tmpfs              1,9G    1,1M  1,9G   1% /tmp
tmpfs              256M    9,1M  247M   4% /tmp/jeedom
/dev/zram1          49M     28M   18M  62% /var/log
tmpfs              387M       0  387M   0% /run/user/1000
jeedom@JeedomAtlas:~$






















En fait ne perds pas ton temps avec venv Michel, avec les anciennes versions installées comme expliqué plus haut cela fonctionne maintenant ! Merci de m’avoir guidé et d’avoir pris du temps.
Je laisse encore un peu le sujet ouvert au cas où j’ai d’autres soucis :slight_smile:

Oh laaa, mais c’est royal, tu as 3 versions de python 3.11 installées sous pyenv, on va prendre la dernière et faire un venv.
On va faire comme dans un fil auquel j’ai participé, mais avec une version python d’un pyenv :

python3 --version
/opt/pyenv/versions/3.11.11/bin/python3 -m venv ~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 (NE PAS utiliser sudo !)
3ème ligne activation du venv avec lequel on va faire les tests
4ème ligne test de version de python, maintenant ça doit être 3.11.11 puisque le venv est activé
5ème ligne mise à jour de base
6ème ligne: installation de pytapo et de python-kasa
7ème ligne vérification des versions installées

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

1 « J'aime »

J’ai lancé toutes les commandes et ça a l’air d’avoir fonctionné mais sur une mauvaise manip’ j’ai pas pu copier les lignes résultats :grimacing:

Dans ce cas répète la 1ere, 3eme, 4eme et la 7eme STP

Pas sûr que ça ait si bien marché que ça finalement :open_mouth:

jeedom@JeedomAtlas:~$ python3 --version
Python 3.9.2
jeedom@JeedomAtlas:~$ source ~www-data/html/plugins/script/data/pytapo_venv/bin/act
ivate
-bash: /var/www/html/plugins/script/data/pytapo_venv/bin/activate: Aucun fichier ou
 dossier de ce type
jeedom@JeedomAtlas:~$ python3 --version
Python 3.9.2
jeedom@JeedomAtlas:~$ python3 -m pip freeze
aiohappyeyeballs==2.6.1
aiohttp==3.11.13
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.8.0
async-timeout==5.0.1
asyncclick==8.1.8.0
attrs==25.3.0
bluepy==1.3.0
certifi==2024.2.2
cffi==1.16.0
chardet==4.0.0
charset-normalizer==3.3.2
cryptography==42.0.5
dbus-python==1.2.16
distro-info==1.0
exceptiongroup==1.2.2
fail2ban==0.11.2
frozenlist==1.5.0
idna==3.6
iotop==0.6
multidict==6.1.0
numpy==1.26.4
pillow==10.3.0
propcache==0.3.0
PyBluez==0.22
pycparser==2.22
pycrypto==2.6.1
pycryptodome==3.21.0
pycurl==7.43.0.6
pydantic==2.10.6
pydantic_core==2.27.2
PyGObject==3.38.0
pyserial==3.5
pytapo==3.3.33
python-apt==2.2.1
python-kasa==0.7.7
pyudev==0.24.1
requests==2.31.0
rtp==0.0.4
scipy==1.13.1
six==1.16.0
smart-open==7.1.0
sniffio==1.3.1
typing_extensions==4.12.2
unattended-upgrades==0.1
urllib3==2.2.1
wrapt==1.17.2
yarl==1.18.3

Du coup j’ai relancé la 2e ligne et j’ai ce résultat :

Error: [Errno 13] Permission denied: '/var/www/html/plugins/script/data/pytapo_venv
'

Et en la lançant avec sudo ?
(il faudra penser à faire un chown -R www-data:www-data ~www-data/html/plugins/script/data/pytapo_venv)

Ça marche mieux en effet :

jeedom@JeedomAtlas:~$ source ~www-data/html/plugins/script/data/pytapo_venv/bin/act
ivate
(pytapo_venv) jeedom@JeedomAtlas:~$ python3 --version
Python 3.11.11

Par contre le pip upgrade semble bloquer, il faut lancer en sudo ? (Et à peu près même message pour linstall de kasa) :

pytapo_venv) jeedom@JeedomAtlas:~$ python3 -m pip install --upgrade pip wheel
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.0.1-py3-none-any.whl.metadata (3.7 kB)
Collecting wheel
  Using cached wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Using cached pip-25.0.1-py3-none-any.whl (1.8 MB)
Using cached wheel-0.45.1-py3-none-any.whl (72 kB)
Installing collected packages: wheel, pip
ERROR: Could not install packages due to an OSError: [Errno 13] Permission non acco
rdée: '/var/www/html/plugins/script/data/pytapo_venv/lib/python3.11/site-packages/w
heel'
Check the permissions.


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

Il faudrait trouver avec quel utilisateur ça fonctionnerait pour le tester en ssh. Par contre avec le plugin script, il faudra que ça fonctionne avec l’utilisateur www-data.
Peut-être avec jeedom:jeedom ?

Je te cache pas que je suis un peu perdu là :slight_smile: .
J’ai pas fait le chown q’dont tu parlais plus haut car je ne sais pas à quoi ça sert, et je ne sais pas comment utiliser jeedom:jeedom comme utilisateur, et pour lancer quoi ?