#include <ArduinoMqttClient.h>
#include <ESP8266WiFi.h>
WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);
const char *ssid = "wifi-sid";
const char *password = "wifi_passwd";
const char broker[] = "100.64.88.200";
int port = 1883;
void connectWiFi() {
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
unsigned long startAttemptTime = millis();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (millis() - startAttemptTime > 20000) { // Таймаут 20 сек
Serial.println("Failed to connect to WiFi");
return;
}
}
}
void connectMQTT() {
Serial.print("Connecting to MQTT...");
unsigned long startAttemptTime = millis();
mqttClient.setUsernamePassword("user", "passwd");
while (!mqttClient.connect(broker, port)) {
delay(1000);
Serial.print(".");
if (millis() - startAttemptTime > 20000) { // Таймаут 20 сек
Serial.println("Failed to connect to MQTT");
return;
}
}
Serial.println("Connected to MQTT!");
mqttClient.subscribe("sensor/AM2302/temp");
mqttClient.subscribe("sensor/AM2302/hum");
}
void setup() {
connectWiFi();
connectMQTT();
}
void loop() {
int messageSize = mqttClient.parseMessage();
if (messageSize) {
String message = "";
String topic = mqttClient.messageTopic();
while (mqttClient.available()) {
char c = (char)mqttClient.read();
message += c;
}
Serial.print("Received: ");
Serial.print(topic);
Serial.print(" -> ");
Serial.println(message);
// Конвертация строки в число
float tempValue = message.toFloat();
// Обновление данных по соответствующему датчику
if (topic == "sensor/AM2302/temp") {
temp_AM2302 = tempValue;
} else if (topic == "sensor/AM2302/hum") {
hum_AM2302 = tempValue;
}
}
}