产品
产品中心 PRODUCT DISPLAY
工业级4G路由器二次开发MQTT/MODBUS
< >
产品标题:工业级4G路由器二次开发MQTT/MODBUS
产品型号:HJ8000
技术文档:点击下载
产品简介:HJ8300工业级4G路由器是一款带SDK二次开发工业级4G路由器,利用移动网络为终端设备提供无线数据传输功能。 支持SDK二次开发,ROOT权限,集成交叉编译器,集成了GCC、GDB、GLIBC库,支持C/C++,Python,PHP,支持MQTT,SSH、FTP、MySQL。用户可以直接通过SSH在HJ8300里编译自己软件,直接运行。 HJ8300工业级4G路由器支持4G全网通、WIFI、以太网、交换机、路由器DTU、RS232、RS485。支持远程控制终端设备,如PLC、触摸屏、仪表仪器远程上下载程序、远程调试。
  • 产品详细
  • 产品参数

HJ8300工业级4G路由器是一款带SDK二次开发工业级4G路由器,利用移动网络为终端设备提供无线数据传输功能。 支持SDK二次开发,ROOT权限,集成交叉编译器,集成了GCC、GDB、GLIBC库,支持C/C++,Python,PHP,支持MQTT,SSH、FTP、MySQL。用户可以直接通过SSH在HJ8300里编译自己软件,直接运行。

 

HJ8300工业级4G路由器支持4G全网通、WIFI、以太网、交换机、路由器DTU、RS232、RS485。支持远程控制终端设备,如PLC、触摸屏、仪表仪器远程上下载程序、远程调试。

 

MQTT二次开发路由器

 

1.MQTT说明

MQTT是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,构建于TCP/IP协议上,IBM1999年发布。MQTT最大优点是可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT发布/订阅消息模式如下示意图

MQTT二次开发路由器

MQTT协议在客户端和服务器端之间通讯完成,通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理服务器(Broker)和订阅者(Subscribe)。

 

消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

 

MQTT传输的消息分为:主题(Topic)和负载(payload)两个部分

1. Topic: 消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)。

2. Payload:消息的内容,是指订阅者具体要使用的内容。

 

HJ8300的MQTT使用

安装软件mosquitto-1.4.15 和 json-c-0.12

Mosquitto提供了WindowsLinux以及qnx系统的版本,HJ8000系列安装的linux操作系统,所以选择了mosquittolinux版本源码安装。

HJ8000系列MQTTdemo采用json编码网关模式作为MQTT的客服端可以发布和订阅MQTT消息,程序部分使用C语言编写。

 

demo程序的文件说明

main.c 主程序文件

base.h 头文件

Makefile 编译Make文件

poll_rftcm_s.txt 配置文件,包含MQTT的服务器的地址和端口等配置信息

 

MQTT的消息格式:

网关发布消息的TOPIC/ge/MQTT帐号/网关MAC/采集设备地址

网关订阅消息的TOPIC/gc/MQTT帐号/网关MAC/采集设备地址

比如服务器发布一个时间消息网关<C2-48-00-00-32-47>82号设备格式如下:

/ge/bluegw/C2-48-00-00-32-47/82

{  "h":{/* message header */

       "T":85,

       "ID:1

   },

   "b":{/* message body */

       "cf":3,

       "cc":1,/* message command <set time>*/

       "dl":{/* message parameter list */

           "week":1,

           "hour":12,

           "minites":35,

           "second":21,

       }

   }

}

网关订阅一个MQTT消息/ge/bluegw/C2-48-00-00-32-47/82这样服务器或者其他客户端只要发送这个消息主题的内容,网关<C2-48-00-00-32-47>都会收到,然后网关根据实际实际情况处理。

 

 

HJ8200 MQTT demo说明

HJ8200系列有很多接口,比如RS232/RS485/ETH/RF433M等,HJ8200软件管理了这些接口,如果用户需要使用这些接口,可以发送一个接管命令HJ8000的软件,HJ8000就会把这些接口的数据直接发送到linux命名pipe里面这样就可以直接从这些命名pipe里面读取数据,或者写入数据到命名pipeHJ8000软件就会直接写到实际的端口。

MQTTdemo使用的RF433M接口,RF433M接口命名pipe如下

读取的pipe名称: /var/vspp/WR_RF4;

写入的pipe名称/var/vspp/RD_RF4;

MQTTdemo框架示意图(由PIPE线程和MQTT线程组成)
MQTT二次开发路由器

 

 

注意

1. MQTT订阅的消息处理回调函数解析命令,把命令挂在在PIPE线程的rf_cmmd_list队列PIPE线程负责发送

2. PIPE线程的定时器负责检查超时的数据处理。

3. PIPE线程接收函数负责处理从RF433M的管道来的数据,同时发送rf_cmmd_list队列的数据到RF433M的管道。