Merge pull request #11693 from ascillato/New_WiFi_Config

Simplified Initial WiFi Configuration
This commit is contained in:
Theo Arends 2021-04-13 10:46:39 +02:00 committed by GitHub
commit 919437cebe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 608 additions and 163 deletions

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Wagwoord" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Wagwoord" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Wagwoord"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT-parameters" #define D_MQTT_PARAMETERS "MQTT-parameters"
#define D_CLIENT "Kliënt" #define D_CLIENT "Kliënt"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Парола" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Парола" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Парола"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Параметри на MQTT" #define D_MQTT_PARAMETERS "Параметри на MQTT"
#define D_CLIENT "Клиент" #define D_CLIENT "Клиент"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "Heslo AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSID" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "Heslo AP2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Heslo WiFi"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Nastavení MQTT" #define D_MQTT_PARAMETERS "Nastavení MQTT"
#define D_CLIENT "Klient" #define D_CLIENT "Klient"

View File

@ -291,9 +291,18 @@
#define D_WPA_PSK "WPA-PSK" #define D_WPA_PSK "WPA-PSK"
#define D_WPA2_PSK "WPA2-PSK" #define D_WPA2_PSK "WPA2-PSK"
#define D_AP1_SSID "WLAN 1 - SSID" #define D_AP1_SSID "WLAN 1 - SSID"
#define D_AP1_PASSWORD "WLAN 1 - Passwort" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "WLAN 2 - SSID" #define D_AP2_SSID "WLAN 2 - SSID"
#define D_AP2_PASSWORD "WLAN 2 - Passwort" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WLAN - Passwort"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT-Einstellungen" #define D_MQTT_PARAMETERS "MQTT-Einstellungen"
#define D_CLIENT "client" #define D_CLIENT "client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Κωδικός" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Κωδικός" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Κωδικός"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Παράμετροι MQTT" #define D_MQTT_PARAMETERS "Παράμετροι MQTT"
#define D_CLIENT "Πελάτης" #define D_CLIENT "Πελάτης"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v9.3.1.1 * Updated until v9.3.1.2
\*********************************************************************/ \*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Password" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Password" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Password"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT parameters" #define D_MQTT_PARAMETERS "MQTT parameters"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "SSId AP1" #define D_AP1_SSID "Red WiFi"
#define D_AP1_PASSWORD "Clave AP1" #define D_AP1_SSID_HELP "Escriba o Seleccione su Red WiFi"
#define D_AP2_SSID "SSId AP2" #define D_AP2_SSID "Red WiFi Alternativa"
#define D_AP2_PASSWORD "Clave AP2" #define D_AP2_SSID_HELP "Escriba el nombre de la Red WiFi Alternativa"
#define D_AP_PASSWORD "Clave WiFi"
#define D_AP_PASSWORD_HELP "Escriba la clave de WiFi"
#define D_SELECT_YOUR_WIFI_NETWORK "Seleccione su Red WiFi"
#define D_SHOW_MORE_WIFI_NETWORKS "Buscar todas las Redes WiFi"
#define D_SHOW_MORE_OPTIONS "Mas Opciones"
#define D_CHECK_CREDENTIALS "Por favor, revise la clave"
#define D_SUCCESSFUL_WIFI_CONNECTION "Conexión WiFi Existosa"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Ahora puede cerrar esta ventana"
#define D_REDIRECTING_TO_NEW_IP "Redireccionando a la nueva dirección IP"
#define D_MQTT_PARAMETERS "Parámetros MQTT" #define D_MQTT_PARAMETERS "Parámetros MQTT"
#define D_CLIENT "Cliente" #define D_CLIENT "Cliente"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "Mot de passe AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "Mot de passe AP2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Mot de passe"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Paramètres MQTT" #define D_MQTT_PARAMETERS "Paramètres MQTT"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Wachtwurd" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Wachtwurd" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Wachtwurd"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT parameters" #define D_MQTT_PARAMETERS "MQTT parameters"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Password" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Password" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Password"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT פרמטרים" #define D_MQTT_PARAMETERS "MQTT פרמטרים"
#define D_CLIENT "לקוח" #define D_CLIENT "לקוח"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 megosztott kulcs" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSID" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 megosztott kulcs" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi megosztott kulcs"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT paraméterek" #define D_MQTT_PARAMETERS "MQTT paraméterek"
#define D_CLIENT "Kliens" #define D_CLIENT "Kliens"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 - SSID" #define D_AP1_SSID "Rete WiFi"
#define D_AP1_PASSWORD "AP1 - Password" #define D_AP1_SSID_HELP "Digita o Seleziona la tua Rete WiFi"
#define D_AP2_SSID "AP2 - SSID" #define D_AP2_SSID "Rete WiFi 2"
#define D_AP2_PASSWORD "AP2 - Password" #define D_AP2_SSID_HELP "Digita la tua Rete WiFi Alternativa"
#define D_AP_PASSWORD "Password WiFi"
#define D_AP_PASSWORD_HELP "Inserisci la tua Password WiFi"
#define D_SELECT_YOUR_WIFI_NETWORK "Seleziona la tua Rete WiFi"
#define D_SHOW_MORE_WIFI_NETWORKS "Cerca tutte le Reti WiFi"
#define D_SHOW_MORE_OPTIONS "Più Opzioni"
#define D_CHECK_CREDENTIALS "Per favore, controlla le tue Credenziali"
#define D_SUCCESSFUL_WIFI_CONNECTION "Connessione WiFi riuscita"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Adesso puoi chiudere questa finestra"
#define D_REDIRECTING_TO_NEW_IP "Reindirizzamento al nuovo indirizzo IP del dispositivo"
#define D_MQTT_PARAMETERS "Parametri MQTT" #define D_MQTT_PARAMETERS "Parametri MQTT"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 비밀번호" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 비밀번호" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi 비밀번호"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT 설정" #define D_MQTT_PARAMETERS "MQTT 설정"
#define D_CLIENT "클라이언트" #define D_CLIENT "클라이언트"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Wachtwoord" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Wachtwoord" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Wachtwoord"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT parameters" #define D_MQTT_PARAMETERS "MQTT parameters"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "Nazwa 1" #define D_AP1_SSID "Nazwa"
#define D_AP1_PASSWORD "Hasło 1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "Nazwa 2" #define D_AP2_SSID "Nazwa 2"
#define D_AP2_PASSWORD "Hasło 2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Hasło"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Parametry MQTT" #define D_MQTT_PARAMETERS "Parametry MQTT"
#define D_CLIENT "Klient" #define D_CLIENT "Klient"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v9.3.1.1 * Updated until v9.3.1.2
\*********************************************************************/ \*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "Rede WiFi"
#define D_AP1_PASSWORD "Senha AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "Rede WiFi 2"
#define D_AP2_PASSWORD "Senha AP2" #define D_AP2_SSID_HELP "Digite ou selecione sua rede WiFi"
#define D_AP_PASSWORD "Senha do WiFi"
#define D_AP_PASSWORD_HELP "Digite sua Senha WiFi"
#define D_SELECT_YOUR_WIFI_NETWORK "Selecione sua Rede WiFi"
#define D_SHOW_MORE_WIFI_NETWORKS "Procure todas as Redes WiFi"
#define D_SHOW_MORE_OPTIONS "Mais Opções"
#define D_CHECK_CREDENTIALS "Por favor, verifique suas credenciais"
#define D_SUCCESSFUL_WIFI_CONNECTION "Conexão WiFi bem-sucedida"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Agora você pode fechar esta janela"
#define D_REDIRECTING_TO_NEW_IP "Redirecionando para o novo endereço IP do dispositivo"
#define D_MQTT_PARAMETERS "Parâmetros MQTT" #define D_MQTT_PARAMETERS "Parâmetros MQTT"
#define D_CLIENT "Cliente" #define D_CLIENT "Cliente"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v9.3.1.1 * Updated until v9.3.1.2
\*********************************************************************/ \*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "SSId do AP1" #define D_AP1_SSID "Rede WiFi"
#define D_AP1_PASSWORD "Palavra Chave do AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "SSId do AP2" #define D_AP2_SSID "Rede WiFi 2"
#define D_AP2_PASSWORD "Palavra Chave do AP2" #define D_AP2_SSID_HELP "Digite ou selecione sua rede WiFi"
#define D_AP_PASSWORD "Palavra Chave do WiFi"
#define D_AP_PASSWORD_HELP "Digite sua Palavra Chave do WiFi"
#define D_SELECT_YOUR_WIFI_NETWORK "Selecione sua Rede WiFi"
#define D_SHOW_MORE_WIFI_NETWORKS "Procure todas as Redes WiFi"
#define D_SHOW_MORE_OPTIONS "Mais Opções"
#define D_CHECK_CREDENTIALS "Por favor, verifique suas credenciais"
#define D_SUCCESSFUL_WIFI_CONNECTION "Conexão WiFi bem-sucedida"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Agora você pode fechar esta janela"
#define D_REDIRECTING_TO_NEW_IP "Redirecionando para o novo endereço IP do dispositivo"
#define D_MQTT_PARAMETERS "Parametros MQTT" #define D_MQTT_PARAMETERS "Parametros MQTT"
#define D_CLIENT "Cliente" #define D_CLIENT "Cliente"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "Parolă AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "Parolă AP2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Parolă WiFi"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "parametri MQTT" #define D_MQTT_PARAMETERS "parametri MQTT"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Пароль" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Пароль" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Пароль"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Параметры MQTT" #define D_MQTT_PARAMETERS "Параметры MQTT"
#define D_CLIENT "Клиент" #define D_CLIENT "Клиент"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "Heslo AP1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSID" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "Heslo AP2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Heslo WiFi"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Nastavenia MQTT" #define D_MQTT_PARAMETERS "Nastavenia MQTT"
#define D_CLIENT "Klient" #define D_CLIENT "Klient"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSId" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 lösenord" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 lösenord" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi lösenord"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT-parameterar" #define D_MQTT_PARAMETERS "MQTT-parameterar"
#define D_CLIENT "Klient" #define D_CLIENT "Klient"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 Adı (SSId)" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 Parolası" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSId" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 Parolası" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi Parolası"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT parametreleri" #define D_MQTT_PARAMETERS "MQTT parametreleri"
#define D_CLIENT "İstemci" #define D_CLIENT "İstemci"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID" #define D_AP1_SSID "WiFi Network"
#define D_AP1_PASSWORD "AP1 гасло" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 SSID" #define D_AP2_SSID "WiFi Network 2"
#define D_AP2_PASSWORD "AP2 гасло" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi гасло"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Параметри MQTT" #define D_MQTT_PARAMETERS "Параметри MQTT"
#define D_CLIENT "Клієнт" #define D_CLIENT "Клієнт"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "Tên mạng wifi 1" #define D_AP1_SSID "Tên mạng WiFi"
#define D_AP1_PASSWORD "Mật khẩu mạng wifi 1" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "Tên mạng wifi 2" #define D_AP2_SSID "Tên mạng WiFi 2"
#define D_AP2_PASSWORD "Mật khẩu mạng wifi 2" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "Mật khẩu mạng WiFi"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "Thông số MQTT" #define D_MQTT_PARAMETERS "Thông số MQTT"
#define D_CLIENT "Client" #define D_CLIENT "Client"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 名称" #define D_AP1_SSID "WiFi 名称"
#define D_AP1_PASSWORD "AP1 密码" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "AP2 名称" #define D_AP2_SSID "WiFi 名称 2"
#define D_AP2_PASSWORD "AP2 密码" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "WiFi 密码"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT 设置" #define D_MQTT_PARAMETERS "MQTT 设置"
#define D_CLIENT "客户端" #define D_CLIENT "客户端"

View File

@ -290,10 +290,19 @@
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "存取點1 SSID" #define D_AP1_SSID "存取點 SSID"
#define D_AP1_PASSWORD "存取點1 密碼" #define D_AP1_SSID_HELP "Type or Select your WiFi Network"
#define D_AP2_SSID "存取點2 SSID" #define D_AP2_SSID "存取點2 SSID"
#define D_AP2_PASSWORD "存取點2 密碼" #define D_AP2_SSID_HELP "Type your Alternative WiFi Network"
#define D_AP_PASSWORD "存取點 密碼"
#define D_AP_PASSWORD_HELP "Enter your WiFi Password"
#define D_SELECT_YOUR_WIFI_NETWORK "Select your WiFi Network"
#define D_SHOW_MORE_WIFI_NETWORKS "Scan for all WiFi Networks"
#define D_SHOW_MORE_OPTIONS "More Options"
#define D_CHECK_CREDENTIALS "Please, check your credentials"
#define D_SUCCESSFUL_WIFI_CONNECTION "Successful WiFi Connection"
#define D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "Now you can close this window"
#define D_REDIRECTING_TO_NEW_IP "Redirecting to new device's IP address"
#define D_MQTT_PARAMETERS "MQTT設定" #define D_MQTT_PARAMETERS "MQTT設定"
#define D_CLIENT "客戶端" #define D_CLIENT "客戶端"

View File

@ -1305,7 +1305,7 @@ void Every250mSeconds(void)
if (Settings.webserver) { if (Settings.webserver) {
#ifdef ESP8266 #ifdef ESP8266
StartWebserver(Settings.webserver, WiFi.localIP()); if (!WifiIsInManagerMode()) { StartWebserver(Settings.webserver, WiFi.localIP()); }
#endif // ESP8266 #endif // ESP8266
#ifdef ESP32 #ifdef ESP32
#ifdef USE_ETHERNET #ifdef USE_ETHERNET

View File

@ -106,7 +106,6 @@ void WifiConfig(uint8_t type)
} }
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
else if (WIFI_MANAGER == Wifi.config_type || WIFI_MANAGER_RESET_ONLY == Wifi.config_type) { else if (WIFI_MANAGER == Wifi.config_type || WIFI_MANAGER_RESET_ONLY == Wifi.config_type) {
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER " " D_ACTIVE_FOR_3_MINUTES));
WifiManagerBegin(WIFI_MANAGER_RESET_ONLY == Wifi.config_type); WifiManagerBegin(WIFI_MANAGER_RESET_ONLY == Wifi.config_type);
} }
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -34,6 +34,19 @@
#define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 11 as used by WifiManager web GUI #define WIFI_SOFT_AP_CHANNEL 1 // Soft Access Point Channel number between 1 and 11 as used by WifiManager web GUI
#endif #endif
#ifndef MAX_WIFI_NETWORKS_TO_SHOW
#define MAX_WIFI_NETWORKS_TO_SHOW 3 // Maximum number of Wifi Networks to show in the Wifi Configuration Menu BEFORE clicking on Show More Networks.
#endif
#ifndef RESTART_AFTER_INITIAL_WIFI_CONFIG
#define RESTART_AFTER_INITIAL_WIFI_CONFIG true // Restart Tasmota after initial Wifi Config of a blank device
#endif // If disabled, Tasmota will keep both the wifi AP and the wifi connection to the router
// but only until next restart.
#ifndef AFTER_INITIAL_WIFI_CONFIG_GO_TO_NEW_IP // If RESTART_AFTER_INITIAL_WIFI_CONFIG and AFTER_INITIAL_WIFI_CONFIG_GO_TO_NEW_IP are true,
#define AFTER_INITIAL_WIFI_CONFIG_GO_TO_NEW_IP true // the user will be redirected to the new IP of Tasmota (in the new Network).
#endif // If the first is true, but this is false, the device will restart but the user will see
// a window telling that the WiFi Configuration was Ok and that the window can be closed.
const uint16_t CHUNKED_BUFFER_SIZE = (MESSZ / 2) - 100; // Chunk buffer size (should be smaller than half mqtt_data size = MESSZ) const uint16_t CHUNKED_BUFFER_SIZE = (MESSZ / 2) - 100; // Chunk buffer size (should be smaller than half mqtt_data size = MESSZ)
const uint16_t HTTP_REFRESH_TIME = 2345; // milliseconds const uint16_t HTTP_REFRESH_TIME = 2345; // milliseconds
@ -102,6 +115,17 @@ const char HTTP_SCRIPT_WIFI[] PROGMEM =
"eb('p1').focus();" "eb('p1').focus();"
"}"; "}";
const char HTTP_SCRIPT_HIDE[] PROGMEM =
"function hidBtns() {"
"eb('butmo').style.display = 'none';"
"eb('butmod').style.display = 'none';"
"eb('but0').style.display = 'block';"
"eb('but1').style.display = 'block';"
"eb('but13').style.display = 'block';"
"eb('but0d').style.display = 'block';"
"eb('but13d').style.display = 'block';"
"}";
const char HTTP_SCRIPT_RELOAD_TIME[] PROGMEM = const char HTTP_SCRIPT_RELOAD_TIME[] PROGMEM =
"setTimeout(function(){location.href='.';},%d);"; "setTimeout(function(){location.href='.';},%d);";
@ -259,13 +283,19 @@ const char HTTP_FORM_MODULE[] PROGMEM =
"<p></p><b>" D_MODULE_TYPE "</b> (%s)<br><select id='g99'></select><br>" "<p></p><b>" D_MODULE_TYPE "</b> (%s)<br><select id='g99'></select><br>"
"<br><table>"; "<br><table>";
const char HTTP_FORM_WIFI_INITIAL[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_WIFI_PARAMETERS "&nbsp;</b></legend>"
"<form method='get' action='wi'>"
"<p><b>" D_AP1_SSID "</b><br><input id='s1' placeholder=\"" D_AP1_SSID_HELP "\" value=\"%s\"></p>" // Need \" instead of ' to be able to use ' in text (#8489)
"<p><label><b>" D_AP_PASSWORD "</b><input type='checkbox' onclick='sp(\"p1\")'></label><br><input id='p1' type='password' placeholder=\"" D_AP_PASSWORD_HELP "\"></p>";
const char HTTP_FORM_WIFI[] PROGMEM = const char HTTP_FORM_WIFI[] PROGMEM =
"<fieldset><legend><b>&nbsp;" D_WIFI_PARAMETERS "&nbsp;</b></legend>" "<fieldset><legend><b>&nbsp;" D_WIFI_PARAMETERS "&nbsp;</b></legend>"
"<form method='get' action='wi'>" "<form method='get' action='wi'>"
"<p><b>" D_AP1_SSID "</b> (" STA_SSID1 ")<br><input id='s1' placeholder=\"" STA_SSID1 "\" value=\"%s\"></p>" // Need \" instead of ' to be able to use ' in text (#8489) "<p><b>" D_AP1_SSID "</b> (" STA_SSID1 ")<br><input id='s1' placeholder=\"" D_AP1_SSID_HELP "\" value=\"%s\"></p>" // Need \" instead of ' to be able to use ' in text (#8489)
"<p><label><b>" D_AP1_PASSWORD "</b><input type='checkbox' onclick='sp(\"p1\")'></label><br><input id='p1' type='password' placeholder=\"" D_AP1_PASSWORD "\" value=\"" D_ASTERISK_PWD "\"></p>" "<p><label><b>" D_AP_PASSWORD "</b><input type='checkbox' onclick='sp(\"p1\")'></label><br><input id='p1' type='password' placeholder=\"" D_AP_PASSWORD_HELP "\" value=\"" D_ASTERISK_PWD "\"></p>"
"<p><b>" D_AP2_SSID "</b> (" STA_SSID2 ")<br><input id='s2' placeholder=\"" STA_SSID2 "\" value=\"%s\"></p>" "<p><b>" D_AP2_SSID "</b> (" STA_SSID2 ")<br><input id='s2' placeholder=\"" D_AP2_SSID_HELP "\" value=\"%s\"></p>"
"<p><label><b>" D_AP2_PASSWORD "</b><input type='checkbox' onclick='sp(\"p2\")'></label><br><input id='p2' type='password' placeholder=\"" D_AP2_PASSWORD "\" value=\"" D_ASTERISK_PWD "\"></p>" "<p><label><b>" D_AP_PASSWORD "</b><input type='checkbox' onclick='sp(\"p2\")'></label><br><input id='p2' type='password' placeholder=\"" D_AP_PASSWORD_HELP "\" value=\"" D_ASTERISK_PWD "\"></p>"
"<p><b>" D_HOSTNAME "</b> (%s)<br><input id='h' placeholder=\"%s\" value=\"%s\"></p>" "<p><b>" D_HOSTNAME "</b> (%s)<br><input id='h' placeholder=\"%s\" value=\"%s\"></p>"
"<p><b>" D_CORS_DOMAIN "</b><input id='c' placeholder=\"" CORS_DOMAIN "\" value=\"%s\"></p>"; "<p><b>" D_CORS_DOMAIN "</b><input id='c' placeholder=\"" CORS_DOMAIN "\" value=\"%s\"></p>";
@ -366,6 +396,7 @@ const char kUploadErrors[] PROGMEM =
const uint16_t DNS_PORT = 53; const uint16_t DNS_PORT = 53;
enum HttpOptions {HTTP_OFF, HTTP_USER, HTTP_ADMIN, HTTP_MANAGER, HTTP_MANAGER_RESET_ONLY}; enum HttpOptions {HTTP_OFF, HTTP_USER, HTTP_ADMIN, HTTP_MANAGER, HTTP_MANAGER_RESET_ONLY};
enum WifiTestOptions {WIFI_NOT_TESTING, WIFI_TESTING, WIFI_TEST_FINISHED_SUCCESSFUL, WIFI_TEST_FINISHED_BAD};
DNSServer *DnsServer; DNSServer *DnsServer;
ESP8266WebServer *Webserver; ESP8266WebServer *Webserver;
@ -380,6 +411,11 @@ struct WEB {
uint8_t config_xor_on_set = CONFIG_FILE_XOR; uint8_t config_xor_on_set = CONFIG_FILE_XOR;
bool upload_services_stopped = false; bool upload_services_stopped = false;
bool reset_web_log_flag = false; // Reset web console log bool reset_web_log_flag = false; // Reset web console log
bool initial_config = false;
uint8_t wifiTest = WIFI_NOT_TESTING;
uint8_t wifi_test_counter = 0;
uint16_t save_data_counter = 0;
uint8_t old_wificonfig = WIFI_MANAGER;
} Web; } Web;
// Helper function to avoid code duplication (saves 4k Flash) // Helper function to avoid code duplication (saves 4k Flash)
@ -497,8 +533,8 @@ void StartWebserver(int type, IPAddress ipweb)
NetworkHostname(), (Mdns.begun) ? PSTR(".local") : "", (uint32_t)ipweb); NetworkHostname(), (Mdns.begun) ? PSTR(".local") : "", (uint32_t)ipweb);
#endif // LWIP_IPV6 = 1 #endif // LWIP_IPV6 = 1
TasmotaGlobal.rules_flag.http_init = 1; TasmotaGlobal.rules_flag.http_init = 1;
Web.state = type;
} }
if (type) { Web.state = type; }
} }
void StopWebserver(void) void StopWebserver(void)
@ -513,6 +549,7 @@ void StopWebserver(void)
void WifiManagerBegin(bool reset_only) void WifiManagerBegin(bool reset_only)
{ {
// setup AP // setup AP
if (!Web.initial_config) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER " " D_ACTIVE_FOR_3_MINUTES)); }
if (!TasmotaGlobal.global_state.wifi_down) { if (!TasmotaGlobal.global_state.wifi_down) {
// WiFi.mode(WIFI_AP_STA); // WiFi.mode(WIFI_AP_STA);
WifiSetMode(WIFI_AP_STA); WifiSetMode(WIFI_AP_STA);
@ -523,7 +560,7 @@ void WifiManagerBegin(bool reset_only)
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_WIFIMANAGER_SET_ACCESSPOINT)); AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_WIFIMANAGER_SET_ACCESSPOINT));
} }
StopWebserver(); //StopWebserver();
DnsServer = new DNSServer(); DnsServer = new DNSServer();
@ -717,7 +754,7 @@ void WSContentStart_P(const char* title)
void WSContentSendStyle_P(const char* formatP, ...) void WSContentSendStyle_P(const char* formatP, ...)
{ {
if (WifiIsInManagerMode()) { if ( WifiIsInManagerMode() && (!Web.initial_config) ) {
if (WifiConfigCounter()) { if (WifiConfigCounter()) {
WSContentSend_P(HTTP_SCRIPT_COUNTER); WSContentSend_P(HTTP_SCRIPT_COUNTER);
} }
@ -753,8 +790,14 @@ void WSContentSendStyle_P(const char* formatP, ...)
WebColor(COL_TEXT_WARNING), WebColor(COL_TEXT_WARNING),
#endif #endif
WebColor(COL_TITLE), WebColor(COL_TITLE),
ModuleName().c_str(), SettingsText(SET_DEVICENAME)); (Web.initial_config) ? "" : ModuleName().c_str(), SettingsText(SET_DEVICENAME));
if (Settings.flag3.gui_hostname_ip) { // SetOption53 - Show hostanme and IP address in GUI main menu
// SetOption53 - Show hostname and IP address in GUI main menu
#if (RESTART_AFTER_INITIAL_WIFI_CONFIG)
if (Settings.flag3.gui_hostname_ip) {
#else
if ( Settings.flag3.gui_hostname_ip || ( (WiFi.getMode() == WIFI_AP_STA) && (!Web.initial_config) ) ) {
#endif
bool lip = (static_cast<uint32_t>(WiFi.localIP()) != 0); bool lip = (static_cast<uint32_t>(WiFi.localIP()) != 0);
bool sip = (static_cast<uint32_t>(WiFi.softAPIP()) != 0); bool sip = (static_cast<uint32_t>(WiFi.softAPIP()) != 0);
WSContentSend_P(PSTR("<h4>%s%s (%s%s%s)</h4>"), // tasmota.local (192.168.2.12, 192.168.4.1) WSContentSend_P(PSTR("<h4>%s%s (%s%s%s)</h4>"), // tasmota.local (192.168.2.12, 192.168.4.1)
@ -772,29 +815,33 @@ void WSContentSendStyle(void)
WSContentSendStyle_P(nullptr); WSContentSendStyle_P(nullptr);
} }
void WSContentButton(uint32_t title_index) void WSContentButton(uint32_t title_index, bool show=true)
{ {
char action[4]; char action[4];
char title[100]; // Large to accomodate UTF-16 as used by Russian char title[100]; // Large to accomodate UTF-16 as used by Russian
if (title_index <= BUTTON_RESET_CONFIGURATION) { if (title_index <= BUTTON_RESET_CONFIGURATION) {
char confirm[100]; char confirm[100];
WSContentSend_P(PSTR("<p><form action='%s' method='get' onsubmit='return confirm(\"%s\");'><button name='%s' class='button bred'>%s</button></form></p>"), WSContentSend_P(PSTR("<p><form id=but%d style=\"display: %s;\" action='%s' method='get' onsubmit='return confirm(\"%s\");'><button name='%s' class='button bred'>%s</button></form></p>"),
title_index,
show ? "block":"none",
GetTextIndexed(action, sizeof(action), title_index, kButtonAction), GetTextIndexed(action, sizeof(action), title_index, kButtonAction),
GetTextIndexed(confirm, sizeof(confirm), title_index, kButtonConfirm), GetTextIndexed(confirm, sizeof(confirm), title_index, kButtonConfirm),
(!title_index) ? PSTR("rst") : PSTR("non"), (!title_index) ? PSTR("rst") : PSTR("non"),
GetTextIndexed(title, sizeof(title), title_index, kButtonTitle)); GetTextIndexed(title, sizeof(title), title_index, kButtonTitle));
} else { } else {
WSContentSend_P(PSTR("<p><form action='%s' method='get'><button>%s</button></form></p>"), WSContentSend_P(PSTR("<p><form id=but%d style=\"display: %s;\" action='%s' method='get'><button>%s</button></form></p>"),
title_index,
show ? "block":"none",
GetTextIndexed(action, sizeof(action), title_index, kButtonAction), GetTextIndexed(action, sizeof(action), title_index, kButtonAction),
GetTextIndexed(title, sizeof(title), title_index, kButtonTitle)); GetTextIndexed(title, sizeof(title), title_index, kButtonTitle));
} }
} }
void WSContentSpaceButton(uint32_t title_index) void WSContentSpaceButton(uint32_t title_index, bool show=true)
{ {
WSContentSend_P(PSTR("<div></div>")); // 5px padding WSContentSend_P(PSTR("<div id=but%dd style=\"display: %s;\"></div>"),title_index, show ? "block":"none"); // 5px padding
WSContentButton(title_index); WSContentButton(title_index, show);
} }
void WSContentSend_Temp(const char *types, float f_temperature) { void WSContentSend_Temp(const char *types, float f_temperature) {
@ -821,7 +868,7 @@ void WSContentEnd(void)
void WSContentStop(void) void WSContentStop(void)
{ {
if (WifiIsInManagerMode()) { if ( WifiIsInManagerMode() && (!Web.initial_config) ) {
if (WifiConfigCounter()) { if (WifiConfigCounter()) {
WSContentSend_P(HTTP_COUNTER); WSContentSend_P(HTTP_COUNTER);
} }
@ -836,32 +883,54 @@ void WebRestart(uint32_t type)
{ {
// type 0 = restart // type 0 = restart
// type 1 = restart after config change // type 1 = restart after config change
// type 2 = restart after config change with possible ip address change too // type 2 = Checking WiFi Connection - no restart, only refresh page.
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_RESTART)); // type 3 = restart after WiFi Connection Test Successful
bool reset_only = (HTTP_MANAGER_RESET_ONLY == Web.state); bool reset_only = (HTTP_MANAGER_RESET_ONLY == Web.state);
WSContentStart_P((type) ? PSTR(D_SAVE_CONFIGURATION) : PSTR(D_RESTART), !reset_only); WSContentStart_P((type) ? PSTR(D_SAVE_CONFIGURATION) : PSTR(D_RESTART), !reset_only);
#if ((RESTART_AFTER_INITIAL_WIFI_CONFIG) && (AFTER_INITIAL_WIFI_CONFIG_GO_TO_NEW_IP))
// In case of type 3 (New network has been configured) go to the new device's IP in the new Network
if (3 == type) {
WSContentSend_P("setTimeout(function(){location.href='http://%_I';},%d);",
(uint32_t)WiFi.localIP(),
HTTP_RESTART_RECONNECT_TIME
);
} else {
WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_RESTART_RECONNECT_TIME); WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_RESTART_RECONNECT_TIME);
}
#else
// In case of type 3 (New network has been configured) do not refresh the page. Just halt.
// The IP of the device while was in AP mode, won't be the new IP of the newly configured Network.
if (!(3 == type)) { WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_RESTART_RECONNECT_TIME); }
#endif
WSContentSendStyle(); WSContentSendStyle();
if (type) { if (type) {
WSContentSend_P(PSTR("<div style='text-align:center;'><b>" D_CONFIGURATION_SAVED "</b><br>")); if (!(3 == type)) {
if (2 == type) { WSContentSend_P(PSTR("<div style='text-align:center;'><b>%s</b><br><br></div>"), (type==2) ? PSTR(D_TRYING_TO_CONNECT) : PSTR(D_CONFIGURATION_SAVED) );
WSContentSend_P(PSTR("<br>" D_TRYING_TO_CONNECT "<br>")); } else {
#if (AFTER_INITIAL_WIFI_CONFIG_GO_TO_NEW_IP)
WSContentSend_P(PSTR("<div style='text-align:center;color:#%06x;'>" D_SUCCESSFUL_WIFI_CONNECTION "<br><br></div><div style='text-align:center;'>" D_REDIRECTING_TO_NEW_IP "<br><br></div>"), WebColor(COL_TEXT_SUCCESS) );
#else
WSContentSend_P(PSTR("<div style='text-align:center;color:#%06x;'>" D_SUCCESSFUL_WIFI_CONNECTION "<br><br></div><div style='text-align:center;'>" D_NOW_YOU_CAN_CLOSE_THIS_WINDOW "<br><br></div>"), WebColor(COL_TEXT_SUCCESS) );
#endif
} }
WSContentSend_P(PSTR("</div>"));
} }
if (type<2) {
WSContentSend_P(HTTP_MSG_RSTRT); WSContentSend_P(HTTP_MSG_RSTRT);
if (HTTP_MANAGER == Web.state || reset_only) { if (HTTP_MANAGER == Web.state || reset_only) {
Web.state = HTTP_ADMIN; Web.state = HTTP_ADMIN;
} else { } else {
WSContentSpaceButton(BUTTON_MAIN); WSContentSpaceButton(BUTTON_MAIN);
} }
}
WSContentStop(); WSContentStop();
if (!(2 == type)) {
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_RESTART));
ShowWebSource(SRC_WEBGUI); ShowWebSource(SRC_WEBGUI);
TasmotaGlobal.restart_flag = 2; TasmotaGlobal.restart_flag = 2;
} }
}
/*********************************************************************************************/ /*********************************************************************************************/
@ -919,6 +988,10 @@ void HandleRoot(void)
HandleWifiLogin(); HandleWifiLogin();
} else { } else {
if (!strlen(SettingsText(SET_WEBPWD)) || (((Webserver->arg(F("USER1")) == WEB_USERNAME ) && (Webserver->arg(F("PASS1")) == SettingsText(SET_WEBPWD) )) || HTTP_MANAGER_RESET_ONLY == Web.state)) { if (!strlen(SettingsText(SET_WEBPWD)) || (((Webserver->arg(F("USER1")) == WEB_USERNAME ) && (Webserver->arg(F("PASS1")) == SettingsText(SET_WEBPWD) )) || HTTP_MANAGER_RESET_ONLY == Web.state)) {
if (!Web.initial_config) {
Web.initial_config = !strlen(SettingsText(SET_STASSID1));
if (Web.initial_config) { AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "Blank Device - Initial Configuration")); }
}
HandleWifiConfiguration(); HandleWifiConfiguration();
} else { } else {
// wrong user and pass // wrong user and pass
@ -1648,26 +1721,77 @@ String HtmlEscape(const String unescaped) {
const char kEncryptionType[] PROGMEM = "|||" D_WPA_PSK "||" D_WPA2_PSK "|" D_WEP "||" D_NONE "|" D_AUTO; const char kEncryptionType[] PROGMEM = "|||" D_WPA_PSK "||" D_WPA2_PSK "|" D_WEP "||" D_NONE "|" D_AUTO;
void HandleWifiConfiguration(void) { void HandleWifiConfiguration(void) {
char tmp[TOPSZ]; // Max length is currently 150
if (!HttpCheckPriviledgedAccess(!WifiIsInManagerMode())) { return; } if (!HttpCheckPriviledgedAccess(!WifiIsInManagerMode())) { return; }
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_WIFI)); AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_WIFI));
if (Webserver->hasArg(F("save")) && HTTP_MANAGER_RESET_ONLY != Web.state) { if (Webserver->hasArg(F("save")) && HTTP_MANAGER_RESET_ONLY != Web.state) {
WifiSaveSettings(); if ( WifiIsInManagerMode() ) {
// Test WIFI Connection to Router
// As Tasmota is in this case in AP mode, a STA connection can be established too at the same time
Web.wifi_test_counter = 9; // seconds to test user's proposed AP
Web.wifiTest = WIFI_TESTING;
Web.save_data_counter = TasmotaGlobal.save_data_counter;
TasmotaGlobal.save_data_counter = 0; // Stop auto saving data - Updating Settings
Settings.save_data = 0;
Web.old_wificonfig = TasmotaGlobal.wifi_state_flag;
Settings.sta_config = WIFI_MANAGER;
TasmotaGlobal.wifi_state_flag = Settings.sta_config;
TasmotaGlobal.sleep = 0; // Disable sleep
TasmotaGlobal.restart_flag = 0; // No restart
TasmotaGlobal.ota_state_flag = 0; // No OTA
// TasmotaGlobal.blinks = 0; // Disable blinks initiated by WifiManager
WebGetArg(PSTR("s1"), tmp, sizeof(tmp)); // SSID1
SettingsUpdateText(SET_STASSID1, tmp);
WebGetArg(PSTR("p1"), tmp, sizeof(tmp)); // PASSWORD1
SettingsUpdateText(SET_STAPWD1, tmp);
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP " %s " D_AS " %s ..."),
SettingsText(SET_STASSID1), TasmotaGlobal.hostname);
WiFi.begin(SettingsText(SET_STASSID1), SettingsText(SET_STAPWD1));
WebRestart(2); WebRestart(2);
} else {
// STATION MODE or MIXED
// Save the config and restart
WifiSaveSettings();
WebRestart(1);
}
return; return;
} }
if ( WIFI_TEST_FINISHED_SUCCESSFUL == Web.wifiTest ) {
Web.wifiTest = WIFI_NOT_TESTING;
#if (RESTART_AFTER_INITIAL_WIFI_CONFIG)
WebRestart(3);
#else
HandleRoot();
#endif
}
WSContentStart_P(PSTR(D_CONFIGURE_WIFI), !WifiIsInManagerMode()); WSContentStart_P(PSTR(D_CONFIGURE_WIFI), !WifiIsInManagerMode());
WSContentSend_P(HTTP_SCRIPT_WIFI); WSContentSend_P(HTTP_SCRIPT_WIFI);
if (WifiIsInManagerMode()) { WSContentSend_P(HTTP_SCRIPT_HIDE); }
if (WIFI_TESTING == Web.wifiTest) { WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_RESTART_RECONNECT_TIME); }
#ifdef USE_ENHANCED_GUI_WIFI_SCAN #ifdef USE_ENHANCED_GUI_WIFI_SCAN
WSContentSendStyle_P(HTTP_HEAD_STYLE_SSI, WebColor(COL_TEXT)); WSContentSendStyle_P(HTTP_HEAD_STYLE_SSI, WebColor(COL_TEXT));
#else #else
WSContentSendStyle(); WSContentSendStyle();
#endif // USE_ENHANCED_GUI_WIFI_SCAN #endif // USE_ENHANCED_GUI_WIFI_SCAN
bool limitScannedNetworks = true;
if (HTTP_MANAGER_RESET_ONLY != Web.state) { if (HTTP_MANAGER_RESET_ONLY != Web.state) {
if (Webserver->hasArg(F("scan"))) { if (WIFI_TESTING == Web.wifiTest) {
limitScannedNetworks = false;
} else {
if (Webserver->hasArg(F("scan"))) { limitScannedNetworks = false; }
#ifdef USE_EMULATION #ifdef USE_EMULATION
UdpDisconnect(); UdpDisconnect();
#endif // USE_EMULATION #endif // USE_EMULATION
@ -1677,7 +1801,7 @@ void HandleWifiConfiguration(void) {
if (0 == n) { if (0 == n) {
AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_NO_NETWORKS_FOUND)); AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_NO_NETWORKS_FOUND));
WSContentSend_P(PSTR(D_NO_NETWORKS_FOUND)); WSContentSend_P(PSTR(D_NO_NETWORKS_FOUND));
WSContentSend_P(PSTR(". " D_REFRESH_TO_SCAN_AGAIN ".")); limitScannedNetworks = false; // in order to show D_SCAN_FOR_WIFI_NETWORKS
} else { } else {
//sort networks //sort networks
int indices[n]; int indices[n];
@ -1685,7 +1809,6 @@ void HandleWifiConfiguration(void) {
indices[i] = i; indices[i] = i;
} }
// RSSI SORT // RSSI SORT
for (uint32_t i = 0; i < n; i++) { for (uint32_t i = 0; i < n; i++) {
for (uint32_t j = i + 1; j < n; j++) { for (uint32_t j = i + 1; j < n; j++) {
@ -1695,9 +1818,16 @@ void HandleWifiConfiguration(void) {
} }
} }
uint32_t networksToShow = n;
if ((limitScannedNetworks) && (networksToShow > MAX_WIFI_NETWORKS_TO_SHOW)) { networksToShow = MAX_WIFI_NETWORKS_TO_SHOW; }
if (WifiIsInManagerMode()) { WSContentSend_P(PSTR("<div style='text-align:center;color:#%06x;'>" D_SELECT_YOUR_WIFI_NETWORK "</div><br>"), WebColor(COL_TEXT)); }
#ifdef USE_ENHANCED_GUI_WIFI_SCAN #ifdef USE_ENHANCED_GUI_WIFI_SCAN
//display networks in page //display networks in page
for (uint32_t i = 0; i < n; i++) { bool skipduplicated;
int ssid_showed = 0;
for (uint32_t i = 0; i < networksToShow; i++) {
if (indices[i] < n) { if (indices[i] < n) {
int32_t rssi = WiFi.RSSI(indices[i]); int32_t rssi = WiFi.RSSI(indices[i]);
String ssid = WiFi.SSID(indices[i]); String ssid = WiFi.SSID(indices[i]);
@ -1705,17 +1835,32 @@ void HandleWifiConfiguration(void) {
ssid.c_str(), WiFi.BSSIDstr(indices[i]).c_str(), WiFi.channel(indices[i]), rssi); ssid.c_str(), WiFi.BSSIDstr(indices[i]).c_str(), WiFi.channel(indices[i]), rssi);
// Print SSID // Print SSID
if (!limitScannedNetworks) {
WSContentSend_P(PSTR("<div><a href='#p' onclick='c(this)'>%s</a><br>"), HtmlEscape(ssid).c_str()); WSContentSend_P(PSTR("<div><a href='#p' onclick='c(this)'>%s</a><br>"), HtmlEscape(ssid).c_str());
}
skipduplicated = false;
String nextSSID = ""; String nextSSID = "";
// Handle all APs with the same SSID // Handle all APs with the same SSID
for (uint32_t j = 0; j < n; j++) { for (uint32_t j = 0; j < n; j++) {
if ((indices[j] < n) && ((nextSSID = WiFi.SSID(indices[j])) == ssid)) { if ((indices[j] < n) && ((nextSSID = WiFi.SSID(indices[j])) == ssid)) {
if (!skipduplicated) {
// Update RSSI / quality // Update RSSI / quality
rssi = WiFi.RSSI(indices[j]); rssi = WiFi.RSSI(indices[j]);
uint32_t rssi_as_quality = WifiGetRssiAsQuality(rssi); uint32_t rssi_as_quality = WifiGetRssiAsQuality(rssi);
uint32_t num_bars = changeUIntScale(rssi_as_quality, 0, 100, 0, 4); uint32_t num_bars = changeUIntScale(rssi_as_quality, 0, 100, 0, 4);
if (limitScannedNetworks) {
// Print SSID and item
WSContentSend_P(PSTR("<div title='%d dBm (%d%%)'><a href='#p' onclick='c(this)'>%s</a><span class='q'><div class='si'>"), rssi, rssi_as_quality, HtmlEscape(ssid).c_str());
// Print signal strength indicator
for (uint32_t k = 0; k < 4; ++k) {
WSContentSend_P(PSTR("<i class='b%d%s'></i>"), k, (num_bars < k) ? PSTR(" o30") : PSTR(""));
}
WSContentSend_P(PSTR("</span></div>"));
ssid_showed++;
skipduplicated = true; // For the simplified page, just show 1 SSID if there are many Networks with the same
} else {
// Print item // Print item
WSContentSend_P(PSTR("<div title='%d dBm (%d%%)'>%s<span class='q'>(%d) <div class='si'>"), WSContentSend_P(PSTR("<div title='%d dBm (%d%%)'>%s<span class='q'>(%d) <div class='si'>"),
rssi, rssi_as_quality, rssi, rssi_as_quality,
@ -1727,7 +1872,10 @@ void HandleWifiConfiguration(void) {
WSContentSend_P(PSTR("<i class='b%d%s'></i>"), k, (num_bars < k) ? PSTR(" o30") : PSTR("")); WSContentSend_P(PSTR("<i class='b%d%s'></i>"), k, (num_bars < k) ? PSTR(" o30") : PSTR(""));
} }
WSContentSend_P(PSTR("</span></div></div>")); WSContentSend_P(PSTR("</span></div></div>"));
}
} else {
if (ssid_showed <= networksToShow ) { networksToShow++; }
}
indices[j] = n; indices[j] = n;
} }
delay(0); delay(0);
@ -1750,7 +1898,7 @@ void HandleWifiConfiguration(void) {
} }
//display networks in page //display networks in page
for (uint32_t i = 0; i < n; i++) { for (uint32_t i = 0; i < networksToShow; i++) {
if (-1 == indices[i]) { continue; } // skip dups if (-1 == indices[i]) { continue; } // skip dups
int32_t rssi = WiFi.RSSI(indices[i]); int32_t rssi = WiFi.RSSI(indices[i]);
DEBUG_CORE_LOG(PSTR(D_LOG_WIFI D_SSID " %s, " D_BSSID " %s, " D_CHANNEL " %d, " D_RSSI " %d"), DEBUG_CORE_LOG(PSTR(D_LOG_WIFI D_SSID " %s, " D_BSSID " %s, " D_CHANNEL " %d, " D_RSSI " %d"),
@ -1778,21 +1926,44 @@ void HandleWifiConfiguration(void) {
WSContentSend_P(PSTR("<br>")); WSContentSend_P(PSTR("<br>"));
} }
}
if (limitScannedNetworks) {
WSContentSend_P(PSTR("<div><a href='/wi?scan='>" D_SHOW_MORE_WIFI_NETWORKS "</a></div><br>"));
} else { } else {
WSContentSend_P(PSTR("<div><a href='/wi?scan='>" D_SCAN_FOR_WIFI_NETWORKS "</a></div><br>")); WSContentSend_P(PSTR("<div><a href='/wi?scan='>" D_SCAN_FOR_WIFI_NETWORKS "</a></div><br>"));
} }
// As WIFI_HOSTNAME may contain %s-%04d it cannot be part of HTTP_FORM_WIFI where it will exception // As WIFI_HOSTNAME may contain %s-%04d it cannot be part of HTTP_FORM_WIFI where it will exception
if (WifiIsInManagerMode()) {
WSContentSend_P(HTTP_FORM_WIFI_INITIAL, SettingsText(SET_STASSID1) );
} else {
WSContentSend_P(HTTP_FORM_WIFI, SettingsText(SET_STASSID1), SettingsText(SET_STASSID2), WIFI_HOSTNAME, WIFI_HOSTNAME, SettingsText(SET_HOSTNAME), SettingsText(SET_CORS)); WSContentSend_P(HTTP_FORM_WIFI, SettingsText(SET_STASSID1), SettingsText(SET_STASSID2), WIFI_HOSTNAME, WIFI_HOSTNAME, SettingsText(SET_HOSTNAME), SettingsText(SET_CORS));
}
WSContentSend_P(HTTP_FORM_END); WSContentSend_P(HTTP_FORM_END);
} }
if (WifiIsInManagerMode()) { if (WifiIsInManagerMode()) {
#ifndef FIRMWARE_MINIMAL #ifndef FIRMWARE_MINIMAL
WSContentSpaceButton(BUTTON_RESTORE); if (WIFI_TESTING == Web.wifiTest) {
WSContentButton(BUTTON_RESET_CONFIGURATION); WSContentSend_P(PSTR("<div style='text-align:center;color:#%06x;'><h3>" D_TRYING_TO_CONNECT "<br>%s</h3></div>"),
WebColor(COL_TEXT_WARNING),
SettingsText(SET_STASSID1)
);
} else if (WIFI_TEST_FINISHED_BAD == Web.wifiTest) {
WSContentSend_P(PSTR("<div style='text-align:center;color:#%06x;'><h3>" D_CONNECT_FAILED_TO " %s<br>" D_CHECK_CREDENTIALS "</h3></div>"),
WebColor(COL_TEXT_WARNING),
SettingsText(SET_STASSID1)
);
}
// More Options Button
WSContentSend_P(PSTR("<div id=butmod style=\"display: %s;\"></div><p><form id=butmo style=\"display: %s;\"><button type='button' onclick='hidBtns()'>" D_SHOW_MORE_OPTIONS "</button></form></p>"),
(WIFI_TEST_FINISHED_BAD == Web.wifiTest) ? "none" : Web.initial_config ? "block" : "none", Web.initial_config ? "block" : "none"
);
WSContentSpaceButton(BUTTON_RESTORE, !Web.initial_config);
WSContentButton(BUTTON_RESET_CONFIGURATION, !Web.initial_config);
#endif // FIRMWARE_MINIMAL #endif // FIRMWARE_MINIMAL
WSContentSpaceButton(BUTTON_RESTART); WSContentSpaceButton(BUTTON_RESTART, !Web.initial_config);
} else { } else {
WSContentSpaceButton(BUTTON_CONFIGURATION); WSContentSpaceButton(BUTTON_CONFIGURATION);
} }
@ -3116,6 +3287,47 @@ bool Xdrv01(uint8_t function)
if (Settings.flag2.emulation) { PollUdp(); } if (Settings.flag2.emulation) { PollUdp(); }
#endif // USE_EMULATION #endif // USE_EMULATION
break; break;
case FUNC_EVERY_SECOND:
if (Web.initial_config) {
Wifi.config_counter = 200; // Do not restart the device if it has SSId Blank
}
if (Web.wifi_test_counter) {
Web.wifi_test_counter--;
AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_TRYING_TO_CONNECT " %s"), SettingsText(SET_STASSID1));
if ( WifiCheck_hasIP(WiFi.localIP()) ) { // Got IP - Connection Established
Web.wifi_test_counter = 0;
Web.wifiTest = WIFI_TEST_FINISHED_SUCCESSFUL;
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CMND_SSID "1 %s: " D_CONNECTED " - " D_IP_ADDRESS " %_I"), SettingsText(SET_STASSID1), (uint32_t)WiFi.localIP());
// TasmotaGlobal.blinks = 255; // Signal wifi connection with blinks
Settings.sta_config = Web.old_wificonfig;
TasmotaGlobal.wifi_state_flag = Settings.sta_config;
TasmotaGlobal.save_data_counter = Web.save_data_counter;
Settings.save_data = Web.save_data_counter;
SettingsSaveAll();
#if (!RESTART_AFTER_INITIAL_WIFI_CONFIG)
Web.initial_config = false;
Web.state = HTTP_ADMIN;
#endif
} else if (!Web.wifi_test_counter) { // Test TimeOut
Web.wifi_test_counter = 0;
Web.wifiTest = WIFI_TEST_FINISHED_BAD;
switch (WiFi.status()) {
case WL_CONNECTED:
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_NO_IP_ADDRESS));
break;
case WL_NO_SSID_AVAIL:
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_AP_NOT_REACHED));
break;
case WL_CONNECT_FAILED:
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_WRONG_PASSWORD));
break;
default: // WL_IDLE_STATUS and WL_DISCONNECTED
AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_AP_TIMEOUT));
}
int n = WiFi.scanNetworks(); // restart scan
}
}
break;
case FUNC_COMMAND: case FUNC_COMMAND:
result = DecodeCommand(kWebCommands, WebCommand); result = DecodeCommand(kWebCommands, WebCommand);
break; break;