@ -161,15 +161,17 @@ void app::tickNtpUpdate(void) {
mMqtt . connect ( ) ;
mMqtt . connect ( ) ;
everySec ( std : : bind ( & PubMqttType : : tickerSecond , & mMqtt ) , " mqttS " ) ;
everySec ( std : : bind ( & PubMqttType : : tickerSecond , & mMqtt ) , " mqttS " ) ;
everyMin ( std : : bind ( & PubMqttType : : tickerMinute , & mMqtt ) , " mqttM " ) ;
everyMin ( std : : bind ( & PubMqttType : : tickerMinute , & mMqtt ) , " mqttM " ) ;
mMqttReconnect = false ;
}
}
// only install schedulers once even if NTP wasn't successful in first loop
if ( mMqttReconnect ) { // @TODO: mMqttReconnect is wrong name here
if ( mConfig - > inst . rstValsNotAvail )
if ( mConfig - > inst . rstValsNotAvail )
everyMin ( std : : bind ( & app : : tickMinute , this ) , " tMin " ) ;
everyMin ( std : : bind ( & app : : tickMinute , this ) , " tMin " ) ;
if ( mConfig - > inst . rstYieldMidNight ) {
if ( mConfig - > inst . rstYieldMidNight ) {
uint32_t midTrig = mTimestamp - ( ( mTimestamp - 1 ) % 86400 ) + 86400 ; // next midnight
uint32_t midTrig = mTimestamp - ( ( mTimestamp - 1 ) % 86400 ) + 86400 ; // next midnight
onceAt ( std : : bind ( & app : : tickMidnight , this ) , midTrig , " midNi " ) ;
onceAt ( std : : bind ( & app : : tickMidnight , this ) , midTrig , " midNi " ) ;
}
}
}
nxtTrig = isOK ? 43200 : 60 ; // depending on NTP update success check again in 12 h or in 1 min
nxtTrig = isOK ? 43200 : 60 ; // depending on NTP update success check again in 12 h or in 1 min
@ -183,6 +185,8 @@ void app::tickNtpUpdate(void) {
mSendFirst = false ;
mSendFirst = false ;
once ( std : : bind ( & app : : tickSend , this ) , 2 , " senOn " ) ;
once ( std : : bind ( & app : : tickSend , this ) , 2 , " senOn " ) ;
}
}
mMqttReconnect = false ;
}
}
once ( std : : bind ( & app : : tickNtpUpdate , this ) , nxtTrig , " ntp " ) ;
once ( std : : bind ( & app : : tickNtpUpdate , this ) , nxtTrig , " ntp " ) ;
}
}
@ -233,7 +237,17 @@ void app::tickSun(void) {
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void app : : tickComm ( void ) {
void app : : tickComm ( void ) {
if ( ! mIVCommunicationOn & & ( mConfig - > inst . rstValsCommStop ) ) {
if ( ( ! mIVCommunicationOn ) & & ( mConfig - > inst . rstValsCommStop ) )
once ( std : : bind ( & app : : tickZeroValues , this ) , mConfig - > nrf . sendInterval , " tZero " ) ;
if ( mMqttEnabled ) {
if ( ! mMqtt . tickerComm ( ! mIVCommunicationOn ) )
once ( std : : bind ( & app : : tickComm , this ) , 5 , " mqCom " ) ; // MQTT not connected, retry after 5s
}
}
//-----------------------------------------------------------------------------
void app : : tickZeroValues ( void ) {
Inverter < > * iv ;
Inverter < > * iv ;
// set values to zero, except yields
// set values to zero, except yields
for ( uint8_t id = 0 ; id < mSys . getNumInverters ( ) ; id + + ) {
for ( uint8_t id = 0 ; id < mSys . getNumInverters ( ) ; id + + ) {
@ -243,12 +257,6 @@ void app::tickComm(void) {
mPayload . zeroInverterValues ( iv ) ;
mPayload . zeroInverterValues ( iv ) ;
}
}
}
if ( mMqttEnabled ) {
if ( ! mMqtt . tickerComm ( ! mIVCommunicationOn ) )
once ( std : : bind ( & app : : tickComm , this ) , 5 , " mqCom " ) ; // MQTT not connected, retry after 5s
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
@ -273,6 +281,8 @@ void app::tickMidnight(void) {
uint32_t nxtTrig = mTimestamp - ( ( mTimestamp - 1 ) % 86400 ) + 86400 ; // next midnight
uint32_t nxtTrig = mTimestamp - ( ( mTimestamp - 1 ) % 86400 ) + 86400 ; // next midnight
onceAt ( std : : bind ( & app : : tickMidnight , this ) , nxtTrig , " mid2 " ) ;
onceAt ( std : : bind ( & app : : tickMidnight , this ) , nxtTrig , " mid2 " ) ;
DPRINTLN ( DBG_INFO , " tickMidnight " + String ( nxtTrig ) ) ;
Inverter < > * iv ;
Inverter < > * iv ;
// set values to zero, except yield total
// set values to zero, except yield total
for ( uint8_t id = 0 ; id < mSys . getNumInverters ( ) ; id + + ) {
for ( uint8_t id = 0 ; id < mSys . getNumInverters ( ) ; id + + ) {