#include <WiFi.h>
#include <PubSubClient.h>
// Wi-Fi налаштування
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// MQTT налаштування
const char* mqttServer = "test.mosquitto.org";
const int mqttPort = 1883;
const char* mqttTopic = "home/sensors";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(9600); // Серійний порт для взаємодії
Serial.println("[ESP32] Ready to receive data.");
// Підключення до Wi-Fi
Serial.print("[ESP32] Connecting to Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n[ESP32] Connected to Wi-Fi");
// Підключення до MQTT
client.setServer(mqttServer, mqttPort);
connectToMQTT();
}
void loop() {
if (Serial.available()) {
// Отримуємо дані від Python
String data = Serial.readStringUntil('\n'); // Читаємо до нового рядка
data.trim(); // Видаляємо зайві пробіли
if (data.length() > 0) {
// Виводимо отримані дані
Serial.println("[ESP32] Received: " + data);
// Надсилаємо дані до MQTT
if (client.connected()) {
client.publish(mqttTopic, data.c_str());
Serial.println("[ESP32] Sent to MQTT: " + data);
} else {
Serial.println("[ESP32] MQTT connection lost. Reconnecting...");
reconnectMQTT();
}
}
}
client.loop(); // Підтримка MQTT-з'єднання
}
void connectToMQTT() {
while (!client.connected()) {
Serial.println("[ESP32] Connecting to MQTT...");
if (client.connect("ESP32Client")) {
Serial.println("[ESP32] Connected to MQTT");
} else {
Serial.print("[ESP32] Failed. State: ");
Serial.println(client.state());
delay(2000);
}
}
}
void reconnectMQTT() {
connectToMQTT();
}