中控设备对接协议

3.2.1服务器方式对接

通讯协议:MQTT

默认端口:1883,以实际设置为准

topic公共参数

参数 说明
APPID 应用ID,目前固定使用"lt123gh5623"。
DEVICEID 设备ID,请在设备设置页面查询,见中控设置步骤

payload格式为JSON字符串

[中控设置]

下载中控搜索软件,点击下载。安装后打开程序,电脑右下角工具栏出现如下图标

鼠标右键,选择工具,出现如下界面

选择设备搜索。在设备搜索页面上网网卡选择与中控接入同一网络的网卡,点击开始搜索。

在搜索到的中控后选择中控配置,打开配置页面。

在配置页面中选择对接配置选项

第三方系统需要自行搭建MQTT服务器,将服务器信息填入上图页面表单中。启用开关需要打开。连接成功后,第三方系统需要实现如下对接接口:

时间同步

当中控连上上述配置好的mqtt服务器时,会发生以下时间同步请求 topic: /gatetway/[APPID]/[DEVICEID]/action/time/req

{
 "action":"reqTime"
}

集控服务器需做如下回复:

topic: /gatetway/[APPID]/[DEVICEID]/action/time/resp

{
 "action":"respTime",
 "time":1639358897128  //服务器当前时间,毫秒级时间戳
}

设备控制

服务器发送如下主题指令控制设备:

topic: /gatetway/[APPID]/[DEVICEID]/action/device/ctrl

payload:

{
 "action":"KEY",
 "protocol":"SERIAL",
 "params":{
  }
}
参数 说明
action 指令key,对应取值见下表
protocol 通讯方式,对应取值见下表
params 指令相关参数,如开哪一路,关哪一路空调等,对应取值见下表

action取值说明

KEY标识 名称 protocol params参数 说明
in_class 上课 SERIAL 开中控、开电脑、开投影、开大屏等
over_class 下课 SERIAL 关中控、关电脑、关投影、关大屏等
cast_open 开投影 SERIAL 开启投影机,上课时使用
cast_close 关投影 SERIAL 关闭投影机
cloth_down 降幕布 SERIAL 降下幕布,上课时使用
cloth_up 升幕布 SERIAL 收回幕布
close_comp 关电脑 SERIAL 关闭电脑
show_comp 投电脑 SERIAL 显示台式电脑信号源
show_broadcast 投广播 SERIAL 显示广播信号源
show_booth 投展台 SERIAL 显示展台信号源
show_mobilepc 投手提 SERIAL 显示笔记本信号源
voice_up 音量加 SERIAL 音量加
voice_down 音量减 SERIAL 音量加
open_airctrl 开空调 RS485通讯时取值SERIAL,ZIGBEE通讯时取值ZIGBEE 见开空调参数 开空调
close_airctrl 关空调 RS485通讯时取值SERIAL,ZIGBEE通讯时取值ZIGBEE 见关空调参数 关空调
window_open 开窗帘 ZIGBEE 见开关窗帘参数 开窗帘
window_close 关窗帘 ZIGBEE 见开关窗帘参数 关窗帘
stop_rotate 电机停 ZIGBEE 见开关窗帘参数 窗帘电机停止转动
open_light 开灯 ZIGBEE 见开关灯参数 开灯
close_light 关灯 ZIGBEE 见开关灯参数 关灯
open_airswitcher_power 开空开电源 SERIAL 见开关电源参数 开电源
close_airswitcher_power 关空开电源 SERIAL 见开关电源参数 关电源
open_tablet_pc 开大屏 SERIAL 开大屏
close_tablet_pc 关大屏 SERIAL 关大屏
open_timing_controller 开时序器 SERIAL 开时序器
close_timing_controller 关时序器 SERIAL 关时序器
open_discussion_box_qinglu 开青鹿盒子 SERIAL 开青鹿盒子
close_discussion_box_qinglu 关青鹿盒子 SERIAL 开青鹿盒子
open_recorder_power 录播电源开 SERIAL 录播电源开
close_recorder_power 录播电源关 SERIAL 录播电源开
start_record 录播开始 SERIAL 开始录播主机录制
stop_record 录播停止 SERIAL 停止录播主机录制
pause_record 录播暂停 SERIAL 暂停录播主机录制

开空调参数


 {
    "location":[1,2,3],   //控制第几路空调,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
    "temperature":26,   // 控制温度 可取值18-29
    "speed": 1   // 控制风速 1:小风 2:中风 3:大风
}

关空调参数


 {
    "location":[1,2,3],   //控制第几路空调,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
    "power": 1   // 断空调供电 1:关电 0:保持开启
}

开关窗帘参数


 {
    "location":[1,2,3],   //控制第几路窗帘,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

开关灯参数


 {
    "location":[1,2,3],   //控制第几排灯,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

开关电源参数


 {
    "location":[1,2,3],   //控制第路电源,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

设备状态上报

服务器订阅如下主题

topic: /gatetway/[APPID]/[DEVICEID]/event/device/status

定时收到如下格式JSON字符串

{
 "KEY1":"VLAUE1",
 "KEY2":"VLAUE2"
 ...
}

设备状态将以key-value形式上报,服务器需要缓存每一个key-value值。注意:全部设备状态并非以一条数据合并上报,而是分开上报。

以下为key、value对应值说明

key 对应名称 值类型 value值说明
controller 中控状态 String on:中控开启 off:中控关闭
cast 投影状态 String on:投影开启 off:投影关闭
hdmi1 hdmi1状态 String on:hdmi1接入设备 off:hdmi1未接入设备
hdmi2 hdmi2状态 String on:hdmi2接入设备 off:hdmi2未接入设备
sensor_tempHumidity 传感器温湿度数据 String 温度、湿度,“_”拼接,计量单位:温度(℃)湿度(%RH)
sensor_pm25 pm2.5浓度 Float 计量单位:ug/m3
sensor_tvoc tvoc浓度 Float 计量单位:mg/m3
sensor_formaldehyde 甲醛浓度 Float 计量单位:mg/m3
sensor_co2 二氧化碳浓度 Float 计量单位:PPM
sensor_illuminance 光照度 Float 计量单位:LUX
light_[n] 灯状态,n根据实际安装路数获取,从1开始 String on:开启 off:关闭
aircontroller_[n] 空调状态,n根据实际安装路数获取,从1开始 JSONString 见空调状态说明
curtain_[n] 窗帘电机状态,n根据实际安装路数获取,从1开始 JSONString 见窗帘电机状态说明
airswitcher-line 安装了哪里路空开 HEXString 16进制转2进制,字节倒序,1代表存在那一路空开 0代表不存在那一路空开
airswitcher-status 每一路空开状态 HEXString 16进制转2进制,字节倒序,1代表那一路空开开启 0代表那一路空开关闭
airswitcher-energy1 每一路空开能耗低位 HEXString 每2位为1路空开能耗数据
airswitcher-energy2 每一路空开能耗高位 HEXString 每2位为1路空开能耗数据,每一路高位低位拼接后转10进制即为当前能耗,单位Wh。注意:需要考虑断电请0情况
airswitcher-power 每一路空开功率 HEXString 每2位为1路空开功率数据
airswitcher-current 每一路空开电流 HEXString 每2位为1路空开电流数据
airswitcher-voltage 每一路空开电压 HEXString 每2位为1路空开电压数据

空调状态说明


 {
    "status":"on",   //空调状态  on:空调正在运转 off:空调待机 offline:空调断电。
    "temperature":26 //当前温度 ,
    "humidity": 60 //当前湿度
}

窗帘电机状态说明


 {
    "status":"on",   //空调状态  on:窗开 off:窗关。
    "percentage":30 //当前开启百分比
}

写入卡库

服务器向中控发送如下指令

topic: /gatetway/[APPID]/[DEVICEID]/event/card/req

payload:

{
  “url”:"http://..."
}
参数 数据类型 说明
url String 请求卡库的接口地址,第三方服务器需要实现该地址的POST方法,一次性返回全部教职工IC卡相关信息,具体返回格式如下
{"data":[{
 "gender":1,  //0女 1男 9未登记,非空
 "name":"",  //姓名,非空
 "department":"", //部门
 "position":"", //职务
 "work_code":"", //教职工工号。如需设置课表模式,此字段必须
 "card_num":"",//10位IC卡号,非空
 "start_time":"YYYY-MM-DD HH:mm:ss", //授权有效时间,YYYY-MM-DD HH:mm:ss,非空
 "end_time":"YYYY-MM-DD HH:mm:ss",//授权过期时间,YYYY-MM-DD HH:mm:ss,非空
 "card_type":1, //1管理员卡 2教职工卡
}]}

设置刷卡校验模式

topic: /gatetway/[APPID]/[DEVICEID]/action/controller/setting

{
 "action":"set_lock_mode",
 "mode":"all",
}
参数 数据类型 说明
action String 设置刷卡校验模式固定为set_lock_mode
mode String all 试运行模式 , card 一卡通模式 , schedule 课表模式

下发整个学期课表

topic: /gatetway/[APPID]/[DEVICEID]/action/controller/setting

{
 "action":"schedule_download",
 "url":"http://...",
}
参数 数据类型 说明
action String 下发整个学期课表固定为schedule_download
url String 请求整个学期课表的接口地址,第三方平台需要实现该接口地址的POST方法。中控调用接口时传递JSON格式参数,参数中包含device_id字段,该字段值与topic中DEVICEID相同。第三方平台需要根据device_id参数匹配课室,并返回该课室整个学期的课表

课表返回格式要求如下:

{
  "start_date":"2022-07-04",  //学期的开始日
  "end_date":"2023-01-07"   //学期的结束日,
  "school_time":[
     {
     "start_time":"08:00",
     "end_time":"08:40"
     },
      {
     "start_time":"08:50",
     "end_time":"09:30"
     }
   ],
   "schedule":{
       "day_1":[
          null,
          [
            {"course_name":"课程1",teacher_info:{"name":"张三","work_code":"工号"},weeks:[1,7]},
            {"course_name":"课程2",teacher_info:{"name":"李四","work_code":"工号"},weeks:[8,16]}
          ]
        ],
       "day_2":[],
       "day_3":[],
       "day_4":[],
       "day_5":[],
       "day_6":[],
       "day_7":[]
   }
}
参数 数据类型 说明
start_date String 学期的开始日 YYYY-MM-DD格式
end_date String 学期的开始日 YYYY-MM-DD格式
school_time Array 节次时间信息,有多少节课就多少项
school_time[n].start_time String 课节开始时间 HH:mm格式
school_time[n].end_time String 课节结束时间 HH:mm格式
schedule Object 排课信息
schedule.day_[n] Array 星期n的排课
schedule.day_[n][m] Object 星期n第m节的课程信息。需包含course_name、teacher_info、weeks字段,其中course_name为课程名称,teacher_info为上课教师信息,weeks为上课周次(按[开始周,结束周]格式填写,[1,7]代表1至7周上课)。若某一节次无课则填null

刷卡记录上报

topic: /gatetway/[APPID]/[DEVICEID]/event/card/slot

{
 "card_num":"CARDNUM",
 "checked":true,
 "time":"2021-05-30 12:00:00"
}
参数 数据类型 说明
card_num String 刷卡卡号
checked Boolean 是否为授权卡
time DATETIME 刷卡时间(YYYY-MM-DD HH:mm:ss)

3.2.2单机对接(直接与中控通讯)

通讯协议:TCP

通讯端口:8000

授权认证

第三方设备通过中控的IP连接TCP后,需要认证才能有效发送或接收其他指令。 第三方设备通过TCP向中控发送如下JSON格式字符串指令

{
  "type": "auth",
  "code": "CODE"
}

type固定取值auth,code值请向中控供应商索取。认证成功返回:

{
  "type": "auth",
  "data": {
    "code": 0,
    "msg": "认证成功"
  }
}

设备控制

第三方设备通过TCP向中控发送如下JSON格式字符串指令控制中控设备:

{
 "type": "ctrl",
 "action":"KEY",
 "protocol":"SERIAL",
 "params":{
  }
}
参数 说明
type 固定为ctrl
action 指令key,对应取值见下表
protocol 通讯方式,对应取值见下表
params 指令相关参数,如开哪一路,关哪一路空调等,对应取值见下表

action取值说明

KEY标识 名称 protocol params参数 说明
in_class 上课 SERIAL 开中控、开电脑、开投影、开大屏等
over_class 下课 SERIAL 关中控、关电脑、关投影、关大屏等
cast_open 开投影 SERIAL 开启投影机,上课时使用
cast_close 关投影 SERIAL 关闭投影机
cloth_down 降幕布 SERIAL 降下幕布,上课时使用
cloth_up 升幕布 SERIAL 收回幕布
mic_volume 功放音量调节 SERIAL 见功放音量调节参数 调节功放麦克风的音量
close_comp 关电脑 SERIAL 关闭电脑
show_comp 投电脑 SERIAL 显示台式电脑信号源
show_broadcast 投广播 SERIAL 显示广播信号源
show_booth 投展台 SERIAL 显示展台信号源
show_mobilepc 投手提 SERIAL 显示笔记本信号源
voice_up 音量加 SERIAL 音量加
voice_down 音量减 SERIAL 音量加
open_airctrl 开空调 RS485通讯时取值SERIAL,ZIGBEE通讯时取值ZIGBEE 见开空调参数 开空调
close_airctrl 关空调 RS485通讯时取值SERIAL,ZIGBEE通讯时取值ZIGBEE 见关空调参数 关空调
window_open 开窗帘 ZIGBEE 见开关窗帘参数 开窗帘
window_close 关窗帘 ZIGBEE 见开关窗帘参数 关窗帘
stop_rotate 电机停 ZIGBEE 见开关窗帘参数 窗帘电机停止转动
open_light 开灯 ZIGBEE 见开关灯参数 开灯
close_light 关灯 ZIGBEE 见开关灯参数 关灯
open_airswitcher_power 开空开电源 SERIAL 见开关电源参数 开电源
close_airswitcher_power 关空开电源 SERIAL 见开关电源参数 关电源
open_recorder 开启录播 SERIAL 开录播电源
close_recorder 关录播电源 SERIAL 关录播电源
start_record 开始录制 SERIAL 录播开始录制
stop_record 停止录制 SERIAL 录播停止录制
pause_record 暂停录制 SERIAL 录播暂停录制
screen_on 开大屏 SERIAL 开大屏
screen_off 关大屏 SERIAL 关大屏

开空调参数


 {
    "location":[1,2,3],   //控制第几路空调,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
    "temperature":26,   // 控制温度 可取值18-29
    "speed": 1   // 控制风速 1:小风 2:中风 3:大风
}

关空调参数


 {
    "location":[1,2,3],   //控制第几路空调,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
    "power": 1   // 断空调供电 1:关电 0:保持开启
}

开关窗帘参数


 {
    "location":[1,2,3],   //控制第几路窗帘,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

开关灯参数


 {
    "location":[1,2,3],   //控制第几排灯,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

开关电源参数


 {
    "location":[1,2,3],   //控制第路电源,以实际安装路数为准,默认从前到后从1开始编号。可选择多路同时控制。
}

功放音量调节参数


 {
    "value":IntValue,   //IntValue取值0~26,0为禁音,26为最大音量。
}

设备状态上报

认证后第三方设备定时收到如下格式JSON字符串

{
 "type":"status_feedback",
 "data":{
    "KEY1":"VLAUE1",
    "KEY2":"VLAUE2"
    ...
 }
}

设备状态将以key-value形式上报,服务器需要缓存每一个key-value值。注意:全部设备状态并非以一条数据合并上报,而是分开上报。

以下为key、value对应值说明

key 对应名称 值类型 value值说明
controller 中控状态 String on:中控开启 off:中控关闭
cast 投影状态 String on:投影开启 off:投影关闭
hdmi1 hdmi1状态 String on:hdmi1接入设备 off:hdmi1未接入设备
hdmi2 hdmi2状态 String on:hdmi2接入设备 off:hdmi2未接入设备
sensor_tempHumidity 传感器温湿度数据 String 温度、湿度,“_”拼接,计量单位:温度(℃)湿度(%RH)
sensor_pm25 pm2.5浓度 Float 计量单位:ug/m3
sensor_tvoc tvoc浓度 Float 计量单位:mg/m3
sensor_formaldehyde 甲醛浓度 Float 计量单位:mg/m3
sensor_co2 二氧化碳浓度 Float 计量单位:PPM
sensor_illuminance 光照度 Float 计量单位:LUX
light_[n] 灯状态,n根据实际安装路数获取,从1开始 String on:开启 off:关闭
aircontroller_[n] 空调状态,n根据实际安装路数获取,从1开始 JSONString 见空调状态说明
curtain_[n] 窗帘电机状态,n根据实际安装路数获取,从1开始 JSONString 见窗帘电机状态说明
airswitcher-line 安装了哪里路空开 HEXString 16进制转2进制,字节倒序,1代表存在那一路空开 0代表不存在那一路空开
airswitcher-status 每一路空开状态 HEXString 16进制转2进制,字节倒序,1代表那一路空开开启 0代表那一路空开关闭
airswitcher-energy1 每一路空开能耗低位 HEXString 每2位为1路空开能耗数据
airswitcher-energy2 每一路空开能耗高位 HEXString 每2位为1路空开能耗数据,每一路高位低位拼接后转10进制即为当前能耗,单位Wh。注意:需要考虑断电请0情况
airswitcher-power 每一路空开功率 HEXString 每2位为1路空开功率数据
airswitcher-current 每一路空开电流 HEXString 每2位为1路空开电流数据
airswitcher-voltage 每一路空开电压 HEXString 每2位为1路空开电压数据

空调状态说明


 {
    "status":"on",   //空调状态  on:空调正在运转 off:空调待机 offline:空调断电。
    "temperature":26 //当前温度 ,
    "humidity": 60 //当前湿度
}

窗帘电机状态说明


 {
    "status":"on",   //空调状态  on:窗开 off:窗关。
    "percentage":30 //当前开启百分比
}

results matching ""

    No results matching ""