Piloter la caméra TAPO C210 par script (erreur install pytapo)

Bonjour,
Je viens d’acheter un camera tapo C210 et je souhaiterais la commander sou jeedom comme expliquer ici

Malheureusement, J’ai une erreur a l’installation de pytapo.

Mon flux RTSP fonctionne bien sous VLC

Qui peut m’aider ?

Je suis sur RPI debian buster
Jeedom 4.2.21

jeedom@jeedom:~ $ sudo python3 -m pip install pytapo
[sudo] Mot de passe de jeedom : 
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pytapo in /usr/local/lib/python3.7/dist-packages                                                                              (2.3)
Requirement already satisfied: urllib3 in /usr/local/lib/python3.7/dist-packages                                                                              (from pytapo) (1.26.11)
Requirement already satisfied: pycryptodome in /usr/local/lib/python3.7/dist-pac                                                                             kages (from pytapo) (3.15.0)
Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-package                                                                             s (from pytapo) (2.28.1)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/di                                                                             st-packages (from requests->pytapo) (2022.6.15)
Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python                                                                             3.7/dist-packages (from requests->pytapo) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-pac                                                                             kages (from requests->pytapo) (3.3)
WARNING: Running pip as the 'root' user can result in broken permissions and con                                                                             flicting behaviour with the system package manager. It is recommended to use a v                                                                             irtual 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", lin                                                                             e 1673, in print
    extend(render(renderable, render_options))
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", lin                                                                             e 1305, 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", lin                                                                             e 249, in split_lines
    for segment in segments:
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/console.py", lin                                                                             e 1283, in render
    renderable = rich_cast(renderable)
  File "/usr/local/lib/python3.7/dist-packages/pip/_vendor/rich/protocol.py", li                                                                             ne 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.p                                                                             y", 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/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.7/dist-packages/pip/__main__.py", line 31, in <mo                                                                             dule>
    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 190, 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 236, in pip_self_version_check
    logger.warning("[present-rich] %s", upgrade_prompt)
  File "/usr/lib/python3.7/logging/__init__.py", line 1395, in warning
    self._log(WARNING, 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.2.1', new='22.2.2'),)

Log du script

[2022-08-24 11:22:08][ERROR] : Erreur exécution de la commande [TEST][CamTapo.PY][MoveX] : Erreur sur /var/www/html/plugins/script/data/CamTapo.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last):   File "/var/www/html/plugins/script/data/CamTapo.PY", line 26, in <module>     moveX(10)   File "/var/www/html/plugins/script/data/CamTapo.PY", line 13, in moveX     tapo2=Tapo(host, user, password)   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 41, in __init__     self.basicInfo = self.getBasicInfo()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 233, in getBasicInfo     {"method": "get", "device_info": {"name": ["basic_info"]}}   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 95, in performRequest     self.ensureAuthenticated()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 61, in ensureAuthenticated     return self.refreshStok()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 80, in refreshStok     raise Exception("Invalid authentication data") Exception: Invalid authentication data

Bonjour,

Faut installer pip d’abord:

sudo apt install python3-pip

J’ajoute ça dans mon tuto…

Merci pour vos retours

J’ai exécuté les commandes sans succès

jeedom@jeedom:~ $ sudo apt install python3-pip
[sudo] Mot de passe de jeedom : 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
python3-pip est déjà la version la plus récente (18.1-5+rpt1).
Le paquet suivant a été installé automatiquement et n'est plus nécessaire :
  raspi-gpio
Veuillez utiliser « sudo apt autoremove » pour le supprimer.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
[ERROR] : Erreur exécution de la commande [TEST][CamTapo.PY][MoveX] : Erreur sur /var/www/html/plugins/script/data/CamTapo.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last):   File "/var/www/html/plugins/script/data/CamTapo.PY", line 26, in <module>     moveX(10)   File "/var/www/html/plugins/script/data/CamTapo.PY", line 13, in moveX     tapo2=Tapo(host, user, password)   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 41, in __init__     self.basicInfo = self.getBasicInfo()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 233, in getBasicInfo     {"method": "get", "device_info": {"name": ["basic_info"]}}   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 95, in performRequest     self.ensureAuthenticated()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 61, in ensureAuthenticated     return self.refreshStok()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 80, in refreshStok     raise Exception("Invalid authentication data") Exception: Invalid authentication data
jeedom@jeedom:~ $ sudo pip install --upgrade pip
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in /usr/local/lib/python3.7/dist-packages (22.2.1)
Collecting pip
  Downloading https://www.piwheels.org/simple/pip/pip-22.2.2-py3-none-any.whl (2.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 965.5 kB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.2.1
    Uninstalling pip-22.2.1:
      Successfully uninstalled pip-22.2.1
Successfully installed pip-22.2.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
jeedom@jeedom:~ $ sudo python3 -m pip install pytapo
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pytapo in /usr/local/lib/python3.7/dist-packages (2.3)
Requirement already satisfied: urllib3 in /usr/local/lib/python3.7/dist-packages (from pytapo) (1.26.11)
Requirement already satisfied: pycryptodome in /usr/local/lib/python3.7/dist-packages (from pytapo) (3.15.0)
Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from pytapo) (2.28.1)
Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests->pytapo) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->pytapo) (2022.6.15)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->pytapo) (3.3)
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

Même erreur :crazy_face:

Non, pas du tout, il n’y a aucune erreur là

Pour l’installation non, mais erreur sur l’execution :wink:

jeedom@jeedom:~ $ /var/www/html/plugins/script/data/CamTapo.PY
Traceback (most recent call last):
  File "/var/www/html/plugins/script/data/CamTapo.PY", line 26, in <module>
    moveX(10)
  File "/var/www/html/plugins/script/data/CamTapo.PY", line 13, in moveX
    tapo2=Tapo(host, user, password)
  File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 41, in __init__
    self.basicInfo = self.getBasicInfo()
  File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 233, in getBasicInfo
    {"method": "get", "device_info": {"name": ["basic_info"]}}
  File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 95, in performRequest
    self.ensureAuthenticated()
  File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 61, in ensureAuthenticated
    return self.refreshStok()
  File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 80, in refreshStok
    raise Exception("Invalid authentication data")
Exception: Invalid authentication data
[ERROR] : Erreur exécution de la commande [TEST][CamTapo.PY][MoveX] : Erreur sur /var/www/html/plugins/script/data/CamTapo.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last):   File "/var/www/html/plugins/script/data/CamTapo.PY", line 26, in <module>     moveX(10)   File "/var/www/html/plugins/script/data/CamTapo.PY", line 13, in moveX     tapo2=Tapo(host, user, password)   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 41, in __init__     self.basicInfo = self.getBasicInfo()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 233, in getBasicInfo     {"method": "get", "device_info": {"name": ["basic_info"]}}   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 95, in performRequest     self.ensureAuthenticated()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 61, in ensureAuthenticated     return self.refreshStok()   File "/usr/local/lib/python3.7/dist-packages/pytapo/__init__.py", line 80, in refreshStok     raise Exception("Invalid authentication data") Exception: Invalid authentication data

Mon script de test

#!/usr/bin/env python3

from pytapo import Tapo
import sys
  
user="xxxxx"
password="xxxx"
# user="xxxx@xxxx"
# password="xxxxxxxxx"
host="192.168.x.xxx"

def moveX(x):
    tapo2=Tapo(host, user, password)
    res ={}
    try :
        res = tapo2.moveMotor(x,0)
    except Exception :
        print("Camera en butee (X)")
        res["error_code"] =-1
    if(res.get("error_code")==0) :
        return 1
    else :
        return -1

# moveX(sys.argv[1])
moveX(10)

ce n’est donc pas la même erreur (et donc un autre problème):

faut lire un minimum le log :wink:

je dirais que vos identifiants sont incorrectes

Oui, j’ai bien vu le message.

Mais j’ai fait exprès de mettre un login/pass simple pour le test.

Je suis retourné dans l’application pour ressaisir le mot de passe qui correspond bien à ceux du script

On parle bien du login qu’on met dans les paramètres avancés de l’appli ? (Et non ceux du compte tapo)

1 « J'aime »

User et password, par un utilisateur : mdp que vous aurez ajouté via l’application Tapo (via votre smartphone).

Host : l’IP de votre caméra.

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

Bonjour,
J’essai aussi d’installer PYTAPO mais je dois mal faire.
j’ai une box atlas
version 4.2.19
je suis aller sur systeme/configuration/os-db/administration systeme et ensuite j’ai lancer la commande: sudo apt install python3-pip
ça me donne ça:

Pouvez vous m’aider?
merci

Bonjour mic78000,
On est bien d’accord, c’est bien ces login que j’ai pris

Bonjour stouph19, et si tu remplace « apt » par « apt-get », ca donne quoi ?

Ca ne changera rien ici et on voit que pip est installé

@stouph19 créez votre sujet et fournissez des informations, expliquez votre problème car vous êtes hors sujet: 1 question = 1 sujet
Et pour le moment, vu que tout ce que vous dites c’est que vous faites mal, alors tout ce qu’on peut répondre c’est: « faites le mieux »

Je viens de tester sur un jeedom que j’avais sur un VM, même résultat.

J’ai changé mon login/pass dans l’application sans résultat non plus

J’ai progressé en fouilant sur le net

Il semblerait que le fonctionnement diffère en fonction des modèles

Pour les C100, C200, il faut bien utiliser le « login du compte local » ou « admin » ainsi que le « mot de pass local » de l’application tapo
Pour la C310, il faut utiliser le login « admin » et le « mot de passe local » du compte application tapo
Pour la C210, il faut utiliser le login « admin » et le "mot de passe du compte TPLINK " (le compte principal)

Cela fonctionne (enfin) pour moi :muscle: (3e ligne pour ma C210)

Je n’ai testé qu’avec moveX mais j’imagine que les autres fonctions devraient fonctionner.

Du coup, je m’interroge sur la politique de TAPO quant à l’avenir de cet API :face_with_peeking_eye:

Merci bodbod et mic78000
grace a vous j’ai pu faire fonctionner ma camera Tapo C210 qui était dans le placard depuis 6 mois.
Je confirme Qu’il faut Pour la C210 utiliser le login « admin » et le "mot de passe du compte TPLINK " (le compte principal).

Bonne soirée a tous

Merci d’avoir confirmé @stouph19

Moi, si je n’avais pas réussi à la faire fonctionner, c’était retour amazon

Pour info, j’ai trouvé ca depuis cette discussion qui a été enrichissante https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/41

Du coup, je vais ajouter cela dans mon tuto :

Pour les C100, C200, il faut bien utiliser le « login du compte local » ou « admin » ainsi que le « mot de pass local » de l’application tapo
Pour la C310, il faut utiliser le login « admin » et le « mot de passe local » du compte application tapo
Pour la C210, il faut utiliser le login « admin » et le "mot de passe du compte TPLINK " (le compte principal)

@mic78000 ou @stouph19 ou @Mips : si vous avez la C100 ou C200, vous pouvez tester avec le login « admin » histoire de confirmer ?

Avec la C200, je la fais marcher avec le mdp/utiisateur que l’on donne dans l’ap Tapo :
roue dentée / Réglage avancé / compte de la caméra