Slacky
Member
Ответа от автора, мной процитированного сообщения, не было. Было рассуждение на тему, но не ответ ...В этой теме ответ уже был
Заливаем скетчи в ESP8266, управляем каналами по Wi-Fi, создаем свои сети.
Ответа от автора, мной процитированного сообщения, не было. Было рассуждение на тему, но не ответ ...В этой теме ответ уже был
Заливаем скетчи в ESP8266, управляем каналами по Wi-Fi, создаем свои сети.
Это и так очевидно, вы уверены, что DHCP будет следующие по списку 5 адресов? А если 2-й отключится, а новый подключится, то ему присвоется освободившийся 2-й адрес или новый шестой?WiFi.softAPConfig(IPAddress(192, 168, 10, 1), IPAddress(192, 168, 10, 1), IPAddress(255, 255, 255, 0));
Просмотрел весь файл - ни намека как задать диапазон адресов DHCP для точки доступа.в нем часть нужного вам уже сделана - АП+DHCP+HTTP_server (только переписать под себя).
Фёдор, давайте быть добрее друг к другу - ну написал человек что-то не очень подумавши. Что же теперь - вызывать его на "партсобрание" и заставлять прилюдно каятся во всех грехах? А мы сами без греха? И ни когда не ошибаемся в своих постах? Да бог с ним. На ошибку ему указали, а дальше его личное дело...Ответа от автора, мной процитированного сообщения, не было. Было рассуждение на тему, но не ответ ...
Да я на самом деле без всяких подколок спросил. Ну вдруг есть что-то такое, чего я не знаю. А прочитал всего-лишь рассуждения на эту тему, причем не автора ...Фёдор, давайте быть добрее друг к другу - ну написал человек что-то не очень подумавши. Что же теперь - вызывать его на "партсобрание" и заставлять прилюдно каятся во всех грехах? А мы сами без греха? И ни когда не ошибаемся в своих постах? Да бог с ним. На ошибку ему указали, а дальше его личное дело...
Вы что-то перемудрили. Вам еще надо понять принцип действия tcp/ip сети и маршрутизацию в ней.Просмотрел весь файл - ни намека как задать диапазон адресов DHCP для точки доступа.
Идеология такова.
Если нет сети ESP-0, то она создается с адресом 192.168.10.0 и диапазон адресов 192.168.10.1-5. Если есть такая, то станции подключаются к ней. 5-му подключившемуся сообщают, что он должен создать точку доступа ESP-1 с адресом 192.168.10.10 и диапазоном адресов 192.168.10.11-15 и так далее.
Я не высказываю никакие претензии. Задаю вопрос - что не понятно, либо как сделать. Если кто-то знает, хорошо. Вот только не надо меня учить жить и я не скажу куда надо пойти (с).Учите матчасть. И любые претензии оставьте пожалуйста при себе
...hardware\esp8266\2.4.0-rc2\libraries\ESP8266WebServer\src\ESP8266WebServer.cppЧем отличаются
WiFiServer server(80); - используется в примере WebServera при подключении к домашней сети
от
ESP8266WebServer server(80); - используется в примере создания точки доступа
Я, наверное, лаю, что меня не понимают....hardware\esp8266\2.4.0-rc2\libraries\ESP8266WebServer\src\ESP8266WebServer.cpp
...hardware\esp8266\2.4.0-rc2\libraries\ESP8266WiFi\src\WiFiServer.cpp
На этом сайте всё ищется Может быть - инфа несколько устарела:Чем отличаются
WiFiServer server(80); - используется в примере WebServera при подключении к домашней сети
server.begin();
от
ESP8266WebServer server(80); - используется в примере создания точки доступа
server.begin()
Вы меня удивить хотите? Про РК-86 слышали? Пентагон и Ленинград у меня уже после былине вам меня учить, я свой первый компьютер спаял на коленке в 1991 году - Пентагон-48,
Вроде, я с вами на брудершафт не пил.Если умный такой
Наверное WiFi.gatewayIP(); ?...знает свой адрес через функции WiFi.localIP()
для станции...
Как станции узнать IP адрес точки доступа (он же шлюз для станции)
struct softap_config {
uint8 ssid[32];
uint8 password[64];
uint8 ssid_len; // Note: Recommend to set it according to your ssid
uint8 channel; // Note: support 1 ~ 13
AUTH_MODE authmode; // Note: Don't support AUTH_WEP in softAP mode.
uint8 ssid_hidden; // Note: default 0
uint8 max_connection; // Note: default 4, max 4
uint16 beacon_interval; // Note: support 100 ~ 60000 ms, default 100
};
bool wifi_softap_set_config(struct softap_config *config);
struct dhcps_lease {
bool enable;
struct ip_addr start_ip;
struct ip_addr end_ip;
};
uint8 wifi_softap_get_station_num(void);
bool wifi_softap_dhcps_start(void);
bool wifi_softap_dhcps_stop(void);
bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please);
Модуль понятно как подключается к AP (он знает имя, к которому надо подключиться). Я-то, конечно, знаю IP адрес точки, но не хочу его явно прописывать при отправке сообщения от станции на сервер, который реализован на точке доступа. Можно пример (без ковыряния *.h файлов, в коих я пока не очень много понимаю) какое сообщение послать серверу на AP со станции при регистрации? Или как AP автоматом направить сообщение на сервер станции при подключении к AP.Учите нужные модули самим регистрироваться на сервере (а сервер - помнить, кто у него в подопечных), а на не нужные подключения - не обращайте внимание (среди них - ваш телефон)
Строчки увидел, но не понимаю как ими воспользоваться в скетче программы.А пока - вы в том файле как раз найдете еще одни строчки, которые вас очень интересуют:
........
IPAddress UP_ip;
WiFi.mode(WIFI_STA);
//подключение к точке доступа
WiFi.begin(S_ssid, S_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
// после подключения в точке доступа на станции тоже организуем сервер
server.begin();
STA_ip=WiFi.localIP();
UP_ip=WiFi.gatewayIP();
//посылаем на точку доступа свой IP и ChipID
Send(UP_ip, 80, "ip_id/"+Print_IP(STA_ip)+"/"+String(ChipID));
.........
String Send(IPAddress ip, int port, String Subj)
{
WiFiClient client;
if (client.connect(ip, port))
{
Serial.println(Subj);
client.print(Subj+"\r");
client.flush();
unsigned long timeout = millis();
while (client.available() == 0)
{
if (millis() - timeout > 5000)
{
Serial.println(">>> Client Timeout !");
client.stop();
return("");
}
}
while(client.available())
{
String line = client.readStringUntil('\r');
Serial.print(line);
return(line);
}
}
else {
Serial.println("connection failed");
return("");
}
}
// фрагмент из loop
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
if (req.indexOf("ip_id/") != -1)
{
Serial.print("ip/"+Print_IP(AP_ip)+"/id/"+String(ChipID));
client.print("ip/"+Print_IP(AP_ip)+"/id/"+String(ChipID)+"\r");
delay(1000);
client.flush();
client.stop();
}