[wifi, wifi_info] Tidy up/shorten more log messages (#9151)

This commit is contained in:
Keith Burzinski 2025-06-20 05:02:36 -05:00 committed by GitHub
parent 7dbad42470
commit 46d962dcf1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 168 additions and 173 deletions

View File

@ -73,7 +73,7 @@ void WiFiComponent::start() {
SavedWifiSettings save{}; SavedWifiSettings save{};
if (this->pref_.load(&save)) { if (this->pref_.load(&save)) {
ESP_LOGD(TAG, "Loaded saved settings: %s", save.ssid); ESP_LOGD(TAG, "Loaded settings: %s", save.ssid);
WiFiAP sta{}; WiFiAP sta{};
sta.set_ssid(save.ssid); sta.set_ssid(save.ssid);
@ -84,11 +84,11 @@ void WiFiComponent::start() {
if (this->has_sta()) { if (this->has_sta()) {
this->wifi_sta_pre_setup_(); this->wifi_sta_pre_setup_();
if (this->output_power_.has_value() && !this->wifi_apply_output_power_(*this->output_power_)) { if (this->output_power_.has_value() && !this->wifi_apply_output_power_(*this->output_power_)) {
ESP_LOGV(TAG, "Setting Output Power Option failed!"); ESP_LOGV(TAG, "Setting Output Power Option failed");
} }
if (!this->wifi_apply_power_save_()) { if (!this->wifi_apply_power_save_()) {
ESP_LOGV(TAG, "Setting Power Save Option failed!"); ESP_LOGV(TAG, "Setting Power Save Option failed");
} }
if (this->fast_connect_) { if (this->fast_connect_) {
@ -102,7 +102,7 @@ void WiFiComponent::start() {
} else if (this->has_ap()) { } else if (this->has_ap()) {
this->setup_ap_config_(); this->setup_ap_config_();
if (this->output_power_.has_value() && !this->wifi_apply_output_power_(*this->output_power_)) { if (this->output_power_.has_value() && !this->wifi_apply_output_power_(*this->output_power_)) {
ESP_LOGV(TAG, "Setting Output Power Option failed!"); ESP_LOGV(TAG, "Setting Output Power Option failed");
} }
#ifdef USE_CAPTIVE_PORTAL #ifdef USE_CAPTIVE_PORTAL
if (captive_portal::global_captive_portal != nullptr) { if (captive_portal::global_captive_portal != nullptr) {
@ -181,7 +181,7 @@ void WiFiComponent::loop() {
#ifdef USE_WIFI_AP #ifdef USE_WIFI_AP
if (this->has_ap() && !this->ap_setup_) { if (this->has_ap() && !this->ap_setup_) {
if (this->ap_timeout_ != 0 && (now - this->last_connected_ > this->ap_timeout_)) { if (this->ap_timeout_ != 0 && (now - this->last_connected_ > this->ap_timeout_)) {
ESP_LOGI(TAG, "Starting fallback AP!"); ESP_LOGI(TAG, "Starting fallback AP");
this->setup_ap_config_(); this->setup_ap_config_();
#ifdef USE_CAPTIVE_PORTAL #ifdef USE_CAPTIVE_PORTAL
if (captive_portal::global_captive_portal != nullptr) if (captive_portal::global_captive_portal != nullptr)
@ -359,7 +359,7 @@ void WiFiComponent::start_connecting(const WiFiAP &ap, bool two) {
if (ap.get_channel().has_value()) { if (ap.get_channel().has_value()) {
ESP_LOGV(TAG, " Channel: %u", *ap.get_channel()); ESP_LOGV(TAG, " Channel: %u", *ap.get_channel());
} else { } else {
ESP_LOGV(TAG, " Channel: Not Set"); ESP_LOGV(TAG, " Channel not set");
} }
if (ap.get_manual_ip().has_value()) { if (ap.get_manual_ip().has_value()) {
ManualIP m = *ap.get_manual_ip(); ManualIP m = *ap.get_manual_ip();
@ -372,7 +372,7 @@ void WiFiComponent::start_connecting(const WiFiAP &ap, bool two) {
#endif #endif
if (!this->wifi_sta_connect_(ap)) { if (!this->wifi_sta_connect_(ap)) {
ESP_LOGE(TAG, "wifi_sta_connect_ failed!"); ESP_LOGE(TAG, "wifi_sta_connect_ failed");
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -500,20 +500,20 @@ void WiFiComponent::start_scanning() {
void WiFiComponent::check_scanning_finished() { void WiFiComponent::check_scanning_finished() {
if (!this->scan_done_) { if (!this->scan_done_) {
if (millis() - this->action_started_ > 30000) { if (millis() - this->action_started_ > 30000) {
ESP_LOGE(TAG, "Scan timeout!"); ESP_LOGE(TAG, "Scan timeout");
this->retry_connect(); this->retry_connect();
} }
return; return;
} }
this->scan_done_ = false; this->scan_done_ = false;
ESP_LOGD(TAG, "Found networks:");
if (this->scan_result_.empty()) { if (this->scan_result_.empty()) {
ESP_LOGD(TAG, " No network found!"); ESP_LOGW(TAG, "No networks found");
this->retry_connect(); this->retry_connect();
return; return;
} }
ESP_LOGD(TAG, "Found networks:");
for (auto &res : this->scan_result_) { for (auto &res : this->scan_result_) {
for (auto &ap : this->sta_) { for (auto &ap : this->sta_) {
if (res.matches(ap)) { if (res.matches(ap)) {
@ -561,7 +561,7 @@ void WiFiComponent::check_scanning_finished() {
} }
if (!this->scan_result_[0].get_matches()) { if (!this->scan_result_[0].get_matches()) {
ESP_LOGW(TAG, "No matching network found!"); ESP_LOGW(TAG, "No matching network found");
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -619,7 +619,7 @@ void WiFiComponent::check_connecting_finished() {
if (status == WiFiSTAConnectStatus::CONNECTED) { if (status == WiFiSTAConnectStatus::CONNECTED) {
if (wifi_ssid().empty()) { if (wifi_ssid().empty()) {
ESP_LOGW(TAG, "Incomplete connection."); ESP_LOGW(TAG, "Connection incomplete");
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -663,7 +663,7 @@ void WiFiComponent::check_connecting_finished() {
} }
if (this->error_from_callback_) { if (this->error_from_callback_) {
ESP_LOGW(TAG, "Error while connecting to network."); ESP_LOGW(TAG, "Connecting to network failed");
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -679,7 +679,7 @@ void WiFiComponent::check_connecting_finished() {
} }
if (status == WiFiSTAConnectStatus::ERROR_CONNECT_FAILED) { if (status == WiFiSTAConnectStatus::ERROR_CONNECT_FAILED) {
ESP_LOGW(TAG, "Connection failed. Check credentials"); ESP_LOGW(TAG, "Connecting to network failed");
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -700,7 +700,7 @@ void WiFiComponent::retry_connect() {
(this->num_retried_ > 3 || this->error_from_callback_)) { (this->num_retried_ > 3 || this->error_from_callback_)) {
if (this->num_retried_ > 5) { if (this->num_retried_ > 5) {
// If retry failed for more than 5 times, let's restart STA // If retry failed for more than 5 times, let's restart STA
ESP_LOGW(TAG, "Restarting WiFi adapter"); ESP_LOGW(TAG, "Restarting adapter");
this->wifi_mode_(false, {}); this->wifi_mode_(false, {});
delay(100); // NOLINT delay(100); // NOLINT
this->num_retried_ = 0; this->num_retried_ = 0;
@ -770,7 +770,7 @@ void WiFiComponent::load_fast_connect_settings_() {
this->selected_ap_.set_bssid(bssid); this->selected_ap_.set_bssid(bssid);
this->selected_ap_.set_channel(fast_connect_save.channel); this->selected_ap_.set_channel(fast_connect_save.channel);
ESP_LOGD(TAG, "Loaded saved fast_connect wifi settings"); ESP_LOGD(TAG, "Loaded fast_connect settings");
} }
} }
@ -786,7 +786,7 @@ void WiFiComponent::save_fast_connect_settings_() {
this->fast_connect_pref_.save(&fast_connect_save); this->fast_connect_pref_.save(&fast_connect_save);
ESP_LOGD(TAG, "Saved fast_connect wifi settings"); ESP_LOGD(TAG, "Saved fast_connect settings");
} }
} }

View File

@ -78,14 +78,14 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
return true; return true;
if (set_sta && !current_sta) { if (set_sta && !current_sta) {
ESP_LOGV(TAG, "Enabling STA."); ESP_LOGV(TAG, "Enabling STA");
} else if (!set_sta && current_sta) { } else if (!set_sta && current_sta) {
ESP_LOGV(TAG, "Disabling STA."); ESP_LOGV(TAG, "Disabling STA");
} }
if (set_ap && !current_ap) { if (set_ap && !current_ap) {
ESP_LOGV(TAG, "Enabling AP."); ESP_LOGV(TAG, "Enabling AP");
} else if (!set_ap && current_ap) { } else if (!set_ap && current_ap) {
ESP_LOGV(TAG, "Disabling AP."); ESP_LOGV(TAG, "Disabling AP");
} }
bool ret = WiFiClass::mode(set_mode); bool ret = WiFiClass::mode(set_mode);
@ -147,11 +147,11 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
wifi_config_t conf; wifi_config_t conf;
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) { if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
ESP_LOGE(TAG, "SSID is too long"); ESP_LOGE(TAG, "SSID too long");
return false; return false;
} }
if (ap.get_password().size() > sizeof(conf.sta.password)) { if (ap.get_password().size() > sizeof(conf.sta.password)) {
ESP_LOGE(TAG, "password is too long"); ESP_LOGE(TAG, "Password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -230,7 +230,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
EAPAuth eap = ap.get_eap().value(); EAPAuth eap = ap.get_eap().value();
err = esp_eap_client_set_identity((uint8_t *) eap.identity.c_str(), eap.identity.length()); err = esp_eap_client_set_identity((uint8_t *) eap.identity.c_str(), eap.identity.length());
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_eap_client_set_identity failed! %d", err); ESP_LOGV(TAG, "esp_eap_client_set_identity failed: %d", err);
} }
int ca_cert_len = strlen(eap.ca_cert); int ca_cert_len = strlen(eap.ca_cert);
int client_cert_len = strlen(eap.client_cert); int client_cert_len = strlen(eap.client_cert);
@ -238,7 +238,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
if (ca_cert_len) { if (ca_cert_len) {
err = esp_eap_client_set_ca_cert((uint8_t *) eap.ca_cert, ca_cert_len + 1); err = esp_eap_client_set_ca_cert((uint8_t *) eap.ca_cert, ca_cert_len + 1);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_eap_client_set_ca_cert failed! %d", err); ESP_LOGV(TAG, "esp_eap_client_set_ca_cert failed: %d", err);
} }
} }
// workout what type of EAP this is // workout what type of EAP this is
@ -249,22 +249,22 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
(uint8_t *) eap.client_key, client_key_len + 1, (uint8_t *) eap.client_key, client_key_len + 1,
(uint8_t *) eap.password.c_str(), strlen(eap.password.c_str())); (uint8_t *) eap.password.c_str(), strlen(eap.password.c_str()));
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_eap_client_set_certificate_and_key failed! %d", err); ESP_LOGV(TAG, "esp_eap_client_set_certificate_and_key failed: %d", err);
} }
} else { } else {
// in the absence of certs, assume this is username/password based // in the absence of certs, assume this is username/password based
err = esp_eap_client_set_username((uint8_t *) eap.username.c_str(), eap.username.length()); err = esp_eap_client_set_username((uint8_t *) eap.username.c_str(), eap.username.length());
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_eap_client_set_username failed! %d", err); ESP_LOGV(TAG, "esp_eap_client_set_username failed: %d", err);
} }
err = esp_eap_client_set_password((uint8_t *) eap.password.c_str(), eap.password.length()); err = esp_eap_client_set_password((uint8_t *) eap.password.c_str(), eap.password.length());
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_eap_client_set_password failed! %d", err); ESP_LOGV(TAG, "esp_eap_client_set_password failed: %d", err);
} }
} }
err = esp_wifi_sta_enterprise_enable(); err = esp_wifi_sta_enterprise_enable();
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_wifi_sta_enterprise_enable failed! %d", err); ESP_LOGV(TAG, "esp_wifi_sta_enterprise_enable failed: %d", err);
} }
} }
#endif // USE_WIFI_WPA2_EAP #endif // USE_WIFI_WPA2_EAP
@ -319,7 +319,7 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
if (dhcp_status != ESP_NETIF_DHCP_STARTED) { if (dhcp_status != ESP_NETIF_DHCP_STARTED) {
err = esp_netif_dhcpc_start(s_sta_netif); err = esp_netif_dhcpc_start(s_sta_netif);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "Starting DHCP client failed! %d", err); ESP_LOGV(TAG, "Starting DHCP client failed: %d", err);
} }
return err == ESP_OK; return err == ESP_OK;
} }
@ -332,12 +332,12 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
info.netmask = manual_ip->subnet; info.netmask = manual_ip->subnet;
err = esp_netif_dhcpc_stop(s_sta_netif); err = esp_netif_dhcpc_stop(s_sta_netif);
if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED) { if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED) {
ESP_LOGV(TAG, "Stopping DHCP client failed! %s", esp_err_to_name(err)); ESP_LOGV(TAG, "Stopping DHCP client failed: %s", esp_err_to_name(err));
} }
err = esp_netif_set_ip_info(s_sta_netif, &info); err = esp_netif_set_ip_info(s_sta_netif, &info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "Setting manual IP info failed! %s", esp_err_to_name(err)); ESP_LOGV(TAG, "Setting manual IP info failed: %s", esp_err_to_name(err));
} }
esp_netif_dns_info_t dns; esp_netif_dns_info_t dns;
@ -520,18 +520,18 @@ using esphome_wifi_event_info_t = arduino_event_info_t;
void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_wifi_event_info_t info) { void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_wifi_event_info_t info) {
switch (event) { switch (event) {
case ESPHOME_EVENT_ID_WIFI_READY: { case ESPHOME_EVENT_ID_WIFI_READY: {
ESP_LOGV(TAG, "Event: WiFi ready"); ESP_LOGV(TAG, "Ready");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_SCAN_DONE: { case ESPHOME_EVENT_ID_WIFI_SCAN_DONE: {
auto it = info.wifi_scan_done; auto it = info.wifi_scan_done;
ESP_LOGV(TAG, "Event: WiFi Scan Done status=%u number=%u scan_id=%u", it.status, it.number, it.scan_id); ESP_LOGV(TAG, "Scan done: status=%u number=%u scan_id=%u", it.status, it.number, it.scan_id);
this->wifi_scan_done_callback_(); this->wifi_scan_done_callback_();
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_START: { case ESPHOME_EVENT_ID_WIFI_STA_START: {
ESP_LOGV(TAG, "Event: WiFi STA start"); ESP_LOGV(TAG, "STA start");
// apply hostname // apply hostname
s_sta_netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); s_sta_netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF");
esp_err_t err = esp_netif_set_hostname(s_sta_netif, App.get_name().c_str()); esp_err_t err = esp_netif_set_hostname(s_sta_netif, App.get_name().c_str());
@ -541,7 +541,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_STOP: { case ESPHOME_EVENT_ID_WIFI_STA_STOP: {
ESP_LOGV(TAG, "Event: WiFi STA stop"); ESP_LOGV(TAG, "STA stop");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: { case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: {
@ -549,7 +549,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
char buf[33]; char buf[33];
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
ESP_LOGV(TAG, "Event: Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf, ESP_LOGV(TAG, "Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf,
format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode)); format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode));
#if USE_NETWORK_IPV6 #if USE_NETWORK_IPV6
this->set_timeout(100, [] { WiFi.enableIPv6(); }); this->set_timeout(100, [] { WiFi.enableIPv6(); });
@ -563,9 +563,9 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
if (it.reason == WIFI_REASON_NO_AP_FOUND) { if (it.reason == WIFI_REASON_NO_AP_FOUND) {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf); ESP_LOGW(TAG, "Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf);
} else { } else {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf, ESP_LOGW(TAG, "Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf,
format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason)); format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason));
} }
@ -585,8 +585,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
} }
case ESPHOME_EVENT_ID_WIFI_STA_AUTHMODE_CHANGE: { case ESPHOME_EVENT_ID_WIFI_STA_AUTHMODE_CHANGE: {
auto it = info.wifi_sta_authmode_change; auto it = info.wifi_sta_authmode_change;
ESP_LOGV(TAG, "Event: Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), ESP_LOGV(TAG, "Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), get_auth_mode_str(it.new_mode));
get_auth_mode_str(it.new_mode));
// Mitigate CVE-2020-12638 // Mitigate CVE-2020-12638
// https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) { if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) {
@ -603,8 +602,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
} }
case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP: { case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP: {
auto it = info.got_ip.ip_info; auto it = info.got_ip.ip_info;
ESP_LOGV(TAG, "Event: Got IP static_ip=%s gateway=%s", format_ip4_addr(it.ip).c_str(), ESP_LOGV(TAG, "static_ip=%s gateway=%s", format_ip4_addr(it.ip).c_str(), format_ip4_addr(it.gw).c_str());
format_ip4_addr(it.gw).c_str());
this->got_ipv4_address_ = true; this->got_ipv4_address_ = true;
#if USE_NETWORK_IPV6 #if USE_NETWORK_IPV6
s_sta_connecting = this->num_ipv6_addresses_ < USE_NETWORK_MIN_IPV6_ADDR_COUNT; s_sta_connecting = this->num_ipv6_addresses_ < USE_NETWORK_MIN_IPV6_ADDR_COUNT;
@ -616,44 +614,44 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
#if USE_NETWORK_IPV6 #if USE_NETWORK_IPV6
case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP6: { case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP6: {
auto it = info.got_ip6.ip6_info; auto it = info.got_ip6.ip6_info;
ESP_LOGV(TAG, "Got IPv6 address=" IPV6STR, IPV62STR(it.ip)); ESP_LOGV(TAG, "IPv6 address=" IPV6STR, IPV62STR(it.ip));
this->num_ipv6_addresses_++; this->num_ipv6_addresses_++;
s_sta_connecting = !(this->got_ipv4_address_ & (this->num_ipv6_addresses_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT)); s_sta_connecting = !(this->got_ipv4_address_ & (this->num_ipv6_addresses_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT));
break; break;
} }
#endif /* USE_NETWORK_IPV6 */ #endif /* USE_NETWORK_IPV6 */
case ESPHOME_EVENT_ID_WIFI_STA_LOST_IP: { case ESPHOME_EVENT_ID_WIFI_STA_LOST_IP: {
ESP_LOGV(TAG, "Event: Lost IP"); ESP_LOGV(TAG, "Lost IP");
this->got_ipv4_address_ = false; this->got_ipv4_address_ = false;
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_START: { case ESPHOME_EVENT_ID_WIFI_AP_START: {
ESP_LOGV(TAG, "Event: WiFi AP start"); ESP_LOGV(TAG, "AP start");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STOP: { case ESPHOME_EVENT_ID_WIFI_AP_STOP: {
ESP_LOGV(TAG, "Event: WiFi AP stop"); ESP_LOGV(TAG, "AP stop");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: { case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: {
auto it = info.wifi_sta_connected; auto it = info.wifi_sta_connected;
auto &mac = it.bssid; auto &mac = it.bssid;
ESP_LOGV(TAG, "Event: AP client connected MAC=%s", format_mac_addr(mac).c_str()); ESP_LOGV(TAG, "AP client connected MAC=%s", format_mac_addr(mac).c_str());
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STADISCONNECTED: { case ESPHOME_EVENT_ID_WIFI_AP_STADISCONNECTED: {
auto it = info.wifi_sta_disconnected; auto it = info.wifi_sta_disconnected;
auto &mac = it.bssid; auto &mac = it.bssid;
ESP_LOGV(TAG, "Event: AP client disconnected MAC=%s", format_mac_addr(mac).c_str()); ESP_LOGV(TAG, "AP client disconnected MAC=%s", format_mac_addr(mac).c_str());
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STAIPASSIGNED: { case ESPHOME_EVENT_ID_WIFI_AP_STAIPASSIGNED: {
ESP_LOGV(TAG, "Event: AP client assigned IP"); ESP_LOGV(TAG, "AP client assigned IP");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_PROBEREQRECVED: { case ESPHOME_EVENT_ID_WIFI_AP_PROBEREQRECVED: {
auto it = info.wifi_ap_probereqrecved; auto it = info.wifi_ap_probereqrecved;
ESP_LOGVV(TAG, "Event: AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi); ESP_LOGVV(TAG, "AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi);
break; break;
} }
default: default:
@ -685,7 +683,7 @@ bool WiFiComponent::wifi_scan_start_(bool passive) {
// need to use WiFi because of WiFiScanClass allocations :( // need to use WiFi because of WiFiScanClass allocations :(
int16_t err = WiFi.scanNetworks(true, true, passive, 200); int16_t err = WiFi.scanNetworks(true, true, passive, 200);
if (err != WIFI_SCAN_RUNNING) { if (err != WIFI_SCAN_RUNNING) {
ESP_LOGV(TAG, "WiFi.scanNetworks failed! %d", err); ESP_LOGV(TAG, "WiFi.scanNetworks failed: %d", err);
return false; return false;
} }
@ -741,7 +739,7 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
err = esp_netif_set_ip_info(s_ap_netif, &info); err = esp_netif_set_ip_info(s_ap_netif, &info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_set_ip_info failed! %d", err); ESP_LOGE(TAG, "esp_netif_set_ip_info failed: %d", err);
return false; return false;
} }
@ -757,14 +755,14 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
err = esp_netif_dhcps_option(s_ap_netif, ESP_NETIF_OP_SET, ESP_NETIF_REQUESTED_IP_ADDRESS, &lease, sizeof(lease)); err = esp_netif_dhcps_option(s_ap_netif, ESP_NETIF_OP_SET, ESP_NETIF_REQUESTED_IP_ADDRESS, &lease, sizeof(lease));
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_dhcps_option failed! %d", err); ESP_LOGE(TAG, "esp_netif_dhcps_option failed: %d", err);
return false; return false;
} }
err = esp_netif_dhcps_start(s_ap_netif); err = esp_netif_dhcps_start(s_ap_netif);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_dhcps_start failed! %d", err); ESP_LOGE(TAG, "esp_netif_dhcps_start failed: %d", err);
return false; return false;
} }
@ -779,7 +777,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
wifi_config_t conf; wifi_config_t conf;
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) { if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
ESP_LOGE(TAG, "AP SSID is too long"); ESP_LOGE(TAG, "AP SSID too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -794,7 +792,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
} else { } else {
conf.ap.authmode = WIFI_AUTH_WPA2_PSK; conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
if (ap.get_password().size() > sizeof(conf.ap.password)) { if (ap.get_password().size() > sizeof(conf.ap.password)) {
ESP_LOGE(TAG, "AP password is too long"); ESP_LOGE(TAG, "AP password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size()); memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
@ -805,14 +803,14 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
esp_err_t err = esp_wifi_set_config(WIFI_IF_AP, &conf); esp_err_t err = esp_wifi_set_config(WIFI_IF_AP, &conf);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_wifi_set_config failed! %d", err); ESP_LOGV(TAG, "esp_wifi_set_config failed: %d", err);
return false; return false;
} }
yield(); yield();
if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) { if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) {
ESP_LOGV(TAG, "wifi_ap_ip_config_ failed!"); ESP_LOGV(TAG, "wifi_ap_ip_config_ failed");
return false; return false;
} }

View File

@ -59,17 +59,17 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
return true; return true;
if (target_sta && !current_sta) { if (target_sta && !current_sta) {
ESP_LOGV(TAG, "Enabling STA."); ESP_LOGV(TAG, "Enabling STA");
} else if (!target_sta && current_sta) { } else if (!target_sta && current_sta) {
ESP_LOGV(TAG, "Disabling STA."); ESP_LOGV(TAG, "Disabling STA");
// Stop DHCP client when disabling STA // Stop DHCP client when disabling STA
// See https://github.com/esp8266/Arduino/pull/5703 // See https://github.com/esp8266/Arduino/pull/5703
wifi_station_dhcpc_stop(); wifi_station_dhcpc_stop();
} }
if (target_ap && !current_ap) { if (target_ap && !current_ap) {
ESP_LOGV(TAG, "Enabling AP."); ESP_LOGV(TAG, "Enabling AP");
} else if (!target_ap && current_ap) { } else if (!target_ap && current_ap) {
ESP_LOGV(TAG, "Disabling AP."); ESP_LOGV(TAG, "Disabling AP");
} }
ETS_UART_INTR_DISABLE(); ETS_UART_INTR_DISABLE();
@ -82,7 +82,7 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
if (!ret) { if (!ret) {
ESP_LOGW(TAG, "Setting WiFi mode failed!"); ESP_LOGW(TAG, "Set mode failed");
} }
return ret; return ret;
@ -133,7 +133,7 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
if (dhcp_status != DHCP_STARTED) { if (dhcp_status != DHCP_STARTED) {
bool ret = wifi_station_dhcpc_start(); bool ret = wifi_station_dhcpc_start();
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "Starting DHCP client failed!"); ESP_LOGV(TAG, "Starting DHCP client failed");
} }
return ret; return ret;
} }
@ -157,13 +157,13 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
if (dhcp_status == DHCP_STARTED) { if (dhcp_status == DHCP_STARTED) {
bool dhcp_stop_ret = wifi_station_dhcpc_stop(); bool dhcp_stop_ret = wifi_station_dhcpc_stop();
if (!dhcp_stop_ret) { if (!dhcp_stop_ret) {
ESP_LOGV(TAG, "Stopping DHCP client failed!"); ESP_LOGV(TAG, "Stopping DHCP client failed");
ret = false; ret = false;
} }
} }
bool wifi_set_info_ret = wifi_set_ip_info(STATION_IF, &info); bool wifi_set_info_ret = wifi_set_ip_info(STATION_IF, &info);
if (!wifi_set_info_ret) { if (!wifi_set_info_ret) {
ESP_LOGV(TAG, "Setting manual IP info failed!"); ESP_LOGV(TAG, "Set manual IP info failed");
ret = false; ret = false;
} }
@ -202,7 +202,7 @@ bool WiFiComponent::wifi_apply_hostname_() {
const std::string &hostname = App.get_name(); const std::string &hostname = App.get_name();
bool ret = wifi_station_set_hostname(const_cast<char *>(hostname.c_str())); bool ret = wifi_station_set_hostname(const_cast<char *>(hostname.c_str()));
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "Setting WiFi Hostname failed!"); ESP_LOGV(TAG, "Set hostname failed");
} }
// inform dhcp server of hostname change using dhcp_renew() // inform dhcp server of hostname change using dhcp_renew()
@ -237,11 +237,11 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
struct station_config conf {}; struct station_config conf {};
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
if (ap.get_ssid().size() > sizeof(conf.ssid)) { if (ap.get_ssid().size() > sizeof(conf.ssid)) {
ESP_LOGE(TAG, "SSID is too long"); ESP_LOGE(TAG, "SSID too long");
return false; return false;
} }
if (ap.get_password().size() > sizeof(conf.password)) { if (ap.get_password().size() > sizeof(conf.password)) {
ESP_LOGE(TAG, "password is too long"); ESP_LOGE(TAG, "Password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -269,7 +269,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "Setting WiFi Station config failed!"); ESP_LOGV(TAG, "Set Station config failed");
return false; return false;
} }
@ -284,7 +284,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
EAPAuth eap = ap.get_eap().value(); EAPAuth eap = ap.get_eap().value();
ret = wifi_station_set_enterprise_identity((uint8_t *) eap.identity.c_str(), eap.identity.length()); ret = wifi_station_set_enterprise_identity((uint8_t *) eap.identity.c_str(), eap.identity.length());
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_identity failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_identity failed: %d", ret);
} }
int ca_cert_len = strlen(eap.ca_cert); int ca_cert_len = strlen(eap.ca_cert);
int client_cert_len = strlen(eap.client_cert); int client_cert_len = strlen(eap.client_cert);
@ -292,7 +292,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
if (ca_cert_len) { if (ca_cert_len) {
ret = wifi_station_set_enterprise_ca_cert((uint8_t *) eap.ca_cert, ca_cert_len + 1); ret = wifi_station_set_enterprise_ca_cert((uint8_t *) eap.ca_cert, ca_cert_len + 1);
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_ca_cert failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_ca_cert failed: %d", ret);
} }
} }
// workout what type of EAP this is // workout what type of EAP this is
@ -303,22 +303,22 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
(uint8_t *) eap.client_key, client_key_len + 1, (uint8_t *) eap.client_key, client_key_len + 1,
(uint8_t *) eap.password.c_str(), strlen(eap.password.c_str())); (uint8_t *) eap.password.c_str(), strlen(eap.password.c_str()));
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_cert_key failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_cert_key failed: %d", ret);
} }
} else { } else {
// in the absence of certs, assume this is username/password based // in the absence of certs, assume this is username/password based
ret = wifi_station_set_enterprise_username((uint8_t *) eap.username.c_str(), eap.username.length()); ret = wifi_station_set_enterprise_username((uint8_t *) eap.username.c_str(), eap.username.length());
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_username failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_username failed: %d", ret);
} }
ret = wifi_station_set_enterprise_password((uint8_t *) eap.password.c_str(), eap.password.length()); ret = wifi_station_set_enterprise_password((uint8_t *) eap.password.c_str(), eap.password.length());
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_password failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_password failed: %d", ret);
} }
} }
ret = wifi_station_set_wpa2_enterprise_auth(true); ret = wifi_station_set_wpa2_enterprise_auth(true);
if (ret) { if (ret) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_enable failed! %d", ret); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_enable failed: %d", ret);
} }
} }
#endif // USE_WIFI_WPA2_EAP #endif // USE_WIFI_WPA2_EAP
@ -337,7 +337,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
ret = wifi_station_connect(); ret = wifi_station_connect();
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "wifi_station_connect failed!"); ESP_LOGV(TAG, "wifi_station_connect failed");
return false; return false;
} }
@ -359,7 +359,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
if (ap.get_channel().has_value()) { if (ap.get_channel().has_value()) {
ret = wifi_set_channel(*ap.get_channel()); ret = wifi_set_channel(*ap.get_channel());
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "wifi_set_channel failed!"); ESP_LOGV(TAG, "wifi_set_channel failed");
return false; return false;
} }
} }
@ -496,8 +496,7 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
char buf[33]; char buf[33];
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
ESP_LOGV(TAG, "Event: Connected ssid='%s' bssid=%s channel=%u", buf, format_mac_addr(it.bssid).c_str(), ESP_LOGV(TAG, "Connected ssid='%s' bssid=%s channel=%u", buf, format_mac_addr(it.bssid).c_str(), it.channel);
it.channel);
s_sta_connected = true; s_sta_connected = true;
break; break;
} }
@ -507,10 +506,10 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
if (it.reason == REASON_NO_AP_FOUND) { if (it.reason == REASON_NO_AP_FOUND) {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf); ESP_LOGW(TAG, "Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf);
s_sta_connect_not_found = true; s_sta_connect_not_found = true;
} else { } else {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf, ESP_LOGW(TAG, "Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf,
format_mac_addr(it.bssid).c_str(), LOG_STR_ARG(get_disconnect_reason_str(it.reason))); format_mac_addr(it.bssid).c_str(), LOG_STR_ARG(get_disconnect_reason_str(it.reason)));
s_sta_connect_error = true; s_sta_connect_error = true;
} }
@ -520,7 +519,7 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
} }
case EVENT_STAMODE_AUTHMODE_CHANGE: { case EVENT_STAMODE_AUTHMODE_CHANGE: {
auto it = event->event_info.auth_change; auto it = event->event_info.auth_change;
ESP_LOGV(TAG, "Event: Changed AuthMode old=%s new=%s", LOG_STR_ARG(get_auth_mode_str(it.old_mode)), ESP_LOGV(TAG, "Changed Authmode old=%s new=%s", LOG_STR_ARG(get_auth_mode_str(it.old_mode)),
LOG_STR_ARG(get_auth_mode_str(it.new_mode))); LOG_STR_ARG(get_auth_mode_str(it.new_mode)));
// Mitigate CVE-2020-12638 // Mitigate CVE-2020-12638
// https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
@ -535,40 +534,40 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
} }
case EVENT_STAMODE_GOT_IP: { case EVENT_STAMODE_GOT_IP: {
auto it = event->event_info.got_ip; auto it = event->event_info.got_ip;
ESP_LOGV(TAG, "Event: Got IP static_ip=%s gateway=%s netmask=%s", format_ip_addr(it.ip).c_str(), ESP_LOGV(TAG, "static_ip=%s gateway=%s netmask=%s", format_ip_addr(it.ip).c_str(), format_ip_addr(it.gw).c_str(),
format_ip_addr(it.gw).c_str(), format_ip_addr(it.mask).c_str()); format_ip_addr(it.mask).c_str());
s_sta_got_ip = true; s_sta_got_ip = true;
break; break;
} }
case EVENT_STAMODE_DHCP_TIMEOUT: { case EVENT_STAMODE_DHCP_TIMEOUT: {
ESP_LOGW(TAG, "Event: Getting IP address timeout"); ESP_LOGW(TAG, "DHCP request timeout");
break; break;
} }
case EVENT_SOFTAPMODE_STACONNECTED: { case EVENT_SOFTAPMODE_STACONNECTED: {
auto it = event->event_info.sta_connected; auto it = event->event_info.sta_connected;
ESP_LOGV(TAG, "Event: AP client connected MAC=%s aid=%u", format_mac_addr(it.mac).c_str(), it.aid); ESP_LOGV(TAG, "AP client connected MAC=%s aid=%u", format_mac_addr(it.mac).c_str(), it.aid);
break; break;
} }
case EVENT_SOFTAPMODE_STADISCONNECTED: { case EVENT_SOFTAPMODE_STADISCONNECTED: {
auto it = event->event_info.sta_disconnected; auto it = event->event_info.sta_disconnected;
ESP_LOGV(TAG, "Event: AP client disconnected MAC=%s aid=%u", format_mac_addr(it.mac).c_str(), it.aid); ESP_LOGV(TAG, "AP client disconnected MAC=%s aid=%u", format_mac_addr(it.mac).c_str(), it.aid);
break; break;
} }
case EVENT_SOFTAPMODE_PROBEREQRECVED: { case EVENT_SOFTAPMODE_PROBEREQRECVED: {
auto it = event->event_info.ap_probereqrecved; auto it = event->event_info.ap_probereqrecved;
ESP_LOGVV(TAG, "Event: AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi); ESP_LOGVV(TAG, "AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi);
break; break;
} }
#if USE_ARDUINO_VERSION_CODE >= VERSION_CODE(2, 4, 0) #if USE_ARDUINO_VERSION_CODE >= VERSION_CODE(2, 4, 0)
case EVENT_OPMODE_CHANGED: { case EVENT_OPMODE_CHANGED: {
auto it = event->event_info.opmode_changed; auto it = event->event_info.opmode_changed;
ESP_LOGV(TAG, "Event: Changed Mode old=%s new=%s", LOG_STR_ARG(get_op_mode_str(it.old_opmode)), ESP_LOGV(TAG, "Changed Mode old=%s new=%s", LOG_STR_ARG(get_op_mode_str(it.old_opmode)),
LOG_STR_ARG(get_op_mode_str(it.new_opmode))); LOG_STR_ARG(get_op_mode_str(it.new_opmode)));
break; break;
} }
case EVENT_SOFTAPMODE_DISTRIBUTE_STA_IP: { case EVENT_SOFTAPMODE_DISTRIBUTE_STA_IP: {
auto it = event->event_info.distribute_sta_ip; auto it = event->event_info.distribute_sta_ip;
ESP_LOGV(TAG, "Event: AP Distribute Station IP MAC=%s IP=%s aid=%u", format_mac_addr(it.mac).c_str(), ESP_LOGV(TAG, "AP Distribute Station IP MAC=%s IP=%s aid=%u", format_mac_addr(it.mac).c_str(),
format_ip_addr(it.ip).c_str(), it.aid); format_ip_addr(it.ip).c_str(), it.aid);
break; break;
} }
@ -600,7 +599,7 @@ bool WiFiComponent::wifi_sta_pre_setup_() {
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
if (!ret1 || !ret2) { if (!ret1 || !ret2) {
ESP_LOGV(TAG, "Disabling Auto-Connect failed!"); ESP_LOGV(TAG, "Disabling Auto-Connect failed");
} }
delay(10); delay(10);
@ -666,7 +665,7 @@ bool WiFiComponent::wifi_scan_start_(bool passive) {
first_scan = false; first_scan = false;
bool ret = wifi_station_scan(&config, &WiFiComponent::s_wifi_scan_done_callback); bool ret = wifi_station_scan(&config, &WiFiComponent::s_wifi_scan_done_callback);
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "wifi_station_scan failed!"); ESP_LOGV(TAG, "wifi_station_scan failed");
return false; return false;
} }
@ -692,7 +691,7 @@ void WiFiComponent::wifi_scan_done_callback_(void *arg, STATUS status) {
this->scan_result_.clear(); this->scan_result_.clear();
if (status != OK) { if (status != OK) {
ESP_LOGV(TAG, "Scan failed! %d", status); ESP_LOGV(TAG, "Scan failed: %d", status);
this->retry_connect(); this->retry_connect();
return; return;
} }
@ -725,12 +724,12 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
if (wifi_softap_dhcps_status() == DHCP_STARTED) { if (wifi_softap_dhcps_status() == DHCP_STARTED) {
if (!wifi_softap_dhcps_stop()) { if (!wifi_softap_dhcps_stop()) {
ESP_LOGW(TAG, "Stopping DHCP server failed!"); ESP_LOGW(TAG, "Stopping DHCP server failed");
} }
} }
if (!wifi_set_ip_info(SOFTAP_IF, &info)) { if (!wifi_set_ip_info(SOFTAP_IF, &info)) {
ESP_LOGE(TAG, "Setting SoftAP info failed!"); ESP_LOGE(TAG, "Set SoftAP info failed");
return false; return false;
} }
@ -748,13 +747,13 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
lease.end_ip = start_address; lease.end_ip = start_address;
ESP_LOGV(TAG, "DHCP server IP lease end: %s", start_address.str().c_str()); ESP_LOGV(TAG, "DHCP server IP lease end: %s", start_address.str().c_str());
if (!wifi_softap_set_dhcps_lease(&lease)) { if (!wifi_softap_set_dhcps_lease(&lease)) {
ESP_LOGE(TAG, "Setting SoftAP DHCP lease failed!"); ESP_LOGE(TAG, "Set SoftAP DHCP lease failed");
return false; return false;
} }
// lease time 1440 minutes (=24 hours) // lease time 1440 minutes (=24 hours)
if (!wifi_softap_set_dhcps_lease_time(1440)) { if (!wifi_softap_set_dhcps_lease_time(1440)) {
ESP_LOGE(TAG, "Setting SoftAP DHCP lease time failed!"); ESP_LOGE(TAG, "Set SoftAP DHCP lease time failed");
return false; return false;
} }
@ -764,13 +763,13 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
uint8_t mode = 1; uint8_t mode = 1;
// bit0, 1 enables router information from ESP8266 SoftAP DHCP server. // bit0, 1 enables router information from ESP8266 SoftAP DHCP server.
if (!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { if (!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) {
ESP_LOGE(TAG, "wifi_softap_set_dhcps_offer_option failed!"); ESP_LOGE(TAG, "wifi_softap_set_dhcps_offer_option failed");
return false; return false;
} }
#endif #endif
if (!wifi_softap_dhcps_start()) { if (!wifi_softap_dhcps_start()) {
ESP_LOGE(TAG, "Starting SoftAP DHCPS failed!"); ESP_LOGE(TAG, "Starting SoftAP DHCPS failed");
return false; return false;
} }
@ -784,7 +783,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
struct softap_config conf {}; struct softap_config conf {};
if (ap.get_ssid().size() > sizeof(conf.ssid)) { if (ap.get_ssid().size() > sizeof(conf.ssid)) {
ESP_LOGE(TAG, "AP SSID is too long"); ESP_LOGE(TAG, "AP SSID too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -800,7 +799,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
} else { } else {
conf.authmode = AUTH_WPA2_PSK; conf.authmode = AUTH_WPA2_PSK;
if (ap.get_password().size() > sizeof(conf.password)) { if (ap.get_password().size() > sizeof(conf.password)) {
ESP_LOGE(TAG, "AP password is too long"); ESP_LOGE(TAG, "AP password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size()); memcpy(reinterpret_cast<char *>(conf.password), ap.get_password().c_str(), ap.get_password().size());
@ -811,12 +810,12 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
ETS_UART_INTR_ENABLE(); ETS_UART_INTR_ENABLE();
if (!ret) { if (!ret) {
ESP_LOGV(TAG, "wifi_softap_set_config_current failed!"); ESP_LOGV(TAG, "wifi_softap_set_config_current failed");
return false; return false;
} }
if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) { if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) {
ESP_LOGV(TAG, "wifi_ap_ip_config_ failed!"); ESP_LOGV(TAG, "wifi_ap_ip_config_ failed");
return false; return false;
} }

View File

@ -219,14 +219,14 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
return true; return true;
if (set_sta && !current_sta) { if (set_sta && !current_sta) {
ESP_LOGV(TAG, "Enabling STA."); ESP_LOGV(TAG, "Enabling STA");
} else if (!set_sta && current_sta) { } else if (!set_sta && current_sta) {
ESP_LOGV(TAG, "Disabling STA."); ESP_LOGV(TAG, "Disabling STA");
} }
if (set_ap && !current_ap) { if (set_ap && !current_ap) {
ESP_LOGV(TAG, "Enabling AP."); ESP_LOGV(TAG, "Enabling AP");
} else if (!set_ap && current_ap) { } else if (!set_ap && current_ap) {
ESP_LOGV(TAG, "Disabling AP."); ESP_LOGV(TAG, "Disabling AP");
} }
if (set_mode == WIFI_MODE_NULL && s_wifi_started) { if (set_mode == WIFI_MODE_NULL && s_wifi_started) {
@ -290,11 +290,11 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
wifi_config_t conf; wifi_config_t conf;
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) { if (ap.get_ssid().size() > sizeof(conf.sta.ssid)) {
ESP_LOGE(TAG, "SSID is too long"); ESP_LOGE(TAG, "SSID too long");
return false; return false;
} }
if (ap.get_password().size() > sizeof(conf.sta.password)) { if (ap.get_password().size() > sizeof(conf.sta.password)) {
ESP_LOGE(TAG, "password is too long"); ESP_LOGE(TAG, "Password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.sta.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -490,7 +490,7 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
if (dhcp_status != ESP_NETIF_DHCP_STARTED) { if (dhcp_status != ESP_NETIF_DHCP_STARTED) {
err = esp_netif_dhcpc_start(s_sta_netif); err = esp_netif_dhcpc_start(s_sta_netif);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "Starting DHCP client failed! %d", err); ESP_LOGV(TAG, "Starting DHCP client failed: %d", err);
} }
return err == ESP_OK; return err == ESP_OK;
} }
@ -503,12 +503,12 @@ bool WiFiComponent::wifi_sta_ip_config_(optional<ManualIP> manual_ip) {
info.netmask = manual_ip->subnet; info.netmask = manual_ip->subnet;
err = esp_netif_dhcpc_stop(s_sta_netif); err = esp_netif_dhcpc_stop(s_sta_netif);
if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED) { if (err != ESP_OK && err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED) {
ESP_LOGV(TAG, "Stopping DHCP client failed! %s", esp_err_to_name(err)); ESP_LOGV(TAG, "Stopping DHCP client failed: %s", esp_err_to_name(err));
} }
err = esp_netif_set_ip_info(s_sta_netif, &info); err = esp_netif_set_ip_info(s_sta_netif, &info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "Setting manual IP info failed! %s", esp_err_to_name(err)); ESP_LOGV(TAG, "Setting manual IP info failed: %s", esp_err_to_name(err));
} }
esp_netif_dns_info_t dns; esp_netif_dns_info_t dns;
@ -665,7 +665,7 @@ void WiFiComponent::wifi_loop_() {
void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) { void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
esp_err_t err; esp_err_t err;
if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_START) { if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_START) {
ESP_LOGV(TAG, "Event: WiFi STA start"); ESP_LOGV(TAG, "STA start");
// apply hostname // apply hostname
err = esp_netif_set_hostname(s_sta_netif, App.get_name().c_str()); err = esp_netif_set_hostname(s_sta_netif, App.get_name().c_str());
if (err != ERR_OK) { if (err != ERR_OK) {
@ -677,13 +677,12 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
wifi_apply_power_save_(); wifi_apply_power_save_();
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_STOP) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_STOP) {
ESP_LOGV(TAG, "Event: WiFi STA stop"); ESP_LOGV(TAG, "STA stop");
s_sta_started = false; s_sta_started = false;
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_AUTHMODE_CHANGE) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_AUTHMODE_CHANGE) {
const auto &it = data->data.sta_authmode_change; const auto &it = data->data.sta_authmode_change;
ESP_LOGV(TAG, "Event: Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), ESP_LOGV(TAG, "Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), get_auth_mode_str(it.new_mode));
get_auth_mode_str(it.new_mode));
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_CONNECTED) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_CONNECTED) {
const auto &it = data->data.sta_connected; const auto &it = data->data.sta_connected;
@ -691,7 +690,7 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
assert(it.ssid_len <= 32); assert(it.ssid_len <= 32);
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
ESP_LOGV(TAG, "Event: Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf, ESP_LOGV(TAG, "Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf,
format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode)); format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode));
s_sta_connected = true; s_sta_connected = true;
@ -702,13 +701,13 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
if (it.reason == WIFI_REASON_NO_AP_FOUND) { if (it.reason == WIFI_REASON_NO_AP_FOUND) {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf); ESP_LOGW(TAG, "Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf);
s_sta_connect_not_found = true; s_sta_connect_not_found = true;
} else if (it.reason == WIFI_REASON_ROAMING) { } else if (it.reason == WIFI_REASON_ROAMING) {
ESP_LOGI(TAG, "Event: Disconnected ssid='%s' reason='Station Roaming'", buf); ESP_LOGI(TAG, "Disconnected ssid='%s' reason='Station Roaming'", buf);
return; return;
} else { } else {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf, ESP_LOGW(TAG, "Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf,
format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason)); format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason));
s_sta_connect_error = true; s_sta_connect_error = true;
} }
@ -721,24 +720,24 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
#if USE_NETWORK_IPV6 #if USE_NETWORK_IPV6
esp_netif_create_ip6_linklocal(s_sta_netif); esp_netif_create_ip6_linklocal(s_sta_netif);
#endif /* USE_NETWORK_IPV6 */ #endif /* USE_NETWORK_IPV6 */
ESP_LOGV(TAG, "Event: Got IP static_ip=%s gateway=%s", format_ip4_addr(it.ip_info.ip).c_str(), ESP_LOGV(TAG, "static_ip=%s gateway=%s", format_ip4_addr(it.ip_info.ip).c_str(),
format_ip4_addr(it.ip_info.gw).c_str()); format_ip4_addr(it.ip_info.gw).c_str());
this->got_ipv4_address_ = true; this->got_ipv4_address_ = true;
#if USE_NETWORK_IPV6 #if USE_NETWORK_IPV6
} else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_GOT_IP6) { } else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_GOT_IP6) {
const auto &it = data->data.ip_got_ip6; const auto &it = data->data.ip_got_ip6;
ESP_LOGV(TAG, "Event: Got IPv6 address=%s", format_ip6_addr(it.ip6_info.ip).c_str()); ESP_LOGV(TAG, "IPv6 address=%s", format_ip6_addr(it.ip6_info.ip).c_str());
this->num_ipv6_addresses_++; this->num_ipv6_addresses_++;
#endif /* USE_NETWORK_IPV6 */ #endif /* USE_NETWORK_IPV6 */
} else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_STA_LOST_IP) { } else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_STA_LOST_IP) {
ESP_LOGV(TAG, "Event: Lost IP"); ESP_LOGV(TAG, "Lost IP");
this->got_ipv4_address_ = false; this->got_ipv4_address_ = false;
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_SCAN_DONE) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_SCAN_DONE) {
const auto &it = data->data.sta_scan_done; const auto &it = data->data.sta_scan_done;
ESP_LOGV(TAG, "Event: WiFi Scan Done status=%" PRIu32 " number=%u scan_id=%u", it.status, it.number, it.scan_id); ESP_LOGV(TAG, "Scan done: status=%" PRIu32 " number=%u scan_id=%u", it.status, it.number, it.scan_id);
scan_result_.clear(); scan_result_.clear();
this->scan_done_ = true; this->scan_done_ = true;
@ -772,28 +771,28 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
} }
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_START) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_START) {
ESP_LOGV(TAG, "Event: WiFi AP start"); ESP_LOGV(TAG, "AP start");
s_ap_started = true; s_ap_started = true;
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STOP) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STOP) {
ESP_LOGV(TAG, "Event: WiFi AP stop"); ESP_LOGV(TAG, "AP stop");
s_ap_started = false; s_ap_started = false;
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_PROBEREQRECVED) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_PROBEREQRECVED) {
const auto &it = data->data.ap_probe_req_rx; const auto &it = data->data.ap_probe_req_rx;
ESP_LOGVV(TAG, "Event: AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi); ESP_LOGVV(TAG, "AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi);
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STACONNECTED) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STACONNECTED) {
const auto &it = data->data.ap_staconnected; const auto &it = data->data.ap_staconnected;
ESP_LOGV(TAG, "Event: AP client connected MAC=%s", format_mac_addr(it.mac).c_str()); ESP_LOGV(TAG, "AP client connected MAC=%s", format_mac_addr(it.mac).c_str());
} else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STADISCONNECTED) { } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STADISCONNECTED) {
const auto &it = data->data.ap_stadisconnected; const auto &it = data->data.ap_stadisconnected;
ESP_LOGV(TAG, "Event: AP client disconnected MAC=%s", format_mac_addr(it.mac).c_str()); ESP_LOGV(TAG, "AP client disconnected MAC=%s", format_mac_addr(it.mac).c_str());
} else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_AP_STAIPASSIGNED) { } else if (data->event_base == IP_EVENT && data->event_id == IP_EVENT_AP_STAIPASSIGNED) {
const auto &it = data->data.ip_ap_staipassigned; const auto &it = data->data.ip_ap_staipassigned;
ESP_LOGV(TAG, "Event: AP client assigned IP %s", format_ip4_addr(it.ip).c_str()); ESP_LOGV(TAG, "AP client assigned IP %s", format_ip4_addr(it.ip).c_str());
} }
} }
@ -873,7 +872,7 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
err = esp_netif_set_ip_info(s_ap_netif, &info); err = esp_netif_set_ip_info(s_ap_netif, &info);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_set_ip_info failed! %d", err); ESP_LOGE(TAG, "esp_netif_set_ip_info failed: %d", err);
return false; return false;
} }
@ -889,14 +888,14 @@ bool WiFiComponent::wifi_ap_ip_config_(optional<ManualIP> manual_ip) {
err = esp_netif_dhcps_option(s_ap_netif, ESP_NETIF_OP_SET, ESP_NETIF_REQUESTED_IP_ADDRESS, &lease, sizeof(lease)); err = esp_netif_dhcps_option(s_ap_netif, ESP_NETIF_OP_SET, ESP_NETIF_REQUESTED_IP_ADDRESS, &lease, sizeof(lease));
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_dhcps_option failed! %d", err); ESP_LOGE(TAG, "esp_netif_dhcps_option failed: %d", err);
return false; return false;
} }
err = esp_netif_dhcps_start(s_ap_netif); err = esp_netif_dhcps_start(s_ap_netif);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_netif_dhcps_start failed! %d", err); ESP_LOGE(TAG, "esp_netif_dhcps_start failed: %d", err);
return false; return false;
} }
@ -911,7 +910,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
wifi_config_t conf; wifi_config_t conf;
memset(&conf, 0, sizeof(conf)); memset(&conf, 0, sizeof(conf));
if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) { if (ap.get_ssid().size() > sizeof(conf.ap.ssid)) {
ESP_LOGE(TAG, "AP SSID is too long"); ESP_LOGE(TAG, "AP SSID too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size()); memcpy(reinterpret_cast<char *>(conf.ap.ssid), ap.get_ssid().c_str(), ap.get_ssid().size());
@ -926,7 +925,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
} else { } else {
conf.ap.authmode = WIFI_AUTH_WPA2_PSK; conf.ap.authmode = WIFI_AUTH_WPA2_PSK;
if (ap.get_password().size() > sizeof(conf.ap.password)) { if (ap.get_password().size() > sizeof(conf.ap.password)) {
ESP_LOGE(TAG, "AP password is too long"); ESP_LOGE(TAG, "AP password too long");
return false; return false;
} }
memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size()); memcpy(reinterpret_cast<char *>(conf.ap.password), ap.get_password().c_str(), ap.get_password().size());
@ -937,12 +936,12 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
esp_err_t err = esp_wifi_set_config(WIFI_IF_AP, &conf); esp_err_t err = esp_wifi_set_config(WIFI_IF_AP, &conf);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_wifi_set_config failed! %d", err); ESP_LOGE(TAG, "esp_wifi_set_config failed: %d", err);
return false; return false;
} }
if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) { if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) {
ESP_LOGE(TAG, "wifi_ap_ip_config_ failed!"); ESP_LOGE(TAG, "wifi_ap_ip_config_ failed:");
return false; return false;
} }

View File

@ -32,14 +32,14 @@ bool WiFiComponent::wifi_mode_(optional<bool> sta, optional<bool> ap) {
return true; return true;
if (enable_sta && !current_sta) { if (enable_sta && !current_sta) {
ESP_LOGV(TAG, "Enabling STA."); ESP_LOGV(TAG, "Enabling STA");
} else if (!enable_sta && current_sta) { } else if (!enable_sta && current_sta) {
ESP_LOGV(TAG, "Disabling STA."); ESP_LOGV(TAG, "Disabling STA");
} }
if (enable_ap && !current_ap) { if (enable_ap && !current_ap) {
ESP_LOGV(TAG, "Enabling AP."); ESP_LOGV(TAG, "Enabling AP");
} else if (!enable_ap && current_ap) { } else if (!enable_ap && current_ap) {
ESP_LOGV(TAG, "Disabling AP."); ESP_LOGV(TAG, "Disabling AP");
} }
uint8_t mode = 0; uint8_t mode = 0;
@ -124,7 +124,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
ap.get_channel().has_value() ? *ap.get_channel() : 0, ap.get_channel().has_value() ? *ap.get_channel() : 0,
ap.get_bssid().has_value() ? ap.get_bssid()->data() : NULL); ap.get_bssid().has_value() ? ap.get_bssid()->data() : NULL);
if (status != WL_CONNECTED) { if (status != WL_CONNECTED) {
ESP_LOGW(TAG, "esp_wifi_connect failed! %d", status); ESP_LOGW(TAG, "esp_wifi_connect failed: %d", status);
return false; return false;
} }
@ -256,23 +256,23 @@ using esphome_wifi_event_info_t = arduino_event_info_t;
void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_wifi_event_info_t info) { void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_wifi_event_info_t info) {
switch (event) { switch (event) {
case ESPHOME_EVENT_ID_WIFI_READY: { case ESPHOME_EVENT_ID_WIFI_READY: {
ESP_LOGV(TAG, "Event: WiFi ready"); ESP_LOGV(TAG, "Ready");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_SCAN_DONE: { case ESPHOME_EVENT_ID_WIFI_SCAN_DONE: {
auto it = info.wifi_scan_done; auto it = info.wifi_scan_done;
ESP_LOGV(TAG, "Event: WiFi Scan Done status=%u number=%u scan_id=%u", it.status, it.number, it.scan_id); ESP_LOGV(TAG, "Scan done: status=%u number=%u scan_id=%u", it.status, it.number, it.scan_id);
this->wifi_scan_done_callback_(); this->wifi_scan_done_callback_();
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_START: { case ESPHOME_EVENT_ID_WIFI_STA_START: {
ESP_LOGV(TAG, "Event: WiFi STA start"); ESP_LOGV(TAG, "STA start");
WiFi.setHostname(App.get_name().c_str()); WiFi.setHostname(App.get_name().c_str());
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_STOP: { case ESPHOME_EVENT_ID_WIFI_STA_STOP: {
ESP_LOGV(TAG, "Event: WiFi STA stop"); ESP_LOGV(TAG, "STA stop");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: { case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: {
@ -280,7 +280,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
char buf[33]; char buf[33];
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
ESP_LOGV(TAG, "Event: Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf, ESP_LOGV(TAG, "Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf,
format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode)); format_mac_addr(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode));
break; break;
@ -291,9 +291,9 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
memcpy(buf, it.ssid, it.ssid_len); memcpy(buf, it.ssid, it.ssid_len);
buf[it.ssid_len] = '\0'; buf[it.ssid_len] = '\0';
if (it.reason == WIFI_REASON_NO_AP_FOUND) { if (it.reason == WIFI_REASON_NO_AP_FOUND) {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf); ESP_LOGW(TAG, "Disconnected ssid='%s' reason='Probe Request Unsuccessful'", buf);
} else { } else {
ESP_LOGW(TAG, "Event: Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf, ESP_LOGW(TAG, "Disconnected ssid='%s' bssid=" LOG_SECRET("%s") " reason='%s'", buf,
format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason)); format_mac_addr(it.bssid).c_str(), get_disconnect_reason_str(it.reason));
} }
@ -310,8 +310,7 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
} }
case ESPHOME_EVENT_ID_WIFI_STA_AUTHMODE_CHANGE: { case ESPHOME_EVENT_ID_WIFI_STA_AUTHMODE_CHANGE: {
auto it = info.wifi_sta_authmode_change; auto it = info.wifi_sta_authmode_change;
ESP_LOGV(TAG, "Event: Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), ESP_LOGV(TAG, "Authmode Change old=%s new=%s", get_auth_mode_str(it.old_mode), get_auth_mode_str(it.new_mode));
get_auth_mode_str(it.new_mode));
// Mitigate CVE-2020-12638 // Mitigate CVE-2020-12638
// https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors // https://lbsfilm.at/blog/wpa2-authenticationmode-downgrade-in-espressif-microprocessors
if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) { if (it.old_mode != WIFI_AUTH_OPEN && it.new_mode == WIFI_AUTH_OPEN) {
@ -325,47 +324,47 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
} }
case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP: { case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP: {
// auto it = info.got_ip.ip_info; // auto it = info.got_ip.ip_info;
ESP_LOGV(TAG, "Event: Got IP static_ip=%s gateway=%s", format_ip4_addr(WiFi.localIP()).c_str(), ESP_LOGV(TAG, "static_ip=%s gateway=%s", format_ip4_addr(WiFi.localIP()).c_str(),
format_ip4_addr(WiFi.gatewayIP()).c_str()); format_ip4_addr(WiFi.gatewayIP()).c_str());
s_sta_connecting = false; s_sta_connecting = false;
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP6: { case ESPHOME_EVENT_ID_WIFI_STA_GOT_IP6: {
// auto it = info.got_ip.ip_info; // auto it = info.got_ip.ip_info;
ESP_LOGV(TAG, "Event: Got IPv6"); ESP_LOGV(TAG, "Got IPv6");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_STA_LOST_IP: { case ESPHOME_EVENT_ID_WIFI_STA_LOST_IP: {
ESP_LOGV(TAG, "Event: Lost IP"); ESP_LOGV(TAG, "Lost IP");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_START: { case ESPHOME_EVENT_ID_WIFI_AP_START: {
ESP_LOGV(TAG, "Event: WiFi AP start"); ESP_LOGV(TAG, "AP start");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STOP: { case ESPHOME_EVENT_ID_WIFI_AP_STOP: {
ESP_LOGV(TAG, "Event: WiFi AP stop"); ESP_LOGV(TAG, "AP stop");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: { case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: {
auto it = info.wifi_sta_connected; auto it = info.wifi_sta_connected;
auto &mac = it.bssid; auto &mac = it.bssid;
ESP_LOGV(TAG, "Event: AP client connected MAC=%s", format_mac_addr(mac).c_str()); ESP_LOGV(TAG, "AP client connected MAC=%s", format_mac_addr(mac).c_str());
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STADISCONNECTED: { case ESPHOME_EVENT_ID_WIFI_AP_STADISCONNECTED: {
auto it = info.wifi_sta_disconnected; auto it = info.wifi_sta_disconnected;
auto &mac = it.bssid; auto &mac = it.bssid;
ESP_LOGV(TAG, "Event: AP client disconnected MAC=%s", format_mac_addr(mac).c_str()); ESP_LOGV(TAG, "AP client disconnected MAC=%s", format_mac_addr(mac).c_str());
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_STAIPASSIGNED: { case ESPHOME_EVENT_ID_WIFI_AP_STAIPASSIGNED: {
ESP_LOGV(TAG, "Event: AP client assigned IP"); ESP_LOGV(TAG, "AP client assigned IP");
break; break;
} }
case ESPHOME_EVENT_ID_WIFI_AP_PROBEREQRECVED: { case ESPHOME_EVENT_ID_WIFI_AP_PROBEREQRECVED: {
auto it = info.wifi_ap_probereqrecved; auto it = info.wifi_ap_probereqrecved;
ESP_LOGVV(TAG, "Event: AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi); ESP_LOGVV(TAG, "AP receive Probe Request MAC=%s RSSI=%d", format_mac_addr(it.mac).c_str(), it.rssi);
break; break;
} }
default: default:
@ -399,7 +398,7 @@ bool WiFiComponent::wifi_scan_start_(bool passive) {
// need to use WiFi because of WiFiScanClass allocations :( // need to use WiFi because of WiFiScanClass allocations :(
int16_t err = WiFi.scanNetworks(true, true, passive, 200); int16_t err = WiFi.scanNetworks(true, true, passive, 200);
if (err != WIFI_SCAN_RUNNING) { if (err != WIFI_SCAN_RUNNING) {
ESP_LOGV(TAG, "WiFi.scanNetworks failed! %d", err); ESP_LOGV(TAG, "WiFi.scanNetworks failed: %d", err);
return false; return false;
} }
@ -447,7 +446,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
return false; return false;
if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) { if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) {
ESP_LOGV(TAG, "wifi_ap_ip_config_ failed!"); ESP_LOGV(TAG, "wifi_ap_ip_config_ failed");
return false; return false;
} }

View File

@ -134,7 +134,7 @@ bool WiFiComponent::wifi_scan_start_(bool passive) {
scan_options.scan_type = passive ? 1 : 0; scan_options.scan_type = passive ? 1 : 0;
int err = cyw43_wifi_scan(&cyw43_state, &scan_options, nullptr, &s_wifi_scan_result); int err = cyw43_wifi_scan(&cyw43_state, &scan_options, nullptr, &s_wifi_scan_result);
if (err) { if (err) {
ESP_LOGV(TAG, "cyw43_wifi_scan failed!"); ESP_LOGV(TAG, "cyw43_wifi_scan failed");
} }
return err == 0; return err == 0;
return true; return true;
@ -162,7 +162,7 @@ bool WiFiComponent::wifi_start_ap_(const WiFiAP &ap) {
if (!this->wifi_mode_({}, true)) if (!this->wifi_mode_({}, true))
return false; return false;
if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) { if (!this->wifi_ap_ip_config_(ap.get_manual_ip())) {
ESP_LOGV(TAG, "wifi_ap_ip_config_ failed!"); ESP_LOGV(TAG, "wifi_ap_ip_config_ failed");
return false; return false;
} }
@ -209,7 +209,7 @@ network::IPAddress WiFiComponent::wifi_dns_ip_(int num) {
void WiFiComponent::wifi_loop_() { void WiFiComponent::wifi_loop_() {
if (this->state_ == WIFI_COMPONENT_STATE_STA_SCANNING && !cyw43_wifi_scan_active(&cyw43_state)) { if (this->state_ == WIFI_COMPONENT_STATE_STA_SCANNING && !cyw43_wifi_scan_active(&cyw43_state)) {
this->scan_done_ = true; this->scan_done_ = true;
ESP_LOGV(TAG, "Scan done!"); ESP_LOGV(TAG, "Scan done");
} }
} }

View File

@ -7,12 +7,12 @@ namespace wifi_info {
static const char *const TAG = "wifi_info"; static const char *const TAG = "wifi_info";
void IPAddressWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo IPAddress", this); } void IPAddressWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "IP Address", this); }
void ScanResultsWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo Scan Results", this); } void ScanResultsWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "Scan Results", this); }
void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo SSID", this); } void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "SSID", this); }
void BSSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo BSSID", this); } void BSSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "BSSID", this); }
void MacAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo Mac Address", this); } void MacAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "MAC Address", this); }
void DNSAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "WifiInfo DNS Address", this); } void DNSAddressWifiInfo::dump_config() { LOG_TEXT_SENSOR("", "DNS Address", this); }
} // namespace wifi_info } // namespace wifi_info
} // namespace esphome } // namespace esphome