5-Openwrt MQTT client使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5-Openwrt MQTT client使用相关的知识,希望对你有一定的参考价值。

参考技术A 在mosquitto里面有个client目录,里面就是使用libmosquitto实现的客户端程序,封装成mosquitto_sub和mosquitto_pub命令行。

所以新建一个跟client同一级,自己的client,添加对应的文件

Makefile的内容

main.c的内容

myclient.h的内容

外层的mosquitto/src/Makefile里面添加myclient文件的编译

编译测试一切正常,接下去添加mqtt的内容

mqtt client里面最主要的就是几个回调函数,先调用lib_init,正常后,就这只各个callback,然后在callback里面做逻辑。

各回调函数的内容

逻辑应该也比较直观,当connect成功后,在回调函数里面订阅test1主题的内容,然后发布test2主题的内容。

收到内容就在 myclient_message_callback 回调里面打印处理。

正常情况我们都会让客户端的连接做一些账号密码的设置,避免别人攻击。

将allow_anonymous改成不允许匿名登陆,并制定pwfile。

vim /etc/mosquittoConf/mosquitto.conf

在ubuntu上面使用mosquitto_passwd生成密码

就会在pwfile文件下生成账号和加密的密码root/admin

这是后登陆的时候就需要-u root -P admin进行登陆

mosquitto提供了mosquitto_passwd命令来生成账号密码等,不过这个方式不喜欢,因为没办法定制化自己想要的账号密码加密方式,所以做了一些小改动。

在myclient里面加我们想要的加密方式,然后在mosquitto broker的源码里面添加对应的解密方式即可。

如下,账号为client_name,然后通过rsa和base64生成密码,myclient的试下调用 mosquitto_username_pw_set 函数。

然后在mosquitto broker里面添加解密,位于mosquitto/src/security.c文件的 mosquitto_unpwd_check 函数里面。

另一个加密方式就是SSL认证,给客户端提供相应的证书,和配置协议(mqtt or websockets)一样,在配置文件监听的端口下面可以添加ssl的配置选项,每个port都可以单独配置ssl的证书内同容。

如下:从端口7885连接进来的设备需要下面的证书要求

设备的认证有单向认证和双向认证两种:

单向认证,只需要提供ca证书

双向认证,需要ca,pem,key三个

按步骤一步一步执行,生成证书(里面也可以指定各参数,有效时间):

按上面的步骤可以生成如下文件

在服务器端需要放三个文件

如果是单向认证,客户端只需要一个文件

如果是双向认证,客户端只需要三个文件

查看证书的有效时间

以上是关于5-Openwrt MQTT client使用的主要内容,如果未能解决你的问题,请参考以下文章

MQTT Client软件-MQTTBox

mqtt client api: 阻塞API

精简mqtt-client(python)

cmake:VS2015和GCC编译paho.mqtt C/C++ client

mqtt client python example

python 实现MQTT Client