#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);
}
esp32-阿里云连接
于 2024-12-13 16:15:54 首次发布