Соединение сетей Wi-Fi на nodemcu: как настроить esp8266 в качестве расширителя Wi-Fi, простейший случай
Мне кажется, что в одной комнате в подвале моего дома повышается влажность. Чтобы временно отслеживать ситуацию, я хотел бы построить очень маленькую сеть Wi-Fi-ячеистой сети для обмена этими данными о влажности на локально установленный сервер малинового пирога. Большую часть времени сеть будет простаивать, каждые 5 минут отправляя данные датчика влажности через mqtt на сервер.
Какой самый простой код настраивает esp8266 для подключения к существующей сети Wi-Fi и работы в качестве точки доступа и удлинителя Wi-Fi на пару метров дальше?
Я попробовал этот код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "SSID_Internet";
const char* password = "qaz12345";
const char* newssid = "SSID_Extender";
const char* newpassword = "qaz12345";
void setup(void){
Serial.begin(115200);
Serial.println("");
// установить и точку доступа, и станцию
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(newssid, newpassword);
Serial.print(newssid);
Serial.print(" server ip: ");
Serial.println(WiFi.softAPIP());
WiFi.begin(ssid, password);
int wifi_it = 0;
int wifi_status;
while ((wifi_status = WiFi.status()) != WL_CONNECTED) {
Serial.println("Trying to connect to wifi");
wifi_it++;
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
long rssi = WiFi.RSSI();
Serial.print("Signal strength: ");
Serial.print(rssi);
Serial.println("dBm");
}
void loop(void){
}
Он успешно регистрирует esp8266 в сети Wi-Fi, настраивает точку доступа, но если я подключаюсь к SID_Extender с помощью мобильного телефона, интернет-трафик не перенаправляется дальше.
Есть проекты, которые позволяют настроить несколько esp в удобной для пользователя форме, но мне интересно, как настроить такой esp самостоятельно.
@arthur, 👍0
Обсуждение1 ответ
Лучший ответ:
ESP8266 не будет соединять сети. Возможно, вы можете подключиться к вашему другому ep8266 на уровне TCP с помощью WiFiServer и WiFiClient. Отправьте значение датчика на среднюю точку доступа esp8266, на которой работает точка доступа, и она отправит значение в Raspberry.
С помощью MQTT вы можете создать прокси-сервер MQTT. Получите данные с помощью WiFiServer и перенаправьте их с помощью WiFiClient. без синтаксического анализа или чего-либо еще, только копирование символов между клиентом сервера и локальным клиентом в направлениях стенда
что-то вроде этого (не проверено):
void loop() {
if (!serverClient || !serverClient.connected()) {
serverClient = server.available();
}
if (!serverClient || !serverClient.connected()) {
if (client.connected()) {
client.stop();
}
return;
}
if (!client || !client.connected()) {
if (!client.connect(raspiIP, MQTT_PORT)) {
Serial.println("Can't connect to MQTT");
delay(1000);
return;
}
}
while (serverClient.available() > 0) {
client.write(serverClient.read());
}
while (client.available() > 0) {
serverClient.write(client.read());
}
}
https://www.youtube.com/watch?v=NH1rjk3Q_MU это, скорее всего, вы имеете в виду. Возможно, у вас есть код nodemcu C для этого?, @arthur
как вы отправляете и получаете значение датчика?, @Juraj
Как отправить значение датчика? Через MQTT. У меня есть брокер с поддержкой TLS на внутреннем сервере (малина) внутри «домашней сети»., @arthur
тогда вы можете создать прокси-сервер mqtt. получить сообщение mqtt от WiFiServer и переслать его с помощью WiFiClient. без синтаксического анализа или чего-либо еще, просто копирование символов между клиентом сервера и локальным клиентом в направлениях стенда, @Juraj
отличная идея. Как вы думаете, у вас есть готовый пример кода?, @arthur
Я добавил фрагмент кода для ответа, @Juraj
хороший!!!! (Я знаю, что не должен писать только хорошее, но я не могу остановиться), @arthur
@Артур, помогло?, @Juraj
в процессе :-), @arthur
- ESP8266 не подключается к Wi-Fi
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Обнаружение ESP8266 в сети
- NodeMCU продолжает отключаться
- Использование или создание подключения Wi-Fi Direct (P2P) на ESP8266
- Ошибка запуска FirebaseDemo в NodeMCU
- Как связать MPU9250 и NodeMcu?
- Как изменить тайм-аут загрузки ArduinoOTA?
это не роутер, это просто что-то подключенное к двум сетям. Мне никогда не удавалось получить ввод-вывод от обоих в такой ситуации (ap + sta), хотя я пытался получить доступ к внутреннему серверу, а не к Интернету. Единственный способ, которым я смог «соединиться», это через второй ESP и последовательную связь между ними, но, может быть, я чего-то не знаю..., @dandavis