mqtt服务端订阅
<ul>
<li>请求后台的数据字段</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">字段</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">空</th>
<th>默认</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">topic</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>主题</td>
</tr>
<tr>
<td style="text-align: left;">type</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>数据类型(无需关注)</td>
</tr>
<tr>
<td style="text-align: left;">qos</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>消息服务质量</td>
</tr>
<tr>
<td style="text-align: left;">flag</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>包序号</td>
</tr>
<tr>
<td style="text-align: left;">payload</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>负载(消息体)</td>
</tr>
</tbody>
</table>
<ul>
<li>备注:qos为0 后台无需回应,qos>=1则需要使用如下json串格式回应服务端代理订阅
<pre><code>{
"status":"success",
"flag":1,
"qos":1
}</code></pre></li>
<li>
<p>备注:qos与flag为请求时的qos与flag参数的值,status固定为success。</p>
</li>
<li>mqtt服务端代理配置文件字段如下:</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">字段</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">空</th>
<th>默认</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">notify_ip</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">是</td>
<td></td>
<td>后台服务器ip(一般如果处于同一服务器则使用127.0.0.1)</td>
</tr>
<tr>
<td style="text-align: left;">notify_port</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>后台端口(只支持http协议的端口(一般为80))</td>
</tr>
<tr>
<td style="text-align: left;">notify_url</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>通知地址</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_serv</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt服务器ip</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_port</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt服务器port</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_topic</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>订阅的主题</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_user</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt用户名</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_pass</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt密码</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_qos</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>发布消息时使用的服务质量,可以使用默认值2即可</td>
</tr>
<tr>
<td style="text-align: left;">mqtt_worker_num</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt服务端代理进程数量,填4即可</td>
</tr>
<tr>
<td style="text-align: left;">path_log</td>
<td style="text-align: left;">string</td>
<td style="text-align: left;">否</td>
<td></td>
<td>mqtt服务端代理得日志目录,使用默认日志文件:/tmp/mqttClient.log即可</td>
</tr>
</tbody>
</table>
<ul>
<li>配置示例:
<pre><code>notify_ip= 120.77.72.190
notify_port=80
notify_url=120.77.72.190/babycar/writelog
mqtt_serv=127.0.0.1
mqtt_port=1883
mqtt_topic=test/+
mqtt_user=mqttproxy
mqtt_pass=123456
mqtt_qos=2
mqtt_worker_num=1
path_log=/tmp/mqttClient.log</code></pre></li>
<li>
<p>注意:只能配置单notifyurl,如果是多notifyurl需要在后台服务器上做分发,每个配置项使用空格换行,如需注释,在改配置项最前端加上#号即可,配置文件需要放置在于编译后的可执行文件同一目录。</p>
</li>
<li>脚本说明:</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">字段</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">空</th>
<th>默认</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">checkmqtt</td>
<td style="text-align: left;">sh文件</td>
<td style="text-align: left;">否</td>
<td></td>
<td>检查以及启动mqtt脚本(需要在脚本内配置可执行文件的绝对路径)</td>
</tr>
<tr>
<td style="text-align: left;">stopmqtt</td>
<td style="text-align: left;">sh文件</td>
<td style="text-align: left;">否</td>
<td></td>
<td>停止mqtt服务端代理的运行</td>
</tr>
</tbody>
</table>
<ul>
<li>安装流程:
<pre><code>1、将文件上传到服务器/home/wwwroot目录之下,配置mqtt_config文件,注意事项如上。
2、进入mqttClient目录,修改CMakeLists.txt 中的cmake_minimum_required(VERSION 2.8)
保证包VERSION版本小于当前服务器的cmake版本,一般服务器版本为2.8.
3、输入命令 cmake ./ (生成makefile)
4、输入命令 make (编译)
5、输入命令 crontab -e (添加定时任务)
6、在文件尾端增加 */10 * * * * /bin/bash /home/wwwroot/mqttClient/checkmqtt (增加定时任务),并保存退出
7、手动执行 ./checkmqtt 启动脚本
8、安装完成,交互日志可在path_log所配置的目录中去查看。</code></pre></li>
</ul>