Два ESP в одной wifi сети выкидывают друг друга.

Shadow77
Offline
Зарегистрирован: 10.01.2016

Имеется два 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" );//Здесь просто заглушка. На втором устройстве - другой топик )))
  }
}

 

Shadow77
Offline
Зарегистрирован: 10.01.2016

Оба устройства получают Ip, но дальше что-то идет не так...

kalapanga
Offline
Зарегистрирован: 23.10.2016

Shadow77 пишет:

Оба устройства получают Ip, но дальше что-то идет не так...

В логе роутера ничего интересного по этому поводу?

Shadow77
Offline
Зарегистрирован: 10.01.2016

Нет, ничего.

Похоже, дело было в библиотеке PubSubClient, я качал ее через Arduino IDE. Сейчас поменял ее на версию для ESP - вроде, заработало все.

b707
Offline
Зарегистрирован: 26.05.2017

Shadow77 пишет:

Имеется два ESP8266, оба подключаются к точке доступа wifi и шлют данные на сервер cloudmqtt.

Проблема в том, что они работают по очереди совершенно нормально, но при подключении двух и более -  работает только один. Пробовал на двух разных роутерах.

Похоже на то, что обе платы подключаются к сети с одним и тем же MAC-адресом (на китайских клонах это возможно). Проверить просто - подключите любую плату к роутеру и посмотрите в меню роутера ее MAC, потом эту отключите и подключите вторую - вероятно, MAC будет тот же