喷淋实验--嵌入式实训
2023-12-24 17:32:55
喷淋实验--嵌入式实训
1.MQTT通信原理
采集信息:
小程序/Linux 订阅者 1703161172612/AIOTSIM2APP
元宇宙 发布者 1703161172612/AIOTSIM2APP
Linux订阅的主题是元宇宙发布的主题
控制设备:
小程序/Linux 发布者 1703161172612/APP2AIOTSIM
元宇宙 订阅者 1703161172612/APP2AIOTSIM
Linux发布的主题是元宇宙订阅的主题
2.MQTT库的移植
目的:让Linux操作系统支持MQTT通信。
- MQTT库移植的步骤在群文件中下载MQTT源码文件压缩包paho.mqtt.c-1.3.0.tar.gz
- 将源码文件压缩包放到Linux操作系统中
- 使用tar?-xvf?paho.mqtt.c-1.3.0.tar.gz命令解压MQTT库文件压缩包
4.?????????cd?paho.mqtt.c-1.3.0/install/
????????????sudo?cp?include/* /usr/include/
????????????sudo?cp?-d?lib/*so* /usr/lib/
3.代码流程
打开MQTT
订阅主题(元宇宙的发布主题)
while(1)
{
获取数据
if(数据 > 最大值)
{
发送消息(给元宇宙的订阅主题发消息,喷淋关);
}
else if(数据 < 最小值)
{
发送消息(给元宇宙的订阅主题发消息,喷淋开);
}
打印数据;
sleep(1);
}
关闭MQTT;
函数接口:
打开MQTT
mqtt_init();
订阅函数和发布函数
int mqtt_subscribe(const char *topic)
功能:订阅主题
参数:元宇宙发布主题
int mqtt_publish(const char *topic, char *msg)
功能:发布消息
参数:元宇宙的订阅主题 消息
获取数据
float get_virtual_env()
功能:获取土壤湿度数据
参数:空
关闭MQTT;
exit_mqtt();
#include<stdio.h>
#include"mqtt.h"
#include<unistd.h>
int main(int argc, char *argv[]){
//1-连接服务器
mqtt_init();
//2-订阅元宇宙平台主题,获得数据串
//通过目标节点的发布主题,才能的得到发布的内容
mqtt_subscribe("1703406852492/AIOTSIM2APP");
//3.定义变量接收到存储解析的数据
float soilHum=0;
//4.循环获取数据,下发控制指令
while (1){
sleep(1);
soilHum= get_virtual_env();
if (soilHum>80){
mqtt_publish("1703406852492/APP2AIOTSIM", "{\"irrigated\":false}");
mqtt_publish("1703406852492/APP2AIOTSIM", "{\"alarm\":true}");
printf("关闭喷淋,警报响起。。。。\n");
}
else if (soilHum<10){
mqtt_publish("1703406852492/APP2AIOTSIM", "{\"irrigated\":true}");
mqtt_publish("1703406852492/APP2AIOTSIM", "{\"alarm\":false}");
printf("打开喷淋,警报关闭。。。。\n");
}
sleep(1);
printf("当前湿度:%.2f\n", soilHum);
}
exit_mqtt();
return 0;
}
运行结果:
运行视频如下:
喷淋实验--实训
文章来源:https://blog.csdn.net/m0_63064861/article/details/135183231
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!