分页: 1 / 1

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

发表于 : 周三 5月 24, 2017 10:58
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) 查看 63681 次
③在刚才增加的设备中点击“创建虚拟传感器”
屏幕快照 2017-05-24 10.52.08.jpg
屏幕快照 2017-05-24 10.52.08.jpg (16.05 KiB) 查看 63681 次
传感器类型选择“开关”
屏幕快照 2017-05-24 10.52.48.jpg
屏幕快照 2017-05-24 10.52.48.jpg (21.37 KiB) 查看 63681 次
④切换到“开关菜单”,编辑新增的开关
屏幕快照 2017-05-24 10.53.31.jpg
屏幕快照 2017-05-24 10.53.31.jpg (58.32 KiB) 查看 63681 次
选择喜欢的图标,图标更改方法请查看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”分别为要执行的操作“开”/“关”

其它插孔重复③④操作

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

发表于 : 周二 6月 06, 2017 11:22
kingmos
博联的MP1和鸿雁的智能插排长的一模一样,是不是应该能够一样的控制呢,回去试试去。

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

发表于 : 周四 6月 08, 2017 18:08
kingmos
成功,这次京东618买的鸿雁插排IHC8340J使用以上方法可控,感谢趟路的前辈们!

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

发表于 : 周四 6月 08, 2017 18:09
kingmos
怎么做插件呢,回头学习一下,达达,DT27能不能给个网页学习一下。

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

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

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

发表于 : 周四 6月 08, 2017 19:41
kingmos
先暗中观察一下

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

发表于 : 周四 6月 08, 2017 20:59
sxren1
这个有状态反馈吗

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

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

代码: 全选

MP1.py s1 status

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

发表于 : 周五 6月 09, 2017 08:43
kingmos
模仿Zack的例子写了个插件,web服务崩溃了……然后备份的时候没检查,rm2下的ini都消失了,失败中的大失败,经验是不要拿生产系统做实验~~

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

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

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

发表于 : 周六 6月 10, 2017 18:06
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) 查看 63656 次
请问楼主;python3 运行命令时 MP1.py后面的参数 s1 on 是不是没有运行。
楼主能不能做一个单独的MP1-s1的开和关的脚本,这样就能直接调用脚本命令不用加后面的参数 s1 on了,

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

发表于 : 周六 6月 10, 2017 21:08
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需要重新写,等写好后通知你

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

发表于 : 周六 6月 10, 2017 21:14
liuyr
谢谢楼主大神了

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

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

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

发表于 : 周一 6月 12, 2017 11:27
liuyr
辛苦了,楼主大神,没有搞出来还是要谢谢你了。

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

发表于 : 周六 11月 25, 2017 11:02
sxren1
楼主你好,插座已经可以控制,但没有状态反馈,怎么样才能得到反馈,希望能详细点,我是零基础小白,用插件又怕搞的系统不稳定,谢谢了🙏

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

发表于 : 周六 1月 20, 2018 16:54
4292
您好,请问下我手上有个pro+,能按照您的方法加入使用吗?我能在domoticz中找到并添加RM2设备,但是添加后好像没什么用。。。谢谢

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

发表于 : 周五 6月 15, 2018 18:01
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的原因