mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-06 04:31:37 +02:00
make possible to use SSD1306 instead of nokia5110
This commit is contained in:
parent
a5c0db95d3
commit
2ad70cfef0
2 changed files with 149 additions and 3 deletions
|
@ -14,6 +14,10 @@
|
||||||
#ifdef ENA_NOKIA
|
#ifdef ENA_NOKIA
|
||||||
#include <U8g2lib.h>
|
#include <U8g2lib.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENA_SSD1306
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <SSD1306Wire.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -31,6 +35,115 @@ app::app() {
|
||||||
mShouldReboot = false;
|
mShouldReboot = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENA_SSD1306
|
||||||
|
SSD1306Wire display(0x3c, 4, 5);
|
||||||
|
|
||||||
|
static unsigned char bmp_arrow[] PROGMEM = {
|
||||||
|
B00000000, B00011100, B00011100, B00001110, B00001110, B11111110, B01111111,
|
||||||
|
B01110000, B01110000, B00110000, B00111000, B00011000, B01111111, B00111111,
|
||||||
|
B00011110, B00001110, B00000110, B00000000, B00000000, B00000000, B00000000 } ;
|
||||||
|
|
||||||
|
void DataScreen( app* mApp, time_t ts )
|
||||||
|
{
|
||||||
|
static int extra = 0;
|
||||||
|
String timeStr = mApp->getDateTimeStr(ts).substring(2,22);
|
||||||
|
IPAddress ip = WiFi.localIP();
|
||||||
|
float totalYield = 0.000, totalYieldToday = 0.000, totalActual = 0.0;
|
||||||
|
char fmtText[32];
|
||||||
|
int ucnt=0;
|
||||||
|
|
||||||
|
for (uint8_t id = 0; id < mApp->mSys->getNumInverters(); id++)
|
||||||
|
{
|
||||||
|
Inverter<> *iv = mApp->mSys->getInverterByPos(id);
|
||||||
|
if (NULL != iv)
|
||||||
|
{
|
||||||
|
record_t<> *rec = iv->getRecordStruct(RealTimeRunData_Debug);
|
||||||
|
uint8_t pos;
|
||||||
|
uint8_t list[] = {FLD_PAC, FLD_YT, FLD_YD};
|
||||||
|
|
||||||
|
if ( !iv->isProducing(ts,rec) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ucnt++;
|
||||||
|
|
||||||
|
for (uint8_t fld = 0; fld < 3; fld++)
|
||||||
|
{
|
||||||
|
pos = iv->getPosByChFld(CH0, list[fld],rec);
|
||||||
|
|
||||||
|
if(fld == 1){
|
||||||
|
totalYield += iv->getValue(pos,rec);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fld == 2){
|
||||||
|
totalYieldToday += iv->getValue(pos,rec);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fld == 0){
|
||||||
|
totalActual += iv->getValue(pos,rec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
display.clear();
|
||||||
|
|
||||||
|
if(ucnt)
|
||||||
|
{
|
||||||
|
display.setBrightness(63);
|
||||||
|
display.drawXbm(10,5,8,17,bmp_arrow);
|
||||||
|
display.setFont(ArialMT_Plain_24);
|
||||||
|
sprintf(fmtText,"%3.0f",totalActual);
|
||||||
|
display.drawString(25,0,String(fmtText)+F(" W"));
|
||||||
|
display.setFont(ArialMT_Plain_16);
|
||||||
|
sprintf(fmtText,"%4.0f",totalYieldToday);
|
||||||
|
display.drawString(5,22,F("today ")+String(fmtText)+F(" Wh"));
|
||||||
|
sprintf(fmtText,"%.1f",totalYield);
|
||||||
|
display.drawString(5,35,F("total ")+String(fmtText)+F(" kWh"));
|
||||||
|
display.drawLine(2,23,123,23);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static int rx=50;
|
||||||
|
static char up=1;
|
||||||
|
if(up)
|
||||||
|
{
|
||||||
|
rx+=2;
|
||||||
|
if(rx>=70)
|
||||||
|
up=0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rx-=2;
|
||||||
|
if(rx<=50)
|
||||||
|
up=1;
|
||||||
|
}
|
||||||
|
display.setBrightness(1);
|
||||||
|
display.setFont(ArialMT_Plain_24);
|
||||||
|
display.drawString(rx,10,F("off"));
|
||||||
|
display.setFont(ArialMT_Plain_16);
|
||||||
|
}
|
||||||
|
if ( !(extra%20) )
|
||||||
|
{
|
||||||
|
display.drawString(5,49,ip.toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int w=display.getStringWidth(timeStr.c_str(),timeStr.length(),0);
|
||||||
|
if ( w>127 )
|
||||||
|
{
|
||||||
|
String tt=timeStr.substring(9,17);
|
||||||
|
w=display.getStringWidth(tt.c_str(),tt.length(),0);
|
||||||
|
display.drawString(127-w,49,tt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
display.drawString(0,49,timeStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
display.display();
|
||||||
|
extra++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENA_NOKIA
|
#ifdef ENA_NOKIA
|
||||||
|
|
||||||
U8G2_PCD8544_84X48_1_4W_HW_SPI u8g2(U8G2_R0,5,4,16);
|
U8G2_PCD8544_84X48_1_4W_HW_SPI u8g2(U8G2_R0,5,4,16);
|
||||||
|
@ -137,7 +250,7 @@ static int extra = 0;
|
||||||
}
|
}
|
||||||
if ( !(extra%20) )
|
if ( !(extra%20) )
|
||||||
{
|
{
|
||||||
u8g2.setCursor(5,47);
|
u8g2.setCursor(5,57);
|
||||||
u8g2.print(ip);
|
u8g2.print(ip);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -160,6 +273,21 @@ void app::setup(uint32_t timeout) {
|
||||||
u8g2.begin();
|
u8g2.begin();
|
||||||
ShowInfoText("booting...");
|
ShowInfoText("booting...");
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENA_SSD1306
|
||||||
|
display.init();
|
||||||
|
display.flipScreenVertically();
|
||||||
|
display.setContrast(63);
|
||||||
|
display.setBrightness(63);
|
||||||
|
|
||||||
|
display.clear();
|
||||||
|
display.setFont(ArialMT_Plain_24);
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_CENTER_BOTH);
|
||||||
|
|
||||||
|
display.drawString(64,22,"Starting...");
|
||||||
|
display.display();
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_LEFT);
|
||||||
|
#endif
|
||||||
|
|
||||||
mWifiSettingsValid = checkEEpCrc(ADDR_START, ADDR_WIFI_CRC, ADDR_WIFI_CRC);
|
mWifiSettingsValid = checkEEpCrc(ADDR_START, ADDR_WIFI_CRC, ADDR_WIFI_CRC);
|
||||||
mSettingsValid = checkEEpCrc(ADDR_START_SETTINGS, ((ADDR_NEXT) - (ADDR_START_SETTINGS)), ADDR_SETTINGS_CRC);
|
mSettingsValid = checkEEpCrc(ADDR_START_SETTINGS, ((ADDR_NEXT) - (ADDR_START_SETTINGS)), ADDR_SETTINGS_CRC);
|
||||||
loadEEpconfig();
|
loadEEpconfig();
|
||||||
|
@ -199,8 +327,8 @@ void app::loop(void) {
|
||||||
mUtcTimestamp = mWifi->getNtpTime();
|
mUtcTimestamp = mWifi->getNtpTime();
|
||||||
DPRINTLN(DBG_INFO, F("[NTP]: ") + getDateTimeStr(mUtcTimestamp) + F(" UTC"));
|
DPRINTLN(DBG_INFO, F("[NTP]: ") + getDateTimeStr(mUtcTimestamp) + F(" UTC"));
|
||||||
}
|
}
|
||||||
#ifdef ENA_NOKIA
|
#if defined(ENA_NOKIA) || defined(ENA_SSD1306)
|
||||||
static int lcnt=0;
|
static int lcnt=90000;
|
||||||
if ( lcnt == 150000 )
|
if ( lcnt == 150000 )
|
||||||
{
|
{
|
||||||
DataScreen(this, mUtcTimestamp);
|
DataScreen(this, mUtcTimestamp);
|
||||||
|
|
|
@ -106,6 +106,24 @@ lib_deps =
|
||||||
bblanchon/ArduinoJson
|
bblanchon/ArduinoJson
|
||||||
olikraus/U8g2
|
olikraus/U8g2
|
||||||
|
|
||||||
|
[env:esp8266-ssd1306]
|
||||||
|
platform = espressif8266
|
||||||
|
board = esp12e
|
||||||
|
board_build.f_cpu = 80000000L
|
||||||
|
build_flags = -D RELEASE -DENA_SSD1306
|
||||||
|
monitor_filters =
|
||||||
|
;default ; Remove typical terminal control codes from input
|
||||||
|
time ; Add timestamp with milliseconds for each new line
|
||||||
|
;log2file ; Log data to a file “platformio-device-monitor-*.log” located in the current working directory
|
||||||
|
lib_deps =
|
||||||
|
https://github.com/yubox-node-org/ESPAsyncWebServer
|
||||||
|
nrf24/RF24
|
||||||
|
paulstoffregen/Time
|
||||||
|
knolleary/PubSubClient
|
||||||
|
bblanchon/ArduinoJson
|
||||||
|
;https://github.com/pasko-zh/brzo_i2c.git
|
||||||
|
https://github.com/ThingPulse/esp8266-oled-ssd1306.git
|
||||||
|
|
||||||
[env:esp32-wroom32-release]
|
[env:esp32-wroom32-release]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = lolin_d32
|
board = lolin_d32
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue