@ -34,6 +34,8 @@ class DisplayMono128X64 : public DisplayMono {
}
calcLinePositions ( ) ;
initPowerGraph ( mDispWidth - 20 , mLineYOffsets [ 4 ] - mLineYOffsets [ 1 ] ) ;
printText ( " Ahoy! " , l_Ahoy , 0xff ) ;
printText ( " ahoydtu.de " , l_Website , 0xff ) ;
printText ( mDisplayData - > version , l_Version , 0xff ) ;
@ -61,23 +63,16 @@ class DisplayMono128X64 : public DisplayMono {
// calculate current pixelshift for pixelshift screensaver
calcPixelShift ( pixelShiftRange ) ;
// print total power
// add new power data to power graph
if ( mDisplayData - > nrProducing > 0 ) {
if ( mDisplayData - > totalPower > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f kW " , ( mDisplayData - > totalPower / 1000.0 ) ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f W " , mDisplayData - > totalPower ) ;
printText ( mFmtText , l_TotalPower , 0xff ) ;
} else {
printText ( " offline " , l_TotalPower , 0xff ) ;
addPowerGraphEntry ( mDisplayData - > totalPower ) ;
}
// print Date and time
if ( 0 ! = mDisplayData - > utcTs )
printText ( ah : : getDateTimeStrShort ( gTimezone . toLocal ( mDisplayData - > utcTs ) ) . c_str ( ) , l_Time , 0xff ) ;
// dynamic status bar, alternatively:
// alternatively:
// print ip address
if ( ! ( mExtra % 5 ) & & ( mDisplayData - > ipAddress ) ) {
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %s " , ( mDisplayData - > ipAddress ) . toString ( ) . c_str ( ) ) ;
@ -115,22 +110,41 @@ class DisplayMono128X64 : public DisplayMono {
mDisplay - > drawStr ( pos + moon_pos + mPixelshift , mLineYOffsets [ l_Status ] , " H " ) ; // moon symbol
}
// print yields
mDisplay - > setFont ( u8g2_font_ncenB10_symbols10_ahoy ) ;
mDisplay - > drawStr ( 16 + mPixelshift , mLineYOffsets [ l_YieldDay ] , " I " ) ; // day symbol
mDisplay - > drawStr ( 16 + mPixelshift , mLineYOffsets [ l_YieldTotal ] , " D " ) ; // total symbol
if ( mDispSwitchState = = d_POWER_TEXT ) {
if ( mDisplayData - > totalYieldDay > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f kWh " , mDisplayData - > totalYieldDay / 1000.0 ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f Wh " , mDisplayData - > totalYieldDay ) ;
printText ( mFmtText , l_YieldDay , 0xff ) ;
// print total power
if ( mDisplayData - > nrProducing > 0 ) {
if ( mDisplayData - > totalPower > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f kW " , ( mDisplayData - > totalPower / 1000.0 ) ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f W " , mDisplayData - > totalPower ) ;
if ( mDisplayData - > totalYieldTotal > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f MWh " , mDisplayData - > totalYieldTotal / 1000.0 ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f kWh " , mDisplayData - > totalYieldTotal ) ;
printText ( mFmtText , l_YieldTotal , 0xff ) ;
printText ( mFmtText , l_TotalPower , 0xff ) ;
} else {
printText ( " offline " , l_TotalPower , 0xff ) ;
}
// print yields
mDisplay - > setFont ( u8g2_font_ncenB10_symbols10_ahoy ) ;
mDisplay - > drawStr ( 16 + mPixelshift , mLineYOffsets [ l_YieldDay ] , " I " ) ; // day symbol
mDisplay - > drawStr ( 16 + mPixelshift , mLineYOffsets [ l_YieldTotal ] , " D " ) ; // total symbol
if ( mDisplayData - > totalYieldDay > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f kWh " , mDisplayData - > totalYieldDay / 1000.0 ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f Wh " , mDisplayData - > totalYieldDay ) ;
printText ( mFmtText , l_YieldDay , 0xff ) ;
if ( mDisplayData - > totalYieldTotal > 9999.0 )
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.2f MWh " , mDisplayData - > totalYieldTotal / 1000.0 ) ;
else
snprintf ( mFmtText , DISP_FMT_TEXT_LEN , " %.0f kWh " , mDisplayData - > totalYieldTotal ) ;
printText ( mFmtText , l_YieldTotal , 0xff ) ;
} else {
// plot power graph
plotPowerGraph ( 10 + mPixelshift , mLineYOffsets [ 4 ] - 1 ) ;
}
// draw dynamic RSSI bars
int xoffs ;
@ -142,10 +156,11 @@ class DisplayMono128X64 : public DisplayMono {
for ( int i = 0 ; i < 4 ; i + + ) {
int radio_rssi_threshold = - 60 - i * 10 ;
int wifi_rssi_threshold = - 60 - i * 10 ;
uint8_t barwidth = std : : min ( 4 - i , 3 ) ;
if ( mDisplayData - > RadioRSSI > radio_rssi_threshold )
mDisplay - > drawBox ( xoffs + mPixelshift , 8 + ( rssi_bar_height + 1 ) * i , 4 - i , rssi_bar_height ) ;
mDisplay - > drawBox ( xoffs + mPixelshift , 8 + ( rssi_bar_height + 1 ) * i , barwidth , rssi_bar_height ) ;
if ( mDisplayData - > WifiRSSI > wifi_rssi_threshold )
mDisplay - > drawBox ( mDispWidth - 4 - xoffs + mPixelshift + i , 8 + ( rssi_bar_height + 1 ) * i , 4 - i , rssi_bar_height ) ;
mDisplay - > drawBox ( mDispWidth - barwidth - xoffs + mPixelshift , 8 + ( rssi_bar_height + 1 ) * i , barwidth , rssi_bar_height ) ;
}
// draw dynamic antenna and WiFi symbols
mDisplay - > setFont ( u8g2_font_ncenB10_symbols10_ahoy ) ;
@ -160,9 +175,6 @@ class DisplayMono128X64 : public DisplayMono {
mDisplay - > drawStr ( mDispWidth - mDisplay - > getStrWidth ( sym ) - xoffs + mPixelshift , mLineYOffsets [ l_RSSI ] , sym ) ;
mDisplay - > sendBuffer ( ) ;
mDisplay - > sendBuffer ( ) ;
mExtra + + ;
}
@ -198,8 +210,8 @@ class DisplayMono128X64 : public DisplayMono {
mLineYOffsets [ i ] = yOff ;
dsc = mDisplay - > getDescent ( ) ;
yOff - = dsc ;
if ( l_Time = = i ) // prevent time and status line to touch
yOff + = 1 ; // -> one pixels space
if ( l_Time = = i ) // prevent time and status line to touch
yOff + + ; // -> one pixels space
i + + ;
} while ( l_MAX_LINES > i ) ;
}