Select Git revision
network.cpp
network.cpp 2.01 KiB
#include <Arduino.h>
#include "config.h"
#include "utils.h"
#include "network.h"
MDNSResponder mdns;
AsyncWebServer server(80);
AsyncEventSource events("/events");
void setupNetwork()
{
setupWifi();
setupMDNS();
setupOTA();
setupWebserver();
}
void setupWifi()
{
ESPConnect.autoConnect(HOSTNAME);
if (ESPConnect.begin(&server))
{
logLine("Connected to WiFi: ", false);
logLine(WiFi.localIP().toString());
}
else
{
logLine("Failed to connect to WiFi");
}
}
void setupMDNS()
{
if (mdns.begin(HOSTNAME))
{
logLine("MDNS responder started");
mdns.addService("http", "tcp", 80);
}
else
{
logLine("MDNS.begin failed");
}
}
void setupOTA()
{
ArduinoOTA.onStart([]()
{ events.send("Update Start", "ota"); });
ArduinoOTA.onEnd([]()
{ events.send("Update End", "ota"); });
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total)
{
char p[32];
sprintf(p, "Progress: %u%%\n", (progress/(total/100)));
events.send(p, "ota"); });
ArduinoOTA.onError([](ota_error_t error)
{
if(error == OTA_AUTH_ERROR) events.send("Auth Failed", "ota");
else if(error == OTA_BEGIN_ERROR) events.send("Begin Failed", "ota");
else if(error == OTA_CONNECT_ERROR) events.send("Connect Failed", "ota");
else if(error == OTA_RECEIVE_ERROR) events.send("Recieve Failed", "ota");
else if(error == OTA_END_ERROR) events.send("End Failed", "ota"); });
ArduinoOTA.setHostname(HOSTNAME);
ArduinoOTA.begin();
}
void setupWebserver()
{
LittleFS.begin();
server.serveStatic("/", LittleFS, "/");
events.onConnect([](AsyncEventSourceClient *client)
{ client->send("hello!", NULL, millis(), 1000); });
server.addHandler(&events);
server.onNotFound([](AsyncWebServerRequest *request)
{ request->send(404); });
server.begin();
}
void networkLoop()
{
ArduinoOTA.handle();
}
void sendEvent(const char *tag, const char *msg) {
events.send(msg, tag);
}