From 172ea9a80d1bac870e81380a99ef4fb54a91f0b9 Mon Sep 17 00:00:00 2001 From: joba-1 Date: Sat, 12 Nov 2022 23:15:57 +0100 Subject: [PATCH 1/6] add RgxClients command for range extenders --- .../xdrv_58_range_extender.ino | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index 0b0e382ce..c8af4b4d2 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -35,10 +35,14 @@ CONFIG_LWIP_IP_FORWARD option set, and optionally CONFIG_LWIP_IPV4_NAPT. If you want to support NAPT (removing the need for routes on a core router): #define USE_WIFI_RANGE_EXTENDER_NAPT +If you want to list AP clients (MAC and IP) with command RgxClients: +#define USE_WIFI_RANGE_EXTENDER_CLIENTS + An example full static configuration: #define USE_WIFI_RANGE_EXTENDER #define USE_WIFI_RANGE_EXTENDER_NAPT +#define USE_WIFI_RANGE_EXTENDER_CLIENTS #define WIFI_RGX_STATE 1 #define WIFI_RGX_NAPT 1 #define WIFI_RGX_SSID "rangeextender" @@ -92,6 +96,10 @@ const char kDrvRgxCommands[] PROGMEM = "Rgx|" // Prefix "|" "NAPT" #endif // USE_WIFI_RANGE_EXTENDER_NAPT +#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS + "|" + "Clients" +#endif // USE_WIFI_RANGE_EXTENDER_CLIENTS "|" "Address" "|" @@ -104,6 +112,9 @@ void (*const DrvRgxCommand[])(void) PROGMEM = { #ifdef USE_WIFI_RANGE_EXTENDER_NAPT &CmndRgxNAPT, #endif // USE_WIFI_RANGE_EXTENDER_NAPT +#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS + &CmndRgxClients, +#endif // USE_WIFI_RANGE_EXTENDER_CLIENTS &CmndRgxAddresses, &CmndRgxAddresses, }; @@ -161,6 +172,30 @@ void RgxCheckConfig(void) } } +#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS +#include "esp_wifi.h" + +void CmndRgxClients(void) +{ + wifi_sta_list_t wifi_sta_list = {0}; + tcpip_adapter_sta_list_t adapter_sta_list = {0}; + + esp_wifi_ap_get_sta_list(&wifi_sta_list); + tcpip_adapter_get_sta_list(&wifi_sta_list, &adapter_sta_list); + + Response_P(PSTR("[")); + const char *sep = ""; + for (int i=0; i= 0) && (XdrvMailbox.payload <= 1)) From 4c376350a7c4ec6ec76ada5876c27f0cada3f3e3 Mon Sep 17 00:00:00 2001 From: joba-1 Date: Sat, 12 Nov 2022 23:17:15 +0100 Subject: [PATCH 2/6] add RgxClients to tasmota32-rangeextender pio env --- platformio_tasmota_cenv_sample.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index e086b1094..2eb6bce81 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -11,6 +11,7 @@ build_flags = ${env:tasmota32_base.build_flags} -D FIRMWARE_TASMOTA32 -D USE_WIFI_RANGE_EXTENDER -D USE_WIFI_RANGE_EXTENDER_NAPT + -D USE_WIFI_RANGE_EXTENDER_CLIENTS [env:tasmota32s3-file] extends = env:tasmota32_base From 912574f8d7015a2bdb4de93251f5f592c8536be5 Mon Sep 17 00:00:00 2001 From: joba-1 Date: Mon, 14 Nov 2022 01:18:32 +0100 Subject: [PATCH 3/6] unconditional RgxClients, ip dict with mac as key --- platformio_tasmota_cenv_sample.ini | 1 - .../xdrv_58_range_extender.ino | 17 +++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 2eb6bce81..e086b1094 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -11,7 +11,6 @@ build_flags = ${env:tasmota32_base.build_flags} -D FIRMWARE_TASMOTA32 -D USE_WIFI_RANGE_EXTENDER -D USE_WIFI_RANGE_EXTENDER_NAPT - -D USE_WIFI_RANGE_EXTENDER_CLIENTS [env:tasmota32s3-file] extends = env:tasmota32_base diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index c8af4b4d2..e5b26bef1 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -96,10 +96,8 @@ const char kDrvRgxCommands[] PROGMEM = "Rgx|" // Prefix "|" "NAPT" #endif // USE_WIFI_RANGE_EXTENDER_NAPT -#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS "|" "Clients" -#endif // USE_WIFI_RANGE_EXTENDER_CLIENTS "|" "Address" "|" @@ -112,9 +110,7 @@ void (*const DrvRgxCommand[])(void) PROGMEM = { #ifdef USE_WIFI_RANGE_EXTENDER_NAPT &CmndRgxNAPT, #endif // USE_WIFI_RANGE_EXTENDER_NAPT -#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS &CmndRgxClients, -#endif // USE_WIFI_RANGE_EXTENDER_CLIENTS &CmndRgxAddresses, &CmndRgxAddresses, }; @@ -133,6 +129,7 @@ void (*const DrvRgxCommand[])(void) PROGMEM = { #ifdef ESP32 #include "lwip/lwip_napt.h" #include +#include "esp_wifi.h" #endif // ESP32 #define RGX_NOT_CONFIGURED 0 @@ -172,29 +169,25 @@ void RgxCheckConfig(void) } } -#ifdef USE_WIFI_RANGE_EXTENDER_CLIENTS -#include "esp_wifi.h" - void CmndRgxClients(void) { wifi_sta_list_t wifi_sta_list = {0}; tcpip_adapter_sta_list_t adapter_sta_list = {0}; - + esp_wifi_ap_get_sta_list(&wifi_sta_list); tcpip_adapter_get_sta_list(&wifi_sta_list, &adapter_sta_list); - Response_P(PSTR("[")); + Response_P(PSTR("{\"RgxClients\":{")); const char *sep = ""; for (int i=0; i Date: Mon, 14 Nov 2022 01:47:00 +0100 Subject: [PATCH 4/6] add rssi for each entry of RgxClients list --- tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index e5b26bef1..7eb017f29 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -173,7 +173,7 @@ void CmndRgxClients(void) { wifi_sta_list_t wifi_sta_list = {0}; tcpip_adapter_sta_list_t adapter_sta_list = {0}; - + esp_wifi_ap_get_sta_list(&wifi_sta_list); tcpip_adapter_get_sta_list(&wifi_sta_list, &adapter_sta_list); @@ -182,8 +182,8 @@ void CmndRgxClients(void) for (int i=0; i Date: Mon, 14 Nov 2022 02:25:24 +0100 Subject: [PATCH 5/6] ap sta list header esp_wifi.h is ESP32 only --- .../tasmota_xdrv_driver/xdrv_58_range_extender.ino | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index 7eb017f29..d8a5125b7 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -35,8 +35,7 @@ CONFIG_LWIP_IP_FORWARD option set, and optionally CONFIG_LWIP_IPV4_NAPT. If you want to support NAPT (removing the need for routes on a core router): #define USE_WIFI_RANGE_EXTENDER_NAPT -If you want to list AP clients (MAC and IP) with command RgxClients: -#define USE_WIFI_RANGE_EXTENDER_CLIENTS +List AP clients (MAC, IP and RSSI) with command RgxClients on ESP32 An example full static configuration: @@ -96,8 +95,10 @@ const char kDrvRgxCommands[] PROGMEM = "Rgx|" // Prefix "|" "NAPT" #endif // USE_WIFI_RANGE_EXTENDER_NAPT +#ifdef ESP32 "|" "Clients" +#endif // ESP32 "|" "Address" "|" @@ -110,7 +111,9 @@ void (*const DrvRgxCommand[])(void) PROGMEM = { #ifdef USE_WIFI_RANGE_EXTENDER_NAPT &CmndRgxNAPT, #endif // USE_WIFI_RANGE_EXTENDER_NAPT +#ifdef ESP32 &CmndRgxClients, +#endif // ESP32 &CmndRgxAddresses, &CmndRgxAddresses, }; @@ -169,6 +172,7 @@ void RgxCheckConfig(void) } } +#ifdef ESP32 void CmndRgxClients(void) { wifi_sta_list_t wifi_sta_list = {0}; @@ -182,12 +186,13 @@ void CmndRgxClients(void) for (int i=0; i Date: Mon, 14 Nov 2022 13:02:04 +0100 Subject: [PATCH 6/6] change rgx client mac format in list as requested --- tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino index d8a5125b7..7352861dd 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_58_range_extender.ino @@ -186,7 +186,7 @@ void CmndRgxClients(void) for (int i=0; i