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?