草庐IT

图文手把手教程--ESP32 MQTT连接阿里云生活物联网平台

淘梦TaoDream 2023-11-26 原文

本文内容

1)在阿里云生活物联网平台,创建自有品牌项目,并在项目下创建产品“智能灯001”。

2)下载阿里云SDK-esp-aliyun使用例程smart_light,通过“云智能”手机APP控制。

3)在阿里云物联网平台,查看设备、管理设备、调试设备。

esp-aliyun下载地址:https://github.com/espressif/esp-aliyun

在应用商店,例如应用宝中下载阿里云APP,名字:云智能

一、首先完成集成开发环境搭建:

图文手把手教程(史上最强):windows下ESP32集成开发环境搭建和HelloWorld显示(乐鑫官方推荐方法-使用VSCode安装ESP-IDF插件)

二、在阿里云生活物联网平台,创建自有品牌项目。

2.1 阿里云参考文档:开发自有品牌项目的产品 - 生活物联网平台 - 阿里云

2.2 注册并登陆阿里云生活物联网平台:生活物联网平台(飞燕平台)

 

 

2.3 创建自有品牌项目。

2.4 在自有品牌项目下创建产品。

 

产品名称:智能灯001;所属品类:电工照明/灯;节点类型:设备;是否接入网关:否;

连网方式:wifi;数据格式:ICA标准数据格式(Airlink/JSON);使用ID2认证:否

按个人需求,适当删除一些功能。

1)产品展示

填写APP展示产品名称,例如:淘梦智能灯001 TDL。

 2)分享方式

勾选“使用公版APP控制产品”,分享方式:授权式。

 3)设备面板

按自己喜好,选择一个面板。

4)配网引导

注意:一定要选择"一键配网",否则会一直在扫描通道,无法配网。

 5)多语言管理

 “人机交互”的必填项填好后,非必填项根据个人需要,然后点击下一步,进入设备调试。

点击新增设备调试,在弹出框中,DeviceName为空,直接点击确定。

 勾选协议,点击产品发布,创建产品的流程即全部完成。

 三、创建smart_light例程。

1 )github下载阿里云SDK:https://github.com/espressif/esp-aliyun

注意:从github直接下载的阿里云SDK,名字为:esp-aliyun-master.zip,解压后需要修改名字,将esp-aliyun-master改为esp-aliyun,因为smart_light例程中关联的组件名字是esp-aliyun,如果不修改VSCODE中则会编译报错。

esp-aliyun的内容如下图所示:

2)将整个esp-aliyun文件夹复制到E:\ESP32-IDF\esp\esp-idf\components目录下。

3)将esp-aliyun文件夹下的examples复制到E:\ESP32-IDF\esp\esp-idf\examples目录下,并重命名为aliyun。

 

 

4)创建示例项目smart_light:VSCODE中->"查看"->”命令面板“->输入:Show Examples projects->选择Use current ESP-IDF(E:\ESP32-IDF\esp\esp-idf)->弹出示例ESP-IDF Examples,选择aliyun->solutions->smart_light->Create project using example smart_light->选择示例保存的路径。

例如:E:\ESP32-IDF\project-example,因ESP-IDF框架与示例是分离的,所以示例保存的路径可以随意,但需要注意:路径不能有中文和空格,否则报错。


 

 5)创建完成,如下图所示。 

 打开后,如果右下角提示是否允许Makefile Tools配置,则选择不允许。

如果不小心选择了允许,则会出现:头文件报警告“在 browse.path 中未找到包含文件”,即头文件有波浪线,无法跳转。原因:本地没有安装cmake。

解决办法:在.vscode->c_cpp_properties.json中删除"configurationProvider": "ms-vscode.cmake-tools"即可。

 6)一字不改,编译、下载到ESP32开发板。

 7)打开串口监控,显示错误信息:未烧录四元组,如下图所示。

 

四、配置分区表。

分区表的说明见官方文档:分区表 - ESP32 - — ESP-IDF 编程指南 latest 文档

分区表的说明见博客:ESP32分区表图解

1)打开SDK可视化配置,设定flash大小和设定“partition table”分区表。

左下角,点击SDK可视化配置按钮,进入配置,配置完后按保存。

 如果flash大小为2MB没有修改为4MB则会报错,如下图所示。

 2)重新编译,可以看到引用的是我们自定义的分区表。

 五、烧录阿里云四元组。

5.1 方法一:将四元组烧录到代码中,适合调试用,不适合量产。

1)修改如下代码,重新编译和下载。

// 产品设备信息设置函数声明
int HAL_SetProductKey(char *product_key);
int HAL_SetProductSecret(char *product_secret);
int HAL_SetDeviceName(char *device_name);
int HAL_SetDeviceSecret(char *device_secret);

void app_main()
{
    {   // 代码中配置产品设备信息-阿里四元组,用于调试
        HAL_SetProductKey("a1X4pTa1234");
        HAL_SetProductSecret("eFha1yQgo1rf1234");
        HAL_SetDeviceName("vDjabsTswpvLpw0F1234");
        HAL_SetDeviceSecret("f1c722c66873c7d789ab40ac380b1234");
    }

    factory_restore_init();

    lightbulb_init();

    conn_mgr_init();
    conn_mgr_register_wifi_event(wifi_event_handle);

    // { // 设置wifi账号密码
    //     const char *ssid = "Xiaomi_tao";
    //     const char *password = "123456";
 
    //     conn_mgr_set_wifi_config_ext((const uint8_t *)ssid, strlen(ssid), (const uint8_t *)password, strlen(password));
    // }

    IOT_SetLogLevel(IOT_LOG_INFO);

#ifdef CONFIG_USE_SOFTAP_CONFIG
    conn_mgr_set_sc_mode(CONN_SOFTAP_MODE);
#else
    conn_mgr_set_sc_mode(CONN_SC_ZERO_MODE);
#endif
    xTaskCreate((void (*)(void *))start_conn_mgr, "conn_mgr", 3072, NULL, 5, NULL);
}

2)在生活物联网平台,找到配网二维码,打开云智能APP扫描配网,可以看到配网成功,并能用APP控制,这里不详细讲解,在后面的四元组生成BIN文件烧录,再详讲。

5.2 方法二:将四元组生成bin文件进行烧录,适合量产。

1)打开...\esp-aliyun\config\mass_mfg,复制single_mfg_config.csv到smart_light项目下。

2)打开single_mfg_config.csv,填写四元组。

 3)四元组生成bin文件。

Python E:\ESP32-IDF\esp\esp-idf\components\nvs_flash\nvs_partition_generator\nvs_partition_gen.py generate single_mfg_config.csv single_mfg.bin 0x4000

 4)烧录四元组bin文件。

python E:\ESP32-IDF\esp\esp-idf\components\esptool_py\esptool\esptool.py write_flash 0x210000 single_mfg.bin

 5)擦除整片flash。

由于在“5.1方法一”时已经在代码中烧录过四元组以及配网,所以这里要擦掉flash,重新进行测试。

注意:erase_flash是擦除整片flash,在上面保存的四元组和wifi的帐号、密码都会被擦除。

python E:\ESP32-IDF\esp\esp-idf\components\esptool_py\esptool\esptool.py erase_flash

 6)重新烧录代码和四元组bin文件,打开串口监控。

如果四元组输入错误,则会报错,如下图所示。

六、使用云智能APP进行配网。

 1)在生活物联网平台,找到配网二维码,手机端打开云智能APP,扫描此二维码进行配网。

 

 

 

 

 2)串口监控中,可以看到配网成功并连接MQTT成功,可以使用APP进行控制。

七、在物联网平台查看设备、管理设备、调试设备。

阿里云网址:https://www.aliyun.com/

 

 

 

 

至此,ESP32 MQTT连接阿里云生活物联网平台已全部完成,愉快的玩耍吧!

完整的例程代码下载:https://download.csdn.net/download/felix_tao/86341001

使用例程,报错怎么办,解决办法如下:

1)打开VSCODE报错,c_cpp_properties.json无法找到E:\\ESP32-IDF...

解决办法:点击.vscode->c_cpp_properties.json,修改盘符即可,例如将E盘改为D盘。

2)编译工程报错:

[0/1] Re-running CMake...
FAILED: build.ninja 
CreateProcess failed: The system cannot find the file specified.
ninja: error: rebuilding 'build.ninja': subcommand failed

解决方法:清除编译产生的所有文件,左下角->点击垃圾桶图标(ESP-IDF Full Clean)->清除后,接着重新编译即OK。

本文参考了以下博客,鸣谢!

ESP32C3对接阿里云生活物联网平台_事在人wёi的博客-CSDN博客_esp32 阿里云

在windows使用VSCode编译esp-aliyun_坤仔N的博客-CSDN博客

有关图文手把手教程--ESP32 MQTT连接阿里云生活物联网平台的更多相关文章

  1. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  2. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  3. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  4. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  5. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  6. ruby-on-rails - Rails 和 MQTT : Subscribe to topic in background at server startup? - 2

    我想在服务器启动时在我的Rails应用程序中订阅一个mqtt主题,并保持订阅始终处于事件状态和运行状态。我正在使用这个mqttgem进行mqtt通信:https://github.com/njh/ruby-mqtt这是我现在拥有的:在application.rb中:config.after_initializedomqttSub=BackgroundMQTT.newmqttSub.runend后台MQTT类:classMQTTSubscriberdefrunThread.newdoMQTT::Client.connect(:host=>'localhost',:port=>1883,)

  7. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

  8. 【云计算】私有云在VMware下虚拟机的创建与配置(图文教程) - 2

    【适用平台】私有云   说明:完成私有云部分是需要两台虚拟机的,分别为controller、compute两个节点,但我们只需配置一台,然后克隆就方便多啦!需要用到的映射文件:关于vm的安装我就不介绍的,毕竟挺简单的,下面让我们看看基于私有云模块中,虚拟机的搭建吧。1、创建新的虚拟机,这里一般我会选择自定义,毕竟后面的配置都要根据私有云相关来进行搭建,会比较复杂。(如果是基础的可以选择典型,典型的满足一般虚拟机的配置) 2、选择稍后安装操作系统会比较方便后续的选择,这里你也可以自己选择自己的映像文件(但不建议)  3、我们是基于Linux下操作的,所以选择Linux客户机操作系统,版本选择自己

  9. 阿里云,华为云,腾讯云三大公有云厂商,香港地区主机测评 - 2

    三大公有云厂商,香港地区主机测评一、ping时延比对(厦门电信本地测试):Ping时延测试腾讯云阿里云华为云延迟率最低时延44ms,最高72ms,平均46ms47.242段:最低时延59ms,最高204ms,平均107ms最低时延45ms,最高93ms,平均47ms丢包率丢包率小有的ip段丢包率较大每个段都会有概率丢包阿里云:47.242段:最低时延59ms,最高204ms,平均107ms,有的ip段丢包率较大8.210段:最低时延64ms,最高232ms,平均119ms,丢包率较好腾讯云:最低时延44ms,最高72ms,平均46ms,丢包率小华为云:最低时延45ms,最高93ms,平均47m

  10. 阿里云Web应用防火墙-WAF - 2

    WAF可以对网站进行扫描,识别API漏洞。API安全如何设置API安全_Web应用防火墙-阿里云帮助中心API安全如何划分API业务用途?登录认证手机验证码认证数据保存数据查询数据导出数据分享数据更新数据删除数据增加下线注销信息发送信息认证邮件信息发送邮箱验证码认证账号密码认证账号注册API安全支持检测哪些敏感数据?敏感数据级别敏感数据类型非敏感数据(N)不涉及。特级敏感数据(L0)与一级敏感数据(L1)或二级敏感数据(L2)相同。单次响应中一级敏感数据(L1)较多时,升级为特级敏感数据(L0)。单次响应中二级敏感数据(L2)较多时,升级为一级敏感数据(L1)或特级敏感数据(L0)。一级敏感数

随机推荐