ESP8266_24MQTT协议接入阿里云平台_接收数据

       之前写了ONENET平台的MQTT协议接入说明,但没过多久,它们给出的信息显示可能要收费。这次给大家更新一个阿里云平台的接入例程,毕竟马云爸爸还是比较大气的,相信不会那么抠门。

       方法、步骤、代码基本是类似的,只是细节位置需要修改一下。

废话有点多,不说了,开始吧!

1、平台账号注册

平台网址:https://account.aliyun.com

淘宝或者支付宝账号可以直接登录。

  1. 创建产品

和ONENET类似,添加你要控制的产品。

       我这里已经创建好了,0926LED01是我起的名字,意思是9月份26日创建的产品。创建的时候需要你填写一些参数和方式,有经验的自己看着写,没经验的参照我的:

       然后是添加设备:

       我这里devicename和产品名字写成一样的,方便记忆。点击确认以后,会弹出一个对话框,告诉你当前设备的相关信息:

       这个信息建议大家复制下来,存到一个txt文档里,后面随时会用。devicename变成了0926LED02,是因为我又创建了一个设备。

       对比ONEONET的产品、设备信息,你会发现,步骤基本是一致的。但是别太乐观,不一样的来了。介绍ONENET的时候,我曾经提到过一款软件,用来协助进行MQTT功能的测试,阿里云这里同样用到了。链接我放在这里:

https://help.aliyun.com/document_detail/86706.html?spm=a2c4g.11186623.6.831.72175800oCSt6t

       不同的地方有三个:Broker Address,Client ID,Password。这里不详细说明,感兴趣的,自己去看链接。

       先吐槽一下,链接里虽然说了如何生成这三个信息,但我操作了一上午,没有成功过一次。本人自认为动手能力还算可以,没想到在这里栽了跟头。后面还是找到了一个自动生成的工具,才算是解决了问题(不是官网推荐的那个)。

       后面又找了找,发现了一个不错的代码,可以自动生成这三个关键信息,总算是把问题解决了。上电测试:

       功能正常,打完收工!

       对了,说一句,相关的配置信息在aliyun_mqtt.h这个文件里改。

单片机爱好者

接入阿里云物联网平台之前,您需要先了解以下概念: 1. 阿里云物联网平台:提供物联网设备连接和管理、数据存储、消息通信等服务的云平台。 2. 设备影子:用于描述物联网设备在阿里云物联网平台上的虚拟影子,包括设备属性、设备状态和设备控制等信息。 3. MQTT协议:一种基于发布/订阅模式的通信协议,是物联网设备与云端之间常用的通信协议之一。 以下是ESP8266接入阿里云物联网平台的代码示例: ```c #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> // WiFi网络名称和密码 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // 阿里云物联网平台参数 const char* mqttServer = "your_MQTT_SERVER"; const int mqttPort = 1883; const char* mqttUsername = "your_MQTT_USERNAME"; const char* mqttPassword = "your_MQTT_PASSWORD"; const char* clientId = "your_CLIENT_ID"; const char* deviceName = "your_DEVICE_NAME"; const char* productKey = "your_PRODUCT_KEY"; // MQTT客户端对象 WiFiClient wifiClient; PubSubClient mqttClient(wifiClient); // 连接WiFi网络 void connectWiFi() { Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } // MQTT回调函数 void mqttCallback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } // 连接阿里云物联网平台 void connectAliyunIoTPlatform() { mqttClient.setServer(mqttServer, mqttPort); while (!mqttClient.connected()) { Serial.println("Connecting to MQTT server..."); if (mqttClient.connect(clientId, mqttUsername, mqttPassword)) { Serial.println("MQTT client connected"); // 订阅设备控制主题 char controlTopic[100]; sprintf(controlTopic, "/%s/%s/user/control", productKey, deviceName); mqttClient.subscribe(controlTopic); Serial.print("Subscribed to: "); Serial.println(controlTopic); // 更新设备影子 char updateTopic[100]; sprintf(updateTopic, "/sys/%s/%s/thing/shadow/update", productKey, deviceName); StaticJsonDocument<200> jsonDoc; JsonObject shadowObj = jsonDoc.createNestedObject("state").createNestedObject("reported"); shadowObj["power"] = true; shadowObj["temperature"] = 25; String updatePayload; serializeJson(jsonDoc, updatePayload); mqttClient.publish(updateTopic, updatePayload.c_str()); Serial.print("Update shadow: "); Serial.println(updatePayload); } else { Serial.print("MQTT connection failed with state "); Serial.print(mqttClient.state()); delay(2000); } } } void setup() { Serial.begin(115200); connectWiFi(); } void loop() { if (!mqttClient.connected()) { connectAliyunIoTPlatform(); } mqttClient.loop(); } ``` 相关问题: 1. 如何在阿里云物联网平台上创建设备? 2. 如何设置设备影子? 3. 如何通过MQTT协议阿里云物联网平台发送数据? 4. 如何从阿里云物联网平台接收数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值