用于风扇和灯的HaikuHome Senseme API
SenseMe的Python项目详细描述
感官
俳句senseme应用程序控制风扇/灯的python库
这个库是有用的控制俳句感官风扇与灯光套件。我想这可能也会对他们的灯起作用。
它也可能是有用的控制DIY项目,因为该协议非常简单,将很容易克隆。而且,如果你使用他们的api,android和ios应用程序可能会控制diy设备。一个建议的想法是在你自己的风扇上添加一个Arduino或Raspberry PI和一个或两个继电器,并使用这个或俳句家庭应用程序来控制它们。我读过这样的文章with a resistor is a dangerous idea, so don't do that.
嗅探数据包和记录协议是Bruce的工作。大部分代码都是基于他制作an Indigo plugin
请参阅Issues了解已知的问题,或者如果您想贡献,但不知道从哪里开始。一些简单的方法被贴上标签。
我不隶属于俳句家庭或大屁股球迷。他们的支持代表说,这个项目在初期看起来很酷,他们甚至为我回答了一个关于协议的技术问题,所以希望他们仍然批准。
未来
对未来相关项目和功能的一些想法:
Plex插件(当电影开始时调暗风扇,当电影暂停或结束时点亮?是的,请!)
alexa/google家庭插件(见下面的rest api)
将信息存储在数据库中(sqlite,甚至json都可以),而不是每次都发现。
跟踪使用情况和温度
其他自动化系统插件
带有cli客户端的rest api后端(在0.1.3中添加了一个基本的直接到风扇的命令行客户端)
以上API的React或其他基于Web的客户端
上面的Docker图像
使用协议连接Arduino或PI来控制其他设备
了解协议的其余部分。(在应用程序上运行字符串和一些数据包嗅探。)
更多示例
命令行客户端在0.1.3中添加的基本客户端,请参见下面的SenseMe CLI单元测试
用法
from senseme import discover
# discover devices, returns list of SenseMe devices
devices = discover()
fan = devices[0]
repr(fan)
senseme(name='客厅风扇',ip='192.168.1.50',model='fan,俳句',series='hseries',mac='20:f8:5e:e3:ab:00')
# Statically assign the fan? Probably not, but you would do it this way:
from senseme import SenseMe
fan = SenseMe('192.168.1.50', 'Living Room Fan', model='FAN')
# or, this might be easier
fan = SenseMe(name="Living Room Fan")
控制风扇:
# Turn the light off / on
fan.light_powered_on = False
fan.light_powered_on = True
# or, if you just want to toggle it
light_status = fan.light_toggle()
# Increase light level by 2 levels
fan.inc_brightness(2)
# Get Light level
print(fan.brightness)
# Fan Speeds
fan.fan_powered_on = True
fan.fan_powered_on = False
print(fan.speed)
# whoosh mode
fan.whoosh = True
# want an increasing light effect? Do this.
# But, really, probably don't, I don't think Haiku intended strobe effects.
# I'm not responsible if you make a strobe light and break the fan or worse
for intensity in range(1,16):
fan.brightness = intensity
time.sleep(1)
# export details to json / xml / str(dict)
fan.json
fan.xml
fan.dict # nested dict
fan.flat_dict # flattened
# Listen for broadcasts, useful for debugging,
# wouldn't suggest using it for anything else
fan.listen()
senseme cli
在0.1.3版本中,添加了一个脚本,用于从命令行控制HaikuHome Senseme设备。
设置以下环境变量:
SENSEME_DEFAULT_FAN_IP
SENSEME_DEFAULT_FAN_NAME
然后使用以下选项之一运行senseme_cli
。
fan x - set speed to x (0-7)
fan on|off - fan on/off
light x - set light brightness to x
light on|off - light on/off
whoosh [on|off] - whoosh mode on/off
要求
使用这个库需要Python3.6。 senseme设备使用广播和单播通信在udp端口31415上通信。任何防火墙都必须允许这个通过。