物联网智能化自动控制器教学实验箱可以实现物联网常见应用的研发和实验功能。控制箱支持通过局域网本地或internet远程实现控制器的输出控制,以及输入状态的获取。开放通信协议接口,提供应用例程源代码程序,方便开发人员能够高效的学习物联网知识,以及快速实现智能化软硬件设备的开发工作。
物联网实验箱
实验箱应用功能举例:
1.通过编程实现继电器开关的输出控制。
2.通过编程实现开关量输入端状态的获取。
3.通过手动控制开关实现继电器开关的手动控制。
4.固态继电器的使用方法,如何用低电压去控制大电流负载设备。
5.通过两路继电器输出控制电机正反转。
6.通过电脑端软件实现对设备的本地或远程控制实验。
7.通过手机端APP软件实现对设备的本地或远程控制实验。
8.IFTTT条件编程,实现智能化,自动化的控制。
9.支持网络口及RS232串口的编程控制。
10.所有控制器的输入端、输出端可由用户编程控制及实现自动化的联动功能。



物联网综合实验箱
物联网教学实验箱


通过PC电脑或手机APP实现设备的控制。

丰富的软件及教学资料:

通过“易家智联”APP进行手机远程控制。(以上是APP软件运行在iPhoneXR和iPhoneXS Max的效果)

网络继电器手机软件网络继电器app网络继电器软件网线继电器手机软件

通过PC端软件进行远程网络或本地局域网内的控制。

KC868-H8智能家居主机PC端软件,8路设备名称可以自定义,支持英文、中文、韩语、日文等多种国际化语言。
1、每路设备名称支持自定义
2、每路设备图标支持自定义,“开”和“关”两种状态的图标可以分别进行自定义设置。
3、软件标题名称信息支持自定义
4、支持本地局域网模式和远程模式进行控制。
5、支持开关量传感器接入,并在软件中进行状态反馈。
6、软件皮肤多种风格供选择。
7、提供设备的通信协议接口,可以进行二次开发。

网络继电器软件

KC868-H8/KC868-H32/KC868-H8W/KC868-H32W 网络继电器手机APP软件下载地址:


关于网线继电器控制器的二次开发,我们与人民邮民出版社合作,进行全年应用案例与实际编程的文章连载。

网络继电器使用教程

网络继电器教程

网络继电器协议

网络继电器远程控制

网线继电器设备通信协议详解:

1.查询智能控制盒设备型号:
发送:RELAY-SCAN_DEVICE-NOW
返回:RELAY–SCAN_DEVICE–CHANNEL_8/CHANNEL_32,OK/ERROR

这是一条查询设备类型的指令,我们想获得当前连接的设备类型时,可以发送以上参数。目前智能控制盒有两种不同配置的型号,即命令下发后,如果获取成功会返回:“RELAY–SCAN_DEVICE–CHANNEL_8,OK” 或 “RELAY–SCAN_DEVICE–CHANNEL_32,OK”这两种类型的字符串。返回值最后面的数字“8”代表该控制类型为KC868-H8,“32”代表该控制类型为KC868-H32。

智能家居通信协议

2.智能控制盒服务器工作模式开启:
发送:RELAY-TEST-NOW
返回:RELAY-TEST-START

这是一条智能控制盒的初始化命令,当控制盒处于“TCP服务器”模式时,需要发送这条初始化命令让控制盒进入工作状态,该工作模式开启后,后续所有通信协议中的“包序号”参数均可使用固定的数值即可,我们在后面的协议解析中会再说明一下。

智能家居协议

3.KC868-H8设备初始化命令集:
发送:RELAY–SCAN_DEVICE–NOW
发送:RELAY-TEST-NOW

这是作为智能控制盒的初始化命令集,每一次设备上电或重新上电后,必须首先发送这两条命令来进行设备的初始化工作,具体命令的返回值,前面已讲。待“RELAY-TEST-NOW”这条命令发送后,有返回“RELAY-TEST-START
”字符串后,我们就可以进行自由地使唤控制盒了。

4.单独控制某一路继电器的开与关:
发送:RELAY-SET-x(1字节pack_num),x(1字节继电器序号),x(1字节动作0/1)
返回:RELAY-SET-x(1字节pack_num),x(1字节继电器序号),x(1字节动作0/1),OK/ERROR

这条命令是我们在第一期文章中所介绍到的核心指令,也是最让人兴奋的一条硬件版的Hello World指令,它可以控制某一路继电器的打开或关闭,指令非常简单,通俗易懂。首先,第一个参数pack_num,我们已经有前面讲到过,当控制盒在“TCP服务器”模式下,该参数已经没有意义,比如:我们可以设置成数字“1”固定不变。但你可能会问,既然没有用的参数,为什么还要放在指令中作为参数呢,那不是挺麻烦?呵呵,“包序号”的真正意义将会在远程控制模式中体现出来,只是我们的教程现在还没有讲到,我们将会在后期的“远程控制模式”教程中使用到它。协议中的第3个字节参数——“动作0/1”的意义在于,“0”表示“关闭”;“1”表示“打开”。我们举个例子来看一下,比如:我们要打开第1路继电器,我们可以发送命令“RELAY-SET-1,1,1”,第1个参数“1”表示固定的包序号;第2个参数的“1”表示第1路继电器,第三个参数“1”表示“打开”。如果我们要关闭第1路继电器,我们可以发送命令“RELAY-SET-1,1,0”,第1个参数“1”表示固定的包序号;第2个参数的“1”表示第1路继电器,第三个参数“0”表示“关闭”。如果我们要打开第2路继电器,我们可以发送命令“RELAY-SET-1,2,1”,第1个参数“1”表示固定的包序号;第2个参数的“2”表示第2路继电器,第三个参数“1”表示“打开”。看到这里,你应该感觉控制继电器原来是那么容易吧。略有点小成就感吧:)

智能家居通信协议

硬件控制电灯

5.单独查询某一路继电器当前开关状态:
发送:RELAY-READ-x(1字节pack_num),x(1字节继电器序号)
返回:RELAY-READ-x(1字节pack_num),x(1字节继电器序号),x(1字节状态0/1),OK/ERROR

当我们时不时控制继电器的“打开”、“关闭”、再“打开”、再“关闭”........,等时间久了,我们可能已经不知道控制盒上继电器当前的工作状态了,有时候我们在做控制之前,还是需要知道他们的当前设备的,目前是“打开”的,还是“关闭”的。这时候,我们便可以使用继电器的查询命令来进行查询了。比如:我们要查询第1路继电器现在是处于“打开”还是“关闭”状态,我们可以发送:“RELAY-READ-1,1”,第1个参数“1”表示固定的包序号;第2个参数“1”表示需要查询的路数。此时,查询成功后,控制盒会返回“RELAY-READ-1,1,OK”,第2个参数“1”表示现在的状态为“打开”状态,如果是“0”表示现在的状态为“关闭”状态。想查询第几路继电器,直接将路数参数更改即可。

智能家居二次开发

6.查询触发输入端状态:
发送:RELAY-GET_INPUT-x(1字节pack_num)
返回:RELAY-GET_INPUT-x(1字节pack_num),x(1字节状态),OK/ERROR

注:当控制盒触发输入端被触发时,会主动上报一条命令,格式为:RELAY-ALARM-X,X代表被触发的路数。

触发输入端是控制盒用来接开关量传感器的输入端子,如图中控制盒的一侧,由高位和低位组合成一组开关量输入端,他有多元化的实际应用方式,比如:你可以接手动开关,软件中可以定义好,当手动按下开关后,输出端的继电器会执行哪些动作;当有线开关量的传感器信号接入时,软件中可以定义好,当传感器被触发时,输出端的继电器会执行哪些动作,这就是我们通常说的智能联动,也是智能家居中最广泛的应用方法之一。联动的自动化控制过程中,第一步就需要我们去获得触发事件的状态,即什么时候被触发,哪路传感器被触发。此时,我们可以使用触发输入端的查询命令发给控制合,如:“RELAY-GET_INPUT-1”,查询成功后,控制盒会返回:“RELAY-GET_INPUT-1,255,OK”,第2个参数“255”即是8路触发端的状态字节。我们用8位二进制来表示8路输入端状态。用“0”表示“触发”,用“1”表示“未触发”。如果当前8路状态全部是“未触发”的话,那么8路输入端的状态为 11111111,注意,这是二进制的8个“1”,然后我们将其转换为十进制数,为“255”。如果当前8路状态全部是“触发”的话,那么8路输入端的状态为 00000000,注意,这是二进制的8个“0”,然后我们将其转换为十进制数,为“0”。如果当前8路状态是1-4路是“未触发”,5-8路为“触发”的话,那么8路输入端的状态为 00001111,注意,这是二进制的“00001111”,然后我们将其转换为十进制数,为“15”。在程序中,我们不需要不断的循环去查询状态,可以利用触入端被触发器的主动上报命令进行配合而进行查询,当触发信号产生时,客户端接收到“RELAY-ALARM-X”的指令串时,再发送一条“RELAY-GET_INPUT-x”进行查询。如下图所示,当我们用镊子手动短接第一路的输入端时,则控制盒会主动上报字符串“RELAY-ALARM-1”到PC客户端,这时,我们发送查询第1路输入端的命令后,返回字符串“RELAY-GET_INPUT-1,254,OK”,我们将数字十进制数“254”转换为二进制数为“11111110”,所以可以得知第1路输入端被触发。

智能家居调试

智能家居开发

十进制数

二进制数

7.查询智能控制盒序列号:
发送:RELAY-HOST-NOW
返回:HOST-CHKLIC-8a2af927888793c9a22280b8(返回控制盒序列号)

每一台控制盒设备都有一个唯一的标识符,类似于每个人的身份证号码一样,为了做好设备的维护和管理工作,也不例外,如发送:“RELAY-HOST-NOW”命令后,将返回“HOST-CHKLIC-8a2af927888793c9a22280b8”,其中最后一个“-”后面的一长串数字、字母的组合,即为设备的序列号,“8a2af927888793c9a22280b8”是设备的序列号,序列号将用于后期关于远程控制的教程中使用。同时,这也是一条设备继电器的测试命令,如果发送此命令给控制盒,控制盒的第1-8路继电器会依次打开,然后第1-8路继电器再依次关闭,作为一条简单的继电器测试命令。

智能家居系统

8.一次控制多路继电器的开与关:

KC868-H8:
发送:RELAY-SET_ALL-x(1字节pack_num),D0
返回:RELAY-SET_ALL-x(1字节pack_num),D0,OK/ERROR

KC868-H32:
发送:RELAY-SET_ALL-x(1字节pack_num),D3,D2,D1,D0
返回:RELAY-SET_ALL-x(1字节pack_num),D3,D2,D1,D0,OK/ERROR

之前所介绍的通信协议中,我们已经可以分别对每一个继电器进行“打开”和“关闭”的操作了,这里,我们再介绍一条多路继电器同时进行控制的指令,他们是区别在哪里呢?前面我们所讲的控制继电器都是针对某一个的,如果要控制多个继电器开关,就是需要发送多条控制命令,需要若干时间去执行。这里,我们介绍的指令,可以实现一次性控制多路继电器开关,如“全开”、“全关”,或者某几路“打开”,某几路“关闭”的操作,只需要一条指令,多路控制速度非常快。我们可以看到命令中,除了“包序号”参数之外,只有一个字节的参数了,这一个字节就代表了8路继电器想进行控制的状态设置,用“1”表示“打开”,用“0”表示“关闭”,同样,也是用8位二进制来表示各路继电器的状态,再转成十进制数。如:我们要将8路继电器全部打开,则可以发送命令“RELAY-SET_ALL-1,255”,我们要将8路继电器全部关闭,则可以发送命令“RELAY-SET_ALL-1,0”,如果要将1-4路继电器打开,5-8路继电器关闭,那么参数是这样定义的,二进数表示:00001111,转换为十进制数为“15”,最终发送命令为“RELAY-SET_ALL-1,15”。在协议内容中,我们看到还有KC868-H32型号的控制盒,即他有32路继电器可以让我们进行控制,所以,他是用4个字节来表示所有继电器的状态的,1-8路继电器用D0字节表示;9-16路继电器用D1字节表示;17-24路继电器用D2字节表示;25-32路继电器用D3字节表示,每一个字节的含义和KC868-H8控制盒的表达方式一样,只是将32路划分成4个字节,多了几个参数。

智能家居二次开发

9.一次读取多个继电器当前开关状态:
发送:RELAY-STATE-x(1字节pack_num)
返回:
KC868-H32:RELAY-STATE-x(1字节pack_num),D0,OK/ERROR
KC868-H8:RELAY-STATE-x(1字节pack_num),D3,D2,D1,D0,OK/ERROR

同样的情况,前面我们已经看了查询继电器状态的通信协议,那是按某一路进行查询的。我们也可以进行一次读取多个继电器状态的方式来进行查询。比如:发送“RELAY-STATE-1”,那么根据控制盒不同型号的情况,会有两种返回状态的字符串,如果控制盒是KC868-H8的型号,那会返回“RELAY-STATE-1,255,OK”,“255”则表示控制盒8路继电器的当前状态,将十进制数“255”转成二进制数为“11111111”,“1”表示“打开”状态,前面我们已经提到过,所以,这8路继电器的当前状态均为“打开”。同样,如果得到的数转成二进制后,某一位是数字“0”的话,那么代表该路的继电器当关的状态为“关闭”状态。

读继电器状态