• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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);
}
 
Сверху Снизу