宜家tr_dfri/tradfri api。从python中控制并观察灯光。

pytradfri的Python项目详细描述


覆盖率pypi version由hound审阅

与与Zigbee Light Link产品兼容的宜家tr_dfri(tradfri)Zigbee网关通信的python包。通过使用此库,您可以与网关通信,并控制宜家的灯光和墙壁插头。

一些功能包括:

  • 获取有关网关的信息
  • 观察灯光、组和其他资源,并在它们更改时得到通知
  • 控制墙插头
  • 列出连接到网关的所有设备
  • 列出所有灯光并获取灯光属性(名称、状态、色温、调光器级别等)
  • 更改灯光的属性值(名称、状态、色温、调光器级别等)
  • 重新启动并重置网关
  • 列出智能任务(唤醒、开/关和不在家)及其属性
  • 更改智能任务中的值(其中一些功能尚未在应用程序中提供)

目录:

  1. 安装
  2. 验证设备兼容性
  3. 独立使用(命令行界面)
  4. 在您自己的python平台中实现
  5. Docker支持
  6. [已知问题](已知问题)
  7. 确认

安装

安装时,可能需要使用超级用户权限(sudo)才能使用某些命令。

要在同步应用程序中使用库,首先需要使用此脚本安装libcoap。测试时请使用示例/示例sync.py。

对于异步应用程序,您需要安装pytradfri[async],例如使用需求文件:shell pip install pytradfri[async]。请注意,在速度较慢的设备上安装可能需要相当长的时间。在测试时,请使用示例/example戥async.py

安全性最佳实践是将网关上打印的安全代码永久存储在应用程序中。与网关通信时,请始终使用PSK。

验证设备兼容性

<表><广告>设备 版本 < /广告><正文>宜家网关(E1526)1.8.25Tradfri灯泡E14 WS蛋白石400 lm1.2.217Tradfri灯泡E27 WS Opal 980lm1.2.217Tradfri灯泡E27 W蛋白石1000lm1.2.214Tradfri遥控器1.2.214Tradfri运动传感器1.2.214Tradfri壁塞2.0.022

独立使用(命令行界面)

命令行界面截图

如果要在命令行界面中单独测试此库:

$ 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)增加了对异步的支持,改进了对返回类型的依赖性和一致性的管理。许多其他人也有贡献。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
正在从节点解密字符串。Java中的js?   java未来超时和IO超时   java apache camel多播以异步方式执行聚合   java需要710次尝试在Android和Raspberry Pi之间建立socket连接   在Java中使用“+,”循环绘制形状   java安卓:如何计算两点之间的距离   java多线程Hello World   刷新后缓存共享变量的java Freemarker模板   java我试图通过迭代用整数填充数组,但我得到了ArrayIndexOutOfBoundsException   JNI C++到java 32位图像的不正确显示   java哪个更快:克隆还是使用流?   java cache2k和Generic T不能很好地结合在一起   java如何在读取文件之前更新文件内容?   java如何在GWT中从JSNI方法调用JSNI方法   将MySQL类型文本映射到Java Hibernate的类型   java如何按长度对字符串排序   java RecyclerView:在滚动期间不断更改数据