Проблема с ESP8266 в сети Eero
У меня есть MCU узла ESP8266, и я учусь использовать его возможности Wi-Fi. В моем доме у меня есть маршрутизатор, предоставленный интернет-оператором, который управляет сетью, которую мы назовем "network1". У меня также есть ячеистая сеть Eero, которая работает в доме и называется "network2".
Когда я загружаю следующий минимальный пример и использую network1,
- мое устройство 8266 подключается к network1 (сообщения на последовательном мониторе подтверждают это) и
- Я могу использовать свой телефон и ноутбук для подключения к 8266, то есть я могу ввести IP-адрес в свой браузер и увидеть веб-страницу с сообщением "Привет, мир".
Однако у меня проблемы с network2, сетью Eero.
- Я могу подключить свое устройство 8266 к network2 (сообщения на последовательном мониторе подтверждают это). но
- Я не могу подключиться к устройству 8266 с помощью телефона / ноутбука. (Да, сначала я переключаю их на network2.) Я ввел новый IP-адрес в свой браузер, и мне сказали, что страница слишком долго не отвечает.
Я не сделал ничего особенного с моим маршрутизатором network1; все просто работало. С network2 я пробовал различные настройки с моим Eero - дал 8266 статический IP-адрес, включил переадресацию портов (на порт 80) и установил для него правило брандмауэра, но ничего не работает.
Я могу запускать много разных программ через network1, и в сети Eero ничего не работает. Есть какие-нибудь предложения по тому, как заставить все работать?
Мой минимальный рабочий пример:
#include <ESP8266WiFi.h>
const char* ssid = "network1"; // или "network2"
const char* password = "thepassword"; // реальный пароль, используемый в коде
WiFiServer server(80); // просто выберите любой номер порта, который вам нравится
void setup() {
Serial.begin(115200);
// Подключение к сети Wi-Fi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Запустить сервер
server.begin();
Serial.println("Server started");
// Печать IP-адреса
Serial.println(WiFi.localIP());
//шлюз = WiFi.gatewayIP();
Serial.print("GATEWAY: ");
Serial.println(WiFi.gatewayIP());
// печать маски подсети:
//subnet = WiFi.SubnetMask();
Serial.print("NETMASK: ");
Serial.println(WiFi.subnetMask());
}
void loop() {
// Проверьте, подключился ли клиент
WiFiClient client = server.available();
if (!client) {
return;
}
// Подготовка ответа
String s = "HTTP/1.1 200 OK\r\n";
s += "Content-Type: text/html\r\n\r\n";
s += "<!DOCTYPE HTML>\r\n<html>\r\n";
s += "<head>\r\n";
s+= "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n";
s+= "<title>ESP Web Server</title>\r\n";
s+= "</head>\r\n";
s += "Hello World";
s += "</html>\n";
client.flush();
// Отправить ответ клиенту
client.print(s);
delay(1);
}
@GregH, 👍1
Обсуждение1 ответ
Мне удалось найти ответ, хотя я не уверен, почему это работает. Все сводится к добавлению WiFi.mode(WIFI_STA);
в настройках, как и в
void setup() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
...
}
Мне удалось повторить успех с другим файлом на устройстве ESP8266 и в сети Eero.
- Как отправлять твиты с датчиком пламени и ESP8266?
- Как изменить учетные данные Wi-Fi нескольких ESP8266 вместе
- Какие существуют способы обеспечения Wi-Fi с помощью ESP8266?
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
Я не совсем уверен, но вы успешно подключили какие-либо два устройства в сети Eero? Интересно, не могли бы вы добавить какой-нибудь Serial.println() в loop(), чтобы убедиться, что в network1 все работает так, как ожидалось, а затем посмотреть, где что-то ломается для network2., @garson
@garson Ты имеешь в виду подключить два ESP8266 и заставить их разговаривать друг с другом? Я делал такие вещи, как заставлял свой iPhone транслировать скринкаст на свой Roku; в этом смысле у меня были устройства в сети Eero, которые прекрасно взаимодействовали друг с другом. Но не любые устройства, которые я запрограммировал., @GregH
Да, именно это я и имел в виду. Хм. Это предполагает перезапуск eero. https://support.eero.com/hc/en-us/articles/207613706-Help-I-m-having-trouble-with-my-eeros . Печать подтверждений в журнале, когда кто-то обращается к ESP (в network1, а затем пытается подключиться к network2), может указать вам правильное направление, но я не уверен., @garson
несмотря ни на что, вы хотите использовать методы server.on() вместо этой болезненной низкоуровневой обработки пакетов в loop()., @dandavis
@dandavis Поможет ли это с проблемой Eero или просто улучшит создание страниц, когда я приступлю к созданию реальных приложений? На данный момент научиться писать хороший код вторично по отношению к тому, чтобы заставить _something_ работать., @GregH