Diagnostic tcpdump : le plugin ouvrait/fermait la socket Modbus TCP à chaque cycle de poll, générant 6-7 paquets SYN consécutifs qui saturaient l'ESP32 WiFi de la borne (timeouts en boucle). mbpoll avec une connexion persistante = 0 % d'échec. Corrections : - connectDevice() : guard "si déjà connecté → no-op" (élimine le warning "already in ConnectedState" et les FIN/RESET parasites). - onConnectionStateChanged(true) : appelle initialize() directement au lieu de setReachable(true) — évite la ré-entrée initialize() via reachableChanged. - initialize() : setReachable(true) uniquement au succès, après lecture MinIntensity/MaxIntensity ; guard || m_updating ajouté. - update() : guard || m_initializing ajouté (pas de poll concurrent avec init). - Timer : if (!master->update()) master->connectDevice() — le socket reste ouvert tant que la connexion TCP est active ; connectDevice() n'est appelé que quand le TCP est réellement coupé. - initializationFinished(thing) : master->update() immédiat après reconnect. - reachableChanged handler : suppression de l'appel à initialize() (déplacé). Résultat attendu tcpdump : 1 seul SYN à l'établissement, puis uniquement des échanges Modbus (P. length 12/13) toutes les 30 s, aucun FIN/RESET. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
etm-powersync-plugins-modbus
Languages
CSS
93.2%
C++
3.7%
HTML
3%