本帖介绍手动编写脚本控制博联设备,仅供大家了解脚本及博联的控制方式。
实际使用建议用插件来控制博联设备,更加方便。
插件使用过程中遇到任何问题都可以在博联专区发帖讨论。
【Domoticz】基于v3.7974 Beta 博联专版
[Domoticz插件]Broadlink MP1/MP2 兼容 鸿雁8340J
[Domoticz插件]Broadlink SP mini
[插件]RM2 RMPro 插件 BroadlinkRM2 v3(增强版)
首先请查看Domoticz&BroadLink(博联)连接及控制教程:(一)安装python-broadlink
RM系列万能遥控设备有两个功能,一个是学习遥控,另一个是发送模拟遥控信号。
信号模式有红外(IR)跟射频(RF)两种。
两种信号发送方式一模一样,仅具体信号编码不同。
一、首先是学习遥控,由于通过脚本方式学习射频信号成功率低,建议使用博联官方APP易控Android版来进行学习,然后将编码导出即可。
没有Android手机的就只能通过脚本来学习了,具体方法见通过脚本控制博联RM系列万能遥控设备学习遥控编码。
具体步骤:
①安装易控APP,打开并注册登录后根据提示添加设备并学习所有需要的遥控按键。
更详细介绍请移步GitHubBroadlink-e-control-db-dump
② Ⅰ: 对于已获取手机root权限的,易控APP数据库位于/data/data/com.broadlink.rmt/databases/rmt.db,将rmt.db文件导出并通过SFTP等方式发送到树莓派/home/pi/目录。
运行
代码: 全选
wget https://raw.githubusercontent.com/NightRang3r/Broadlink-e-control-db-dump/master/econtrol-db-dump.py
代码: 全选
sudo python econtrol-db-dump.py
② Ⅱ: 手机未root的,易控有个分享功能,会将编码数据存放到SD卡中的/broadlink/newremote/SharedData/目录里,以供其它手机导入。
你需要将该目录中的以下三个文件放到树莓派/home/pi/目录。
代码: 全选
jsonSubIr
jsonButton
jsonIrCode
代码: 全选
wget https://raw.githubusercontent.com/NightRang3r/Broadlink-e-control-db-dump/master/getBroadlinkSharedData.py
代码: 全选
sudo python getBroadlinkSharedData.py
二、发送学习到的编码
需要建立一个python脚本文件来向博联RM设备发送编码命令,Domoticz中的所有的功能脚本建议都放到domoticz/scripts/目录中。
①进入domoticz/scripts/python目录
代码: 全选
cd /home/pi/domoticz/scripts/python
代码: 全选
sudo nano play.py
代码: 全选
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import broadlink
import time
import sys
try:
fileName = sys.argv[1]
except IndexError:
fileName = 'null'
if fileName == 'null':
print "错误:参数中缺少编码文件"
sys.exit()
else:
device = broadlink.rm(host=("这里填写你的博联RM设备的IP",80), mac=bytearray.fromhex("这里填写你的博联RM设备的mac地址"))
print "连接到博联设备...."
device.auth()
time.sleep(1)
print "已连接...."
time.sleep(1)
device.host
file = open(fileName, 'r')
myhex = file.read().strip()
device.send_data(myhex.decode('hex'))
print "编码已发送...."
④测试,输入以下命令进行测试,tvOff.txt文件的内容是之前学习到的编码,文件中直接存放编码代码,请不要有多余文字。
代码: 全选
python play.py tvOff.txt
⑤测试没问题后,需要修改脚本,以提高运行速度,
修改方法:注释掉所有time.sleep及无用的print代码,修改后play.py内容如下
代码: 全选
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import broadlink
import time
import sys
try:
fileName = sys.argv[1]
except IndexError:
fileName = 'null'
if fileName == 'null':
print "错误:参数中缺少编码文件"
sys.exit()
else:
device = broadlink.rm(host=("这里填写你的博联RM设备的IP",80), mac=bytearray.fromhex("这里填写你的博联RM设备的mac地址"))
#print "连接到博联设备...."
device.auth()
#time.sleep(1)
#print "已连接...."
#time.sleep(1)
device.host
file = open(fileName, 'r')
myhex = file.read().strip()
device.send_data(myhex.decode('hex'))
#print "编码已发送...."
①修改play.py权限以允许domoticz执行
代码: 全选
sudo chmod 777 /home/pi/domoticz/scripts/python/play.py
开触发中填入
代码: 全选
script:///home/pi/domoticz/scripts/python/play.py /home/pi/domoticz/scripts/python/tvOn.txt
代码: 全选
script:///home/pi/domoticz/scripts/python/play.py /home/pi/domoticz/scripts/python/tvOff.txt
“/home/pi/domoticz/scripts/python/play.py”为脚本完整路径
“/home/pi/domoticz/scripts/python/tvOff.txt”为编码文件完整路径