用于风扇和灯的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了解已知的问题,或者如果您想贡献,但不知道从哪里开始。一些简单的方法被贴上标签。

我不隶属于俳句家庭或大屁股球迷。他们的支持代表说,这个项目在初期看起来很酷,他们甚至为我回答了一个关于协议的技术问题,所以希望他们仍然批准。

未来

对未来相关项目和功能的一些想法:

  1. Plex插件(当电影开始时调暗风扇,当电影暂停或结束时点亮?是的,请!)

  2. alexa/google家庭插件(见下面的rest api)

  3. 将信息存储在数据库中(sqlite,甚至json都可以),而不是每次都发现。

  4. 跟踪使用情况和温度

  5. 其他自动化系统插件

  6. 带有cli客户端的rest api后端(在0.1.3中添加了一个基本的直接到风扇的命令行客户端)

  7. 以上API的React或其他基于Web的客户端

  8. 上面的Docker图像

  9. 使用协议连接Arduino或PI来控制其他设备

  10. 了解协议的其余部分。(在应用程序上运行字符串和一些数据包嗅探。)

  11. 更多示例

  12. 命令行客户端在0.1.3中添加的基本客户端,请参见下面的SenseMe CLI

  13. 单元测试

用法

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上通信。任何防火墙都必须允许这个通过。

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

推荐PyPI第三方库


热门话题
java Android ListView显示的数字不超过8位   java什么导致警告“Classpath entry/XXX/XXX.jar将不会导出或发布。可能会导致运行时ClassNotFoundException。”   java使用Spring容器在非Spring对象上调用方法,允许参数连接?   java Android:当另一个手指已经在触摸屏幕时,是否可以处理一次点击?   java Veil加载JFrame上的图像或加载面板   JavaSpring没有为Redis缓存上的记录设置过期时间   java异常:SparkException:任务不可序列化   java Android studio用户注册数据未插入firebase数据库   java在StackPane中的区域图上覆盖节点   java获取活动UI的“会话已过期”消息   java组织。冬眠MappingNotFoundException:资源:*hbm。找不到xml   java Mockito mock在尝试存根包保护的方法时调用实方法实现