you import network so STAT_NO_AP_FOUND is not defined in global space but in network.
Therefore you have to check against "network.STAT_NO_AP_FOUND" or do "from network import *"
Properly checking for errors during a WiFi connection?
-
- Posts: 969
- Joined: Sat Feb 03, 2018 7:02 pm
Re: Properly checking for errors during a WiFi connection?
Kevin Köck
Micropython Smarthome Firmware (with Home-Assistant integration): https://github.com/kevinkk525/pysmartnode
Micropython Smarthome Firmware (with Home-Assistant integration): https://github.com/kevinkk525/pysmartnode
Re: Properly checking for errors during a WiFi connection?
I am not sure if this will be of any help... I wonder if looking at both, the espressif and MP source modules you may be able to figure out what is handled and any mappings...
For example, this is from esp_wifi.h
and in esp_err.h
For example, this is from esp_wifi.h
Code: Select all
[size=85][size=50][size=50]
[size=50][/size]#define ESP_ERR_WIFI_NOT_INIT (ESP_ERR_WIFI_BASE + 1) /*!< WiFi driver was not installed by esp_wifi_init */
#define ESP_ERR_WIFI_NOT_STARTED (ESP_ERR_WIFI_BASE + 2) /*!< WiFi driver was not started by esp_wifi_start */
#define ESP_ERR_WIFI_NOT_STOPPED (ESP_ERR_WIFI_BASE + 3) /*!< WiFi driver was not stopped by esp_wifi_stop */
#define ESP_ERR_WIFI_IF (ESP_ERR_WIFI_BASE + 4) /*!< WiFi interface error */
#define ESP_ERR_WIFI_MODE (ESP_ERR_WIFI_BASE + 5) /*!< WiFi mode error */
#define ESP_ERR_WIFI_STATE (ESP_ERR_WIFI_BASE + 6) /*!< WiFi internal state error */
#define ESP_ERR_WIFI_CONN (ESP_ERR_WIFI_BASE + 7) /*!< WiFi internal control block of station or soft-AP error */
#define ESP_ERR_WIFI_NVS (ESP_ERR_WIFI_BASE + 8) /*!< WiFi internal NVS module error */
#define ESP_ERR_WIFI_MAC (ESP_ERR_WIFI_BASE + 9) /*!< MAC address is invalid */
#define ESP_ERR_WIFI_SSID (ESP_ERR_WIFI_BASE + 10) /*!< SSID is invalid */
#define ESP_ERR_WIFI_PASSWORD (ESP_ERR_WIFI_BASE + 11) /*!< Password is invalid */
#define ESP_ERR_WIFI_TIMEOUT (ESP_ERR_WIFI_BASE + 12) /*!< Timeout error */
#define ESP_ERR_WIFI_WAKE_FAIL (ESP_ERR_WIFI_BASE + 13) /*!< WiFi is in sleep state(RF closed) and wakeup fail */
#define ESP_ERR_WIFI_WOULD_BLOCK (ESP_ERR_WIFI_BASE + 14) /*!< The caller would block */
#define ESP_ERR_WIFI_NOT_CONNECT (ESP_ERR_WIFI_BASE + 15) /*!< Station still in disconnect status */[/size][/size][/size]
and in esp_err.h
Code: Select all
#define ESP_ERR_WIFI_BASE 0x3000 /*!< Starting number of WiFi error codes */
Re: Properly checking for errors during a WiFi connection?
This post is rather old, but i found the error definitions. As you can see in the micropython "modnetwork.h" https://github.com/micropython/micropyt ... dnetwork.h file,
So, that definition is made in this following file in the IDF-PY repository: https://github.com/espressif/esp-idf/bl ... fi_types.h
.// Error cases are referenced from wifi_err_reason_t in ESP-IDF
So, that definition is made in this following file in the IDF-PY repository: https://github.com/espressif/esp-idf/bl ... fi_types.h
Code: Select all
typedef enum {
WIFI_REASON_UNSPECIFIED = 1,
WIFI_REASON_AUTH_EXPIRE = 2,
WIFI_REASON_AUTH_LEAVE = 3,
WIFI_REASON_ASSOC_EXPIRE = 4,
WIFI_REASON_ASSOC_TOOMANY = 5,
WIFI_REASON_NOT_AUTHED = 6,
WIFI_REASON_NOT_ASSOCED = 7,
WIFI_REASON_ASSOC_LEAVE = 8,
WIFI_REASON_ASSOC_NOT_AUTHED = 9,
WIFI_REASON_DISASSOC_PWRCAP_BAD = 10,
WIFI_REASON_DISASSOC_SUPCHAN_BAD = 11,
WIFI_REASON_BSS_TRANSITION_DISASSOC = 12,
WIFI_REASON_IE_INVALID = 13,
WIFI_REASON_MIC_FAILURE = 14,
WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT = 15,
WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT = 16,
WIFI_REASON_IE_IN_4WAY_DIFFERS = 17,
WIFI_REASON_GROUP_CIPHER_INVALID = 18,
WIFI_REASON_PAIRWISE_CIPHER_INVALID = 19,
WIFI_REASON_AKMP_INVALID = 20,
WIFI_REASON_UNSUPP_RSN_IE_VERSION = 21,
WIFI_REASON_INVALID_RSN_IE_CAP = 22,
WIFI_REASON_802_1X_AUTH_FAILED = 23,
WIFI_REASON_CIPHER_SUITE_REJECTED = 24,
WIFI_REASON_INVALID_PMKID = 53,
WIFI_REASON_BEACON_TIMEOUT = 200,
WIFI_REASON_NO_AP_FOUND = 201,
WIFI_REASON_AUTH_FAIL = 202,
WIFI_REASON_ASSOC_FAIL = 203,
WIFI_REASON_HANDSHAKE_TIMEOUT = 204,
WIFI_REASON_CONNECTION_FAIL = 205,
WIFI_REASON_AP_TSF_RESET = 206,
WIFI_REASON_ROAMING = 207,
} wifi_err_reason_t;
-
- Posts: 35
- Joined: Sat Oct 26, 2019 8:38 pm
Re: Properly checking for errors during a WiFi connection?
esp32/network_wlan: Fix network.WLAN.status().
https://github.com/micropython/micropython/pull/12932
status() can return STAT_NO_AP_FOUND and STAT_WRONG_PASSWORD.
This allows users to set the correct credentials.
https://github.com/micropython/micropython/pull/12932
status() can return STAT_NO_AP_FOUND and STAT_WRONG_PASSWORD.
This allows users to set the correct credentials.
Re: Properly checking for errors during a WiFi connection?
For what it's worth here is my code to display the text of the status instead of the number to make it more readable:
Code: Select all
def status_text(wlan):
statuses = ['STAT_IDLE', 'STAT_CONNECTING', 'STAT_WRONG_PASSWORD',
'STAT_NO_AP_FOUND', 'STAT_ASSOC_FAIL', 'STAT_BEACON_TIMEOUT',
'STAT_HANDSHAKE_TIMEOUT', 'STAT_GOT_IP']
statDict = {getattr(network, s): s for s in statuses}
statDict.update({8: 'DISCONNECTED'})
statDict.update({2: '2 (unknown)'})
status = wlan.status()
text = statDict[status]
return text