Два ESP в одной wifi сети выкидывают друг друга.
- Войдите на сайт для отправки комментариев
Сб, 27/05/2017 - 16:45
Имеется два ESP8266, оба подключаются к точке доступа wifi и шлют данные на сервер cloudmqtt.
Проблема в том, что они работают по очереди совершенно нормально, но при подключении двух и более - работает только один. Пробовал на двух разных роутерах.
Что я делаю не так? Код любой. Например, такой пример из интернета.
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char *ssid = "xxx"; // cannot be longer than 32 characters! const char *pass = "xxx"; // const char *mqtt_server = "m12.cloudmqtt.com"; const int mqtt_port = xxx; const char *mqtt_user = "xxx"; const char *mqtt_pass = "xxx"; const char *mqtt_client_name = "test_conn2"; // Это - меняю unsigned long previousMillis = 0; const long interval = 10000; WiFiClient wclient; PubSubClient client(wclient, mqtt_server, mqtt_port); void setup() { // Setup console Serial.begin(115200); delay(10); Serial.println(); Serial.println(); } void loop() { if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass); if (WiFi.waitForConnectResult() != WL_CONNECTED) return; Serial.println("WiFi connected"); } if (WiFi.status() == WL_CONNECTED) { if (!client.connected()) { Serial.println("Connecting to MQTT server"); if (client.connect(MQTT::Connect("mqtt_client_name") .set_auth(mqtt_user, mqtt_pass))) { Serial.println("Connected to MQTT server"); } else { Serial.println("Could not connect to MQTT server"); } } if (client.connected()) client.loop(); } SendTempHumid(); } // Non-Blocking delay void SendTempHumid(){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { // save the last time you read the sensor previousMillis = currentMillis; client.publish("/test/test","my test" );//Здесь просто заглушка. На втором устройстве - другой топик ))) } }
Оба устройства получают Ip, но дальше что-то идет не так...
Оба устройства получают Ip, но дальше что-то идет не так...
В логе роутера ничего интересного по этому поводу?
Нет, ничего.
Похоже, дело было в библиотеке PubSubClient, я качал ее через Arduino IDE. Сейчас поменял ее на версию для ESP - вроде, заработало все.
Имеется два ESP8266, оба подключаются к точке доступа wifi и шлют данные на сервер cloudmqtt.
Проблема в том, что они работают по очереди совершенно нормально, но при подключении двух и более - работает только один. Пробовал на двух разных роутерах.
Похоже на то, что обе платы подключаются к сети с одним и тем же MAC-адресом (на китайских клонах это возможно). Проверить просто - подключите любую плату к роутеру и посмотрите в меню роутера ее MAC, потом эту отключите и подключите вторую - вероятно, MAC будет тот же