Pytapo 3.3.42 et camera tapo C100 firmware 1.4.0

Bonjour,

J’ai une camera tapo C100 sur laquelle je pilotais le mode privacy très bien jusqu’à la mise à jour 1.4.0. je suis avec pytapo 3.3.42, python-kasa 0.7.7 et phyton 3.9.2. et j’ai activer dans tapo lab la compatibilité tierce. Mon script ne fonctionne plus depuis le passage en 1.4.0. Le voici :

#!/usr/bin/env python3

from pytapo import Tapo
import sys
import logging
import requests
import time
import os
import json

lieu = sys.argv[1]
mode = sys.argv[2]

if lieu == "cuisine":
        ip = "xxxxxxx"
elif lieu == "garage":
        ip = "xxxxx"
elif lieu == "salon":
        ip = "xxxxx"

fichier = open("/var/www/html/log/monlogtapo", "a")
fichier.write("**************")
fichier.write("\n")
fichier.write(lieu)
fichier.write("\n")
fichier.write(mode)
fichier.write("\n")
fichier.write(ip)

user="admin" # user you set in Advanced Settings -> Camera Account
password="xxxxxxxxxx" # password you set in Advanced Settings -> Camera Account

fichier.write("\n")
fichier.write(user)
fichier.write("\n")
fichier.write(password)
fichier.write("\n")
fichier.write(host)



tapo = Tapo(host, user, password)

# Attendre 5 secondes avant d'envoyer la requête (évite d'être bloqué)
time.sleep(5)

if mode == "ok":

	tapo.setPrivacyMode(True)
elif mode == "nok":
	tapo.setPrivacyMode(False)

il me renvoie l’erreur :

raceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connection.py", line 741, in connect
    sock_and_verified = _ssl_wrap_socket_and_match_hostname(
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
    ssl_sock = ssl_wrap_socket(
  File "/usr/local/lib/python3.9/dist-packages/urllib3/util/ssl_.py", line 460, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
  File "/usr/local/lib/python3.9/dist-packages/urllib3/util/ssl_.py", line 504, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib/python3.9/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/usr/lib/python3.9/ssl.py", line 1073, in _create
    self.do_handshake()
  File "/usr/lib/python3.9/ssl.py", line 1342, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1137)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py", line 488, in _make_request
    raise new_e
urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1137)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/dist-packages/urllib3/connectionpool.py", line 841, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/dist-packages/urllib3/util/retry.py", line 519, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='192.168.1.147', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1137)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/www/html/plugins/script/data/tapoprivacy.sh", line 45, in <module>
    tapo = Tapo(host, user, password)
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 66, in __init__
    self.basicInfo = self.getBasicInfo()
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 735, in getBasicInfo
    return self.executeFunction(
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 291, in executeFunction
    data = self.performRequest(
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 330, in performRequest
    self.ensureAuthenticated()
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 86, in ensureAuthenticated
    return self.refreshStok()
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 182, in refreshStok
    if self.isSecureConnection():
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 115, in isSecureConnection
    res = self.request(
  File "/usr/local/lib/python3.9/dist-packages/pytapo/__init__.py", line 99, in request
    response = session.request(method, url, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/dist-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/requests/adapters.py", line 698, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='192.168.1.147', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1137)')))

Je suppose que la connexion a dû être sécurisé, mais je ne trouve aucune infos, quelqu’un aurait’il déjà eu ce soucis?

Bonjour,

je n’y connais rien en tapo, mais la variable host est utilisée sans être définie.

A+
Michel

Si il y a bien un host= ip mais le copier coller ….