喷淋实验--嵌入式实训
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;
}
运行结果:
运行视频如下:
喷淋实验--实训