代码拉取完成,页面将自动刷新
此项目通过树莓派的ds18b20传感器获取温度,并将获取到的温度上报至华为云服务器
第二次输入make ,显示开源库都已经编译好,编译操作已经进行
_
wzy@cloud-ubuntu18:~/huaweiyun/mqtt_huaweiyun$ make
make -C 3rdlib
make[1]: Entering directory '/home/wzy/huaweiyun/mqtt_huaweiyun/3rdlib'
bash build.sh
sqlite-autoconf-3290000 already compile...
mosquitto-1.5.5 already compile...
iniparser-4.1 already compile...
zlog-1.2.15 already compile...
cJSON-1.7.14 already compile...
make[1]: Leaving directory '/home/wzy/huaweiyun/mqtt_huaweiyun/3rdlib'
gcc -I /home/wzy/huaweiyun/mqtt_huaweiyun/3rdlib/install/include *.c -o mqtt -L /home/wzy/huaweiyun/mqtt_huaweiyun/3rdlib/install/lib -lmosquitto -lcjson -liniparser -lzlog -lsqlite3
./mqtt: error while loading shared libraries: libcjson.so.1: wrong ELF class: ELFCLASS32
输入命令更改环境变量:
export LD_LIBRARY_PATH=./3rdlib/install/lib
./mqtt -c ./etc/mqtt.conf
运行示例wzy@cloud-ubuntu18:~/huaweiyun/mqtt_huaweiyun$ ./mqtt -c ./etc/mqtt.conf
2021-08-16 15:37:05.154651 NOTICE (mqtt_client.c:113) - zlog init successfully
2021-08-16 15:37:05.245201 NOTICE (mqtt_client.c:190) - buff: {"services":[{"service_id":"112233ww","properties":{"devID":"RPI3B-0001","time":1629099425,"temperature":27.8}}]} will be seted
2021-08-16 15:37:05.245373 NOTICE (mqtt_client.c:208) - publish successfully!
2021-08-16 15:37:08.245597 NOTICE (mqtt_client.c:217) - There is no data in the database!
2021-08-16 15:37:11.246014 NOTICE (mqtt_client.c:217) - There is no data in the database!
2021-08-16 15:37:11.246191 NOTICE (mqtt_client.c:190) - buff: {"services":[{"service_id":"112233ww","properties":{"devID":"RPI3B-0001","time":1629099431,"temperature":27.8}}]} will be seted
2021-08-16 15:37:11.246271 NOTICE (mqtt_client.c:208) - publish successfully!
^C2021-08-16 15:37:12.086598 NOTICE (mqtt_client.c:217) - There is no data in the database!
文件说明:
程序树状图:
mqtt_client.c :主程序
mqtt_paser.c /mqtt_paser.h :从配置文件mqtt.conf 中解析需要用到的参数
database.c /database.h :基于sqlite3数据库的增删查工作。主要工作为将发布失败的数据存入数据库,并在下一次发布时将数据库中的数据发送出去。
cjson.c /cjson.h : 把即将要发送的数据打包成cjson格式和解析从华为云接收到的数据。
ds18b20.c /ds18b20.h : 从存放温度的文件中获取数据并转化为正确的温度
makefile:存放程序编译、文件删除的命令选项
/etc: 存放mqtt配置文件和zlog配置文件
/3rdlib : build.sh: 下载编译开源库。如zlog、mosquitto等。 makefile:调用buid.sh和一些清除工作。可以被上一层的makefile调用。
命令说明:
1.客户端数据发布至华为云
021-08-17 11:21:00.638111 NOTICE (mqtt_client.c:190) - buff: {"services":[{"service_id":"112233ww","properties":{"devID":"RPI3B-0001","time":1629170460,"temperature":27.8}}]} will be seted
2021-08-17 11:21:00.638251 NOTICE (mqtt_client.c:208) - publish successfully!
2.数据库操作
2.1 将数据插入数据库中
2021-08-17 11:26:41.848298 NOTICE (mqtt_client.c:237) - buff: {"services":[{"service_id":"112233ww","properties":{"devID":" RPI3B-0001","time":1629170795,"temperature":27.8}}]} in database will be seted
2021-08-17 11:26:41.848375 ERROR (mqtt_client.c:240) - publish failure : No such file or directory!
2.2 从数据库中取出数据并发布
2021-08-17 11:29:06.968724 NOTICE (mqtt_client.c:223) - There have 1 row data in the database!
2021-08-17 11:29:06.968943 NOTICE (mqtt_client.c:237) - buff: {"services":[{"service_id":"112233ww","properties":{"devID":" RPI3B-0001","time":1629170795,"temperature":27.8}}]} in database will be seted
2021-08-17 11:29:06.969028 NOTICE (mqtt_client.c:247) - publish data in database successfully!
2.3 删除数据
2021-08-17 11:29:06.969028 NOTICE (mqtt_client.c:247) - publish data in database successfully!
2021-08-17 11:29:06.978743 NOTICE (database.c:151) - delete data from database successfully!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。