Реализованы sensor-1 (DHT22, телеметрия temperature/humidity) и
реле-актуаторы light-1/pump-1/fan-1 (turn_on/turn_off/set_level) по
протоколу MQTT платформы home_automatization (devices/{id}/telemetry|commands|ack).
41 lines
1.0 KiB
C++
41 lines
1.0 KiB
C++
#include "net.h"
|
|
|
|
#include <Arduino.h>
|
|
#include <WiFi.h>
|
|
|
|
#include "config.h"
|
|
|
|
void netBegin() {
|
|
WiFi.mode(WIFI_STA);
|
|
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
|
|
|
Serial.print("[net] connecting to ");
|
|
Serial.print(WIFI_SSID);
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
delay(500);
|
|
Serial.print(".");
|
|
}
|
|
Serial.print("\n[net] connected, ip=");
|
|
Serial.println(WiFi.localIP());
|
|
}
|
|
|
|
// Вызывается из loop() на каждой итерации — переподключает Wi-Fi,
|
|
// если связь пропала (роутер перезагрузился, слабый сигнал и т.д.).
|
|
void netEnsureConnected() {
|
|
if (WiFi.status() == WL_CONNECTED) {
|
|
return;
|
|
}
|
|
Serial.println("[net] connection lost, reconnecting");
|
|
WiFi.disconnect();
|
|
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
|
|
|
unsigned long start = millis();
|
|
while (WiFi.status() != WL_CONNECTED && millis() - start < 15000) {
|
|
delay(250);
|
|
}
|
|
if (WiFi.status() == WL_CONNECTED) {
|
|
Serial.print("[net] reconnected, ip=");
|
|
Serial.println(WiFi.localIP());
|
|
}
|
|
}
|