宜家tr_dfri/tradfri api。从python中控制并观察灯光。
pytradfri的Python项目详细描述
与与Zigbee Light Link产品兼容的宜家tr_dfri(tradfri)Zigbee网关通信的python包。通过使用此库,您可以与网关通信,并控制宜家的灯光和墙壁插头。
一些功能包括:
- 获取有关网关的信息
- 观察灯光、组和其他资源,并在它们更改时得到通知
- 控制墙插头
- 列出连接到网关的所有设备
- 列出所有灯光并获取灯光属性(名称、状态、色温、调光器级别等)
- 更改灯光的属性值(名称、状态、色温、调光器级别等)
- 重新启动并重置网关
- 列出智能任务(唤醒、开/关和不在家)及其属性
- 更改智能任务中的值(其中一些功能尚未在应用程序中提供)
目录:
安装
安装时,可能需要使用超级用户权限(sudo)才能使用某些命令。
要在同步应用程序中使用库,首先需要使用此脚本安装libcoap。测试时请使用示例/示例sync.py。
对于异步应用程序,您需要安装pytradfri[async]
,例如使用需求文件:shell pip install pytradfri[async]
。请注意,在速度较慢的设备上安装可能需要相当长的时间。在测试时,请使用示例/example戥async.py。
安全性最佳实践是将网关上打印的安全代码永久存储在应用程序中。与网关通信时,请始终使用PSK。
验证设备兼容性
<表><广告>独立使用(命令行界面)
如果要在命令行界面中单独测试此库:
$ python3 -i -m pytradfri IP
其中,IP被网关的IP地址替换。
第一次运行pytradfri时,系统会要求您输入宜家网关背面的"安全代码"。
独立提示中的命令示例:
列出所有灯光:
lights
将灯光列表中项目1的亮度设置为50:
api(lights[1].light_control.set_dimmer(50))
观察灯的变化:
defchange_listener(device):print(device.name+" is now "+str(device.light_control.lights[0].state))api(lights[0].observe(change_listener))
在您自己的python平台中实现
请参阅示例文件。
Docker支持
有一个Docker脚本可用于引导开发环境。运行/script/dev_docker
,您将构建并启动一个容器,该容器可以用于同步和异步。启动后,请按照上述说明单独测试库。
docker镜像的工作目录是/usr/src/app
。这个repo的签出版本被添加到那里,并作为python依赖项安装,以便于开发和测试。当您想使用PIP的最新稳定版本时,您只需更改到另一个工作目录即可。
已知问题
我们知道一些用户在使用网关时遇到的问题。坊间流传的观点认为,向网关发送许多请求(垃圾邮件)或不可靠的网络连接可能是罪魁祸首。作为第一个解决方案,尝试限制请求的数量,并将网关移近在nework上运行pytradfri的设备。除此之外,不幸的是,这个项目目前无法做任何事情来支持或解决这些问题。随着项目的进行,我们将确保项目保持最新状态。
致谢
这是一个基于分析的实现,我在这里找到了vidarlo paulus schootsen(@ballob)创建了一个初始代码概念的工作python库。lewis juggins(@lwis)增加了对异步的支持,改进了对返回类型的依赖性和一致性的管理。许多其他人也有贡献。推荐PyPI第三方库