与mystrom设备交互的python api

python-mystrom的Python项目详细描述


用于与myStrom设备交互的python api。

此模块不是mystrom ag正式开发、支持或认可的。 如有任何疑问或其他查询,请使用本回购协议中的问题追踪工具。

如果没有mystrom ag的支持,创建 这个模块是集成到 Home Assistant。Mystrom AG已提供 仍然提供硬件、有价值的反馈和建议。他们连续不断 支持使本模块的进一步开发成为可能。

要求

您需要安装Python

  • myStrom设备(灯泡、插头或按钮)
  • requests
  • 网络连接
  • 连接到网络的设备

安装

这个包在Python Package Index中提供。

$ pip install python-mystrom

插头/开关

目前涵盖以下端点:

  • /report:用于获取当前状态和功耗
  • /relay:用于设置中继状态

您仍然可以将设备与智能手机应用程序一起使用, curl或其他工具。下面的示例演示如何将开关与 httpiecurl以及python-mystrom

$ http http://IP_ADDRESS_PLUG/report
HTTP/1.1 200 OK
Content-Length: 39
Content-Type: application/json
Date: Mon, 15 Feb 201617:52:21 GMT

{"power": 51.630947,
    "relay": true}
$ curl -X GET http://IP_ADDRESS_PLUG/relay?state=1

灯泡

如果灯泡是亮的,那么您应该能够检索 灯泡。

浏览到http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB或使用 命令行工具。

$ curl -d "color=0;0;100" -d "action=on" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
{"5DFF7FAHZ987":         {"on": true,
            "color": "0;0;100",
            "mode": "hsv",
            "ramp": 100,
            "notifyurl": ""}}

灯泡无法处理格式化为json的有效负载。必须 使用application/x-www-form-urlencoded。如果有什么事 不起作用,尤其是在用hsv设置颜色时。

如果你打算用你的灯泡和Home Assistant 使用应用程序或使用下面的命令将灯泡设置为从colors开始的状态。

$ curl -d "color=0;0;100" IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

设置状态

您可以使用post请求和有效负载设置状态。

  • oncurl -d "action=on" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
  • curl -d "action=off" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
  • 切换$ curl -d "action=toggle" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

设置颜色rgb

设置颜色的支持模式之一是rbg

  • 白色$ curl -d "color=FF000000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
  • red$ curl -d "color=00FF0000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
  • 绿色$ curl -d "color=0000FF00" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB
  • 蓝色$ curl -d "color=000000FF" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

设置颜色hsv(色调、饱和度、值)

也可以使用hsv

$ curl -d "color=0;0;100" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

而“color=”由色调、饱和度和值组成。

设置单声道(白色)

如果只想设置灯泡的“白色”,请使用mono

$ curl -d "color=10;100" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

“color=”包含色温值(从1到18)和 亮度(从0到100)。

调光(斜坡)

添加ramp和一个间隔以设置更改时的转换时间 颜色。

$ curl -d "action=on&ramp=1000&color=00FF0000" http://IP_ADDRESS_BULB/api/v1/device/MAC_ADDRESS_BULB

斜坡的测量单位为毫秒(ms)。

按钮

这些按钮可以通过mystrom应用程序设置,也可以直接通过http请求设置。

要设置配置,有效负载必须包含 操作:

$ curl -v-d"single=<url>&double=<url>&long=<url>&touch=<url>"http://IP_ADDRESS_BUTTON/api/v1/device/MAC_ADDRESS_BUTTON

可用操作:

  • single:短推(大约1/2秒)
  • double:2次连续短推(2秒内)
  • long:长推(大约2秒)
  • touch:触摸按钮表面(仅对WiFi有效 按钮+

设置该按钮可将电池的使用寿命延长至 可能的。这意味着只有在前3分钟内或连接时 对于USB端口/USB充电器,如果电池未满,则按钮可以 接收配置信息或发布其详细信息。

^{tt(TT)16}$helper工具

命令行工具mystrom可以帮助设置按钮并获取 灯泡和插头的细节。

$ mystrom
Usage: mystrom [OPTIONS] COMMAND [ARGS]...

  Simple command-line tool to get and set the values of a myStrom devices.

  This tool can set the targets of a myStrom button for the different
  available actions single, double, long and touch.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  bulb    Get and set details of a myStrom bulb.
  button  Get and set details of a myStrom button.
  config  Get and set the configuration of a myStrom...

这些例子展示了如何获得给定灯泡的细节。

$ mystrom config read
IP address of the myStrom device: IP_ADDRESS_BULB
MAC address of the device: MAC_ADDRESS_BULB
Read configuration from IP_ADDRESS_BULB
{'MAC_ADDRESS_BULB':{'type':'rgblamp',
      'battery':False,
      'reachable':True,
      'meshroot':False,
      'on':True,
      'color':'191;90;14',
      'mode':'hsv',
      'ramp':100,
      'power':0.953,
      'fw_version':'2.25'}}

模块的示例用法

下面的示例演示如何使用这个python模块。

importpymystromplug=pymystrom.MyStromPlug('IP_ADDRESS_PLUG')# Preserve stateSTATE_ON=plug.get_relay_state()# Switch relay on if the plug is currently offifnotSTATE_ON:print("Relay will be switched on")plug.set_relay_on()# Wait a few seconds to get a reading of the power consumptionprint("Waiting for a couple of seconds...")time.sleep(10)# Get the new state of the switchprint("Relay state:",plug.get_relay_state())print("Power consumption:",plug.get_consumption())# Switch relay off if it was off.ifnotSTATE_ON:plug.set_relay_off()

灯泡的示例可以在目录examples中找到。

许可证

python-mystrom在mit下获得许可,有关更多详细信息,请检查许可证。

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

推荐PyPI第三方库


热门话题
在Java中,我需要读取一个文本文件,并将每一行放在一个单独的数组中。但每次我读文本文件时,我都无法拆分行   SpringJavaservlet返回不正确的用户代理   java如何在spring测试中动态设置环境变量   绑定后的java关闭通道   java我想在设置方法中使用selenium执行多用户登录操作,我没有使用testng。xml我正在使用maven pom。仅xml   java foreach 2d数组分配   我想用java编写prim算法   java如何在Spring Boot中验证Rest请求   JavaJScrollPane问题   java将一个节点与另一个节点关联起来   java获取错误:范围内无法访问Polyline类型的封闭实例   字节[]到int,反之为java