喷淋实验--嵌入式实训

2023-12-24 17:32:55

喷淋实验--嵌入式实训

1.MQTT通信原理



采集信息:

小程序/Linux 订阅者 1703161172612/AIOTSIM2APP

元宇宙 发布者 1703161172612/AIOTSIM2APP

Linux订阅的主题是元宇宙发布的主题


控制设备:

小程序/Linux 发布者 1703161172612/APP2AIOTSIM

元宇宙 订阅者 1703161172612/APP2AIOTSIM

Linux发布的主题是元宇宙订阅的主题

2.MQTT库的移植

目的:让Linux操作系统支持MQTT通信。

  1. MQTT库移植的步骤在群文件中下载MQTT源码文件压缩包paho.mqtt.c-1.3.0.tar.gz
  2. 将源码文件压缩包放到Linux操作系统中
  3. 使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。