70 ESP_ERROR_CHECK(esp_netif_set_hostname(sta_netif, "balkon")); |
70 ESP_ERROR_CHECK(esp_netif_set_hostname(sta_netif, "balkon")); |
71 #endif |
71 #endif |
72 #ifdef CONFIG_CODE_TESTING |
72 #ifdef CONFIG_CODE_TESTING |
73 ESP_ERROR_CHECK(esp_netif_set_hostname(sta_netif, "wemos")); |
73 ESP_ERROR_CHECK(esp_netif_set_hostname(sta_netif, "wemos")); |
74 #endif |
74 #endif |
75 // ESP_ERROR_CHECK(esp_wifi_connect()); |
|
76 break; |
75 break; |
77 |
76 |
78 case WIFI_EVENT_STA_CONNECTED: { |
77 case WIFI_EVENT_STA_CONNECTED: { |
79 // system_event_sta_connected_t* event = (wifi_event_sta_connected_t*) event_data; |
78 // system_event_sta_connected_t* event = (wifi_event_sta_connected_t*) event_data; |
80 wifi_ap_record_t ap_info; |
79 wifi_ap_record_t ap_info; |
91 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
90 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
92 break; |
91 break; |
93 } |
92 } |
94 |
93 |
95 case WIFI_EVENT_STA_DISCONNECTED: { |
94 case WIFI_EVENT_STA_DISCONNECTED: { |
96 ESP_LOGI(TAG, "Event STA disconnected"); |
95 wifi_event_sta_disconnected_t* disconnected = (wifi_event_sta_disconnected_t*) event_data; |
97 // wifi_event_sta_disconnected_t* disconnected = (wifi_event_sta_disconnected_t*) event_data; |
96 |
98 // ESP_LOGI(TAG, "Event STA disconnected, reason:%d", disconnected->reason); |
97 ESP_LOGI(TAG, "Event STA disconnected, reason: %d", disconnected->reason); |
|
98 if (disconnected->reason != 8) |
|
99 request_mqtt(false); |
99 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
100 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
100 wifi_state->STA_connected = false; |
101 wifi_state->STA_connected = false; |
101 wifi_state->STA_online = false; |
102 wifi_state->STA_online = false; |
102 xSemaphoreGive(xSemaphoreWiFi); |
103 xSemaphoreGive(xSemaphoreWiFi); |
103 } else { |
104 } else { |
104 ESP_LOGE(TAG, "wifi_event_handler() lock error WIFI_EVENT_STA_DISCONNECTED"); |
105 ESP_LOGE(TAG, "wifi_event_handler() lock error WIFI_EVENT_STA_DISCONNECTED"); |
105 } |
106 } |
106 if (ready_mqtt()) |
|
107 connect_mqtt(false); |
|
108 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); |
107 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); |
109 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
108 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
110 break; |
109 break; |
111 } |
110 } |
112 |
111 |
133 snprintf(wifi_state->STA_gw, 16, IPSTR, IP2STR(&event->ip_info.gw)); |
132 snprintf(wifi_state->STA_gw, 16, IPSTR, IP2STR(&event->ip_info.gw)); |
134 xSemaphoreGive(xSemaphoreWiFi); |
133 xSemaphoreGive(xSemaphoreWiFi); |
135 } else { |
134 } else { |
136 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_GOT_IP"); |
135 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_GOT_IP"); |
137 } |
136 } |
138 connect_mqtt(true); |
|
139 break; |
137 break; |
140 |
138 |
141 case IP_EVENT_STA_LOST_IP: |
139 case IP_EVENT_STA_LOST_IP: |
142 ESP_LOGW(TAG, "Lost IP address"); |
140 ESP_LOGW(TAG, "Lost IP address"); |
143 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
141 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
148 wifi_state->STA_online = false; |
146 wifi_state->STA_online = false; |
149 xSemaphoreGive(xSemaphoreWiFi); |
147 xSemaphoreGive(xSemaphoreWiFi); |
150 } else { |
148 } else { |
151 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_LOST_IP"); |
149 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_LOST_IP"); |
152 } |
150 } |
153 if (ready_mqtt()) |
|
154 connect_mqtt(false); |
|
155 break; |
151 break; |
156 |
152 |
157 default: |
153 default: |
158 ESP_LOGW(TAG, "Unknown IP event %d", (int)event_id); |
154 ESP_LOGW(TAG, "Unknown IP event %d", (int)event_id); |
159 break; |
155 break; |
213 if (uxBits & TASK_WIFI_REQUEST_STA_DISCONNECT) { |
209 if (uxBits & TASK_WIFI_REQUEST_STA_DISCONNECT) { |
214 /* |
210 /* |
215 * user requested a disconnect, this will in effect disconnect the wifi |
211 * user requested a disconnect, this will in effect disconnect the wifi |
216 */ |
212 */ |
217 ESP_LOGI(TAG, "Request STA disconnect"); |
213 ESP_LOGI(TAG, "Request STA disconnect"); |
218 connect_mqtt(false); |
|
219 wait_mqtt(10000); |
|
220 ESP_ERROR_CHECK(esp_wifi_disconnect()); |
214 ESP_ERROR_CHECK(esp_wifi_disconnect()); |
221 xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED, pdFALSE, pdTRUE, portMAX_DELAY ); |
215 xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED, pdFALSE, pdTRUE, portMAX_DELAY ); |
222 |
216 |
223 /* finally: release the request bit */ |
217 /* finally: release the request bit */ |
224 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT); |
218 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT); |