esp32-阿里云连接

#include <Arduino.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#include <U8g2lib.h>
#include <Wire.h>
#include <HTTPClient.h>

#define d3 14
#define d4 27
#define d5 26
#define d6 33

void init_port(){
    pinMode(d5,OUTPUT);
    pinMode(d6,OUTPUT);
}

const char *wifiName="big";
const char *wifiPwd="99999llll";
void connect_wifi(){
    WiFi.mode(WIFI_STA);
    WiFi.setAutoReconnect(true);
    WiFi.begin(wifiName,wifiPwd);
    while(!WiFi.isConnected()){
        digitalWrite(d6,!digitalRead(d6));
        delay(200);
        Serial.print(".");
    }
    digitalWrite(d6,HIGH);
    Serial.println();
    Serial.println("wifi success");
}




const char *mqttServerAddress="iot-06z00aldx0fj8fj.mqtt.iothub.aliyuncs.com";
const int mqttServerPort =1883;

const char *mqttClientID="k23g5qiRETs.LQT_001|securemode=2,signmethod=hmacsha256,timestamp=1734072176123|";
const char *mqttUserName="LQT_001&k23g5qiRETs";
const char *mqttPassword="af22c69937abc81641703b4bb1680ac0ee1887ae64d4074043e7ae163b54694f";

WiFiClient esp32TcpClient;
PubSubClient mqtt(esp32TcpClient);

void mqtt_connect_IOTCloud(){
    mqtt.setServer(mqttServerAddress,mqttServerPort);
    if(!mqtt.connected()){
        Serial.println("正在连接服务器:");
        if(mqtt.connect(mqttClientID,mqttUserName,mqttPassword)==false){
            digitalWrite(d5,LOW);
            Serial.println("MQTT Get ERROR!");
            return;
        }
    }
    digitalWrite(d5,HIGH);
    Serial.println("esp32已连接mqtt!");
}

const char *mqttPubTopic="/sys/k23g5qiRETs/LQT_001/thing/event/property/post";
void mqtt_public_payload(){
    String public_Payload="{\"params\":{\"light\":0}}";
    JsonDocument doc;
    digitalWrite(d4,HIGH);
    deserializeJson(doc,public_Payload);

    int light=analogRead(35);
    doc["params"]["light"]=light;

    public_Payload.clear();
    serializeJson(doc,public_Payload);
    Serial.println(public_Payload);
    mqtt.publish(mqttPubTopic,public_Payload.c_str());
    digitalWrite(d4,LOW);
}

void mqtt_disconnect_IOTCloud(){
    mqtt.disconnect();
    digitalWrite(d5,LOW);
    Serial.println("设备断开连接mqtt!");
}

void mqtt_recv_callback(char *topic,uint8_t *payload,unsigned int length){
    JsonDocument doc;
    deserializeJson(doc,payload);

    if(doc["params"]["switch"]==1){
        digitalWrite(d3,HIGH);
    }
    else if(doc["params"]["switch"]==0){
        digitalWrite(d3,LOW);
    }
}

const char *mqttSubTopic="/sys/k23g5qiRETs/LQT_001/thing/service/property/set";
void mqtt_subscribe_topic(){
    mqtt.setCallback(mqtt_recv_callback);
    if(true==mqtt.subscribe(mqttSubTopic))
        Serial.println("订阅成功");
    else
        Serial.println("订阅失败");
}

void setup() {

    Serial.begin(115200);
    init_port();
    connect_wifi();
    mqtt_connect_IOTCloud();
    Serial.println("wait 10 miao");
    delay(10000);
    mqtt_disconnect_IOTCloud();

    mqtt_subscribe_topic();
}

void loop() {
    mqtt.loop();
  mqtt_public_payload();
  delay(5000);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值