| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -7,6 +7,8 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "app.h" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "utils/sun.h" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define WDT_TIMEOUT_SECONDS 8   // Watchdog Timeout 8s
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//-----------------------------------------------------------------------------
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					app::app() : ah::Scheduler {} {} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -18,6 +20,11 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    while (!Serial) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        yield(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_init(WDT_TIMEOUT_SECONDS, true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_add(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    resetSystem(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -31,6 +38,10 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        DBGPRINTLN(F("false")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if(mConfig->nrf.enabled) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mNrfRadio.setup(&mConfig->serial.debug, &mConfig->serial.privacyLog, &mConfig->serial.printWholeTrace, mConfig->nrf.pinIrq, mConfig->nrf.pinCe, mConfig->nrf.pinCs, mConfig->nrf.pinSclk, mConfig->nrf.pinMosi, mConfig->nrf.pinMiso); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -51,6 +62,10 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif /* defined(ETHERNET) */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mCommunication.setup(&mTimestamp, &mConfig->serial.debug, &mConfig->serial.privacyLog, &mConfig->serial.printWholeTrace, &mConfig->inst.gapMs); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mCommunication.addPayloadListener(std::bind(&app::payloadEventListener, this, std::placeholders::_1, std::placeholders::_2)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ENABLE_MQTT) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -66,6 +81,10 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            DPRINTLN(DBG_WARN, F("WARNING! your NRF24 module can't be reached, check the wiring")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // when WiFi is in client mode, then enable mqtt broker
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if !defined(AP_ONLY) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ENABLE_MQTT) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -79,11 +98,19 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    setupLed(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mWeb.setup(this, &mSys, mConfig); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mWeb.setProtection(strlen(mConfig->sys.adminPwd) != 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mApi.setup(this, &mSys, mWeb.getWebSrvPtr(), mConfig); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #ifdef ENABLE_SYSLOG | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mDbgSyslog.setup(mConfig); // be sure to init after mWeb.setup (webSerial uses also debug callback)
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -97,12 +124,20 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ENABLE_HISTORY) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mHistory.setup(this, &mSys, mConfig, &mTimestamp); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif /*ENABLE_HISTORY*/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mPubSerial.setup(mConfig, &mSys, &mTimestamp); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if !defined(ETHERNET) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    //mImprov.setup(this, mConfig->sys.deviceName, mVersion);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -119,6 +154,10 @@ void app::setup() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//-----------------------------------------------------------------------------
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void app::loop(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if(mConfig->nrf.enabled) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mNrfRadio.loop(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -126,6 +165,10 @@ void app::loop(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        mCmtRadio.loop(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #if defined(ESP32) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        esp_task_wdt_reset(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    #endif | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    ah::Scheduler::loop(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    mCommunication.loop(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |