mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
Track number of WiFi reconnects #2207
This commit is contained in:
@@ -94,6 +94,8 @@ const NetworkStatus = () => {
|
|||||||
|
|
||||||
const networkStatus = ({ status }: NetworkStatusType) => {
|
const networkStatus = ({ status }: NetworkStatusType) => {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
|
case NetworkConnectionStatus.ETHERNET_STATUS_CONNECTED:
|
||||||
|
return LL.CONNECTED(0) + ' (Ethernet)';
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD:
|
case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD:
|
||||||
return LL.INACTIVE(1);
|
return LL.INACTIVE(1);
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_IDLE:
|
case NetworkConnectionStatus.WIFI_STATUS_IDLE:
|
||||||
@@ -101,13 +103,11 @@ const NetworkStatus = () => {
|
|||||||
case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:
|
case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:
|
||||||
return 'No SSID Available';
|
return 'No SSID Available';
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_CONNECTED:
|
case NetworkConnectionStatus.WIFI_STATUS_CONNECTED:
|
||||||
return LL.CONNECTED(0) + ' (WiFi)';
|
return LL.CONNECTED(0) + ' (WiFi) (' + data.connect_count + ')';
|
||||||
case NetworkConnectionStatus.ETHERNET_STATUS_CONNECTED:
|
|
||||||
return LL.CONNECTED(0) + ' (Ethernet)';
|
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_CONNECT_FAILED:
|
case NetworkConnectionStatus.WIFI_STATUS_CONNECT_FAILED:
|
||||||
return LL.CONNECTED(1) + ' ' + LL.FAILED(0);
|
return LL.CONNECTED(1) + ' ' + LL.FAILED(0) + ' (' + data.connect_count + ')';
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_CONNECTION_LOST:
|
case NetworkConnectionStatus.WIFI_STATUS_CONNECTION_LOST:
|
||||||
return LL.CONNECTED(1) + ' ' + LL.LOST();
|
return LL.CONNECTED(1) + ' ' + LL.LOST() + ' (' + data.connect_count + ')';
|
||||||
case NetworkConnectionStatus.WIFI_STATUS_DISCONNECTED:
|
case NetworkConnectionStatus.WIFI_STATUS_DISCONNECTED:
|
||||||
return LL.DISCONNECTED();
|
return LL.DISCONNECTED();
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ export interface NetworkStatusType {
|
|||||||
dns_ip_1: string;
|
dns_ip_1: string;
|
||||||
dns_ip_2: string;
|
dns_ip_2: string;
|
||||||
hostname: string;
|
hostname: string;
|
||||||
|
connect_count: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface NetworkSettingsType {
|
export interface NetworkSettingsType {
|
||||||
|
|||||||
@@ -66,6 +66,10 @@ class ESP8266React {
|
|||||||
return _apSettingsService.getAPNetworkStatus() == APNetworkStatus::ACTIVE;
|
return _apSettingsService.getAPNetworkStatus() == APNetworkStatus::ACTIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t getWifiConnects() {
|
||||||
|
return _networkSettingsService.getWifiConnects();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SecuritySettingsService _securitySettingsService;
|
SecuritySettingsService _securitySettingsService;
|
||||||
NetworkSettingsService _networkSettingsService;
|
NetworkSettingsService _networkSettingsService;
|
||||||
|
|||||||
@@ -304,10 +304,14 @@ void NetworkSettingsService::WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
||||||
emsesp::EMSESP::logger().warning("WiFi disconnected. Reason: %s (%d)",
|
connectcount_++; // count the number of reconnects
|
||||||
|
emsesp::EMSESP::logger().warning("WiFi disconnected (#%d). Reason: %s (%d)",
|
||||||
|
connectcount_,
|
||||||
disconnectReason(info.wifi_sta_disconnected.reason),
|
disconnectReason(info.wifi_sta_disconnected.reason),
|
||||||
info.wifi_sta_disconnected.reason); // IDF 4.0
|
info.wifi_sta_disconnected.reason); // IDF 4.0
|
||||||
emsesp::EMSESP::system_.has_ipv6(false);
|
emsesp::EMSESP::system_.has_ipv6(false);
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
|
||||||
|
|||||||
@@ -87,7 +87,6 @@ class NetworkSettings {
|
|||||||
static StateUpdateResult update(JsonObject root, NetworkSettings & settings);
|
static StateUpdateResult update(JsonObject root, NetworkSettings & settings);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class NetworkSettingsService : public StatefulService<NetworkSettings> {
|
class NetworkSettingsService : public StatefulService<NetworkSettings> {
|
||||||
public:
|
public:
|
||||||
NetworkSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager);
|
NetworkSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager);
|
||||||
@@ -95,6 +94,10 @@ class NetworkSettingsService : public StatefulService<NetworkSettings> {
|
|||||||
void begin();
|
void begin();
|
||||||
void loop();
|
void loop();
|
||||||
|
|
||||||
|
uint16_t getWifiConnects() const {
|
||||||
|
return connectcount_;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HttpEndpoint<NetworkSettings> _httpEndpoint;
|
HttpEndpoint<NetworkSettings> _httpEndpoint;
|
||||||
FSPersistence<NetworkSettings> _fsPersistence;
|
FSPersistence<NetworkSettings> _fsPersistence;
|
||||||
@@ -102,6 +105,8 @@ class NetworkSettingsService : public StatefulService<NetworkSettings> {
|
|||||||
unsigned long _lastConnectionAttempt;
|
unsigned long _lastConnectionAttempt;
|
||||||
bool _stopping;
|
bool _stopping;
|
||||||
|
|
||||||
|
uint16_t connectcount_ = 0; // number of wifi reconnects
|
||||||
|
|
||||||
void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info);
|
void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info);
|
||||||
void mDNS_start() const;
|
void mDNS_start() const;
|
||||||
const char * disconnectReason(uint8_t code);
|
const char * disconnectReason(uint8_t code);
|
||||||
|
|||||||
@@ -60,12 +60,13 @@ void NetworkStatus::networkStatus(AsyncWebServerRequest * request) {
|
|||||||
#else
|
#else
|
||||||
root["local_ipv6"] = WiFi.linkLocalIPv6().toString();
|
root["local_ipv6"] = WiFi.linkLocalIPv6().toString();
|
||||||
#endif
|
#endif
|
||||||
root["mac_address"] = WiFi.macAddress();
|
root["mac_address"] = WiFi.macAddress();
|
||||||
root["rssi"] = WiFi.RSSI();
|
root["rssi"] = WiFi.RSSI();
|
||||||
root["ssid"] = WiFi.SSID();
|
root["ssid"] = WiFi.SSID();
|
||||||
root["bssid"] = WiFi.BSSIDstr();
|
root["bssid"] = WiFi.BSSIDstr();
|
||||||
root["channel"] = WiFi.channel();
|
root["channel"] = WiFi.channel();
|
||||||
root["subnet_mask"] = WiFi.subnetMask().toString();
|
root["connect_count"] = emsesp::EMSESP::esp8266React.getWifiConnects();
|
||||||
|
root["subnet_mask"] = WiFi.subnetMask().toString();
|
||||||
|
|
||||||
if (WiFi.gatewayIP() != INADDR_NONE) {
|
if (WiFi.gatewayIP() != INADDR_NONE) {
|
||||||
root["gateway_ip"] = WiFi.gatewayIP().toString();
|
root["gateway_ip"] = WiFi.gatewayIP().toString();
|
||||||
|
|||||||
@@ -368,7 +368,8 @@ const network_status = {
|
|||||||
gateway_ip: '10.10.10.1',
|
gateway_ip: '10.10.10.1',
|
||||||
dns_ip_1: '10.10.10.1',
|
dns_ip_1: '10.10.10.1',
|
||||||
dns_ip_2: '0.0.0.0',
|
dns_ip_2: '0.0.0.0',
|
||||||
hostname: 'ems-esp'
|
hostname: 'ems-esp',
|
||||||
|
connect_count: 1
|
||||||
};
|
};
|
||||||
const list_networks = {
|
const list_networks = {
|
||||||
networks: [
|
networks: [
|
||||||
|
|||||||
Reference in New Issue
Block a user