mirror of
https://github.com/mjg59/python-broadlink.git
synced 2024-11-22 07:00:12 +01:00
Add a function to send ping packets (#526)
Rename 'host' attribute to 'address' (ping) (#528)
This commit is contained in:
parent
9af3a3c56c
commit
21fa2a20bf
@ -6,7 +6,7 @@ from typing import Generator, List, Union, Tuple
|
|||||||
from .alarm import S1C
|
from .alarm import S1C
|
||||||
from .climate import hysen
|
from .climate import hysen
|
||||||
from .cover import dooya
|
from .cover import dooya
|
||||||
from .device import device, scan
|
from .device import device, ping, scan
|
||||||
from .exceptions import exception
|
from .exceptions import exception
|
||||||
from .light import lb1
|
from .light import lb1
|
||||||
from .remote import rm, rm4
|
from .remote import rm, rm4
|
||||||
|
@ -70,6 +70,20 @@ def scan(
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def ping(address: str, port: int = 80) -> None:
|
||||||
|
"""Send a ping packet to an address.
|
||||||
|
|
||||||
|
This packet feeds the watchdog timer of firmwares >= v53.
|
||||||
|
Useful to prevent reboots when the cloud cannot be reached.
|
||||||
|
It must be sent every 2 minutes in such cases.
|
||||||
|
"""
|
||||||
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as conn:
|
||||||
|
conn.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||||
|
packet = bytearray(0x30)
|
||||||
|
packet[0x26] = 1
|
||||||
|
conn.sendto(packet, (address, port))
|
||||||
|
|
||||||
|
|
||||||
class device:
|
class device:
|
||||||
"""Controls a Broadlink device."""
|
"""Controls a Broadlink device."""
|
||||||
|
|
||||||
@ -182,6 +196,15 @@ class device:
|
|||||||
self.is_locked = is_locked
|
self.is_locked = is_locked
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def ping(self) -> None:
|
||||||
|
"""Ping the device.
|
||||||
|
|
||||||
|
This packet feeds the watchdog timer of firmwares >= v53.
|
||||||
|
Useful to prevent reboots when the cloud cannot be reached.
|
||||||
|
It must be sent every 2 minutes in such cases.
|
||||||
|
"""
|
||||||
|
ping(self.host[0], port=self.host[1])
|
||||||
|
|
||||||
def get_fwversion(self) -> int:
|
def get_fwversion(self) -> int:
|
||||||
"""Get firmware version."""
|
"""Get firmware version."""
|
||||||
packet = bytearray([0x68])
|
packet = bytearray([0x68])
|
||||||
|
Loading…
Reference in New Issue
Block a user