From 172ea9a80d1bac870e81380a99ef4fb54a91f0b9 Mon Sep 17 00:00:00 2001 From: joba-1 Date: Sat, 12 Nov 2022 23:15:57 +0100 Subject: [PATCH] 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))