@ -71,6 +71,11 @@ void app::loop(void) { 
			
		
	
		
		
			
				
					        DPRINTLN ( DBG_INFO ,  " [NTP]:  "  +  getDateTimeStr ( mTimestamp ) ) ;         DPRINTLN ( DBG_INFO ,  " [NTP]:  "  +  getDateTimeStr ( mTimestamp ) ) ;  
			
		
	
		
		
			
				
					    }     }  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					    if ( mFlagSendDiscoveryConfig )  {  
			
		
	
		
		
			
				
					        mFlagSendDiscoveryConfig  =  false ;  
			
		
	
		
		
			
				
					        sendMqttDiscoveryConfig ( ) ;  
			
		
	
		
		
			
				
					    }  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					    if ( mShouldReboot )  {     if ( mShouldReboot )  {  
			
		
	
		
		
			
				
					        DPRINTLN ( DBG_INFO ,  F ( " Rebooting... " ) ) ;         DPRINTLN ( DBG_INFO ,  F ( " Rebooting... " ) ) ;  
			
		
	
		
		
			
				
					        ESP . restart ( ) ;         ESP . restart ( ) ;  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -155,10 +160,6 @@ void app::loop(void) { 
			
		
	
		
		
			
				
					            char  val [ 10 ] ;             char  val [ 10 ] ;  
			
		
	
		
		
			
				
					            snprintf ( val ,  10 ,  " %ld " ,  millis ( ) / 1000 ) ;             snprintf ( val ,  10 ,  " %ld " ,  millis ( ) / 1000 ) ;  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					# ifndef __MQTT_NO_DISCOVERCONFIG__  
			
		
	
		
		
			
				
					            // MQTTDiscoveryConfig nur wenn nicht abgeschaltet.
  
			
		
	
		
		
			
				
					            sendMqttDiscoveryConfig ( ) ;  
			
		
	
		
		
			
				
					# endif  
			
		
	
		
		
			
				
					            mMqtt . sendMsg ( " uptime " ,  val ) ;             mMqtt . sendMsg ( " uptime " ,  val ) ;  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					# ifdef __MQTT_TEST__ # ifdef __MQTT_TEST__  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -598,7 +599,8 @@ void app::sendMqttDiscoveryConfig(void) { 
			
		
	
		
		
			
				
					        Inverter < >  * iv  =  mSys - > getInverterByPos ( id ) ;         Inverter < >  * iv  =  mSys - > getInverterByPos ( id ) ;  
			
		
	
		
		
			
				
					        if ( NULL  ! =  iv )  {         if ( NULL  ! =  iv )  {  
			
		
	
		
		
			
				
					            record_t < >  * rec  =  iv - > getRecordStruct ( RealTimeRunData_Debug ) ;             record_t < >  * rec  =  iv - > getRecordStruct ( RealTimeRunData_Debug ) ;  
			
		
	
		
		
			
				
					
					            if ( iv - > isAvailable ( mTimestamp ,  rec )  & &  mMqttConfigSendState [ id ]  ! =  true )  {             // TODO: next line makes no sense if discovery config is send manually by button
  
			
				
				
			
		
	
		
		
	
		
		
			
				
					            //if(iv->isAvailable(mTimestamp, rec) && mMqttConfigSendState[id] != true) {
  
			
		
	
		
		
			
				
					                DynamicJsonDocument  deviceDoc ( 128 ) ;                 DynamicJsonDocument  deviceDoc ( 128 ) ;  
			
		
	
		
		
			
				
					                deviceDoc [ " name " ]  =  iv - > name ;                 deviceDoc [ " name " ]  =  iv - > name ;  
			
		
	
		
		
			
				
					                deviceDoc [ " ids " ]   =  String ( iv - > serial . u64 ,  HEX ) ;                 deviceDoc [ " ids " ]   =  String ( iv - > serial . u64 ,  HEX ) ;  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -626,22 +628,22 @@ void app::sendMqttDiscoveryConfig(void) { 
			
		
	
		
		
			
				
					                    doc [ " uniq_id " ]       =  String ( iv - > serial . u64 ,  HEX )  +  " _ "  +  uniq_id ;                     doc [ " uniq_id " ]       =  String ( iv - > serial . u64 ,  HEX )  +  " _ "  +  uniq_id ;  
			
		
	
		
		
			
				
					                    doc [ " dev " ]           =  deviceObj ;                     doc [ " dev " ]           =  deviceObj ;  
			
		
	
		
		
			
				
					                    doc [ " exp_aft " ]       =  mMqttInterval  +  5 ;  // add 5 sec if connection is bad or ESP too slow
                     doc [ " exp_aft " ]       =  mMqttInterval  +  5 ;  // add 5 sec if connection is bad or ESP too slow
  
			
		
	
		
		
			
				
					
					                    if  ( devCls  ! =  NULL )  {                      if  ( devCls  ! =  NULL )  
			
				
				
			
		
	
		
		
	
		
		
			
				
					                        doc [ " dev_cla " ]  =  devCls ;                         doc [ " dev_cla " ]  =  devCls ;  
			
		
	
		
		
			
				
					
					                    }                     if  ( stateCls  ! =  NULL )  
			
				
				
			
		
	
		
		
			
				
					                    if  ( stateCls  ! =  NULL )  {  
			
		
	
		
		
	
		
		
			
				
					                        doc [ " stat_cla " ]  =  stateCls ;                         doc [ " stat_cla " ]  =  stateCls ;  
			
		
	
		
		
			
				
					                    }  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					                    serializeJson ( doc ,  buffer ) ;                     serializeJson ( doc ,  buffer ) ;  
			
		
	
		
		
			
				
					                    mMqtt . sendMsg2 ( discoveryTopic ,  buffer ,  true ) ;                     mMqtt . sendMsg2 ( discoveryTopic ,  buffer ,  true ) ;  
			
		
	
		
		
			
				
					                    //DPRINTLN(DBG_INFO, F("mqtt sent"));
  
			
		
	
		
		
			
				
					                    doc . clear ( ) ;                     doc . clear ( ) ;  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					                    yield ( ) ;  
			
		
	
		
		
			
				
					                }                 }  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					                // TODO: remove this field, obsolete?
  
			
		
	
		
		
			
				
					                mMqttConfigSendState [ id ]  =  true ;                 mMqttConfigSendState [ id ]  =  true ;  
			
		
	
		
		
			
				
					
					            } 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					                yield ( ) ;  
			
		
	
		
		
			
				
					            //}
  
			
		
	
		
		
			
				
					        }         }  
			
		
	
		
		
			
				
					    }     }  
			
		
	
		
		
			
				
					} }  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -674,6 +676,7 @@ void app::resetSystem(void) { 
			
		
	
		
		
			
				
					    mUptimeSecs  =  0 ;     mUptimeSecs  =  0 ;  
			
		
	
		
		
			
				
					    mPrevMillis  =  0 ;     mPrevMillis  =  0 ;  
			
		
	
		
		
			
				
					    mUpdateNtp   =  false ;     mUpdateNtp   =  false ;  
			
		
	
		
		
			
				
					    mFlagSendDiscoveryConfig  =  false ;  
			
		
	
		
		
			
				
					
 
			
		
	
		
		
			
				
					    mNtpRefreshTicker    =  0 ;     mNtpRefreshTicker    =  0 ;  
			
		
	
		
		
			
				
					    mNtpRefreshInterval  =  NTP_REFRESH_INTERVAL ;  // [ms]
     mNtpRefreshInterval  =  NTP_REFRESH_INTERVAL ;  // [ms]