入门小白的笔记3.arduino 环境下ESP32或ESP8266连接阿里云物联网——Arduino IDE(Arduino IDE程序介绍)

         在上一节中,介绍了如何加载相关的库,值得注意的是,不一定越新的库越好,之前遇到过一版,一直连接不上,实际上是库函数封装的和阿里云接口对不上;  

         此外注意的是,你需要将代码中的SSID、PASSWORD、MQTT_SERVER、DEVICE_ID、PRODUCT_KEY和DEVICE_SECRET替换为你自己的WiFi名称、密码、MQTT服务器地址、设备ID、产品Key和设备Secret

         此外,你还需要在你的阿里云物联网平台中创建一个设备,然后将该设备的连接信息(包括MQTT服务器地址,设备ID、产品Key和设备Secret)填写到代码中的相应位置。

        最后,你需要替换代码中的“your_topic”为你要订阅的MQTT主题;

        具体介绍看注释;

        关于,阿里云物联网平台中建立工程,在后续的文章会一步一步介绍;

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// WiFi连接参数
const char* SSID = "你的WiFi名称";
const char* PASSWORD = "你的WiFi密码";
// 阿里云MQTT连接参数
const char* MQTT_SERVER = "你的MQTT服务器地址";
const int MQTT_PORT = 1883;
const char* DEVICE_ID = "你的设备ID";
const char* PRODUCT_KEY = "你的产品Key";
const char* DEVICE_SECRET = "你的设备Secret";
// MQTT客户端
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
// WiFi连接回调函数
void WiFiEvent(WiFiEvent_t event) {
    switch(event) { 
        case WIFI_EVENT_STAMODE_GOT_IP:
                Serial.print("WiFi connected, IP address: ");//打印状态查看
                Serial.println(WiFi.localIP());//打印状态查看
                mqttClient.setServer(MQTT_SERVER, MQTT_PORT);
                break;
        case WIFI_EVENT_STAMODE_DISCONNECTED:
                Serial.println("WiFi disconnected");//打印状态查看
                break;
        default:
                break;
                }
}

        关于具体函数意义,可以去Arduino路径下------> libraries里面的,用Notepad++或者TXT打开查看;

// MQTT连接回调函数
void MQTTEvent(char* topic, byte* payload, unsigned int length) {
        Serial.print("Received message on topic: ");//打印状态查看
        Serial.print(topic);//打印状态查看
        Serial.print(". Message: ");//打印状态查看

        for (int i = 0; i < length; i++) {
            Serial.print((char)payload[i]);
        }
        Serial.println();
}

void setup() {
    Serial.begin(115200);
// 连接WiFi
    WiFi.disconnect();
    WiFi.mode(WIFI_STA);//宏定义好了,不需要改
    WiFi.onEvent(WiFiEvent);
    WiFi.begin(SSID, PASSWORD);

// 连接MQTT
    while (!mqttClient.connected()) {
    // 生成设备连接信息
        long timestamp = (long)(millis() / 1000);
        char client_id[100];
        sprintf(client_id, "%s|%d|securemode=3,signmethod=hmacsha1|", DEVICE_ID, timestamp);
        char username[100];
        sprintf(username, "%s&%s", PRODUCT_KEY, DEVICE_ID);
        char password[100];
        sprintf(password, "hmacsha1|%s|%d|12345", DEVICE_SECRET, timestamp);

    // 连接MQTT
    if (mqttClient.connect(client_id, username, password)) {
        Serial.println("MQTT connected");
        mqttClient.subscribe("your_topic");  // 订阅MQTT主题
        mqttClient.setCallback(MQTTEvent);   // 设置MQTT回调函数
    } // 连接MQTT
    if (mqttClient.connect(client_id, username, password)) {
        Serial.println("MQTT connected");
        mqttClient.subscribe("your_topic");  // 订阅MQTT主题
        mqttClient.setCallback(MQTTEvent);   // 设置MQTT回调函数
    } else {
        Serial.print("MQTT connection failed, rc=");
        Serial.print(mqttClient.state());
        Serial.println(" retrying in 5 seconds...");
        delay(5000);
    }
}

}
void loop() {
mqttClient.loop();  // 处理MQTT消息
}

        也可前往官网查看;

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值