Две esp мешают друг другу при подключении к одному серверу

Тема в разделе "ESP8266, ESP32", создана пользователем admitry, 20 дек 2020.

Метки:
  1. admitry

    admitry Нуб

    Рабочий код из предыдущей темы мы залили в ещё один модуль ESP
    (сам он физически находится далеко отсюда, т.е. заходит из)

    При включении на один сервер они начинают друг другу мешать, вызывая бесконечные реконнекты
    На второй платке такая же картина. При этом на передачу они всё-таки работают, отдавая температуру в соответствующие топики, но прием полностью отшибает

    Что нужно поменять в настройках авторизации, чтобы они при подключении друг другу не мешали?
    Пользователь, пароль, это понятно, но на нашем сервере авторизация пока не настроена, так что скорее всего дело не в этом.
    Должен быть по всей видимости ещё client ID и он должен быть уникальным, но я так и не понял, где в настройках PubSub его вообще прописать.
     
  2. ИгорьК

    ИгорьК Гуру

    У них у каждой должно быть собственное имя при подключении. Такое происходит, когда два модуля с одним именем ломятся на сервер. Смотрите настройки, ищите что изменить.

    Пользователя меняйте.
     
  3. admitry

    admitry Нуб

    в первом сообщении писал
    пользователя менял, что-то другое влиять
    В настройках подключения андроид- или виндовс-клиента есть client ID
    значит он должен быть где-то и в коде подключения
    но я не понял, где именно
    надеюсь, что кто-то уже в курсе и подскажет
    upload_2020-12-21_12-55-42.png случаем, не вот это?
     
  4. ИгорьК

    ИгорьК Гуру

    Одна железка идет к брокеру и говорит: "Привет, я - Вася, давай дружить".
    Другая железка идет к брокеру и говорит: "Привет, я - Вася, давай дружить".

    Брокер в ответ: "И ты Вася? Идите вы оба, разберитесь между собой. Жду."

    client ID - значит client ID. Вы же откуда то этот код скопипастили - поищите что-то типа:

    upload_2020-12-21_12-26-16.png
     
    parovoZZ нравится это.
  5. admitry

    admitry Нуб

    нашел решение в описании API

    в коде это

    Код (C++):
    void reconnect() {
      // Loop until we're reconnected
      while (!client.connected()) {
        Serial.print("Attempting MQTT connection...");
        // Attempt to connect
        // If you do not want to use a username and password, change next line to
        if (client.connect("ESP8266Client")) {
        //if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
          client.subscribe(in_topic); //это мы добавили по рекомендации автора библиотеки
          Serial.println("connected");
        } else {
          Serial.print("failed, rc=");
          Serial.print(client.state());
          Serial.println(" try again in 5 seconds");
          // Wait 5 seconds before retrying
          delay(5000);
     
        }
      }