Tras un corte de luz, 60 ESP32 entran en un bucle de reconexión interminable
Traducido del Türkçe por IA ·
Hola, perdón de antemano por lo largo que es el mensaje.En la planta de tratamiento de agua donde trabajo planeamos instalar unas 200 pequeñas cajas de medición basadas en ESP32 para el nivel, el caudal y el estado de las bombas. Todas estarán en el mismo edificio, se conectarán al mismo punto de acceso y enviarán los datos a Hermetry mediante MQTT. Primero hicimos un piloto con 60 de ellas.Durante el funcionamiento normal no hay problemas. Pero la semana pasada hubo un corte de luz de 20 minutos en el edificio, y cuando volvió la electricidad, la mayoría de las cajas no lograron conectarse bien. En el puerto serie que estoy monitorizando hay un ciclo constante de conectar-desconectar, y en el panel los dispositivos cambian continuamente entre en línea y fuera de línea. Revisé la pestaña Log de los dispositivos:
Connected via mqtts
Disconnected Reason: takeover
Connected via mqtts
Disconnected Reason: takeover
Además, los administradores recibieron una notificación llamada «takeover fight».Lo primero que se me ocurre es el punto de acceso. Usamos un AP de tipo doméstico, que podría estar sobrecargado con 60 clientes, y no sé qué pasará con 200. Mientras tanto, para acelerar el piloto, cargamos el mismo firmware y el mismo token de acceso en todas las cajas. Lo menciono también, no sé si tiene que ver.
Merhaba, uzun yazacağım kusura bakmayın.
Çalıştığım su arıtma tesisinde seviye, debi ve pompa durumları için yaklaşık 200 tane ESP32 tabanlı küçük ölçüm kutusu kurmayı planlıyoruz. Hepsi aynı binada, aynı erişim noktasına bağlanacak, MQTT ile Hermetry’ye gidecek. Önce 60 tanesiyle pilot yaptık.
Normal çalışırken sorun yok. Ama geçen hafta binada 20 dakikalık elektrik kesintisi oldu, elektrik gelince kutuların çoğu bir türlü düzgün bağlanamadı. Seri porttan izlediğim birinde sürekli bağlan-düş var, dashboard’da cihazlar bir çevrimiçi bir çevrimdışı. Cihazların Log sekmesine baktım:
Connected via mqtts
Disconnected Reason: takeover
Connected via mqtts
Disconnected Reason: takeover
Bir de yöneticilere «takeover fight» diye bir bildirim gelmiş.
İlk aklıma gelen erişim noktası oldu. Ev tipi bir AP kullanıyoruz, 60 istemcide zorlanıyor olabilir, 200’de ne olacak bilmiyorum. Bu arada pilotta hız kazanmak için tüm kutulara aynı firmware’i ve aynı access token’ı yükledik, bir de onu yazayım, alakası var mı bilmiyorum.
Traducido del Türkçe por IA ·
La mayoría de los APs domésticos se saturan con 30-50 clientes, creo que ahí está el problema. Necesitamos un AP empresarial.
Ev tipi AP’lerin çoğu 30-50 istemcide tıkanır, bence sorun orada. Kurumsal bir AP lazım.
Traducido del Türkçe por IA ·
Ilgaz tiene razón con el AP, pero el takeover en el log dice otra cosa, y la causa real es la última frase que escribiste.En Hermetry cada dispositivo tiene una sola sesión. Cuando llega una segunda conexión del mismo dispositivo, se cierra la primera y se toma su lugar. Si 60 cajas se conectan con el mismo token, Hermetry las ve como un único dispositivo: cada conexión nueva tira la anterior, la que cae vuelve a conectarse, y el bucle no termina nunca. Un dispositivo que hace esto de forma continua desde dos redes se retiene un tiempo, y eso es la notificación «takeover fight». Normalmente las conexiones están repartidas, por eso no lo habías notado; al volver la luz y bajar las 60 a la vez, explotó.Qué hacer:1. Cada caja con sus propias credenciales. En lugar de añadir los 200 dispositivos uno a uno, puedes hacer una importación masiva por CSV desde la página Imports (hasta 1.000 filas por archivo). Primero muestra una ejecución en seco, y los tokens de los dispositivos nuevos vienen en un archivo que solo se puede descargar una vez. Como alternativa, puedes usar una clave de provisioning en el perfil para que cada dispositivo obtenga su propio token en el primer arranque.2. Añade un retardo aleatorio antes de reconectar. Si llega CONNACK 3, espera y reintenta, pero no dejes que todos lo hagan en el mismo segundo:
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive entre 30 y 300 segundos. 60 está bien.4. No confíes en un único AP doméstico para 200 cajas; repártelas entre 2-3 APs empresariales.Los detalles de sesión y CONNACK están en la página de MQTT.
AP konusunda İlgaz haklı ama Log’daki takeover başka bir şey söylüyor, asıl sebep son yazdığın cümle.
Hermetry’de her cihazın tek bir oturumu olur. Aynı cihazın ikinci bağlantısı gelince birincisini kapatıp devralır. 60 kutu aynı token’la bağlanınca Hermetry bunları tek bir cihaz olarak görüyor: her bağlanan bir öncekini düşürüyor, düşen tekrar bağlanıyor, sonsuz döngü. Bunu iki ağdan sürekli yapan cihaz bir süre geri tutuluyor ve «takeover fight» bildirimi o. Normalde bağlantılar dağınık olduğu için fark etmemişsiniz, elektrik gelince 60’ı aynı anda kalkınca patlamış.
Ne yapmalı:
1. Her kutuya kendi kimlik bilgisi. 200 cihazı tek tek açmak yerine Imports sayfasından CSV ile toplu içe aktarma yapılabiliyor (dosya başına 1.000 satıra kadar), önce kuru çalıştırma gösteriyor, yeni cihazların token’ları bir kere indirilebilen bir dosyada geliyor. Alternatif olarak profilde provisioning key ile cihazların ilk açılışta kendi token’ını almasını sağlayabilirsiniz. 2. Yeniden bağlanmaya rastgele gecikme ekleyin. CONNACK 3 gelirse bekle-tekrar dene, ama hepsi aynı saniyede denemesin:
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive 30-300 saniye arası. 60 iyi. 4. 200 kutu için tek ev tipi AP’ye güvenmeyin, 2-3 tane kurumsal AP’ye bölün.
Oturum ve CONNACK detayları MQTT sayfasında.
Traducido del Türkçe por IA ·
Esra, muchas gracias, exactamente así fue. Importé los 60 dispositivos mediante CSV y cargamos los tokens del archivo descargado en las cajas según el número de serie. Ayer quitamos el fusible a propósito y lo volvimos a poner, y todos se conectaron limpiamente en 15 segundos, sin ningún takeover en el Log.También cambiamos el AP: para llegar a 200 lo estamos dividiendo en tres APs de techo.
Esra çok teşekkürler, aynen öyleymiş. 60 cihazı CSV ile içe aktardım, indirdiğim dosyadaki token’ları seri numarasına göre kutulara yükledik. Dün bilerek sigortayı indirip kaldırdık, hepsi 15 saniye içinde temiz bağlandı, Log’da tek takeover yok.
AP’yi de değiştirdik, 200’e geçerken üç tavan tipi AP’ye bölüyoruz.
Traducido del Türkçe por IA ·
+1 por el jitter. En nuestro caso, en campo, 40 sensores que intentaban conectarse al mismo tiempo provocaron que algunos quedaran bloqueados por un bloqueo de direcciones; se solucionó con un retardo aleatorio.
+1 jitter için. Bizde de bir sahada 40 sensör aynı anda bağlanmaya çalışınca bazıları adres engellemesine takılmıştı, rastgele gecikmeyle düzeldi.
- Debes estar registrado para responder a este debate.
Únete a la conversación
Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

