ESP8266,APP Inventor 基于MQTT协议连接阿里云物联网平台,实现数据上传及下发。

一  前言

阿里云平台配置在这里不过多叙述。本文使用MQTT协议上传传感器信息,手机上位机显示传感器信息,并且能够发送指令控制硬件外围设备。

二  实现框图

三  ESP8266关键实现代码

3.1  MQTT协议连接参数

MQTT连接参数共有五个,可以在设备界面的‘MQTT连接参数’下找到。

3.2  实现代码

//在这里修改MQTT客户端信息
#define MQTT_HOST "iot-06z00fk3q0an6dd.mqtt.iothub.aliyuncs.com"
#define MQTT_PORT 1883
#define MQTT_USER "ESP32&k14i5jqUaww"
#define MQTT_PASSWD "3089e92bd8119d9241aaf8de6c8416b85635a8a5d72f35e7494e337cc5eb9488"
#define MQTT_CLIENTID "k14i5jqUaww.ESP32|securemode=2,signmethod=hmacsha256,timestamp=1713347523756|"

其中MQTT_HOST和MQTT_PORT。为MQTT服务器地址和端口。这两项内容可以固定。其余三项因人而异。根据自己实际的MQTT连接参数填入。

//MQTT订阅主题,下发消息接收函数
void callback(char* topic, byte* payload, unsigned int length) {
    
}

在该函数中解析手机上位机发送的命令。命令字符串格式为Json格式,需要用到ArduinoJson库。可以在官网找到相应例程。

    StaticJsonDocument<200> jsonBuffer;   //声明一个JsonDocument对象,长度200
    // 对象嵌套
    JsonObject root = jsonBuffer.createNestedObject("params"); //添加一个对象节点

    root["tem"] = tem;        //数据1
    root["rain"] = rain; //数据2
    root["light"] = light; //数据3

    jsonBuffer["version"]="1.0";
    jsonBuffer["method"]="thing.event.property.post";
    String output;
    serializeJson(jsonBuffer, output);  // 序列化JSON数据并导出字符串
    Serial.println(output);             // 串口打印最后输出的字符串
    client.publish(up_topic,output.c_str());//数据上传

上图为使用ArduinoJson库将上传的信息转化为Json字符串,如果上传信息不为Json格式将会报错!

四  手机上位机实现

简单开发一个手机上位机,用于观测数据及下发指令。开发环境为APP Inventor。使用了三方MQTT插件UrsAI2Paho。该插件的下载链接:

https://download.csdn.net/download/qq_53038430/89480544?spm=1001.2014.3001.5503

APP Inventor实现功能逻辑为代码块堆积,十分简单。APP如下所示:

主要部分代码块如下所示。

上面代码块为实现MQTT连接部分代码。总共就只有这点,是不是很简单呢。

上面代码块实现功能为,接收来自手机APP订阅主题的消息并将信息显示在屏幕上。

上面代码块是手机向硬件设备发送开灯命令,硬件收到命令流后,经解析Json数据即可获取下发的指令信息。

五  结语

想获取APP Inventor工程包的童鞋,请关注后,后台私信我,我把工程私发发给你。

  • 26
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hyacinth8201

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值