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

Telnet- сервер(WIFI AP) и telnet - клиент(WIFI STA), проблема.

krepton85

Member
Суть задачи такова, есть 2 устройства на ESP8266, одно (далее 1) является точкой доступа WiFi и имеет telnet сервер, второе (далее 2) является Wi-Fi клиентом с telnet клиентом.
Устройство 1 будет иметь в будущем режим и точки доступа и клиента Wi-Fi, клиент конфигурируется через web интерфейс точки доступа (имя сети WiFi роутера и пароль, для клиента).
Устройство 2 должно подключится к точке доступа 1 устройства, а так же подключится своим telnet клиентом к telnet - серверу устройства 1 и по запросу получить у его настройки подключения к Wi-Fi роутеру, к которому уже успешно подключилось 1 - ое устройство своим wiFi клиентом.
Вся эта система "стопорится" у меня на подключении (не подключается по telnet) telnet - клиента (2), к telnet-серверу (1), разумеется после успешного подключения по wi-Fi 2 к 1. В чем дело не пойму, оба скетча проверены по отдельности и отлично работают - к устройству 1 подключаюсь смартфоном с telnet-клиентом (работает), устройство 2 также успешно подключается к telnet клиенту моего wifi роутера (только для теста). Так же проверял, если telnet сервер запустить на wi-fi клиенте устройства 1, которое подключается к той же wi Fi сети что и telnet клиент 2, то в такой связке это работает.
Ниже в архиве 2 скетча примера.
 

Вложения

Так же проверял, если telnet сервер запустить на wi-fi клиенте устройства 1, которое подключается к той же wi Fi сети что и telnet клиент 2, то в такой связке это работает.
раз так работают, то скорее всего проблема в IP при подключении клиента 8266 к точки доступа 8266, проверьте в одной подсети они находятся или нет
 

krepton85

Member
раз так работают, то скорее всего проблема в IP при подключении клиента 8266 к точки доступа 8266, проверьте в одной подсети они находятся или нет
Все в одной подсети, точка доступа (1) на esp8266 всегда имеет ip 192.168.4.1 (как изменить кстати не знаю) , удаленный клиент на esp8266 (2) получает ip 192.168.4.2.
А что если telnet клиент не может подключатся к ip адресам 192.168.4.1, к другим может, а этот в черном списке.:) Как сменить ip точки доступа на esp8266?
 
нету никаких черный списков, возможно одновременно поднимается и станция и клиент, соответственно 2 IP получается, проверьте вайфай на наличие дополнительной точки доступа от 2 есп

P.S. включите отладку и смотрите что на самом деле происходит
 

krepton85

Member
Ура, все заработало, действительно почему то не нравится ip 192.168.4.1 telnet клиенту - я сменил на точке доступа WIFI ip следующим образом:

IPAddress ip(192, 168, 1, 20);
IPAddress gateway(192, 168, 1, 20);
IPAddress subnet(255, 255, 255, 0);
WiFi.softAPConfig(ip, gateway, subnet);
WiFi.softAP(ssid_ap.c_str(), pass_ap.c_str());

ну и разумеется со стороны telnet клиента начал коннектится к 192.168.1.20:23. И о чудо, все заработало как надо. Но если прописать на точке доступа вновь:

IPAddress ip(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.softAPConfig(ip, gateway, subnet);
WiFi.softAP(ssid_ap.c_str(), pass_ap.c_str());

То снова не канект к telnet. Что это было?:mad:
 
отладку включите на клиенте, скорее всего он работает в 2 режимах: клиента и точки доступа, со стороны клиента ип ....4.2, а со стороны точки у него .....4.1, соответственно он сам к себе пытается подключиться.
или
запрос к серверу идет до присвоения ип, а по умолчанию у него ....4.1, и снова сам к себе пытается подключиться.
 

krepton85

Member
отладку включите на клиенте, скорее всего он работает в 2 режимах: клиента и точки доступа, со стороны клиента ип ....4.2, а со стороны точки у него .....4.1, соответственно он сам к себе пытается подключиться.
или
запрос к серверу идет до присвоения ип, а по умолчанию у него ....4.1, и снова сам к себе пытается подключиться.
Здесь нет отладки, эта версия 2.3.0 в Ардуино IDE, отладка появилась позже. Действительно если запущен режим и клиента и точки доступа Wi-Fi на 1 то уже не подключается клиент telnet на 2. А еще ранее замечал что, если запустить telnet сервер и web сервер, то последний перестает работать. Странно как то тут все устроено, вроде порты разные, как они могут влиять друг на друга. Хотелось бы что бы все и сразу работало на одном esp8266: WiFi клиент, точка доступа, telnet сервер. Web сервер.
 
Здесь нет отладки, эта версия 2.3.0 в Ардуино IDE, отладка появилась позже
отладка еще в версии 2.1.0 упоминается, листать дальше и смотреть когда именно она появилась - бессмысленно.
упоминаний что в версии 2.3.0 она убрана - не найдено.
значит она есть.
если запустить telnet сервер и web сервер, то последний перестает работать.
а соединение телнет при этом разорвали? если контроллер занят телнетом, то вполне естественно что вэб запрос он не обработает.
запускал 2 разных веб сервера на разных портах - все работает, не думаю что телнету нужно больше ресурсов контроллера.
 
Сверху Снизу