Après une coupure de courant, 60 ESP32 entrent dans une boucle de reconnexion sans fin
Traduit de Türkçe par IA ·
Bonjour, désolé d’avance pour la longueur de mon message.Nous prévoyons d’installer environ 200 petits boîtiers de mesure basés sur ESP32 dans la station de traitement des eaux où je travaille, pour le niveau, le débit et l’état des pompes. Ils seront tous dans le même bâtiment, se connecteront au même point d’accès et enverront leurs données à Hermetry via MQTT. Nous avons d’abord fait un essai pilote avec 60 d’entre eux.En fonctionnement normal, aucun problème. Mais la semaine dernière, il y a eu une coupure de courant de 20 minutes dans le bâtiment, et une fois le courant rétabli, la plupart des boîtiers n’ont pas réussi à se connecter correctement. Sur le port série que je surveille, il y a une succession continue de connexions et déconnexions, et sur le tableau de bord, les appareils passent sans cesse de en ligne à hors ligne. J’ai consulté l’onglet Log des appareils :
Connected via mqtts
Disconnected Reason: takeover
Connected via mqtts
Disconnected Reason: takeover
Par ailleurs, les administrateurs ont reçu une notification intitulée « takeover fight ».La première chose qui me vient à l’esprit, c’est le point d’accès. Nous utilisons un routeur de type domestique, il pourrait avoir du mal avec 60 clients, et je ne sais pas ce qui se passera avec 200. Entre-temps, pour accélérer le pilote, nous avons flashé le même firmware et le même jeton d’accès sur tous les boîtiers. Je le précise aussi, je ne sais pas si cela a un rapport.
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.
Traduit de Türkçe par IA ·
La plupart des points d’accès grand public saturent à 30-50 clients, je pense que le problème vient de là. Il nous faut un point d’accès professionnel.
Ev tipi AP’lerin çoğu 30-50 istemcide tıkanır, bence sorun orada. Kurumsal bir AP lazım.
Traduit de Türkçe par IA ·
Ilgaz a raison pour le point d’accès, mais le takeover dans le journal indique autre chose, et la vraie cause est la dernière phrase que tu as écrite.Dans Hermetry, chaque appareil n’a qu’une seule session. Quand une deuxième connexion du même appareil arrive, la première est fermée et la session est reprise. Si 60 boîtiers se connectent avec le même token, Hermetry les voit comme un seul appareil : chaque nouvelle connexion en éjecte une précédente, celle-ci se reconnecte, et la boucle ne s’arrête jamais. Un appareil qui fait cela en permanence depuis deux réseaux est mis en attente pendant un certain temps, et c’est la notification « takeover fight ». Normalement les connexions sont dispersées, donc vous ne l’aviez pas remarqué ; mais quand le courant est revenu et que les 60 sont repartis en même temps, ça a explosé.Que faire :1. Donnez à chaque boîtier ses propres identifiants. Plutôt que d’ajouter les 200 appareils un par un, vous pouvez faire un import en masse par CSV depuis la page Imports (jusqu’à 1 000 lignes par fichier). Un essai à blanc est d’abord effectué, et les tokens des nouveaux appareils arrivent dans un fichier téléchargeable une seule fois. Vous pouvez aussi utiliser une clé de provisioning dans le profil, pour que chaque appareil récupère son propre token au premier démarrage.2. Ajoutez un délai aléatoire avant la reconnexion. Si CONNACK 3 arrive, attendez puis réessayez, mais ne laissez pas tous les appareils réessayer dans la même seconde :
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive entre 30 et 300 secondes. 60 convient bien.4. Ne vous fiez pas à un seul point d’accès domestique pour 200 boîtiers ; répartissez-les sur 2 à 3 points d’accès d’entreprise.Les détails sur la session et CONNACK sont sur la page 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.
Traduit de Türkçe par IA ·
Esra, merci beaucoup, c’est exactement ça. J’ai importé les 60 appareils via CSV, et nous avons chargé les tokens du fichier téléchargé dans les boîtiers selon le numéro de série. Hier, nous avons volontairement retiré puis remis le fusible, et tous se sont connectés proprement en 15 secondes, sans aucun takeover dans le Log.Nous avons aussi changé l’AP : pour passer à 200, nous le répartissons sur trois AP de plafond.
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.
Traduit de Türkçe par IA ·
+1 pour le jitter. Chez nous aussi, sur site, 40 capteurs essayant de se connecter en même temps se sont retrouvés bloqués par un blocage d’adresse ; le problème a été résolu avec un délai aléatoire.
+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.
- Vous devez être connecté pour répondre à ce sujet.
Rejoignez la discussion
Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

