1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-15 15:18:16 +00:00

ESP8266 Connection Fixes

This commit is contained in:
Otto Winter 2019-06-03 10:07:34 +02:00
parent 2642750466
commit f05449f544
No known key found for this signature in database
GPG Key ID: DB66C0BE6013F97E
4 changed files with 7 additions and 8 deletions

View File

@ -712,12 +712,12 @@ bool APIConnection::send_buffer(APIMessageType type) {
size_t needed_space = this->send_buffer_.size() + header_len; size_t needed_space = this->send_buffer_.size() + header_len;
if (needed_space > this->client_->space()) { if (needed_space > this->client_->space()) {
delay(5); delay(0);
if (needed_space > this->client_->space()) { if (needed_space > this->client_->space()) {
if (type != APIMessageType::SUBSCRIBE_LOGS_RESPONSE) { if (type != APIMessageType::SUBSCRIBE_LOGS_RESPONSE) {
ESP_LOGV(TAG, "Cannot send message because of TCP buffer space"); ESP_LOGV(TAG, "Cannot send message because of TCP buffer space");
} }
delay(5); delay(0);
return false; return false;
} }
} }

View File

@ -360,11 +360,11 @@ bool MQTTClientComponent::publish(const std::string &topic, const char *payload,
} }
bool logging_topic = topic == this->log_message_.topic; bool logging_topic = topic == this->log_message_.topic;
uint16_t ret = this->mqtt_client_.publish(topic.c_str(), qos, retain, payload, payload_length); uint16_t ret = this->mqtt_client_.publish(topic.c_str(), qos, retain, payload, payload_length);
yield(); delay(0);
if (ret == 0 && !logging_topic && this->is_connected()) { if (ret == 0 && !logging_topic && this->is_connected()) {
delay(5); delay(0);
ret = this->mqtt_client_.publish(topic.c_str(), qos, retain, payload, payload_length); ret = this->mqtt_client_.publish(topic.c_str(), qos, retain, payload, payload_length);
yield(); delay(0);
} }
if (!logging_topic) { if (!logging_topic) {

View File

@ -421,6 +421,7 @@ void WiFiComponent::check_connecting_finished() {
} }
void WiFiComponent::retry_connect() { void WiFiComponent::retry_connect() {
delay(10);
if (this->num_retried_ > 5 || this->error_from_callback_) { if (this->num_retried_ > 5 || this->error_from_callback_) {
// 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 WiFi adapter...");

View File

@ -330,7 +330,6 @@ const char *get_disconnect_reason_str(uint8_t reason) {
} }
void WiFiComponent::wifi_event_callback(System_Event_t *event) { void WiFiComponent::wifi_event_callback(System_Event_t *event) {
#ifdef ESPHOME_LOG_HAS_VERBOSE
// TODO: this callback is called while in cont context, so delay will fail // TODO: this callback is called while in cont context, so delay will fail
// We need to defer the log messages until we're out of this context // We need to defer the log messages until we're out of this context
// only affects verbose log level // only affects verbose log level
@ -351,7 +350,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: Disconnected ssid='%s' bssid=%s reason='%s'", buf, format_mac_addr(it.bssid).c_str(), ESP_LOGW(TAG, "Event: Disconnected ssid='%s' bssid=%s reason='%s'", buf, format_mac_addr(it.bssid).c_str(),
get_disconnect_reason_str(it.reason)); get_disconnect_reason_str(it.reason));
break; break;
} }
@ -403,7 +402,6 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
default: default:
break; break;
} }
#endif
if (event->event == EVENT_STAMODE_DISCONNECTED) { if (event->event == EVENT_STAMODE_DISCONNECTED) {
global_wifi_component->error_from_callback_ = true; global_wifi_component->error_from_callback_ = true;