宜家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需要64位jdk 1.5 for windows   eclipse运算符+对于参数类型java是未定义的。双,爪哇。双人   未下载文件扩展名为的java文件   java不支持带有POST的媒体类型   从动态创建的多个EditText读取文本时发生java错误   java无法为同一xpath单击多个按钮   如何在Java中动态格式化字符串   java Android Clear Middle活动   多线程Java内存模型volatile和x86   git在Java中通过Jgit忽略文件或文件夹   java“决策无法区分输入的备选方案1、2…”   子类的javajpa继承   java需要弄清楚如何操作mutator来弄清楚一个类,教授说,我对如何操作感到困惑   java如何使用JDBC将数据从文件复制到PostgreSQL?