Python Hue到MQTT网桥
项目描述
Hue2MQTT
Python Hue到MQTT网桥
是什么以及为什么?
Hue2MQTT允许您使用MQTT控制Hue设置,并实时发布当前状态。
- Python 3.8+带有类型提示和asyncio
- 使用出色的aiohue库与Hue通信。
- 使用MQTT控制您的灯光
- 实时接收事件(例如按钮点击、运动传感器)。
- 无需轮询Hue网桥以查找更改
- IPv6支持
配置
Hue2MQTT使用hue2mqtt.toml
进行配置。
# Hue2MQTT Default Config File
[mqtt]
# use host.docker.internal to connect to mqtt broker installed on docker host
# host = "host.docker.internal"
host = "::1"
port = 1883
enable_tls = false
force_protocol_version_3_1 = true
enable_auth = false
username = ""
password = ""
topic_prefix = "hue2mqtt"
[hue]
ip = "192.0.2.2" # or IPv6: "[2001:db0::1]"
username = "some secret here"
如果您不知道桥的用户名,可以使用hue2mqtt --discover
查找。
运行Hue2MQTT
通常,只需运行hue2mqtt
即可。
Usage: hue2mqtt [OPTIONS]
Main function for Hue2MQTT.
Options:
-v, --verbose
-c, --config-file PATH
--discover
--help Show this message and exit.
网桥状态
Hue2MQTT的状态作为JSON对象发布到hue2mqtt/status
{"online": true, "bridge": {"name": "Philips Hue", "mac_address": "ec:b5:fa:ab:cd:ef", "api_version": "1.45.0"}}
如果online
为false
,则桥发布的所有其他信息应假定不准确。
如果可用,bridge
对象包含有关Hue网桥的信息。
获取Hue信息
Hue状态的信息作为保留消息发布到MQTT。当状态发生变化时,消息会重新发布。
灯光
有关灯光的信息发布到hue2mqtt/light/{{UNIQUEID}}
,其中UNIQUEID
是灯光的Zigbee MAC地址。
例如:hue2mqtt/light/00:17:88:01:ab:cd:ef:01-02
{"id": 1, "name": "Lounge Lamp", "uniqueid": "00:17:88:01:ab:cd:ef:01-02", "state": {"on": false, "alert": "none", "bri": 153, "ct": 497, "effect": "none", "hue": 7170, "sat": 225, "xy": [0, 0], "transitiontime": null, "reachable": true, "color_mode": null, "mode": "homeautomation"}, "manufacturername": "Signify Netherlands B.V.", "modelid": "LCT012", "productname": "Hue color candle", "type": "Extended color light", "swversion": "1.50.2_r30933"}
组
组表示一组灯光,在 Hue 应用中称为房间和区域。
灯光信息发布到 hue2mqtt/group/{{GROUPID}}
,其中 GROUPID
是一个整数。
hue2mqtt/group/3 {"id": 3, "name": "Lounge", "lights": [24, 21, 20, 3, 5], "sensors": [], "type": "Room", "state": {"all_on": false, "any_on": false}, "group_class": "Living room", "action": {"on": false, "alert": "none", "bri": 153, "ct": 497, "effect": "none", "hue": 7170, "sat": 225, "xy": [0, 0], "transitiontime": null, "reachable": null, "color_mode": null, "mode": null}}
传感器
传感器表示 Hue 生态系统中的其他对象,例如开关和运动传感器。Hue 网关还使用一些“虚拟”传感器来表示计算值(例如 daylight
),但 Hue2MQTT 会忽略这些值。
传感器信息发布到 hue2mqtt/sensor/{{UNIQUEID}}
,其中 UNIQUEID
是设备的 Zigbee MAC 地址。
例如 hue2mqtt/sensor/00:17:88:01:ab:cd:ef:01-02
开关
{"id": 10, "name": "Lounge switch", "type": "ZLLSwitch", "modelid": "RWL021", "manufacturername": "Signify Netherlands B.V.", "productname": "Hue dimmer switch", "uniqueid": "00:17:88:01:ab:cd:ef:01-02", "swversion": "6.1.1.28573", "state": {"lastupdated": "2021-07-10T11:37:58", "buttonevent": 4002}, "capabilities": {"certified": true, "primary": true, "inputs": [{"repeatintervals": [800], "events": [{"buttonevent": 1000, "eventtype": "initial_press"}, {"buttonevent": 1001, "eventtype": "repeat"}, {"buttonevent": 1002, "eventtype": "short_release"}, {"buttonevent": 1003, "eventtype": "long_release"}]}, {"repeatintervals": [800], "events": [{"buttonevent": 2000, "eventtype": "initial_press"}, {"buttonevent": 2001, "eventtype": "repeat"}, {"buttonevent": 2002, "eventtype": "short_release"}, {"buttonevent": 2003, "eventtype": "long_release"}]}, {"repeatintervals": [800], "events": [{"buttonevent": 3000, "eventtype": "initial_press"}, {"buttonevent": 3001, "eventtype": "repeat"}, {"buttonevent": 3002, "eventtype": "short_release"}, {"buttonevent": 3003, "eventtype": "long_release"}]}, {"repeatintervals": [800], "events": [{"buttonevent": 4000, "eventtype": "initial_press"}, {"buttonevent": 4001, "eventtype": "repeat"}, {"buttonevent": 4002, "eventtype": "short_release"}, {"buttonevent": 4003, "eventtype": "long_release"}]}]}}
光传感器
{"id": 5, "name": "Hue ambient light sensor 1", "type": "ZLLLightLevel", "modelid": "SML001", "manufacturername": "Signify Netherlands B.V.", "productname": "Hue ambient light sensor", "uniqueid": "00:17:88:01:04:b7:b5:20-02-0400", "swversion": "6.1.1.27575", "state": {"lastupdated": "2021-07-10T12:28:17", "dark": true, "daylight": false, "lightlevel": 14606}, "capabilities": {"certified": true, "primary": false}}
控制 Hue
可以通过发布对象到 hue2mqtt/light/{{UNIQUEID}}/set
或 hue2mqtt/group/{{GROUPID}}/set
主题来控制灯光和组。
该对象应包含要更改的状态值的 JSON 对象。
{"on": "true"}
Docker
包含基本的 Dockerfile 和 docker-compose 示例。
连接到 Docker 主机
要建立到 Docker 主机(localhost 是 docker 实例)的 MQTT 连接,请在 hue2mqtt.toml 中使用 host.docker.internal。
host = "host.docker.internal"
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。