Renamed WifiSettings to NetworkSettings and implemented first ethernet initialization
This commit is contained in:
parent
9edd35444d
commit
c7aa22ce6c
@ -2,11 +2,12 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DNSServer.h>
|
#include <DNSServer.h>
|
||||||
|
#include <WiFi.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class WiFiSettingsClass {
|
class NetworkSettingsClass {
|
||||||
public:
|
public:
|
||||||
WiFiSettingsClass();
|
NetworkSettingsClass();
|
||||||
void init();
|
void init();
|
||||||
void loop();
|
void loop();
|
||||||
void applyConfig();
|
void applyConfig();
|
||||||
@ -17,6 +18,7 @@ private:
|
|||||||
void setHostname();
|
void setHostname();
|
||||||
void setStaticIp();
|
void setStaticIp();
|
||||||
void setupMode();
|
void setupMode();
|
||||||
|
void NetworkEvent(WiFiEvent_t event);
|
||||||
bool adminEnabled = true;
|
bool adminEnabled = true;
|
||||||
bool forceDisconnection = false;
|
bool forceDisconnection = false;
|
||||||
int adminTimeoutCounter = 0;
|
int adminTimeoutCounter = 0;
|
||||||
@ -30,4 +32,4 @@ private:
|
|||||||
bool dnsServerStatus = false;
|
bool dnsServerStatus = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern WiFiSettingsClass WiFiSettings;
|
extern NetworkSettingsClass NetworkSettings;
|
||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "MqttSettings.h"
|
#include "MqttSettings.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "WiFiSettings.h"
|
#include "NetworkSettings.h"
|
||||||
#include <AsyncMqttClient.h>
|
#include <AsyncMqttClient.h>
|
||||||
#include <Ticker.h>
|
#include <Ticker.h>
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
@ -54,7 +54,7 @@ void MqttSettingsClass::performConnect()
|
|||||||
willTopic = getPrefix() + config.Mqtt_LwtTopic;
|
willTopic = getPrefix() + config.Mqtt_LwtTopic;
|
||||||
mqttClient.setWill(willTopic.c_str(), 2, config.Mqtt_Retain, config.Mqtt_LwtValue_Offline);
|
mqttClient.setWill(willTopic.c_str(), 2, config.Mqtt_Retain, config.Mqtt_LwtValue_Offline);
|
||||||
|
|
||||||
clientId = WiFiSettings.getApName();
|
clientId = NetworkSettings.getApName();
|
||||||
mqttClient.setClientId(clientId.c_str());
|
mqttClient.setClientId(clientId.c_str());
|
||||||
|
|
||||||
mqttClient.connect();
|
mqttClient.connect();
|
||||||
|
|||||||
@ -2,24 +2,66 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2022 Thomas Basler and others
|
* Copyright (C) 2022 Thomas Basler and others
|
||||||
*/
|
*/
|
||||||
#include "WiFiSettings.h"
|
#include "NetworkSettings.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#ifdef OPENDTU_ETHERNET
|
||||||
|
#include <ETH.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
WiFiSettingsClass::WiFiSettingsClass()
|
NetworkSettingsClass::NetworkSettingsClass()
|
||||||
: apIp(192, 168, 4, 1)
|
: apIp(192, 168, 4, 1)
|
||||||
, apNetmask(255, 255, 255, 0)
|
, apNetmask(255, 255, 255, 0)
|
||||||
{
|
{
|
||||||
dnsServer.reset(new DNSServer());
|
dnsServer.reset(new DNSServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::init()
|
void NetworkSettingsClass::init()
|
||||||
{
|
{
|
||||||
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
WiFi.onEvent(std::bind(&NetworkSettingsClass::NetworkEvent, this, _1));
|
||||||
setupMode();
|
setupMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::setupMode()
|
void NetworkSettingsClass::NetworkEvent(WiFiEvent_t event)
|
||||||
|
{
|
||||||
|
switch (event) {
|
||||||
|
#ifdef OPENDTU_ETHERNET
|
||||||
|
case ARDUINO_EVENT_ETH_START:
|
||||||
|
Serial.println("ETH start");
|
||||||
|
ETH.setHostname("esp32-ethernet");
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_ETH_STOP:
|
||||||
|
Serial.println("ETH stop");
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_ETH_CONNECTED:
|
||||||
|
Serial.println("ETH connected");
|
||||||
|
ETH.config(INADDR_NONE, INADDR_NONE, INADDR_NONE, INADDR_NONE);
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_ETH_GOT_IP:
|
||||||
|
Serial.println("ETH got IP");
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_ETH_DISCONNECTED:
|
||||||
|
Serial.println("ETH disconnected");
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
||||||
|
Serial.println("WiFi disconnected");
|
||||||
|
break;
|
||||||
|
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
||||||
|
Serial.println("WiFi got ip");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Serial.printf("Event: %d\n", event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkSettingsClass::setupMode()
|
||||||
{
|
{
|
||||||
if (adminEnabled) {
|
if (adminEnabled) {
|
||||||
WiFi.mode(WIFI_AP_STA);
|
WiFi.mode(WIFI_AP_STA);
|
||||||
@ -34,16 +76,19 @@ void WiFiSettingsClass::setupMode()
|
|||||||
dnsServerStatus = false;
|
dnsServerStatus = false;
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
}
|
}
|
||||||
|
#ifdef OPENDTU_ETHERNET
|
||||||
|
ETH.begin();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::enableAdminMode()
|
void NetworkSettingsClass::enableAdminMode()
|
||||||
{
|
{
|
||||||
adminEnabled = true;
|
adminEnabled = true;
|
||||||
adminTimeoutCounter = 0;
|
adminTimeoutCounter = 0;
|
||||||
setupMode();
|
setupMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
String WiFiSettingsClass::getApName()
|
String NetworkSettingsClass::getApName()
|
||||||
{
|
{
|
||||||
uint32_t chipId = 0;
|
uint32_t chipId = 0;
|
||||||
for (int i = 0; i < 17; i += 8) {
|
for (int i = 0; i < 17; i += 8) {
|
||||||
@ -52,7 +97,7 @@ String WiFiSettingsClass::getApName()
|
|||||||
return String(ACCESS_POINT_NAME + String(chipId));
|
return String(ACCESS_POINT_NAME + String(chipId));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::loop()
|
void NetworkSettingsClass::loop()
|
||||||
{
|
{
|
||||||
if (millis() - lastTimerCall > 1000) {
|
if (millis() - lastTimerCall > 1000) {
|
||||||
adminTimeoutCounter++;
|
adminTimeoutCounter++;
|
||||||
@ -101,7 +146,7 @@ void WiFiSettingsClass::loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::applyConfig()
|
void NetworkSettingsClass::applyConfig()
|
||||||
{
|
{
|
||||||
setHostname();
|
setHostname();
|
||||||
if (!strcmp(Configuration.get().WiFi_Ssid, "")) {
|
if (!strcmp(Configuration.get().WiFi_Ssid, "")) {
|
||||||
@ -121,7 +166,7 @@ void WiFiSettingsClass::applyConfig()
|
|||||||
setStaticIp();
|
setStaticIp();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::setHostname()
|
void NetworkSettingsClass::setHostname()
|
||||||
{
|
{
|
||||||
Serial.print(F("Setting Hostname... "));
|
Serial.print(F("Setting Hostname... "));
|
||||||
if (strcmp(Configuration.get().WiFi_Hostname, "")) {
|
if (strcmp(Configuration.get().WiFi_Hostname, "")) {
|
||||||
@ -135,7 +180,7 @@ void WiFiSettingsClass::setHostname()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WiFiSettingsClass::setStaticIp()
|
void NetworkSettingsClass::setStaticIp()
|
||||||
{
|
{
|
||||||
if (!Configuration.get().WiFi_Dhcp) {
|
if (!Configuration.get().WiFi_Dhcp) {
|
||||||
Serial.print(F("Configuring WiFi STA static IP... "));
|
Serial.print(F("Configuring WiFi STA static IP... "));
|
||||||
@ -149,4 +194,4 @@ void WiFiSettingsClass::setStaticIp()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WiFiSettingsClass WiFiSettings;
|
NetworkSettingsClass NetworkSettings;
|
||||||
@ -6,7 +6,7 @@
|
|||||||
#include "ArduinoJson.h"
|
#include "ArduinoJson.h"
|
||||||
#include "AsyncJson.h"
|
#include "AsyncJson.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "WiFiSettings.h"
|
#include "NetworkSettings.h"
|
||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
|
|
||||||
void WebApiNetworkClass::init(AsyncWebServer* server)
|
void WebApiNetworkClass::init(AsyncWebServer* server)
|
||||||
@ -39,7 +39,7 @@ void WebApiNetworkClass::onNetworkStatus(AsyncWebServerRequest* request)
|
|||||||
root[F("sta_mac")] = WiFi.macAddress();
|
root[F("sta_mac")] = WiFi.macAddress();
|
||||||
root[F("sta_rssi")] = WiFi.RSSI();
|
root[F("sta_rssi")] = WiFi.RSSI();
|
||||||
root[F("ap_status")] = ((WiFi.getMode() & WIFI_AP) != 0);
|
root[F("ap_status")] = ((WiFi.getMode() & WIFI_AP) != 0);
|
||||||
root[F("ap_ssid")] = WiFiSettings.getApName();
|
root[F("ap_ssid")] = NetworkSettings.getApName();
|
||||||
root[F("ap_ip")] = WiFi.softAPIP().toString();
|
root[F("ap_ip")] = WiFi.softAPIP().toString();
|
||||||
root[F("ap_mac")] = WiFi.softAPmacAddress();
|
root[F("ap_mac")] = WiFi.softAPmacAddress();
|
||||||
root[F("ap_stationnum")] = WiFi.softAPgetStationNum();
|
root[F("ap_stationnum")] = WiFi.softAPgetStationNum();
|
||||||
@ -199,6 +199,6 @@ void WebApiNetworkClass::onNetworkAdminPost(AsyncWebServerRequest* request)
|
|||||||
response->setLength();
|
response->setLength();
|
||||||
request->send(response);
|
request->send(response);
|
||||||
|
|
||||||
WiFiSettings.enableAdminMode();
|
NetworkSettings.enableAdminMode();
|
||||||
WiFiSettings.applyConfig();
|
NetworkSettings.applyConfig();
|
||||||
}
|
}
|
||||||
@ -9,7 +9,7 @@
|
|||||||
#include "MqttSettings.h"
|
#include "MqttSettings.h"
|
||||||
#include "NtpSettings.h"
|
#include "NtpSettings.h"
|
||||||
#include "WebApi.h"
|
#include "WebApi.h"
|
||||||
#include "WiFiSettings.h"
|
#include "NetworkSettings.h"
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <LittleFS.h>
|
#include <LittleFS.h>
|
||||||
@ -55,9 +55,9 @@ void setup()
|
|||||||
|
|
||||||
// Initialize WiFi
|
// Initialize WiFi
|
||||||
Serial.print(F("Initialize WiFi... "));
|
Serial.print(F("Initialize WiFi... "));
|
||||||
WiFiSettings.init();
|
NetworkSettings.init();
|
||||||
Serial.println(F("done"));
|
Serial.println(F("done"));
|
||||||
WiFiSettings.applyConfig();
|
NetworkSettings.applyConfig();
|
||||||
|
|
||||||
// Initialize NTP
|
// Initialize NTP
|
||||||
Serial.print(F("Initialize NTP... "));
|
Serial.print(F("Initialize NTP... "));
|
||||||
@ -100,7 +100,7 @@ void setup()
|
|||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
WiFiSettings.loop();
|
NetworkSettings.loop();
|
||||||
yield();
|
yield();
|
||||||
Hoymiles.loop();
|
Hoymiles.loop();
|
||||||
yield();
|
yield();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user