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.lightsBridge.groups属性是一个集合。个人lightgroup可以通过其索引访问,该索引是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

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

推荐PyPI第三方库


热门话题
junit cucumber为什么会找到“runTest.java”来运行测试?   在Eclipse中找不到java KeyPairGenerator   java NotSerializableException即使在实现Serializable之后   noclassdeffounderror(java字符串连接)为什么会出现这种异常?   java Guice:将接口绑定到由动态代理创建的实例   使用Spring数据neo4j创建空间索引时发生java错误   java对于需要在50多个excel文件上运行并且每个文件平均包含25k行的项目,最佳的方法是什么   javaNIO中的java缓冲区写入/发送消息问题   如何在Java/eclipse中添加不调用super()的警告   JavaSpring:mvcUrl映射错误的id   java应该在getInstance或构造函数中使用Init方法吗?   安卓中的java空指针异常错误   java Jsoup不能完全获取原始html代码