1
0
mirror of https://github.com/esphome/esphome.git synced 2025-11-19 16:25:50 +00:00

Merge branch 'wifi_ethernet_now_connected_later_logconfig' into integration

This commit is contained in:
J. Nick Koston
2025-11-12 12:18:19 -06:00
7 changed files with 29 additions and 9 deletions

View File

@@ -381,7 +381,10 @@ void EthernetComponent::dump_config() {
break; break;
} }
ESP_LOGCONFIG(TAG, "Ethernet:"); ESP_LOGCONFIG(TAG,
"Ethernet:\n"
" Connected: %s",
YESNO(this->is_connected()));
this->dump_connect_params_(); this->dump_connect_params_();
#ifdef USE_ETHERNET_SPI #ifdef USE_ETHERNET_SPI
ESP_LOGCONFIG(TAG, ESP_LOGCONFIG(TAG,

View File

@@ -743,6 +743,14 @@ void WiFiComponent::start_connecting(const WiFiAP &ap) {
} }
const LogString *get_signal_bars(int8_t rssi) { const LogString *get_signal_bars(int8_t rssi) {
// Check for disconnected sentinel value first
if (rssi == WIFI_RSSI_DISCONNECTED) {
// MULTIPLICATION SIGN
// Unicode: U+00D7, UTF-8: C3 97
return LOG_STR("\033[0;31m" // red
"\xc3\x97\xc3\x97\xc3\x97\xc3\x97"
"\033[0m");
}
// LOWER ONE QUARTER BLOCK // LOWER ONE QUARTER BLOCK
// Unicode: U+2582, UTF-8: E2 96 82 // Unicode: U+2582, UTF-8: E2 96 82
// LOWER HALF BLOCK // LOWER HALF BLOCK
@@ -1024,7 +1032,10 @@ void WiFiComponent::check_scanning_finished() {
} }
void WiFiComponent::dump_config() { void WiFiComponent::dump_config() {
ESP_LOGCONFIG(TAG, "WiFi:"); ESP_LOGCONFIG(TAG,
"WiFi:\n"
" Connected: %s",
YESNO(this->is_connected()));
this->print_connect_params_(); this->print_connect_params_();
} }

View File

@@ -52,6 +52,9 @@ extern "C" {
namespace esphome { namespace esphome {
namespace wifi { namespace wifi {
/// Sentinel value for RSSI when WiFi is not connected
static constexpr int8_t WIFI_RSSI_DISCONNECTED = -127;
struct SavedWifiSettings { struct SavedWifiSettings {
char ssid[33]; char ssid[33];
char password[65]; char password[65];

View File

@@ -872,7 +872,7 @@ bssid_t WiFiComponent::wifi_bssid() {
return bssid; return bssid;
} }
std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); } std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); }
int8_t WiFiComponent::wifi_rssi() { return WiFi.RSSI(); } int8_t WiFiComponent::wifi_rssi() { return WiFi.status() == WL_CONNECTED ? WiFi.RSSI() : WIFI_RSSI_DISCONNECTED; }
int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); } int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); }
network::IPAddress WiFiComponent::wifi_subnet_mask_() { return {(const ip_addr_t *) WiFi.subnetMask()}; } network::IPAddress WiFiComponent::wifi_subnet_mask_() { return {(const ip_addr_t *) WiFi.subnetMask()}; }
network::IPAddress WiFiComponent::wifi_gateway_ip_() { return {(const ip_addr_t *) WiFi.gatewayIP()}; } network::IPAddress WiFiComponent::wifi_gateway_ip_() { return {(const ip_addr_t *) WiFi.gatewayIP()}; }

View File

@@ -1031,7 +1031,8 @@ bssid_t WiFiComponent::wifi_bssid() {
wifi_ap_record_t info; wifi_ap_record_t info;
esp_err_t err = esp_wifi_sta_get_ap_info(&info); esp_err_t err = esp_wifi_sta_get_ap_info(&info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGW(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err)); // Very verbose only: this is expected during dump_config() before connection is established (PR #9823)
ESP_LOGVV(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err));
return bssid; return bssid;
} }
std::copy(info.bssid, info.bssid + 6, bssid.begin()); std::copy(info.bssid, info.bssid + 6, bssid.begin());
@@ -1041,7 +1042,8 @@ std::string WiFiComponent::wifi_ssid() {
wifi_ap_record_t info{}; wifi_ap_record_t info{};
esp_err_t err = esp_wifi_sta_get_ap_info(&info); esp_err_t err = esp_wifi_sta_get_ap_info(&info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGW(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err)); // Very verbose only: this is expected during dump_config() before connection is established (PR #9823)
ESP_LOGVV(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err));
return ""; return "";
} }
auto *ssid_s = reinterpret_cast<const char *>(info.ssid); auto *ssid_s = reinterpret_cast<const char *>(info.ssid);
@@ -1052,8 +1054,9 @@ int8_t WiFiComponent::wifi_rssi() {
wifi_ap_record_t info; wifi_ap_record_t info;
esp_err_t err = esp_wifi_sta_get_ap_info(&info); esp_err_t err = esp_wifi_sta_get_ap_info(&info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGW(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err)); // Very verbose only: this is expected during dump_config() before connection is established (PR #9823)
return 0; ESP_LOGVV(TAG, "esp_wifi_sta_get_ap_info failed: %s", esp_err_to_name(err));
return WIFI_RSSI_DISCONNECTED;
} }
return info.rssi; return info.rssi;
} }

View File

@@ -486,7 +486,7 @@ bssid_t WiFiComponent::wifi_bssid() {
return bssid; return bssid;
} }
std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); } std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); }
int8_t WiFiComponent::wifi_rssi() { return WiFi.RSSI(); } int8_t WiFiComponent::wifi_rssi() { return WiFi.status() == WL_CONNECTED ? WiFi.RSSI() : WIFI_RSSI_DISCONNECTED; }
int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); } int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); }
network::IPAddress WiFiComponent::wifi_subnet_mask_() { return {WiFi.subnetMask()}; } network::IPAddress WiFiComponent::wifi_subnet_mask_() { return {WiFi.subnetMask()}; }
network::IPAddress WiFiComponent::wifi_gateway_ip_() { return {WiFi.gatewayIP()}; } network::IPAddress WiFiComponent::wifi_gateway_ip_() { return {WiFi.gatewayIP()}; }

View File

@@ -200,7 +200,7 @@ bssid_t WiFiComponent::wifi_bssid() {
return bssid; return bssid;
} }
std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); } std::string WiFiComponent::wifi_ssid() { return WiFi.SSID().c_str(); }
int8_t WiFiComponent::wifi_rssi() { return WiFi.RSSI(); } int8_t WiFiComponent::wifi_rssi() { return WiFi.status() == WL_CONNECTED ? WiFi.RSSI() : WIFI_RSSI_DISCONNECTED; }
int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); } int32_t WiFiComponent::get_wifi_channel() { return WiFi.channel(); }
network::IPAddresses WiFiComponent::wifi_sta_ip_addresses() { network::IPAddresses WiFiComponent::wifi_sta_ip_addresses() {