#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


#include <ESP8266WiFi.h>
#include <PubSubClient.h>

#define OLED_ADDRESS 0x78

// OLED 模块引脚定义
#define OLED_RESET_PIN 4

Adafruit_SSD1306 display(OLED_RESET_PIN);

const char* ssid = "ChinaNet-CFG5J5";
const char* password = "13926801345";
const char* mqttServer = "121.41.171.134";
const int mqttPort = 1883;

WiFiClient espClient;
PubSubClient client(espClient);
// 控制引脚
const int ledPin = LED_BUILTIN;

void setup() {
Serial.begin(115200);

  // 连接到 Wi-Fi 网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to Wi-Fi. IP Address: ");
Serial.println(WiFi.localIP());

  // 设置 MQTT 服务器
client.setServer(mqttServer, mqttPort);

  // 将 LED 引脚设置为输出模式
pinMode(ledPin, OUTPUT);

  // 初始化 OLED 显示屏
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Hello, World!");
display.display();
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();

  // 在此处添加你的主程序逻辑
  // 将 LED 点亮
digitalWrite(ledPin, HIGH);

  // 延迟一段时间
delay(1000);

  // 将 LED 关闭
digitalWrite(ledPin, LOW);

  // 延迟一段时间
delay(1000);
}

void reconnect() {
  // 重新连接到 MQTT 服务器
while (!client.connected()) {
Serial.print("Connecting to MQTT server...");
if (client.connect("ESP8266Client")) {
Serial.println("Connected!");
} else {
Serial.print("Failed, rc=");
Serial.print(client.state());
Serial.println(" Retrying in 5 seconds...");
delay(5000);
}
}
}