@ -71,8 +71,7 @@ class PubMqttIvData {
mCmd = mSendList - > front ( ) . cmd ;
mCmd = mSendList - > front ( ) . cmd ;
mIvSend = mSendList - > front ( ) . iv ;
mIvSend = mSendList - > front ( ) . iv ;
if ( ( RealTimeRunData_Debug ! = mCmd ) | | ! mRTRDataHasBeenSent ) {
if ( ( RealTimeRunData_Debug ! = mCmd ) | | ! mRTRDataHasBeenSent ) { // send RealTimeRunData only once
mSendTotals = ( RealTimeRunData_Debug = = mCmd ) ;
memset ( mTotal , 0 , sizeof ( float ) * 4 ) ;
memset ( mTotal , 0 , sizeof ( float ) * 4 ) ;
mState = FIND_NXT_IV ;
mState = FIND_NXT_IV ;
} else
} else
@ -97,18 +96,10 @@ class PubMqttIvData {
mLastIvId + + ;
mLastIvId + + ;
mPos = 0 ;
mPos = 0 ;
if ( found ) {
if ( found )
mState = SEND_DATA ;
mState = SEND_DATA ;
if ( ! mIv - > isAvailable ( * mUtcTimestamp ) )
else
mSendTotals = false ; // avoid send total values on no availability, because the sum of values is not built
}
else if ( mSendTotals )
mState = SEND_TOTALS ;
mState = SEND_TOTALS ;
else {
mSendList - > pop ( ) ;
mZeroValues = false ;
mState = START ;
}
}
}
void stateSend ( ) {
void stateSend ( ) {
@ -138,7 +129,8 @@ class PubMqttIvData {
if ( CH0 = = rec - > assign [ mPos ] . ch ) {
if ( CH0 = = rec - > assign [ mPos ] . ch ) {
switch ( rec - > assign [ mPos ] . fieldId ) {
switch ( rec - > assign [ mPos ] . fieldId ) {
case FLD_PAC :
case FLD_PAC :
mTotal [ 0 ] + = mIv - > getValue ( mPos , rec ) ;
if ( mIv - > isProducing ( * mUtcTimestamp ) )
mTotal [ 0 ] + = mIv - > getValue ( mPos , rec ) ;
break ;
break ;
case FLD_YT :
case FLD_YT :
mTotal [ 1 ] + = mIv - > getValue ( mPos , rec ) ;
mTotal [ 1 ] + = mIv - > getValue ( mPos , rec ) ;
@ -147,7 +139,8 @@ class PubMqttIvData {
mTotal [ 2 ] + = mIv - > getValue ( mPos , rec ) ;
mTotal [ 2 ] + = mIv - > getValue ( mPos , rec ) ;
break ;
break ;
case FLD_PDC :
case FLD_PDC :
mTotal [ 3 ] + = mIv - > getValue ( mPos , rec ) ;
if ( mIv - > isProducing ( * mUtcTimestamp ) )
mTotal [ 3 ] + = mIv - > getValue ( mPos , rec ) ;
break ;
break ;
}
}
}
}
@ -208,7 +201,6 @@ class PubMqttIvData {
uint8_t mCmd ;
uint8_t mCmd ;
uint8_t mLastIvId ;
uint8_t mLastIvId ;
bool mSendTotals ;
float mTotal [ 4 ] ;
float mTotal [ 4 ] ;
Inverter < > * mIv , * mIvSend ;
Inverter < > * mIv , * mIvSend ;