博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

博联Broadlink RM Pro/Mini、RM Home、MP1、MP2、SP mini等
版面规则
博联Broadlink RM Pro/Mini、RM Home、MP1、MP2、SP mini等
回复
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

本帖以树莓派为例,默认路径为~(即用户主目录/home/pi/)。
本帖介绍手动编写脚本控制博联设备,仅供大家了解脚本及博联的控制方式。
实际使用建议用插件来控制博联设备,更加方便。
插件使用过程中遇到任何问题都可以在博联专区发帖讨论。

【Domoticz】基于v3.7974 Beta 博联专版
[Domoticz插件]Broadlink MP1/MP2 兼容 鸿雁8340J
[Domoticz插件]Broadlink SP mini


智能插排以MP1为例。

首先请查看Domoticz&BroadLink(博联)连接及控制教程:(一)安装python-broadlink

MP1智能插排有三个功能:开启某个插孔、关闭某个插孔、检查某个插孔当前状态。

所有操作均通过一个python脚本实现。
一、建立控制脚本MP1.py
①进入domoticz/scripts/python目录

代码: 全选

cd /home/pi/domoticz/scripts/python
②新建MP1.py文件

代码: 全选

sudo nano MP1.py
③将以下代码保存到MP1.py文件中

代码: 全选

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import broadlink
import sys

device_ip="博联设备IP"
device_port=80
device_mac="博联设备mac地址"
device_type="broadlink.mp1"

socket = str(sys.argv[1])
action = str(sys.argv[2])

device = broadlink.mp1(host=(device_ip,device_port), mac=bytearray.fromhex(device_mac))

device.auth()
#device.host

if action == "on":
	if socket == "s1":
		device.set_power(1,True)
	elif socket == "s2":
		device.set_power(2,True)
        elif socket == "s3":
                device.set_power(3,True)
        elif socket == "s4":
                device.set_power(4,True)
elif action == "off":
        if socket == "s1":
                device.set_power(1,False)
        elif socket == "s2":
                device.set_power(2,False)
        elif socket == "s3":
                device.set_power(3,False)
        elif socket == "s4":
                device.set_power(4,False)
elif action == "status":
        print "on" if device.check_power()[socket] else "off"
其中的IP与mac地址请修改为你的博联设备对应地址。IP例子:"192.168.1.123",mac地址例子:"B443xxxxD329",大小写均可。
二、通过Domoticz进行控制
①修改MP1.py权限以允许domoticz执行

代码: 全选

sudo chmod 777 /home/pi/domoticz/scripts/python/MP1.py
②接下来添加第一个插孔S1。
在Domoticz中新建虚拟设备,设置->硬件->增加新硬件,类型选择“Dummy (Does nothing, use for virtual switches only)”
屏幕快照 2017-05-24 10.51.22.jpg
屏幕快照 2017-05-24 10.51.22.jpg (31.99 KiB) 查看 68208 次
③在刚才增加的设备中点击“创建虚拟传感器”
屏幕快照 2017-05-24 10.52.08.jpg
屏幕快照 2017-05-24 10.52.08.jpg (16.05 KiB) 查看 68208 次
传感器类型选择“开关”
屏幕快照 2017-05-24 10.52.48.jpg
屏幕快照 2017-05-24 10.52.48.jpg (21.37 KiB) 查看 68208 次
④切换到“开关菜单”,编辑新增的开关
屏幕快照 2017-05-24 10.53.31.jpg
屏幕快照 2017-05-24 10.53.31.jpg (58.32 KiB) 查看 68208 次
选择喜欢的图标,图标更改方法请查看wiki:自定义Web界面图标
开触发中填入

代码: 全选

script:///home/pi/domoticz/scripts/python/MP1.py s1 on
关触发中填入

代码: 全选

script:///home/pi/domoticz/scripts/python/MP1.py s1 off
其中,“script://”为domoticz执行脚本的固定前缀,
“/home/pi/domoticz/scripts/python/MP1.py”为脚本完整路径
“s1”为要控制的插孔
“on”/“off”分别为要执行的操作“开”/“关”

其它插孔重复③④操作
kingmos
帖子: 23
注册时间: 周六 5月 20, 2017 00:58

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 kingmos »

博联的MP1和鸿雁的智能插排长的一模一样,是不是应该能够一样的控制呢,回去试试去。
kingmos
帖子: 23
注册时间: 周六 5月 20, 2017 00:58

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 kingmos »

成功,这次京东618买的鸿雁插排IHC8340J使用以上方法可控,感谢趟路的前辈们!
kingmos
帖子: 23
注册时间: 周六 5月 20, 2017 00:58

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 kingmos »

怎么做插件呢,回头学习一下,达达,DT27能不能给个网页学习一下。
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

kingmos 写了: 周四 6月 08, 2017 18:09 怎么做插件呢,回头学习一下,达达,DT27能不能给个网页学习一下。
英文wiki:Developing a Python plugin
示例代码:domoticz/plugins/examples/
还可以参考论坛里Zackr发的[Domoticz插件]空气指数AQI插件
kingmos
帖子: 23
注册时间: 周六 5月 20, 2017 00:58

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 kingmos »

先暗中观察一下
sxren1
帖子: 51
注册时间: 周三 5月 24, 2017 10:04

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 sxren1 »

这个有状态反馈吗
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

sxren1 写了: 周四 6月 08, 2017 20:59 这个有状态反馈吗
没有,可以自己用脚本定期检查状态。

代码: 全选

MP1.py s1 status
kingmos
帖子: 23
注册时间: 周六 5月 20, 2017 00:58

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 kingmos »

模仿Zack的例子写了个插件,web服务崩溃了……然后备份的时候没检查,rm2下的ini都消失了,失败中的大失败,经验是不要拿生产系统做实验~~
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

kingmos 写了: 周五 6月 09, 2017 08:43 模仿Zack的例子写了个插件,web服务崩溃了……然后备份的时候没检查,rm2下的ini都消失了,失败中的大失败,经验是不要拿生产系统做实验~~
经验是修改之前先备份 :twisted:
liuyr
帖子: 22
注册时间: 周日 5月 28, 2017 12:55

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 liuyr »

楼主,你好,我是群晖系统docker版本的dompoticz,现在我有博联MP系列智能插排要安装在domoticz里面,因NAS系统不能直接读取容器内数据,因此运行script:///config/domoticz/python/MP1.py s1 on 确发命令时提示32256错误,现在我用SSH方法运行确发命令间接运行MP1.py。

开触发中填入:script:///config/python/s1on.sh

文件名:s1on.sh

文件内容:nohup python3 /config/python/MP1.py s1 on &

问题:运行开关命令,开关没有反映,系统没有提示错误
QQ截图20170610181313.jpg
QQ截图20170610181313.jpg (25.36 KiB) 查看 68183 次
请问楼主;python3 运行命令时 MP1.py后面的参数 s1 on 是不是没有运行。
楼主能不能做一个单独的MP1-s1的开和关的脚本,这样就能直接调用脚本命令不用加后面的参数 s1 on了,
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

liuyr 写了: 周六 6月 10, 2017 18:06 楼主,你好,我是群晖系统docker版本的dompoticz,现在我有博联MP系列智能插排要安装在domoticz里面,因NAS系统不能直接读取容器内数据,因此运行script:///config/domoticz/python/MP1.py s1 on 确发命令时提示32256错误,现在我用SSH方法运行确发命令间接运行MP1.py。

开触发中填入:script:///config/python/s1on.sh

文件名:s1on.sh

文件内容:nohup python3 /config/python/MP1.py s1 on &

问题:运行开关命令,开关没有反映,系统没有提示错误
QQ截图20170610181313.jpg

请问楼主;python3 运行命令时 MP1.py后面的参数 s1 on 是不是没有运行。
楼主能不能做一个单独的MP1-s1的开和关的脚本,这样就能直接调用脚本命令不用加后面的参数 s1 on了,
Python3需要重新写,等写好后通知你
liuyr
帖子: 22
注册时间: 周日 5月 28, 2017 12:55

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 liuyr »

谢谢楼主大神了
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 DT27 »

liuyr 写了: 周六 6月 10, 2017 21:14 谢谢楼主大神了
折腾了一上午Python3我决定放弃了 :( 怎么搞都出一些其它错误,比如Crypto明明装成功了,但引入时一直提示ImportError: No module named 'Crypto'。。。
liuyr
帖子: 22
注册时间: 周日 5月 28, 2017 12:55

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 liuyr »

辛苦了,楼主大神,没有搞出来还是要谢谢你了。
sxren1
帖子: 51
注册时间: 周三 5月 24, 2017 10:04

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 sxren1 »

楼主你好,插座已经可以控制,但没有状态反馈,怎么样才能得到反馈,希望能详细点,我是零基础小白,用插件又怕搞的系统不稳定,谢谢了🙏
4292
帖子: 19
注册时间: 周六 1月 20, 2018 16:51

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 4292 »

您好,请问下我手上有个pro+,能按照您的方法加入使用吗?我能在domoticz中找到并添加RM2设备,但是添加后好像没什么用。。。谢谢
demo
帖子: 1
注册时间: 周四 6月 14, 2018 15:33

Re: 博联MP系列智能插排设备连接及控制方法,如MP1、MP2等

帖子 demo »

楼主您好,我复制您MP1.py的代码改成自己设备的ip和mac后,执行python MP1.py s1 on提示如下:

File "./MP1.py", line 15, in <module>
device = broadlink.mp1(host=(device_ip,device_port), mac=bytearray.fromhex(device_mac))
TypeError: __init__() takes exactly 4 arguments (3 given)

参数给少了?是哪里出错了么,请指教(系统默认Python 2.7.13) :D
怀疑是broadlink==0.9的原因
回复