• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Как получить MAC-адрес подключенного клиента?

and7ey

New member
Хочу модифицировать модуль Jcrash29/nodemcu-firmware, чтобы отображать mac-адрес подключенного клиента.

wifi_softap_get_station_info - возвращает адреса всех подключенных клиентов. Как найти нужный для передачи в функцию enduser_setup_http_serve_html / enduser_setup_http_load_payload?
 

SergEgois

New member
#include <ESP8266WiFi.h>

const char *ssid = "Test";
const char *password = "12345678";

void setup() {
Serial.begin(115200);



WiFi.persistent(false); // бережем флеш-память, не перезаписываем данные подключения, если они не изменились с прошлой загрузки
WiFi.mode(WIFI_AP); // Режим точки доступа
WiFi.softAP(ssid, password);


}

void loop() {

}



String macToString(const unsigned char* mac) { // Получаем МАС-адрес клиента в виде строки (может пригодиться при идентификации)
char buf[20];
snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return String(buf);
}
 

and7ey

New member
Где в этом коде определяется mac-адрес подключенного клиента?
 

and7ey

New member
Эта функция не определяет мак-адрес, а преобразует полученный мак-адрес в строку
 

SergEgois

New member
Эта функция не определяет мак-адрес, а преобразует полученный мак-адрес в строку
ну....в чем проблема? определило мак адрес подключеного клиента и возратило мак адрес строкой

WiFiEventHandler stationConnectedHandler; // событие - соединение

void onStationConnected(const WiFiEventSoftAPModeStationConnected& evt) { // при коннекте - включаем реле
Serial.print("CONNECTED: ");

Serial.println(macToString(evt.mac)); // МАС-адрес в порт
}

Не благодари:)
 
Последнее редактирование:

SergEgois

New member
Можно попросить вас больше не отвечать в этой теме?
Я тебя ща попрошу.....
держи свой код.... интелегент
WiFiEventHandler stationConnectedHandler; // событие - соединение

void onStationConnected(const WiFiEventSoftAPModeStationConnected& evt) { // при коннекте - включаем реле
Serial.print("CONNECTED: ");

Serial.println(macToString(evt.mac)); // МАС-адрес в порт
}

функцию которая в стринг преобразовывает мак адрес, не забудь вкинуть
 

and7ey

New member
Ха, а зачем предыдущий ответ отредактировал?

За новый код - спасибо.
onStationConnected нигде регистрировать не нужно?
 
Последнее редактирование:

SergEgois

New member
Ха, а зачем предыдущий ответ отредактировал?

За новый код - спасибо.
onStationConnected нигде регистрировать не нужно?
WiFiEventHandler stationConnectedHandler
Ха, а зачем предыдущий ответ отредактировал?

За новый код - спасибо.
onStationConnected нигде регистрировать не нужно?

Код:
#include <ESP8266WiFi.h>

const char *ssid = "Ihone";
const char *password = "12345678";



WiFiEventHandler stationConnectedHandler; // событие - соединение
WiFiEventHandler stationDisconnectedHandler; // событие - разъединение

void setup() {
  Serial.begin(115200);
 

 
  WiFi.persistent(false); // бережем флеш-память, не перезаписываем данные подключения, если они не изменились с прошлой загрузки
  WiFi.mode(WIFI_AP); // Режим точки доступа
  WiFi.softAP(ssid, password);

  stationConnectedHandler = WiFi.onSoftAPModeStationConnected(&onStationConnected); // при соединении переходим к функции
  stationDisconnectedHandler = WiFi.onSoftAPModeStationDisconnected(&onStationDisconnected); // при разъединении переходим к функции
  //Serial.println( WiFi.localIP());
  //Serial.println( WiFi.softAPIP());
  //WiFi.printDiag(Serial);
}

void loop() {

}

void onStationConnected(const WiFiEventSoftAPModeStationConnected& evt) { // при коннекте - включаем реле
  //Serial.print("CONNECTED: ");
    //Serial.println(macToString(evt.mac)); // МАС-адрес в порт
}

void onStationDisconnected(const WiFiEventSoftAPModeStationDisconnected& evt) { // при дисконнекте - выключаем реле
  //Serial.print("DISCONNECTED: ");

  //Serial.println(macToString(evt.mac)); // МАС-адрес в порт
}

String macToString(const unsigned char* mac) { // Получаем МАС-адрес клиента в виде строки (может пригодиться при идентификации)
  char buf[20];
  snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
  mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  return String(buf);
}
 
Сверху Снизу