linux下一个c程序通过传输不同的参数连接阿里云、腾讯云、华为云。
MQTT连接阿里云:linux环境下MQTT连接阿里云_li4143的博客-CSDN博客
MQTT连接腾讯云:linux环境下MQTT连接腾讯云_li4143的博客-CSDN博客
MQTT连接华为云:linux环境下MQTT连接华为云_li4143的博客-CSDN博客
代码中用到了mosquitto、cJSON、iniparser库。本文章只是简单描述一下通过修改配置文件实现cJSON格式上报数据到云平台。
mosquitto库的下载:
MQTT--mosquitto实现发布与订阅_mosquitto_publish_last breath的博客-CSDN博客
iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。iniparser库的API可以对ini文件(配置文件)进行解析、设置、删除等操作。而且iniparser 的一条原则是 section 和 key 大小写无关,写入的字符串全部小写化,取出的字符串也全部小写化。
iniperser库的下载:
主要用到的四个文件分别是dictionary.c,iniparser.c,dictionary.h和iniparser.h。
需要注意的是,定位一个key是用section:key来表示的,所以不同section下的key名称是可以相同的。
注意,.ini配置文件中分号(;)代表注释,所以带分号的参数可以有双引号括起来。
因为连接阿里云、腾讯云以及华为云要用到的参数基本都一样,上报格式也差不多,所以我们可以声明一个数组来储存参数。这样就可以一个程序通过传输不同的参数链接不同的云平台。
使用iniparser函数获取配置文件中的数值,ini_path是配置文件的路径
cJSON库的下载:git clone https://github.com/DaveGamble/cJSON.git
保存上传数据格式
cJSON_Print()的返回值是自动申请空间的,所以用完之后记得用free()函数释放他申请的空间。
阿里云上报格式:
腾讯云上报格式:
华为云上报格式:
上云用到的主要函数如下。因为我们声明了数组储存连接所用到的参数,并且也将上报格式用cJSON函数保存在msg字符串中。
这是我写的一些关于mqtt上云的代码,有兴趣的小伙伴可以下载或者去网站上看看。
下载:
因为我用的ds18b20的温度模块,先要去获取到这个模块检测到的温度,再去连接云平台,所以你的树莓派上没有这个模块的话,下载了也跑不起来。
我代码中默认连接的是参数1阿里云,参数2是连接腾讯云,参数3是华为云。
./a.out -p 1 ./a.out -p 2 ./a.out -p 3