Skip to main content

宜家 Trådfri/Tradfri API。通过 Python 控制和观察您的灯光。

项目描述

PyPI 版本 在 Visual Studio Code 中打开

Python 包用于与兼容 ZigBee Light Link 产品的IKEA Trådfri (Tradfri) ZigBee 网关进行通信。通过使用这个库,您可以与网关通信并控制宜家的灯和墙壁插头。

其中一些功能包括:

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

目录:

  1. 安装
  2. 验证设备兼容性
  3. 单机使用(命令行界面)
  4. 在您自己的 Python 平台中实现
  5. 码头工人支持
  6. 已知的问题
  7. 致谢

安装

您可能必须使用超级用户权限 (sudo) 才能在安装时使用某些命令。

要在同步应用程序中使用该库,您首先需要使用此脚本安装libcoap。测试时使用examples/example_sync.py

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

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

验证设备兼容性

设备 版本
宜家网关 (E1526) 1.8.25
TRADFRI 灯泡 E14 WS 蛋白石 400lm 1.2.217
TRADFRI 灯泡 E27 WS 蛋白石 980lm 1.2.217
TRADFRI 灯泡 E27 W 蛋白石 1000lm 1.2.214
TRADFRI 遥控器 1.2.214
TRADFRI 运动传感器 1.2.214
TRADFRI 墙壁插头 2.0.022
Starkvind 空气净化器 1.0.033

单机使用(命令行界面)

命令行界面截图

如果你想在命令行界面中独立测试这个库:

$ python3 -i -m pytradfri IP

其中IP被网关的 IP 地址代替。

第一次运行 pytradfri 时,系统会要求您输入 IKEA 网关背面的“安全代码”。

独立提示符中的命令示例:

列出所有灯:

lights

将灯光列表中第 1 项的亮度设置为 50:

api(lights[1].light_control.set_dimmer(50))

观察灯的变化:

def change_listener(device):
  print(device.name + " is now " + str(device.light_control.lights[0].state))

api(lights[0].observe(change_listener))

在您自己的 Python 平台中实现

请参阅示例文件。

码头工人支持

有一个 Docker 脚本可用于引导开发环境。运行./script/dev_docker,您将构建并启动一个准备好进行同步和异步的容器。启动后,按照上述说明对库进行独立测试。

Docker 镜像的工作目录是/usr/src/app. 此 repo 的签出版本已添加到此处,并作为 Python 依赖项安装,以便于开发和测试。当你想使用来自 pip 的最新稳定版本时,你只需要切换到另一个工作目录。

已知的问题

我们知道一些用户在使用他们的网关时遇到的问题。轶事证据表明向网关发送许多请求(垃圾邮件),或者不可靠的网络连接可能是罪魁祸首。作为第一个解决方案,尝试限制请求的数量,并将网关移动到更靠近网络上运行 pytradfri 的设备。除此之外,不幸的是,这个项目目前无法支持或解决这些问题。随着这一进程的进展,我们将确保项目保持最新状态。

致谢

这是一个基于vidarlo找到的分析的实现。

Paulus Schoutsen ( @balloob ) 制作了一个包含初始代码概念的工作 Python 库。Lewis Juggins ( @lwis ) 添加了对 asyncio 的支持,并改进了对返回类型的依赖关系和一致性的管理。许多其他人也做出了贡献

项目详情