与Devolo家庭控制中心的通信
pyDHC的Python项目详细描述
python devolodhc
用于Devolo Home Control的Python API
这个python api允许您控制devolo主控设备。 当前支持以下设备:
- Devolo智能计量插头(获取/设置)
- Devolo墙壁开关/Devolo遥控钥匙(获取/设置)
- Devolo警报器(获取/设置)
- Devolo房间恒温器/散热器恒温器(阀)(获取/设置)
- Devolo洪水传感器(GET)
- Devolo湿度传感器(GET)
- Devolo运动传感器(GET)
- Devolo门窗触点(GET)
- http设备(获取/设置)
- 场景(获取/设置)
- 组(获取/设置)
- 计时器(获取/设置)
- 规则(获取/设置)
- 消息(获取/设置)
- Qubino"冲洗快门"ZMNHCD1(获取/设置)
- qubino"冲洗1D继电器"zmnhnd1(获取/设置)
- Qubino"冲洗2继电器"ZMNHBD1(获取/设置一个或两个触点)
- qubino"冲洗调光器"zmnhdd1(获取/设置/调光)
- Busch Jaeger Duro 2000-ZME U 05461(获取/设置)
更改设置将显示在Devolo Web界面/应用程序每日日志中,您的帐户与往常一样。
请随时提交问题或请求添加更多内容。
需要这个api的php版本吗?php devolodhc
这不是一个官方的api,你要自己承担风险!< BR>
无论如何,这个api使用的命令与devolo home控件完全相同,devolo home控件基于prosyst mbs sdk。当你向中央询问不好的东西时,这个不会烧掉,但回答这是不可能或不允许的。
此API是逆向工程,用于互操作性的研究和开发。
:感叹号:警告:感叹号:
很抱歉,我已经切换到jeedom,不再使用devolo家庭控制解决方案。 这个api自从在这里创建以来工作得非常完美,但是如果出现问题,我将无法修复或扩展它。
如果有人想继续开发此API,请与我联系。
要求
如何
连接
读取数据
更改数据
消费
不支持的设备
版本历史记录
要求
- python 2.7.11+/python 3+
- API需要Internet访问(它将通过Devolo服务器进行身份验证)。
如何
- 下载模块/pydhc.py.
- 如果可以,请允许对api文件夹具有写权限。它将支持在连续执行脚本之间保持dhc用户会话(速度也更快)。
- 加载PYDHC模块。
- 使用您的devolo用户名/密码启动。
连接
importsyssys.path.append(r'C:\path\to\api')frompyDHCimportpyDHCDHC=pyDHC('login','password')ifDHC.error:print(DHC.error)
如果您有多个中央控制单元,或将演示中心保持在MyDevolo页上,则可以选择连接到的位置:
#(login | password | which central, default 0)DHC=pyDHC('login','password',1)ifDHC.error:print(DHC.error)
开始吧:
#for better looking print, we will use pprint:importpprintpp=pprint.PrettyPrinter(indent=4)#get some infos on your Devolo Home Control box:infos=DHC.getInfos()pp.pprint(infos)
读取操作
按您的名称更改设备名称!< /P> 按您的名称更改设备名称!< /P> 有些人希望有超过3天的消费记录,如墙上的插头设备。
这里有两个函数来记录消耗,并在两个选择的日期之间读取它们。所以你可以每天做一个cron任务来调用这个函数,它会记录昨天的总con每个墙塞的消耗量: 如果不提供文件路径,或者无法写入,则API将返回错误,但也会提供结果(以便您可以编写自己的自定义函数)。 当然,它需要api以前保存的有效日志文件。您可以不提供日期(完整日志),或者只提供一个日期(如果需要,请首先设置为空)。只要尊重day.month.year(php'd.m.y')。 如果您有不受支持的设备,您可以使用该设备调用特殊功能,并在新版本中发布返回信息。 请求不支持的设备
麻省理工学院许可证(MIT) 版权所有(c)2017 Kiboost 兹免费准许任何人取得副本
本软件和相关文档文件("软件")的
在软件中不受限制,包括但不限于
使用、复制、修改、合并、发布、分发、再授权和/或出售
软件的副本,并允许软件的用户
在满足以下条件的情况下,可以这样做: 上述版权公告及本许可公告须包括在
软件的副本或大部分。 本软件按"原样"提供,无任何形式的保证,明示或
默示的,包括但不限于适销性保证,
适合某一特定目的和非侵犯性。在任何情况下
作者或版权所有者应对任何索赔、损害或其他
责任,无论是在合同诉讼、侵权诉讼或其他诉讼中,
不属于或与本软件有关,或使用或与本软件的其他交易有关。
软件。#get all devices in a zone:zone=DHC.getDevicesByZone('living room')pp.pprint(zone)#get rule or timer state:state=DHC.isRuleActive("MyRule")pp.pprint(state)state=DHC.isTimerActive("MyTimer")pp.pprint(state)#Check if a device is on (0=off, 1=on)state=DHC.isDeviceOn("My Wall Plug")pp.pprint(state)#Check for devices with 2 relays (eg. Qubino Flush 2 Relay ZMNHBD1) is on (0=off, 1=on)#contact 1state=DHC.isDeviceOn("myRelay",1)pp.pprint(state['result'])#contact 2state=DHC.isDeviceOn("myRelay",2)pp.pprint(state['result'])#all contactsstate=DHC.isDeviceOn("myRelay",all)pp.pprint(state['result'])#check a device battery level:batteryLevel=DHC.getDeviceBattery('My Motion Sensor')pp.pprint(batteryLevel)#get all batteries level under 20% (ommit argument to have all batteries levels):BatLevels=DHC.getAllBatteries(20)pp.pprint(BatLevels)#get daily diary, last number of events:diary=DHC.getDailyDiary(10)pp.pprint(diary)#get daily device stat:#0:today, 1:yesterday, 2:day before yesterdaystats=DHC.getDailyStat('My MotionSensor',0)pp.pprint(stats)#get weather report:weather=DHC.getWeather()pp.pprint(weather)#Get one device states (all sensors):states=DHC.getDeviceStates('My Motion Sensor')pp.pprint(states)#Get one sensor data for any device, like light from a Motion Sensor or energy from a Wall Plug:data=DHC.getDeviceData('My Motion Sensor','light')pp.pprint(data['result']['value'])data=DHC.getDeviceData('Radiator','temperature')pp.pprint(data['result']['value'])#You can first ask without data, it will return all available sensors datas for this device:data=DHC.getDeviceData('My Wall Plug')pp.pprint(data)#get url from http device:url=DHC.getDeviceURL('myhttp device')#get message data:url=DHC.getMessageData('MyAlert')
更改操作
#TURN DEVICE ON(1) or OFF(0):#supported: all on/off devices and http devicesdev=DHC.turnDeviceOnOff("My Room wallPlug",1)pp.pprint(dev)#For devices with 2 relays as Qubino Flush 2 Relay ZMNHBD1 (device name, state, contact):#contact 1 onDHC.turnDeviceOnOff("myRelay",1,1)#contact 2 onDHC.turnDeviceOnOff("myRelay",1,2)#all contacts onDHC.turnDeviceOnOff("myRelay",1,"All")#TURN GROUP ON(1) or OFF(0):DHC.turnGroupOnOff("My Plugs Group",1)#RUN HTTP DEVICE:DHC.turnDeviceOnOff("My http device",1)#0 won't do anything of course.#START SCENE:DHC.startScene("We go out")#SEND MESSAGE:DHC.sendMessage("Alert")#CHANGE THERMOSTAT/VALVE VALUE:targetValue=DHC.setDeviceValue('My radiator',21)DHC.setDeviceValue('my thermostat',19)#press thermostat button:DHC.pressDeviceKey('my thermostat',1)#TURN SIREN ON: (last number is the indice of the tone in the interface list. For example, 1 is alarm and won't stop! 0 will!)DHC.setDeviceValue('My Devolo Siren',5)#SET SHUTTER OPENING:DHC.setDeviceValue('qubShutter',50)#SET DIMMER VALUE:DHC.setDeviceValue('qubDimmer',50)#PRESS REMOTE SWITCH KEY OR KEY FOB KEY:DHC.pressDeviceKey('MySwitch',3)#TURN RULE ACTIVE (1 or 0)DHC.turnRuleOnOff('MyRule',1)#TURN TIMER ACTIVE (1 or 0)DHC.turnTimerOnOff('MyTimer',1)#TURN OFF DAILY DIARY REPORT (true/false):DHC.setDeviceDiary('movekitchen',false)
消耗量
DHC.logConsumption('log.json')
然后,阅读日志并了解一个月的消耗量,或夏季/冬季的消耗量等:stats=DHC.getLogConsumption('log.json','01.03.2017','31.03.2017')pp.pprint(stats)
不支持的设备
help=DHC.debugDevice('MyStrangeDevice')pp.pprint(help)
版本历史记录
v 1.3(2017-10-19)
v 1.0(2017-09-24)
dhc.turndeviceonoff('my2relay',1,'all')//支持1,2,'all'用于q1,q2,两者
dhc.isdeviceon('my2relay',1)//q1、q2都支持1、2、'all'v 0.9(2017-06-12)
许可证
推荐PyPI第三方库