Philips Hue的PythonAPI和工具。
hueber的Python项目详细描述
说明。
Hueber是飞利浦色调照明系统的完全类型检查的PythonAPI。还包括了一些工具,这些工具使您能够声明update语句(也可以进行类型检查),然后可以安全有效地将这些语句推送到philips hue桥上。您可以自由地将hueber的任何部分一起使用,也可以单独使用(例如,将状态生成器工具与另一个api一起使用)。
请注意!
到目前为止,这还不包括完整的philips色调api,只包括/lights、/groups和/config。添加它们不需要太多的工作,但现在对我来说这不是一个优先事项。
先决条件。
- python 3.6(回复:静态类型注释)
- Philips Hue Bridge Ver2(我还没有用第一代产品测试过)连接到您的本地网络
开始。
打开一个repl并通过将本地ip地址传递给它,从实例化一个Bridge()开始:
>>> hue = Bridge("192.168.0.5", "r3aLLy-L0nG-Us3RName-H3r3") >>> print(Bridge) Bridge(192.168.0.5, xxxxx...-H3r3)
注:
菲利普提供了如何在你的网络上找到你的桥梁的文件。请咨询their documentation。
从这里可以通过桥接器类型访问您的所有灯光和组(我只显示了下面输出的简略版本):
>>> print(hue.lights) {1: Light(1, Bedroom Dresser, ... ), 5: Light(5, Kitchen Cabinets, ... ) ... } >>> print(hue.groups) {1: Group(1, Kid's Bedroom, ...), 3: Group(3, Kitchen, ...) ... }
如上所示,Bridge.lights和Bridge.groups属性是一个集合。个人light或group可以通过其索引访问,该索引是Philips Hue Bridge给它的ID:
>>> hue.lights[1] # select light with id 1 Light(1, Coffee Station, Dimmable light) >>> hue.lights[1].data # return a dict of all its attributes {'state': {'on': False, 'bri': 77, 'alert': 'select', 'reachable': True}, 'type': 'Dimmable light', 'name': 'Coffee Station', 'modelid': 'LWB014',... }
这一切都很好,但如果你想改变你的状态,你的光或组呢?使用light-/groupbuilders轻松构造更新字符串:
>>> from hueber.lib import LightBuilder >>> new_update = LightBuilder() >>> new_update["on"] = True >>> new_update["bri"] = 254 >>> hue.lights[1].push(new_update.update_str()) [{'success': {'/lights/1/state/on': True}}, {'success': {'/lights/1/state/bri': 254}}]
所有的*Builder类型都只是下面的dict,因此用于dict的所有方法和习惯用法都应该对Builder可用。
更进一步。
这段代码有很好的文档记录(我认为),所以如果你还有任何问题,或者,如果你认为有些东西确实需要进一步的解释,请挖掘源代码打开一个问题,我将尽我最大的努力更新自述文件。
贡献。
我很高兴接受一个拉取请求,查看todo.rst文件中的间隙或特性。请确保任何prs都不在dev分支中,否则将不被接受,并确保在贡献者文件中包含您的名称/句柄。另外,确保在项目目录上运行mypy。