jjlf a écrit : ↑13 juin 2019, 22:45
Voici ma petite contribution d'un example de code python :
Remplacer votre addresse MAC (du tydom) et le mot de passe et normalement vous aurez une réponse du server mediation de Delta Dore.
https://github.com/cth35/tydom_python
N'hésitez pas à l'utiliser et a commiter sur le github pour en faire un truc digne de ce nom car je n'aurais pas le temps
Je l'ai fait en python afin de pouvoir en faire un plugin domoticz que j'utilise.
Enjoy et merci @Eli pour ton aide.
Merci jjlf pour ce boulot que tu nous partage
Je me suis empressé de le tester sous Debian 9 et avec python 3.5 et après avoir installé le paquet python3-websockets mais j'ai ce message d'erreur en retour:
Code : Tout sélectionner
makina@JEEDOM:~/tydom_python$ python3.5 main.py
send: b'GET /mediation/client?mac=0011223344&appli=1 HTTP/1.1\r\nAccept-Encoding: identity\r\nUpgrade: websocket\r\nAccept: */*\r\nConnection: Upgrade\r\nSec-WebSocket-Key: 0pd3LkNyunFS+pMIj9klrw==\r\nHost: mediation.tydom.com:443\r\nSec-WebSocket-Version: 13\r\n\r\n'
reply: 'HTTP/1.1 401 \r\n'
header: X-Content-Type-Options header: X-XSS-Protection header: Cache-Control header: Pragma header: Expires header: X-Frame-Options header: Set-Cookie header: WWW-Authenticate header: Content-Length header: Date Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/websockets/client.py", line 79, in handshake
status_code, headers = yield from read_response(self.reader)
File "/usr/lib/python3/dist-packages/websockets/http.py", line 66, in read_response
version, status, reason = status_line[:-2].decode().split(None, 2)
ValueError: not enough values to unpack (expected 3, got 2)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "main.py", line 172, in <module>
asyncio.get_event_loop().run_until_complete(hello())
File "/usr/lib/python3.5/asyncio/base_events.py", line 466, in run_until_complete
return future.result()
File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
raise self._exception
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "main.py", line 164, in hello
async with websockets.client.connect('wss://mediation.tydom.com:443/mediation/client?mac={}&appli=1'.format(mac), extra_headers=websocketHeaders) as websocket:
File "/usr/lib/python3/dist-packages/websockets/py35/client.py", line 12, in __aenter__
self.websocket = await self
File "/usr/lib/python3/dist-packages/websockets/py35/client.py", line 19, in __await__
return (yield from self.client)
File "/usr/lib/python3/dist-packages/websockets/client.py", line 165, in connect
extra_headers=extra_headers)
File "/usr/lib/python3/dist-packages/websockets/client.py", line 81, in handshake
raise InvalidHandshake("Malformed HTTP message") from exc
websockets.exceptions.InvalidHandshake: Malformed HTTP message
Aurais tu une idée ? Merci encore !