Вывести (получить) в монитор порт ip адрес esp8266
- Войдите на сайт для отправки комментариев
Доброго времени суток. Всего несколько дней занимаюсь Ардуино. Возможно не с той стороны зашел, но начал с ESP8266. Перешил её на работу с Arduino IDE. Пользуюсь версией 2 (портативной).
Не могу понять, как получить, узнать, и напр, вывести в порт, сетевой адрес, который получает esp8266 при подключении по dhcp к точке доступа. Если из esp8266 создать точку доступа, то айпишник знаю как получить. Вот так:
#include <ESP8266WiFi.h> // Библиотека для создания Wi-Fi подключения (клиент или точка доступа) #include <WiFiClient.h> #include <ESP8266WebServer.h> // Библиотека для управления устройством по HTTP (например из браузера) #include <FS.h> // Библиотека для работы с файловой системой #include <ESP8266FtpServer.h> // Библиотека для работы с SPIFFS по FTP const char *ssid = "MyESP"; // Название генерируемой точки доступа void setup() { // put your setup code here, to run once: Serial.begin(9600); // Инициализируем вывод данных на серийный порт со скоростью 9600 бод WiFi.softAP(ssid); // Создаём точку доступа Serial.print("\nМой IP для подключения через Web-Browser или по FTP: "); // Выводим на монитор серийного порта сообщение о том, что сейчас будем выводить локальный IP Serial.println(WiFi.softAPIP()); // Выводим локальный IP-адрес ESP8266 Serial.println("\n"); } void loop() { // put your main code here, to run repeatedly: }
А вот как вывести в порт или вообще получить адрес, присвоенный плате в случае, если плата выступает как клиент? Делаю так:
#include <ESP8266WiFi.h> // Библиотека для создания Wi-Fi подключения (клиент или точка доступа) #include <WiFiClient.h> #include <ESP8266WebServer.h> // Библиотека для управления устройством по HTTP (например из браузера) #include <FS.h> // Библиотека для работы с файловой системой #include <ESP8266FtpServer.h> // Библиотека для работы с SPIFFS по FTP const char* ssid = ""; const char* password = ""; void setup() { Serial.begin(9600); // Инициализируем вывод данных на серийный порт со скоростью 9600 бод while (!Serial) { // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе } WiFi.begin(ssid, password); // Инициализируем подключение к указанной вайфай сети Serial.print(WiFi.localIP()); // Пробую вывести адрес платы } void loop() { // put your main code here, to run repeatedly: }
Но выдает:
��(IP unset)
И ещё. Вроде прочитал в правилах форума, что нужно делать нумерацию строк. Но во вставке кода я не нашел этой функции. Номера строк пишутся руками? Или я упустил какую-то кнопку форматирования? Или не правильно прочитал правила форума?
а зачем клиенту знать свой адрес?
просто любопытно, сколько писал, ни разу не понадобился, это ж клиент.......
Ты реально считаешь, что как только ты постучался в роутер, то сразу перешёл в состояние оллинклюзифф ?
Попробуй ради приличия сделать , что то типа этого:
Вообще-то я даже организовал задержку. Но в целом адрес выдается сразу. Проверяется пингом и мониторингом на самом роутере. Там в списке dhcp клиентов он появляется сразу.
2Andycat: Клиенту не нужно, нужно программисту.
Чтоб потом знать в какой ip долбить.
а зачем клиенту знать свой адрес?
просто любопытно, сколько писал, ни разу не понадобился, это ж клиент.......
Во-первых, для общего развития. Во-вторых, есть другая сторона проблемы. Если повесить несколько ESP8266 на один роутер, тоесть в одну сеть, у них начинаются конфликты. У них у всех один мак и одно имя. Так что дополнительно хочу научиться менять маки и имя клиента. В-третьих, поскольку на плату прошиваю поддержку фтп, вэбсервер, то нужно знать, на какой адрес заходить
Вообще-то я даже организовал задержку. Но в целом адрес выдается сразу. Проверяется пингом и мониторингом на самом роутере. Там в списке dhcp клиентов он появляется сразу.
Ну да конечно.
Ради прикола , добавь в мой цикл while кроме delay() , скажем: Serial.print("waiting...");
Ну и для частоты эксперимента пусть будет delay(50);
Потом отпишись, как "сразу" он начинает работать.
Ты реально считаешь, что как только ты постучался в роутер, то сразу перешёл в состояние оллинклюзифф ?
Попробуй ради приличия сделать , что то типа этого:
Да, так получилось. А я думал, что нужно ждать порт, а на до было ждать подключения.
Только вот выводит ещё и какие-то кракозябры перед айпишником:
Не подскажите, что это и откуда берется? И как его прочитать?
Это на другой скорости.
Там чип wifi с чипом МК (которые в общем корпусе) общается по uart.
Поиграй настройками скорости порта в мониторе, когда совпадут увидишь что он пишет. Обычно это режим и состояние.
Что то типа этого:(скорость у меня 74880)
Вообще-то я даже организовал задержку. Но в целом адрес выдается сразу. Проверяется пингом и мониторингом на самом роутере. Там в списке dhcp клиентов он появляется сразу.
Да уж )))) не подумал, что это для человека все сразу происходит )))
При 500 вывело через 7 пустых, при 50 через 76 пустых
Что то типа этого:(скорость у меня 74880)
Попробовал менять скорости. Вроде все перебрал, выше 115200 решил не идти. На всех скоростях пишет крякозябры, только разной длины и разного вида. В самом скетче могу прописать подсказанную вами скорость, а вот в настроках монитора порта такой нет. Руками не получается прописать. Если прописать в скетче скорость, а в настройках порта оставить какую-то другую, то только хуже. Вообще ничего не читается
поскольку на плату прошиваю поддержку фтп, вэбсервер, то нужно знать, на какой адрес заходить
это понятно, но подумайте над тем что устройства на ESP8266 будут автономными, в консоли у них адрес посмотреть не сможете, только на роутере, соответственно получать его нет смысла. Ну а если уж во внешней сети какому либо сервису/серверу необходим адрес, то после получения его локальным МК, он отправляется например на некий сервер для полноценного обмена данными
Не подскажите, как самому прописать мак и имя клиента? Или лучше начать новую тему?
поскольку на плату прошиваю поддержку фтп, вэбсервер, то нужно знать, на какой адрес заходить
это понятно, но подумайте над тем что устройства на ESP8266 будут автономными, в консоли у них адрес посмотреть не сможете, только на роутере, соответственно получать его нет смысла. Ну а если уж во внешней сети какому либо сервису/серверу необходим адрес, то после получения его локальным МК, он отправляется например на некий сервер для полноценного обмена данными
Так не обязательно в консоли. Присвоил переменной и передал куда надо в органы. И гораздо проще узнать его именно с ESP, чем заходить на простенький роутер типа тплинка или какой-нибудь нонейм. Это ж не микротики, с которых можно получить данные.
Не подскажите, как самому прописать мак и имя клиента? Или лучше начать новую тему?
Никогда такой нужды не испытывал
Не подскажите, как самому прописать мак и имя клиента?
DHCP
Пишут, что вот так можно:
wifi_set_macaddr(STATION_IF, &newMACAddress[0]);
Ну соответвенно ссылка должна быть на одноименный массив типа:
uint8_tarr[6]={aa,bb,cc,xx,yy,zz};(48бит)
И эту процедуру нужно производить при каждой перезагрузке
Не подскажите, как самому прописать мак и имя клиента?
DHCP
Хоть я и начал новую тему, но может подскажите, какую именно библиотеку вы имели ввиду?
DHCP
Хоть я и начал новую тему, но может подскажите, какую именно библиотеку вы имели ввиду?
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики. На DHCP-сервере заводится lease и ESP всегда получает один и тот же IP.
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики.
На форумах утверждают обратное.
Точнее описываются случаи, когда из 10 заказанных железок, у всех 10 был один и тот же МАС
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики. На DHCP-сервере заводится lease и ESP всегда получает один и тот же IP.
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики.
Я читал заявления об уникальности. Значит закончилось выкупленное адресное пространство. Или подпольная фабрика работает.
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики. На DHCP-сервере заводится lease и ESP всегда получает один и тот же IP.
Я имел в виду, что не нужно прописывать MAC, он уникален от фабрики. На DHCP-сервере заводится lease и ESP всегда получает один и тот же IP.
Имя клиента сети WiFi устанавливается с помощью WiFi.setHostname(...);
Спасибо, работает
ни одной esp c дублированным маком не покупал, где вы их такие берёте