在LAN模式下运行原始ITEAD固件的Sonoff设备的接口。
pysonofflan的Python项目详细描述
在LAN模式下控制运行原始固件的SONOFF设备。
该模块提供了一种与Sonoff智能家居设备接口的方法, 如智能开关(如SONOFF BASIC)、插头(如SONOFF S20)。 和墙壁开关(例如Sonoff Touch),当这些设备处于LAN模式时。
LAN模式是ITEAD制造商引入的一项功能,允许操作 当服务器不可用时在本地。 有关详细信息,请参见《eLink LAN模式指南》。
自2018年年中以来,iTead固件已与大多数Sonoff设备一起发货 提供了此功能,允许直接控制设备 在本地网络上使用端口8081上的WebSocket连接。
此功能仅在没有连接时使用 到iTead云服务器(例如,如果您的Internet连接断开, 或者他们的服务器坏了)。 因此,仅当设备连接到WiFi时才启用 网络,但无法访问itead服务器
大多数用户只能通过 故意使用 阻止对其Sonoff设备的Internet访问。
功能
- 查找本地网络上的所有设备(192.168.0.0/24、192.168.1.0/24)
- 查找具有已知设备ID的设备的IP地址(来自eWebLink应用程序)
- 读取设备状态
- 打开/关闭设备
- 监听设备宣布的状态更改(例如通过物理交换机)
- 启动微动/瞬时装置,开启时间可变(如1s)
H3> DOCU心理状态
- 文档:https://pysonofflan.readthedocs.io" rel="nofollow">https://pysonofflan.readthedocs.io
安装
$ pip install pysonofflan
命令行用法
Usage: pysonofflan [OPTIONS] COMMAND [ARGS]... A cli tool for controlling Sonoff Smart Switches/Plugs in LAN Mode. Options: --host TEXT IP address or hostname of the device to connect to. --device_id TEXT Device ID of the device to connect to. --inching TEXT Number of seconds of "on" time if this is an Inching/Momentary switch. -v, --verbosity LVL Either CRITICAL, ERROR, WARNING, INFO or DEBUG --help Show this message and exit. Commands: discover Discover devices in the network (takes ~1... listen Connect to device, print state, then print... off Turn the device off. on Turn the device on. state Connect to device and print current state.
用法示例
$ pysonofflan discover
2019-01-31 00:45:32,074 - info: Attempting to discover Sonoff LAN Mode devices on the local network, please wait...
2019-01-31 00:46:24,007 - info: Found Sonoff LAN Mode device at IP 192.168.0.77
$ pysonofflan --host 192.168.0.77 state
2019-01-31 00:41:34,931 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:41:35,016 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:41:35,016 - info: State: OFF
$ pysonofflan --host 192.168.0.77 on
2019-01-31 00:49:40,334 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: Initial state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: OFF
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: New state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: ON
库使用
通过
sonoffswitch
类:
x = SonoffSwitch("192.168.1.50")
在实例化sonoffswitch类时,连接是 已启动,设备状态已填充,但未采取进一步操作。
对于大多数用例,您需要在更新后使用
回调函数
连接完成后对设备执行操作的参数
初始化,例如:
async def print_state_callback(device):
if device.basic_info is not None:
print("ON" if device.is_on else "OFF")
device.shutdown_event_loop()
SonoffSwitch(
host="192.168.1.50",
callback_after_update=print_state_callback
)
此示例只连接到设备,打印设备当前是否
"开"或"关",然后关闭连接。注意,回调必须是
异步。
特定于模块的错误作为异常引发,并且是预期的
由库用户处理。
许可证
-
自由软件:麻省理工学院许可证
学分
这个包是用cookiecutter和项目模板创建的。
历史记录
0.3.0(2019-05-16)
-
已清除关闭代码
-
始终创建重试逻辑以处理断开连接和其他故障
-
增加了处理状态维护的功能
-
更新的依赖项
-
去除片状测试
0.2.1(2019-02-02)
-
使WebSocket库的使用向后兼容旧版本
0.2.0(2019-02-02)
-
重写发现以使用多个线程,因此只需1秒
-
通过logger传递改进了客户端类中的日志记录
-
改进了对事件循环的处理,以允许在现有的异步代码库中使用
-
向cli添加了–version参数
0.1.7(2019-02-01)
-
从bumpversion迁移到bump2version,以实现更清洁的发布过程
0.1.6(2019-02-01)
-
另一个bump让travis上传到pypi本身,以修复构建
0.1.5(2019-02-01)
-
调整生成工作流后的缓冲版本
0.1.4(2019-01-31)
-
调整了各种构建和测试参数,以使代码覆盖率和分发工作正常
0.1.3(2019-01-31)
-
更新了自述布局
-
为travis和changelog/history链接添加了工作服配置
0.1.2(2019-01-31)
-
修复了用于ReadtheDocs的文档构建
-
修复了历史中中断PYPI格式的RestructuredText
0.1.1(2019-01-30)
-
改进的发现日志记录
-
添加文档
-
固定测试
0.1.0(2019-01-27)
-
pypi上的第一个版本。
-
基本功能cli客户端,允许基本控制(打开、关闭、检查状态)
-
添加了带有详细选项的全面日志记录,以帮助调试新设备
-
设备的控制是通过异步WebSocket实现的,因此应该可以在异步代码中使用