diff --git a/lib/obp60task/OBP60Extensions.cpp b/lib/obp60task/OBP60Extensions.cpp index ff24c4d..e851b2a 100644 --- a/lib/obp60task/OBP60Extensions.cpp +++ b/lib/obp60task/OBP60Extensions.cpp @@ -233,11 +233,18 @@ SensorData calcSunsetSunrise(double time, double date, double latitude, double l int intminSR = 0; int inthrSS = 0; int intminSS = 0; + bool sunDown = true; - // Calculate local time - time_t t = (date * secPerYear) + (time + int(timezone * secPerHour)); +<<<<<<< HEAD if (!isnan(time) && !isnan(date) && !isnan(latitude) && !isnan(longitude) && !isnan(timezone)) { +======= +// api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: Lat %f, Lon %f, at: %d, next SR: %d (%s), next SS: %d (%s)", latitude, longitude, t, sunR, sSunR, sunS, sSunS); + + if (!isnan(time) && !isnan(date) && !isnan(latitude) && !isnan(longitude) && !isnan(timezone)) { + // Calculate local time + time_t t = (date * secPerYear) + (time + int(timezone * secPerHour)); +>>>>>>> sunset sr.calculate(latitude, longitude, t); // LAT, LON, EPOCH // Sunrise if (sr.hasRise) { @@ -251,13 +258,23 @@ SensorData calcSunsetSunrise(double time, double date, double latitude, double l inthrSS = int (sunS / secPerHour); intminSS = int((sunS - inthrSS * secPerHour)/60); } + // Sun control (return value by sun on sky = false, sun down = true) + if ((t >= (sr.riseTime + int(timezone * secPerHour))) && (t <= (sr.setTime + int(timezone * secPerHour)))) + sunDown = false; + else sunDown = true; } // Return values returnset.sunsetHour = inthrSS; returnset.sunsetMinute = intminSS; returnset.sunriseHour = inthrSR; returnset.sunriseMinute = intminSR; +<<<<<<< HEAD returnset.sunControl = false; +======= + returnset.sunDown = sunDown; + +// api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun: at t: %d, hasRise: %d, next SR: %d '%s', hasSet: %d, next SS: %d '%s'\n", t, sr.hasRise, sr.riseTime, sSunR, sr.hasSet, sr.setTime, sSunS); +>>>>>>> sunset return returnset; } diff --git a/lib/obp60task/OBP60Extensions.h b/lib/obp60task/OBP60Extensions.h index c6a30b6..ca0a25c 100644 --- a/lib/obp60task/OBP60Extensions.h +++ b/lib/obp60task/OBP60Extensions.h @@ -43,5 +43,9 @@ void displayTrendLow(int16_t x, int16_t y, uint16_t size, uint16_t color); void displayHeader(CommonData &commonData, GwApi::BoatValue *date, GwApi::BoatValue *time); // Draw display header SensorData calcSunsetSunrise(double time, double date, double latitude, double longitude, double timezone); // Calulate sunset and sunrise +<<<<<<< HEAD +======= +//bool sunControl(double time, double date, double latitude, double longitude, double timezone); // Control bit for sun +>>>>>>> sunset #endif \ No newline at end of file diff --git a/lib/obp60task/OBP60Formater.cpp b/lib/obp60task/OBP60Formater.cpp index c944fa6..060261f 100644 --- a/lib/obp60task/OBP60Formater.cpp +++ b/lib/obp60task/OBP60Formater.cpp @@ -14,7 +14,9 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){ static int dayoffset = 0; // Load configuration values - int timeZone = commondata.config->getInt(commondata.config->timeZone); // [UTC -12...+14] + + String stimeZone = commondata.config->getString(commondata.config->timeZone); // [UTC -14.00...+12.00] + double timeZone = stimeZone.toDouble(); String lengthFormat = commondata.config->getString(commondata.config->lengthFormat); // [m|ft] String distanceFormat = commondata.config->getString(commondata.config->distanceFormat); // [m|km|nm] String speedFormat = commondata.config->getString(commondata.config->speedFormat); // [m/s|km/h|kn] @@ -28,6 +30,8 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){ result.svalue = "---"; return result; } + + LOG_DEBUG(GwLog::DEBUG,"formatValue init: getFormat: %s date->value: %f time->value: %f", value->getFormat(), commondata.date->value, commondata.time->value); static const int bsize = 30; char buffer[bsize+1]; buffer[0]=0; diff --git a/lib/obp60task/PageClock.cpp b/lib/obp60task/PageClock.cpp index 6ab6f2d..e83524d 100644 --- a/lib/obp60task/PageClock.cpp +++ b/lib/obp60task/PageClock.cpp @@ -147,13 +147,11 @@ public: } // Show values sunrise - String sunrise = ""; + String sunrise = "---"; if(valid1 == true && valid2 == true){ - sunrise = String(commonData.data.sunriseHour) + ":" + String(commonData.data.sunriseMinute); - } - else{ - sunrise = "---"; + sunrise = String(commonData.data.sunriseHour) + ":" + String(commonData.data.sunriseMinute + 100).substring(1); } + display.setTextColor(textcolor); display.setFont(&Ubuntu_Bold8pt7b); display.setCursor(335, 65); @@ -166,13 +164,13 @@ public: display.fillRect(340, 149, 80, 3, pixelcolor); // Show values sunset - String sunset = ""; + String sunset = "---"; if(valid1 == true && valid2 == true){ - sunset= String(commonData.data.sunsetHour) + ":" + String(commonData.data.sunsetMinute); - } - else{ - sunset = "---"; + sunset = String(commonData.data.sunsetHour) + ":" + String(commonData.data.sunsetMinute + 100).substring(1); } + + LOG_DEBUG(GwLog::LOG,"sunrise: .%s., sunset: .%s.", String(commonData.data.sunriseMinute + 100), String(commonData.data.sunsetMinute + 100)); + display.setTextColor(textcolor); display.setFont(&Ubuntu_Bold8pt7b); display.setCursor(335, 250); diff --git a/lib/obp60task/Pagedata.h b/lib/obp60task/Pagedata.h index 401621d..9816f8d 100644 --- a/lib/obp60task/Pagedata.h +++ b/lib/obp60task/Pagedata.h @@ -47,7 +47,11 @@ typedef struct{ int sunsetMinute = 0; int sunriseHour = 0; int sunriseMinute = 0; +<<<<<<< HEAD bool sunControl = false; // (sun on sky = false, sun down = true) +======= + bool sunDown = true; +>>>>>>> sunset } SensorData; typedef struct{ diff --git a/lib/obp60task/obp60task.cpp b/lib/obp60task/obp60task.cpp index e09d809..1e3a695 100644 --- a/lib/obp60task/obp60task.cpp +++ b/lib/obp60task/obp60task.cpp @@ -391,13 +391,18 @@ void OBP60Task(GwApi *api){ setPortPin(OBP_FLASH_LED, true); } - // Back light with sun control + // Back light with sun control: turn on if no valid data for safety reasons if(String(backlight) == "Control by Sun"){ +<<<<<<< HEAD if(time->valid == true && date->valid == true && lat->valid == true && lon->valid == true){ setPortPin(OBP_BACKLIGHT_LED, commonData.data.sunControl); +======= + if(time->valid == false || date->valid == false || lat->valid == false || lon->valid == false){ + setPortPin(OBP_BACKLIGHT_LED, true); +>>>>>>> sunset } } - + // Check the keyboard message int keyboardMessage=0; while (xQueueReceive(allParameters.queue,&keyboardMessage,0)){ @@ -454,10 +459,15 @@ void OBP60Task(GwApi *api){ if(time->valid == true && date->valid == true && lat->valid == true && lon->valid == true){ commonData.data = calcSunsetSunrise(time->value , date->value, lat->value, lon->value, tz.toDouble()); // Backlight with sun control +<<<<<<< HEAD if(String(backlight) == "Control by Sun"){ if(time->valid == true && date->valid == true && lat->valid == true && lon->valid == true){ setPortPin(OBP_BACKLIGHT_LED, commonData.data.sunControl); } +======= + if(String(backlight) == "Control by Sun"){ + setPortPin(OBP_BACKLIGHT_LED, commonData.data.sunDown); +>>>>>>> sunset } } } diff --git a/lib/obp60task/platformio.ini b/lib/obp60task/platformio.ini deleted file mode 100644 index 6be9046..0000000 --- a/lib/obp60task/platformio.ini +++ /dev/null @@ -1,27 +0,0 @@ -[platformio] -#if you want a pio run to only build -#your special environments you can set this here -#by uncommenting the next line -default_envs = nodemcu32s_obp60 -[env:nodemcu32s_obp60] -board_build.partitions = lib/obp60task/partitions_obp60.csv -board = nodemcu-32s -lib_deps = - ${env.lib_deps} - lib_deps = - blemasle/MCP23017@2.0.0 - adafruit/Adafruit BusIO@1.5.0 - zinggjm/GxEPD@3.1.0 - sstaub/Ticker@4.4.0 - adafruit/Adafruit BMP280 Library@2.6.2 - adafruit/Adafruit BME280 Library@2.2.2 - adafruit/Adafruit BMP085 Library@1.2.1 - enjoyneering/HTU21D@1.2.1 - robtillaart/INA226@0.2.0 - signetica/SunRise@2.0.2 -build_flags= - -D BOARD_NODEMCU32S_OBP60 - ${env.build_flags} -upload_port = COM3 -upload_protocol = esptool -monitor_speed = 115200 \ No newline at end of file