@@ -67,9 +67,17 @@ bool isWiFiConnected() {
6767}
6868
6969void connectWiFi () {
70- if (WiFi.status () != WL_CONNECTED) {
70+ const wl_status_t status = WiFi.status ();
71+ if (status == WL_CONNECTED || status == WL_IDLE_STATUS) {
72+ return ;
73+ }
74+ #if defined(ARDUINO_ARCH_ESP8266)
75+ if (status == WL_DISCONNECTED) {
7176 WiFi.begin (kWiFiSsid , kWiFiPassword );
7277 }
78+ #else
79+ WiFi.begin (kWiFiSsid , kWiFiPassword );
80+ #endif
7381}
7482
7583void disconnectWiFi () {
@@ -258,7 +266,7 @@ void mqttPumpTask() {
258266unsigned long percentage (unsigned long ok, unsigned long fail) {
259267 const unsigned long total = ok + fail;
260268 if (total == 0 ) {
261- return 100 ;
269+ return 0 ;
262270 }
263271 return (ok * 100UL ) / total;
264272}
@@ -322,20 +330,26 @@ void setup() {
322330 ZeroKernel.subscribeTypedFast (kMqttStateTopic , onTypedState);
323331
324332 ZeroWiFiMaintainer::Config wifiConfig;
325- wifiConfig.pollIntervalMs = 250 ;
326- wifiConfig.retryBaseMs = 800 ;
327- wifiConfig.retryMaxMs = 8000 ;
328- wifiConfig.retryJitterMs = 250 ;
333+ wifiConfig.pollIntervalMs = 500 ;
334+ #if defined(ARDUINO_ARCH_ESP8266)
335+ wifiConfig.retryBaseMs = 3000 ;
336+ wifiConfig.retryMaxMs = 15000 ;
337+ wifiConfig.retryJitterMs = 500 ;
338+ #else
339+ wifiConfig.retryBaseMs = 1000 ;
340+ wifiConfig.retryMaxMs = 10000 ;
341+ wifiConfig.retryJitterMs = 300 ;
342+ #endif
329343 wifiConfig.manageCapabilities = true ;
330344 wifiConfig.capabilityMask = Kernel::kCapNetwork ;
331345 wifiConfig.stateTopicKey = kWiFiStateTopic ;
332346 g_wifiMaintainer.begin (ZeroKernel, isWiFiConnected, connectWiFi, disconnectWiFi, wifiConfig);
333347
334348 ZeroHttpPump::Config httpConfig;
335- httpConfig.pollIntervalMs = 25 ;
336- httpConfig.retryBaseMs = 300 ;
337- httpConfig.retryMaxMs = 1500 ;
338- httpConfig.retryJitterMs = 120 ;
349+ httpConfig.pollIntervalMs = 75 ;
350+ httpConfig.retryBaseMs = 500 ;
351+ httpConfig.retryMaxMs = 3000 ;
352+ httpConfig.retryJitterMs = 150 ;
339353 httpConfig.maxRetries = 2 ;
340354 g_httpPump.begin (ZeroKernel,
341355 httpConnectStep,
@@ -345,10 +359,10 @@ void setup() {
345359 httpConfig);
346360
347361 ZeroMqttPump::Config mqttConfig;
348- mqttConfig.pollIntervalMs = 25 ;
349- mqttConfig.retryBaseMs = 400 ;
350- mqttConfig.retryMaxMs = 2000 ;
351- mqttConfig.retryJitterMs = 180 ;
362+ mqttConfig.pollIntervalMs = 75 ;
363+ mqttConfig.retryBaseMs = 500 ;
364+ mqttConfig.retryMaxMs = 3000 ;
365+ mqttConfig.retryJitterMs = 200 ;
352366 mqttConfig.maxRetries = 2 ;
353367 mqttConfig.stateTopicKey = kMqttStateTopic ;
354368 g_mqttPump.begin (ZeroKernel,
@@ -359,17 +373,17 @@ void setup() {
359373 mqttConfig);
360374
361375 ZeroKernel.addTask (" Sample" , sampleTask, 100 , 0 );
362- ZeroKernel.addTask (" WiFiMaint" , wifiMaintainerTask, 50 , 0 );
363- ZeroKernel.addTask (" HttpPump" , httpPumpTask, 25 , 0 );
364- ZeroKernel.addTask (" MqttPump" , mqttPumpTask, 25 , 0 );
365- ZeroKernel.addTask (" Dispatch" , dispatchTask, 50 , 0 );
376+ ZeroKernel.addTask (" WiFiMaint" , wifiMaintainerTask, 100 , 0 );
377+ ZeroKernel.addTask (" HttpPump" , httpPumpTask, 75 , 0 );
378+ ZeroKernel.addTask (" MqttPump" , mqttPumpTask, 75 , 0 );
379+ ZeroKernel.addTask (" Dispatch" , dispatchTask, 100 , 0 );
366380 ZeroKernel.addTask (" Report" , reportTask, 250 , 0 );
367381
368382 ZeroKernel.setTaskPriority (" Sample" , Kernel::kPriorityCritical );
369383 ZeroKernel.setTaskPriority (" WiFiMaint" , Kernel::kPriorityHigh );
370- ZeroKernel.setTaskPriority (" HttpPump" , Kernel::kPriorityHigh );
371- ZeroKernel.setTaskPriority (" MqttPump" , Kernel::kPriorityHigh );
372- ZeroKernel.setTaskPriority (" Dispatch" , Kernel::kPriorityHigh );
384+ ZeroKernel.setTaskPriority (" HttpPump" , Kernel::kPriorityNormal );
385+ ZeroKernel.setTaskPriority (" MqttPump" , Kernel::kPriorityNormal );
386+ ZeroKernel.setTaskPriority (" Dispatch" , Kernel::kPriorityNormal );
373387 ZeroKernel.setTaskPriority (" Report" , Kernel::kPriorityLow );
374388
375389 g_startedAtMs = millis ();
0 commit comments