本文介绍,如何通过ZoomRoom的房间控制器功能,通过Modbus继电器,控制房间电器的开关。
一、硬件
1、组建ZoomRooms
关于如何组件ZoomRooms,请参阅以下博文
【逗老师带你学IT】ZoomRooms兼容硬件设计方案
2、Modbus继电器
淘宝上使用TCP Modbus或者Modbus RTU的继电器模块一搜一大把,都能用都能用,顶多就是命令不太一样。
关于TCP Mdobus和Modbus RTU的区别,请参见。
【逗老师带你学IT】Modbus RTU获取温湿度传感器数据
本文选购了一款基于USR K2串口转换器透传Modbus RTU至以外网的继电器,使用Modbus RTU指令控制。
二、Modbus继电器控制指令
1、配置继电器模块IP地址
具体参考模块厂家的说明书,正确配置IP地址和TCP监听端口。
2、测试指令
针对市面上绝大部分Modbus的继电器模块,基本上控制指令都是一样的,如果下面指令不好使的话,具体咨询厂家。
继电器输出信号控制命令(单个控制):
关于Modbus协议详细解释,可以参考
【逗老师带你学IT】Modbus获取温湿度传感器数据
2.1、开启继电器指令
发送:01 05 00 00 FF 00 8C 3A
(16进制)
数据 | 字节 | 数据说明 | 备注 |
---|---|---|---|
01 | 1 | 模块地址 | 地址范围01-FE |
05 | 1 | 功能码 | 05-写单个线圈 |
0000 | 2 | 线圈地址 | 0000-继电器(RY1)线圈地址 0001-继电器(RY2)线圈地址 0002-继电器(RY3)线圈地址0003-继电器(RY4)线圈地址 |
FF00 | 2 | 写入数据 | FF00-线圈打开,0000-线圈关闭 |
8C3A | 2 | CRC校验码 | 前面所有数据的CRC校验码 |
2.2、关闭继电器指令
发送:01 05 00 00 00 00 CD CA
(16进制)
具体bit位解释与开启指令类似,自行脑补。
3、ZoomRooms调用Modbus模块
3.1、开启ZoomRooms会议室控件功能
具体参见:
【Zoom Rooms Native Room Controls】
- 单击【会议室管理】,然后选择Zoom Rooms。
- 单击Zoom Room 名称右侧的编辑 。
- 在【设备】分类下,将【启用会议室控件】打开(蓝色)。
- 单击创建配置文件。
- 输入此房间的 JSON 配置。
3.2、编辑配置文件
举例配置文件如下:
当然,更多有意思的控制命令、以及可编程的规则,大家可以慢慢研究Zoom Support的原文,有趣的很。
【Zoom Rooms Native Room Controls】
{
"adapters": [
{
"model": "GenericNetworkAdapter",
"ip": "tcp://10.0.202.32:5000", //控制模块IP地址与TCP侦听端口
"ports": [
{
"id": "TV_Power_Device",
"name": "液晶电视电源",
"methods": [
{
"id": "TV_Power",
"name": "液晶电视电源",
"command": "\\x01\\x05\\x00\\x00%", //命令字符串的公共部分01 05 00 00
"params": [
{
"id": "on",
"name": "开启/Trun ON",
"value": "\\x00\\x00\\xCD\\xCA" //命令字符串开启功能对应的00 00 CD CA
//与公共部分字符串拼接后为01 05 00 00 00 00 CD CA
},
{
"id": "off",
"name": "关闭/Trun OFF",
"value": "\\xFF\\x00\\x8C\\x3A"
}
],
"type": "actions"
}
]
}
]
}
],
"styles": [
"TV_Power_Device.icon=icon_tv", //TC_Power设备的图标定义
"TV_Power_Device.main_method=TV_Power" //TC_Power设备的主要方法定义
],
"rules": {
"meeting_started": [
"TV_Power_Device.TV_Power.on" //会议开始时强制打开电视
]
}
}
以上只是个简单示例,控制Modbus继电器,其实ZoomRooms的房间控制器组件还可以控制更多基于telnet、Modbus、串口仿真的硬件设备,例如DSP信号处理器、时序电源、交换机网口配置、麦克风等等。
例如下图:
上图定义的按钮实际会控制BIAMP的DSP音频处理通道