#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <ArduinoJson.h>
#include <LiquidCrystal_I2C.h> //引用I2C库
const char *id = "XXXXXXX";
const char *psw = "XXXXXXX";
char *serverip = "XXXXXXX";
int port = 1883;
char *serveruser = "XXXXXXX";
char *serverpsw = "XXXXXXX";
LiquidCrystal_I2C lcd(0x20, 16, 2);
WiFiClient espclient;
PubSubClient client(espclient);
DynamicJsonDocument doc(1024);
unsigned long lastSend;
void callback(char *topic, byte *payload, unsigned int length)
{
Serial.print("来自主题:");
Serial.println(topic);
Serial.print("内容:");
for (int i = 0; i < length; i++)
{
Serial.print((char)payload[i]);
}
deserializeJson(doc, payload);
// {"temperature":22.70,"humidity":54.00}
Serial.println("");
String temperature = doc["temperature"].as<String>();
Serial.print("temperature: ");
Serial.println(temperature);
String humidity = doc["humidity"].as<String>();
Serial.print("humidity: ");
Serial.println(humidity);
Serial.println("");
Serial.println("------------------------------------");
lcd.init();
lcd.setCursor(0,0);
lcd.print("tem: ");
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("hum: ");
lcd.print(humidity);
}
void js()
{
client.subscribe("Wang_Topic/1");
}
void fs()
{
client.publish("Wang_Topic/3", "测试测试from ESP32");
Serial.println("已发送测试消息");
}
void setup()
{
Serial.begin(9600);
lcd.init(); // 初始化LCD
lcd.backlight(); //设置LCD背景等亮
client.setServer(serverip, 1883);
while (WiFi.status() != WL_CONNECTED)
{
Serial.println("正在连接至wifi...");
WiFi.begin(id, psw);
delay(2500);
}
Serial.println("已连接.");
client.setServer(serverip, port);
client.setCallback(callback);
while (!client.connected())
{
Serial.println("正连接至MQTT服务器...");
if (client.connect("测试", serveruser, serverpsw))
{
Serial.println("登录成功...");
}
else
{
Serial.println("登陆失败,重新连接...");
Serial.println(client.state());
delay(2000);
}
}
}
void loop()
{
client.loop();
if (millis() - lastSend > 2000)
{
delay(1500);
js();
fs();
lastSend = millis();
}
}
esp32订阅mqtt显示到1602(IIC)
于 2022-10-26 15:19:57 首次发布