Два 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 будет тот же