Nach einem Stromausfall geraten 60 ESP32 in eine endlose Wiederverbindungsschleife
Von Türkçe mit KI übersetzt ·
Hallo, bitte entschuldigt die Länge meines Beitrags.In der Wasseraufbereitungsanlage, in der ich arbeite, planen wir, etwa 200 kleine ESP32-basierte Messboxen für Füllstand, Durchfluss und Pumpenstatus aufzubauen. Alle befinden sich im selben Gebäude, verbinden sich mit demselben Access Point und senden über MQTT an Hermetry. Wir haben zuerst einen Pilotversuch mit 60 Stück gemacht.Im normalen Betrieb gibt es keine Probleme. Aber letzte Woche gab es im Gebäude einen 20-minütigen Stromausfall, und nachdem der Strom zurückkam, konnte sich der Großteil der Boxen nicht richtig verbinden. Auf der seriellen Schnittstelle, die ich beobachte, sehe ich einen ständigen Verbinden-Trennen-Zyklus, und im Dashboard wechseln die Geräte ständig zwischen online und offline. Ich habe im Log-Tab der Geräte nachgesehen:
Connected via mqtts
Disconnected Reason: takeover
Connected via mqtts
Disconnected Reason: takeover
Außerdem haben die Administratoren eine Benachrichtigung mit dem Titel „takeover fight“ erhalten.Das Erste, was mir in den Sinn kommt, ist der Access Point. Wir verwenden einen AP für den Heimgebrauch, der könnte mit 60 Clients überfordert sein, und ich weiß nicht, was bei 200 passiert. Außerdem haben wir zur Beschleunigung des Pilotbetriebs allen Boxen dieselbe Firmware und dasselbe Access Token aufgespielt. Das erwähne ich auch, ich weiß nicht, ob es damit zusammenhängt.
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.
Von Türkçe mit KI übersetzt ·
Die meisten Heim-APs werden bei 30–50 Clients überlastet, ich denke, dort liegt das Problem. Wir brauchen einen Enterprise-AP.
Ev tipi AP’lerin çoğu 30-50 istemcide tıkanır, bence sorun orada. Kurumsal bir AP lazım.
Von Türkçe mit KI übersetzt ·
Ilgaz hat beim AP recht, aber das Takeover im Log sagt etwas anderes, und der eigentliche Grund ist der letzte Satz, den du geschrieben hast.In Hermetry hat jedes Gerät genau eine Sitzung. Kommt eine zweite Verbindung desselben Geräts, wird die erste geschlossen und übernommen. Wenn 60 Geräte mit demselben Token verbinden, sieht Hermetry sie als ein einziges Gerät: Jede neue Verbindung wirft die vorherige heraus, die herausgeworfene verbindet sich erneut, und das wiederholt sich endlos. Ein Gerät, das das aus zwei Netzen ständig macht, wird eine Weile zurückgehalten, und genau das ist die Meldung „takeover fight“. Normalerweise sind die Verbindungen verteilt, deshalb ist es euch nicht aufgefallen; als der Strom zurückkam und alle 60 gleichzeitig abgestürzt sind, ist es eskaliert.Was zu tun ist:1. Jede Box bekommt eigene Zugangsdaten. Statt 200 Geräte einzeln anzulegen, geht ein Massenimport per CSV über die Seite Imports (bis zu 1.000 Zeilen pro Datei). Vorher gibt es einen Testlauf, und die Token neuer Geräte kommen in einer Datei, die sich nur einmal herunterladen lässt. Alternativ kannst du im Profil einen Provisioning Key hinterlegen, damit sich jedes Gerät beim ersten Start sein eigenes Token holt.2. Füge der Wiederverbindung eine zufällige Verzögerung hinzu. Kommt CONNACK 3, warte und versuche es erneut, aber lass nicht alle in derselben Sekunde versuchen:
uint32_t backoff = 2000 + (esp_random() % 8000); // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }
3. Keepalive zwischen 30 und 300 Sekunden. 60 ist gut.4. Verlass dich bei 200 Boxen nicht auf einen einzelnen AP für den Heimgebrauch, sondern verteile sie auf 2-3 Unternehmens-APs.Details zu Sitzung und CONNACK stehen auf der MQTT-Seite.
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.
Von Türkçe mit KI übersetzt ·
Esra, vielen Dank, genau so war es. Ich habe die 60 Geräte per CSV importiert, und wir haben die Tokens aus der heruntergeladenen Datei anhand der Seriennummer in die Gehäuse geladen. Gestern haben wir absichtlich die Sicherung herausgezogen und wieder eingesetzt, und alle haben sich innerhalb von 15 Sekunden sauber verbunden, im Log gab es kein einziges Takeover.Den AP haben wir ebenfalls gewechselt: Beim Ausbau auf 200 teilen wir ihn auf drei Deckenmontage-APs auf.
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.
Von Türkçe mit KI übersetzt ·
+1 für Jitter. Bei uns hatten im Feld 40 Sensoren, die gleichzeitig eine Verbindung aufbauen wollten, ebenfalls Probleme mit Adressblockierung; mit einer zufälligen Verzögerung war das behoben.
+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.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

