Merge pull request #183 from nitroxgas/dev

Touch, suffix strings, sliced background sprite to deal with low memory
This commit is contained in:
BitMaker 2023-09-20 12:27:48 +02:00 committed by GitHub
commit 6a44eb0e53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 240 additions and 130 deletions

View File

@ -180,8 +180,8 @@ upload_speed = 921600
;build_type = debug ;build_type = debug
board_build.partitions = huge_app.csv board_build.partitions = huge_app.csv
build_flags = build_flags =
-D ESP32_2432S028R=1 ;-DDEBUG_MEMORY=1
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG -D ESP32_2432S028R=1
-DUSER_SETUP_LOADED=1 -DUSER_SETUP_LOADED=1
-DILI9341_2_DRIVER=1 -DILI9341_2_DRIVER=1
-DTFT_WIDTH=240 -DTFT_WIDTH=240
@ -193,7 +193,11 @@ build_flags =
-DTFT_DC=2 -DTFT_DC=2
-DTFT_RST=12 -DTFT_RST=12
-DTFT_BL=21 -DTFT_BL=21
-DTOUCH_CS=33 -DETOUCH_CS=33
-DTOUCH_CLK=25
-DTOUCH_MISO=39
-DTOUCH_MOSI=32
-DTOUCH_IRQ=36
-DLOAD_GLCD=1 -DLOAD_GLCD=1
-DLOAD_FONT2=1 -DLOAD_FONT2=1
-DLOAD_GFXFF=1 -DLOAD_GFXFF=1
@ -208,6 +212,7 @@ lib_deps =
mathertel/OneButton @ ^2.0.3 mathertel/OneButton @ ^2.0.3
arduino-libraries/NTPClient arduino-libraries/NTPClient
bodmer/TFT_eSPI @ ^2.5.31 bodmer/TFT_eSPI @ ^2.5.31
https://github.com/achillhasler/TFT_eTouch
[env:NerdminerV2-T-Display_V1] [env:NerdminerV2-T-Display_V1]
platform = espressif32 platform = espressif32

View File

@ -3,6 +3,7 @@
#ifdef ESP32_2432S028R #ifdef ESP32_2432S028R
#include <TFT_eSPI.h> #include <TFT_eSPI.h>
#include <TFT_eTouch.h>
#include "media/images_320_170.h" #include "media/images_320_170.h"
#include "media/images_bottom_320_70.h" #include "media/images_bottom_320_70.h"
#include "media/myFonts.h" #include "media/myFonts.h"
@ -10,39 +11,52 @@
#include "version.h" #include "version.h"
#include "monitor.h" #include "monitor.h"
#include "OpenFontRender.h" #include "OpenFontRender.h"
#include <SPI.h>
#define WIDTH 340 #define WIDTH 130 //320
#define HEIGHT 240 #define HEIGHT 170
OpenFontRender render; OpenFontRender render;
TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in platformio.ini
TFT_eSprite background = TFT_eSprite(&tft); // Invoke library sprite TFT_eSprite background = TFT_eSprite(&tft); // Invoke library sprite
SPIClass hSPI(HSPI);
TFT_eTouch<TFT_eSPI> touch(tft, ETOUCH_CS, 0xFF, hSPI);
extern monitor_data mMonitor; extern monitor_data mMonitor;
extern pool_data pData; extern pool_data pData;
extern DisplayDriver *currentDisplayDriver;
bool hasChangedScreen = true;
void esp32_2432S028R_Init(void) void esp32_2432S028R_Init(void)
{ {
tft.init(); tft.init();
tft.setRotation(1); tft.setRotation(1);
tft.setSwapBytes(true); // Swap the colour byte order when rendering tft.setSwapBytes(true); // Swap the colour byte order when rendering
hSPI.begin(TOUCH_CLK, TOUCH_MISO, TOUCH_MOSI, ETOUCH_CS);
touch.init();
TFT_eTouchBase::Calibation calibation = { 233, 3785, 3731, 120, 2 };
touch.setCalibration(calibation);
//background.createSprite(WIDTH, HEIGHT); // Background Sprite //background.createSprite(WIDTH, HEIGHT); // Background Sprite
background.setSwapBytes(true); background.setSwapBytes(true);
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background) render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
render.setLineSpaceRatio(0.9); // Espaciado entre texto render.setLineSpaceRatio(0.9); // Espaciado entre texto
// Load the font and check it can be read OK // Load the font and check it can be read OK
// if (render.loadFont(NotoSans_Bold, sizeof(NotoSans_Bold))) { // if (render.loadFont(NotoSans_Bold, sizeof(NotoSans_Bold)))
if (render.loadFont(DigitalNumbers, sizeof(DigitalNumbers))) if (render.loadFont(DigitalNumbers, sizeof(DigitalNumbers)))
{ {
Serial.println("Initialise error"); Serial.println("Initialise error");
return; return;
} }
pinMode(LED_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT);
pData.bestDifficulty = "0"; pData.bestDifficulty = "0";
pData.workersHash = "0"; pData.workersHash = "0";
pData.workersCount = 0; pData.workersCount = 0;
//Serial.println("=========== Fim Display ==============") ;
} }
void esp32_2432S028R_AlternateScreenState(void) void esp32_2432S028R_AlternateScreenState(void)
@ -55,15 +69,21 @@ void esp32_2432S028R_AlternateScreenState(void)
void esp32_2432S028R_AlternateRotation(void) void esp32_2432S028R_AlternateRotation(void)
{ {
tft.getRotation() == 1 ? tft.setRotation(3) : tft.setRotation(1); tft.getRotation() == 1 ? tft.setRotation(3) : tft.setRotation(1);
hasChangedScreen = true;
} }
bool bottomScreenBlue = true;
void printPoolData(){ void printPoolData(){
pData = updatePoolData(); pData = getPoolData();
background.createSprite(320,70); //Background Sprite background.createSprite(320,70); //Background Sprite
background.setSwapBytes(true); background.setSwapBytes(true);
background.pushImage(0, 0, 320, 70, bottonPoolScreen); if (bottomScreenBlue) {
background.pushImage(0, 0, 320, 70, bottonPoolScreen);
} else {
background.pushImage(0, 0, 320, 70, bottonPoolScreen_g);
}
//background.setTextDatum(MC_DATUM); //background.setTextDatum(MC_DATUM);
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background) render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
render.setLineSpaceRatio(1); render.setLineSpaceRatio(1);
@ -80,118 +100,150 @@ void printPoolData(){
background.deleteSprite(); background.deleteSprite();
} }
void esp32_2432S028R_MinerScreen(unsigned long mElapsed) void printheap(){
{ //Serial.print("============ Free Heap:");
mining_data data = getMiningData(mElapsed); //Serial.println(ESP.getFreeHeap());
}
// Create background sprite to print data at once
background.createSprite(initWidth,initHeight); //Background Sprite void createBackgroundSprite(int16_t wdt, int16_t hgt){ // Set the background and link the render, used multiple times to fit in heap
background.createSprite(wdt, hgt) ; //Background Sprite
printheap();
background.setColorDepth(16); background.setColorDepth(16);
background.setSwapBytes(true); background.setSwapBytes(true);
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background) render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
render.setLineSpaceRatio(0.9); render.setLineSpaceRatio(0.9);
}
void esp32_2432S028R_MinerScreen(unsigned long mElapsed)
{
if (hasChangedScreen) tft.pushImage(0, 0, initWidth, initHeight, MinerScreen);
hasChangedScreen = false;
mining_data data = getMiningData(mElapsed);
//Serial.println("Proximo sprite...");
int wdtOffset = 190;
// Recreate sprite to the right side of the screen
createBackgroundSprite(WIDTH-5, HEIGHT-7);
//Print background screen //Print background screen
background.pushImage(0, 0, MinerWidth, MinerHeight, MinerScreen); background.pushImage(-190, 0, MinerWidth, MinerHeight, MinerScreen);
// Total hashes
render.setFontSize(18);
render.rdrawString(data.totalMHashes.c_str(), 268-wdtOffset, 138, TFT_BLACK);
// Block templates
render.setFontSize(18);
render.drawString(data.templates.c_str(), 189-wdtOffset, 20, 0xDEDB);
// Best diff
render.drawString(data.bestDiff.c_str(), 189-wdtOffset, 48, 0xDEDB);
// 32Bit shares
render.setFontSize(18);
render.drawString(data.completedShares.c_str(), 189-wdtOffset, 76, 0xDEDB);
// Hores
render.setFontSize(14);
render.rdrawString(data.timeMining.c_str(), 315-wdtOffset, 104, 0xDEDB);
// Valid Blocks
render.setFontSize(24);
render.drawString(data.valids.c_str(), 285-wdtOffset, 56, 0xDEDB);
// Print Temp
render.setFontSize(10);
render.rdrawString(data.temp.c_str(), 239-wdtOffset, 1, TFT_BLACK);
render.setFontSize(4);
render.rdrawString(String(0).c_str(), 244-wdtOffset, 3, TFT_BLACK);
// Print Hour
render.setFontSize(10);
render.rdrawString(data.currentTime.c_str(), 286-wdtOffset, 1, TFT_BLACK);
// Push prepared background to screen
background.pushSprite(190, 0);
// Delete sprite to free the memory heap
background.deleteSprite();
printheap();
//Serial.println("=========== Mining Display ==============") ;
// Create background sprite to print data at once
createBackgroundSprite(WIDTH-7, HEIGHT-100); // initHeight); //Background Sprite
//Print background screen
background.pushImage(0, -90, MinerWidth, MinerHeight, MinerScreen);
Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n", Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n",
data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str()); data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str());
// Hashrate // Hashrate
render.setFontSize(35); render.setFontSize(35);
render.setCursor(19, 118); render.setCursor(19, 118);
render.setFontColor(TFT_BLACK); render.setFontColor(TFT_BLACK);
render.rdrawString(data.currentHashRate.c_str(), 118, 114-90, TFT_BLACK);
render.rdrawString(data.currentHashRate.c_str(), 118, 114, TFT_BLACK);
// Total hashes
render.setFontSize(18);
render.rdrawString(data.totalMHashes.c_str(), 268, 138, TFT_BLACK);
// Block templates
render.setFontSize(18);
render.drawString(data.templates.c_str(), 186, 20, 0xDEDB);
// Best diff
render.drawString(data.bestDiff.c_str(), 186, 48, 0xDEDB);
// 32Bit shares
render.setFontSize(18);
render.drawString(data.completedShares.c_str(), 186, 76, 0xDEDB);
// Hores
render.setFontSize(14);
render.rdrawString(data.timeMining.c_str(), 315, 104, 0xDEDB);
// Valid Blocks
render.setFontSize(24);
render.drawString(data.valids.c_str(), 285, 56, 0xDEDB);
// Print Temp
render.setFontSize(10);
render.rdrawString(data.temp.c_str(), 239, 1, TFT_BLACK);
render.setFontSize(4);
render.rdrawString(String(0).c_str(), 244, 3, TFT_BLACK);
// Print Hour
render.setFontSize(10);
render.rdrawString(data.currentTime.c_str(), 286, 1, TFT_BLACK);
// Push prepared background to screen // Push prepared background to screen
background.pushSprite(0, 0); background.pushSprite(0, 90);
// Delete sprite to free the memory heap // Delete sprite to free the memory heap
background.deleteSprite(); background.deleteSprite();
//delay(50);
#ifdef ESP32_2432S028R
printPoolData(); printPoolData();
#endif
#ifdef DEBUG_MEMORY #ifdef DEBUG_MEMORY
// Print heap // Print heap
printheap(); printheap();
#endif #endif
} }
void esp32_2432S028R_ClockScreen(unsigned long mElapsed) void esp32_2432S028R_ClockScreen(unsigned long mElapsed)
{ {
if (hasChangedScreen) tft.pushImage(0, 0, minerClockWidth, minerClockHeight, minerClockScreen);
hasChangedScreen = false;
clock_data data = getClockData(mElapsed); clock_data data = getClockData(mElapsed);
// Create background sprite to print data at once
background.createSprite(initWidth,initHeight); //Background Sprite
background.setColorDepth(16);
background.setSwapBytes(true);
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
render.setLineSpaceRatio(0.9);
// Print background screen
background.pushImage(0, 0, minerClockWidth, minerClockHeight, minerClockScreen);
Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n", Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n",
data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str()); data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str());
// Create background sprite to print data at once
createBackgroundSprite(270,36);
// Print background screen
background.pushImage(0, -130, minerClockWidth, minerClockHeight, minerClockScreen);
// Hashrate // Hashrate
render.setFontSize(25); render.setFontSize(25);
render.setCursor(19, 122);
render.setFontColor(TFT_BLACK); render.setFontColor(TFT_BLACK);
render.rdrawString(data.currentHashRate.c_str(), 94, 129, TFT_BLACK); render.rdrawString(data.currentHashRate.c_str(), 95, 0, TFT_BLACK);
// Print BlockHeight
render.setFontSize(18);
render.rdrawString(data.blockHeight.c_str(), 254, 9, TFT_BLACK);
// Push prepared background to screen
background.pushSprite(0, 130);
// Delete sprite to free the memory heap
background.deleteSprite();
createBackgroundSprite(169,105);
// Print background screen
background.pushImage(-130, -3, minerClockWidth, minerClockHeight, minerClockScreen);
// Print BTC Price // Print BTC Price
background.setFreeFont(FSSB9); background.setFreeFont(FSSB9);
background.setTextSize(1); background.setTextSize(1);
background.setTextDatum(TL_DATUM); background.setTextDatum(TL_DATUM);
background.setTextColor(TFT_BLACK); background.setTextColor(TFT_BLACK);
background.drawString(data.btcPrice.c_str(), 202, 3, GFXFF); background.drawString(data.btcPrice.c_str(), 202-130, 0, GFXFF);
// Print BlockHeight
render.setFontSize(18);
render.rdrawString(data.blockHeight.c_str(), 254, 140, TFT_BLACK);
// Print Hour // Print Hour
background.setFreeFont(FF23); background.setFreeFont(FF23);
background.setTextSize(2); background.setTextSize(2);
background.setTextColor(0xDEDB, TFT_BLACK); background.setTextColor(0xDEDB, TFT_BLACK);
background.drawString(data.currentTime.c_str(), 0, 50, GFXFF);
background.drawString(data.currentTime.c_str(), 130, 50, GFXFF);
// Push prepared background to screen // Push prepared background to screen
background.pushSprite(0, 0); background.pushSprite(130, 3);
// Delete sprite to free the memory heap // Delete sprite to free the memory heap
background.deleteSprite(); background.deleteSprite();
@ -208,17 +260,15 @@ void esp32_2432S028R_ClockScreen(unsigned long mElapsed)
void esp32_2432S028R_GlobalHashScreen(unsigned long mElapsed) void esp32_2432S028R_GlobalHashScreen(unsigned long mElapsed)
{ {
if (hasChangedScreen) tft.pushImage(0, 0, globalHashWidth, globalHashHeight, globalHashScreen);
hasChangedScreen = false;
coin_data data = getCoinData(mElapsed); coin_data data = getCoinData(mElapsed);
// Create background sprite to print data at once // Create background sprite to print data at once
background.createSprite(initWidth,initHeight); //Background Sprite createBackgroundSprite(169,105);
background.setColorDepth(16);
background.setSwapBytes(true);
render.setDrawer(background); // Link drawing object to background instance (so font will be rendered on background)
render.setLineSpaceRatio(0.9);
// Print background screen // Print background screen
background.pushImage(0, 0, globalHashWidth, globalHashHeight, globalHashScreen); background.pushImage(-160, -3, minerClockWidth, minerClockHeight, globalHashScreen);
//background.fillScreen(TFT_BLUE);
Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n", Serial.printf(">>> Completed %s share(s), %s Khashes, avg. hashrate %s KH/s\n",
data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str()); data.completedShares.c_str(), data.totalKHashes.c_str(), data.currentHashRate.c_str());
@ -228,52 +278,68 @@ void esp32_2432S028R_GlobalHashScreen(unsigned long mElapsed)
background.setTextSize(1); background.setTextSize(1);
background.setTextDatum(TL_DATUM); background.setTextDatum(TL_DATUM);
background.setTextColor(TFT_BLACK); background.setTextColor(TFT_BLACK);
background.drawString(data.btcPrice.c_str(), 198, 3, GFXFF); background.drawString(data.btcPrice.c_str(), 198-160, 0, GFXFF);
// Print Hour // Print Hour
background.setFreeFont(FSSB9); background.setFreeFont(FSSB9);
background.setTextSize(1); background.setTextSize(1);
background.setTextDatum(TL_DATUM); background.setTextDatum(TL_DATUM);
background.setTextColor(TFT_BLACK); background.setTextColor(TFT_BLACK);
background.drawString(data.currentTime.c_str(), 268, 3, GFXFF); background.drawString(data.currentTime.c_str(), 268-160, 0, GFXFF);
// Print Last Pool Block // Print Last Pool Block
background.setFreeFont(FSS9); background.setFreeFont(FSS9);
background.setTextDatum(TR_DATUM); background.setTextDatum(TR_DATUM);
background.setTextColor(0x9C92); background.setTextColor(0x9C92);
background.drawString(data.halfHourFee.c_str(), 302, 52, GFXFF); background.drawString(data.halfHourFee.c_str(), 302-160, 49, GFXFF);
// Print Difficulty // Print Difficulty
background.setFreeFont(FSS9); background.setFreeFont(FSS9);
background.setTextDatum(TR_DATUM); background.setTextDatum(TR_DATUM);
background.setTextColor(0x9C92); background.setTextColor(0x9C92);
background.drawString(data.netwrokDifficulty.c_str(), 302, 88, GFXFF); background.drawString(data.netwrokDifficulty.c_str(), 302-160, 85, GFXFF);
// Print Global Hashrate
render.setFontSize(17);
render.rdrawString(data.globalHashRate.c_str(), 274, 145, TFT_BLACK);
// Print BlockHeight
render.setFontSize(28);
render.rdrawString(data.blockHeight.c_str(), 140, 104, 0xDEDB);
// Draw percentage rectangle
int x2 = 2 + (138 * data.progressPercent / 100);
background.fillRect(2, 149, x2, 168, 0xDEDB);
// Print Remaining BLocks
background.setTextFont(FONT2);
background.setTextSize(1);
background.setTextDatum(MC_DATUM);
background.setTextColor(TFT_BLACK);
background.drawString(data.remainingBlocks.c_str(), 72, 159, FONT2);
// Push prepared background to screen // Push prepared background to screen
background.pushSprite(0, 0); background.pushSprite(160, 3);
// Delete sprite to free the memory heap // Delete sprite to free the memory heap
background.deleteSprite(); background.deleteSprite();
// Create background sprite to print data at once
createBackgroundSprite(280,30);
// Print background screen
background.pushImage(0, -139, minerClockWidth, minerClockHeight, globalHashScreen);
//background.fillSprite(TFT_CYAN);
// Print Global Hashrate
render.setFontSize(17);
render.rdrawString(data.globalHashRate.c_str(), 274, 145-139, TFT_BLACK);
// Draw percentage rectangle
int x2 = 2 + (138 * data.progressPercent / 100);
background.fillRect(2, 149-139, x2, 168, 0xDEDB);
// Print Remaining BLocks
background.setTextFont(FONT2);
background.setTextSize(1);
background.setTextDatum(MC_DATUM);
background.setTextColor(TFT_BLACK);
background.drawString(data.remainingBlocks.c_str(), 72, 159-139, FONT2);
// Push prepared background to screen
background.pushSprite(0, 139);
// Delete sprite to free the memory heap
background.deleteSprite();
// Create background sprite to print data at once
createBackgroundSprite(140,40);
// Print background screen
background.pushImage(-5, -100, minerClockWidth, minerClockHeight, globalHashScreen);
//background.fillSprite(TFT_CYAN);
// Print BlockHeight
render.setFontSize(28);
render.rdrawString(data.blockHeight.c_str(), 140-5, 104-100, 0xDEDB);
// Push prepared background to screen
background.pushSprite(5, 100);
// Delete sprite to free the memory heap
background.deleteSprite();
#ifdef ESP32_2432S028R #ifdef ESP32_2432S028R
printPoolData(); printPoolData();
#endif #endif
@ -292,6 +358,7 @@ void esp32_2432S028R_LoadingScreen(void)
tft.drawString(CURRENT_VERSION, 24, 147, FONT2); tft.drawString(CURRENT_VERSION, 24, 147, FONT2);
delay(2000); delay(2000);
tft.fillScreen(TFT_BLACK); tft.fillScreen(TFT_BLACK);
tft.pushImage(0, 0, initWidth, initHeight, MinerScreen);
} }
void esp32_2432S028R_SetupScreen(void) void esp32_2432S028R_SetupScreen(void)
@ -305,10 +372,43 @@ void esp32_2432S028R_AnimateCurrentScreen(unsigned long frame)
// Variables para controlar el parpadeo con millis() // Variables para controlar el parpadeo con millis()
unsigned long previousMillis = 0; unsigned long previousMillis = 0;
unsigned long previousTouchMillis = 0;
char currentScreen = 0;
void esp32_2432S028R_DoLedStuff(unsigned long frame) void esp32_2432S028R_DoLedStuff(unsigned long frame)
{ {
unsigned long currentMillis = millis(); unsigned long currentMillis = millis();
// / Check the touch coordinates 110x185 210x240
if (currentMillis - previousTouchMillis >= 500)
{
int16_t t_x , t_y; // To store the touch coordinates
bool pressed = touch.getXY(t_x, t_y);
if (pressed) {
if (((t_x > 109)&&(t_x < 211)) && ((t_y > 185)&&(t_y < 241))) bottomScreenBlue ^= true;
else
if (t_x > 160) {
// next screen
Serial.print(t_x);
Serial.print(":x Próxima Tela y:");
Serial.println(t_y);
currentDisplayDriver->current_cyclic_screen = (currentDisplayDriver->current_cyclic_screen + 1) % currentDisplayDriver->num_cyclic_screens;
} else if (t_x < 160)
{
// Previus screen
Serial.print(t_x);
Serial.print(":x Tela anterior y:");
Serial.println(t_y);
/* Serial.println(currentDisplayDriver->current_cyclic_screen); */
currentDisplayDriver->current_cyclic_screen = currentDisplayDriver->current_cyclic_screen - 1;
if (currentDisplayDriver->current_cyclic_screen<0) currentDisplayDriver->current_cyclic_screen = currentDisplayDriver->num_cyclic_screens - 1;
Serial.println(currentDisplayDriver->current_cyclic_screen);
}
}
previousTouchMillis = currentMillis;
}
if (currentScreen != currentDisplayDriver->current_cyclic_screen) hasChangedScreen ^= true;
currentScreen = currentDisplayDriver->current_cyclic_screen;
switch (mMonitor.NerdStatus) switch (mMonitor.NerdStatus)
{ {
@ -332,6 +432,8 @@ void esp32_2432S028R_DoLedStuff(unsigned long frame)
} }
break; break;
} }
} }
CyclicScreenFunction esp32_2432S028RCyclicScreens[] = {esp32_2432S028R_MinerScreen, esp32_2432S028R_ClockScreen, esp32_2432S028R_GlobalHashScreen}; CyclicScreenFunction esp32_2432S028RCyclicScreens[] = {esp32_2432S028R_MinerScreen, esp32_2432S028R_ClockScreen, esp32_2432S028R_GlobalHashScreen};

View File

@ -287,7 +287,7 @@ coin_data getCoinData(unsigned long mElapsed)
return data; return data;
} }
pool_data updatePoolData(void){ pool_data getPoolData(void){
//pool_data pData; //pool_data pData;
if((mPoolUpdate == 0) || (millis() - mPoolUpdate > UPDATE_POOL_min * 60 * 1000)){ if((mPoolUpdate == 0) || (millis() - mPoolUpdate > UPDATE_POOL_min * 60 * 1000)){
if (WiFi.status() != WL_CONNECTED) return pData; if (WiFi.status() != WL_CONNECTED) return pData;
@ -296,10 +296,12 @@ pool_data updatePoolData(void){
HTTPClient http; HTTPClient http;
http.setReuse(true); http.setReuse(true);
try { try {
http.begin(String(getPublicPool)+ Settings.BtcWallet); String btcWallet = Settings.BtcWallet;
Serial.println(btcWallet);
if (btcWallet.indexOf(".")>0) btcWallet = btcWallet.substring(0,btcWallet.indexOf("."));
http.begin(String(getPublicPool)+btcWallet);
int httpCode = http.GET(); int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
if (httpCode > 0) {
String payload = http.getString(); String payload = http.getString();
// Serial.println(payload); // Serial.println(payload);
DynamicJsonDocument doc(1024); DynamicJsonDocument doc(1024);
@ -311,12 +313,13 @@ pool_data updatePoolData(void){
for (const JsonObject& worker : workers) { for (const JsonObject& worker : workers) {
totalhashs += worker["hashRate"].as<float>(); totalhashs += worker["hashRate"].as<float>();
} }
pData.workersHash = String(totalhashs/1000); pData.workersHash = String(totalhashs/1000);
double temp;
String temp = "";
if (doc.containsKey("bestDifficulty")) { if (doc.containsKey("bestDifficulty")) {
temp = doc["bestDifficulty"].as<float>(); temp = doc["bestDifficulty"].as<double>();
pData.bestDifficulty = String(temp); char best_diff_string[16] = {0};
suffix_string(temp, best_diff_string, 16, 0);
pData.bestDifficulty = String(best_diff_string);
} }
doc.clear(); doc.clear();
mPoolUpdate = millis(); mPoolUpdate = millis();

View File

@ -111,7 +111,7 @@ void setup_monitor(void);
mining_data getMiningData(unsigned long mElapsed); mining_data getMiningData(unsigned long mElapsed);
clock_data getClockData(unsigned long mElapsed); clock_data getClockData(unsigned long mElapsed);
coin_data getCoinData(unsigned long mElapsed); coin_data getCoinData(unsigned long mElapsed);
pool_data updatePoolData(void); pool_data getPoolData(void);
clock_data_t getClockData_t(unsigned long mElapsed); clock_data_t getClockData_t(unsigned long mElapsed);