esp32订阅mqtt显示到1602(IIC)

#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();
  }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值