From d65d980642f461c81d37d9069c7fb3d389c66c10 Mon Sep 17 00:00:00 2001 From: Bluedragon Date: Sun, 1 May 2022 08:14:34 +0700 Subject: [PATCH] add settime and fix load const --- data/settime.html | 26 ++- src/index.h | 48 ++++-- src/main.cpp | 416 ++++++++++++++++++++++++---------------------- 3 files changed, 274 insertions(+), 216 deletions(-) diff --git a/data/settime.html b/data/settime.html index 5b07727..3b8fde5 100644 --- a/data/settime.html +++ b/data/settime.html @@ -9,12 +9,24 @@
-

12345

-

TRACK A

-

Time: 00:00:00

+
12345
+

TRIP A

+

Time: 00:00:00

123.4Km/h


@@ -45,7 +57,7 @@ - +
diff --git a/src/index.h b/src/index.h index 92b9a46..a1f37cb 100644 --- a/src/index.h +++ b/src/index.h @@ -341,14 +341,24 @@ const char HTML_CALIBRATION[] PROGMEM = R"rawliteral(
-

12345

-

TRACK A

-

Time: 00:00:00

+
12345
+

TRIP A

+

Time: 00:00:00

123.4Km/h


@@ -446,12 +456,24 @@ const char HTML_SETTIME[] PROGMEM = R"rawliteral(
-

12345

-

TRACK A

-

Time: 00:00:00

+
12345
+

TRIP A

+

Time: 00:00:00

123.4Km/h


@@ -482,7 +504,7 @@ const char HTML_SETTIME[] PROGMEM = R"rawliteral( - +
diff --git a/src/main.cpp b/src/main.cpp index 7b7c292..0812a9e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -70,6 +70,10 @@ String strSetTimeJson="{\"counter\":0}"; int globalClientRally=0; int globalClientCalib=0; int globalClientSetTime=0; +boolean gHasLcdClient=false; +boolean gHasRallyClient=false; +boolean gHasCalibClient=false; +boolean gHasSetTimeClient=false; #define REQUESTCOUNT 3 AsyncWebServerRequest *gRequest[REQUESTCOUNT]; @@ -177,7 +181,7 @@ unsigned int recv_size = 0; unsigned long prevsettime, intervalsettime = 250; unsigned long prevtempint, tempinterval=60000; unsigned long prevtemprally, tempintervalrally=333; -unsigned long prevCalculatingRallyMillis, calculatingRallyMillis=1000; +unsigned long prevCalculatingRallyMillis, calculatingRallyMillis=500; unsigned long prevcalibrationtime, calibrationtimeinterval = 200; unsigned long updatecounttime=0; float temperature; @@ -197,6 +201,7 @@ unsigned long startsavemillis; unsigned long broadcastwebsocket; unsigned long timerWebsocketCalibration; unsigned long timerWebsocketSetTime; +unsigned long timerDS3231Get; volatile unsigned long howLongInMillis; //#include //https://github.com/JChristensen/Button //from change to @@ -430,98 +435,101 @@ void OnWiFiEvent(WiFiEvent_t event) } } -String getPin(){ - struct tm timeinfo; - String hasil; - if(!getLocalTime(&timeinfo)){ - Serial.println("Failed to obtain time"); - return hasil; - } - // StaticJsonBuffer<200> jsonBuffer; - // JsonObject& root = JsonBuffer.createObject(); - DynamicJsonDocument testdoc(512); - //String datetime = &timeinfo; - char datetime[21]; - char curtime[9]; - strftime(datetime, 21, "%d %b %Y %H:%M:%S", &timeinfo); - strftime(curtime, 9, "%H:%M:%S", &timeinfo); - //Serial.println(&timeinfo); - //Serial.println(datetime); - testdoc["pin36"]=242; - testdoc["pin39"]=datetime; - testdoc["time"]=curtime; - // testdoc["datetime"]=datetime; - testdoc["pin5"]=millis(); - testdoc["curtime"]=curtime; - testdoc["speed"]=String(float(random(1,20000))/100,1); - testdoc["counter"]=random(0,50000); - String bb[]={"A","B","C","D","E","F","G","H","I","J","K","L"}; - testdoc["curtrack"]=bb[random(12)]; - String dir[]={"FW","STOP","BACK"}; - testdoc["dir1"]=dir[random(3)]; - testdoc["dir2"]=dir[random(3)]; - testdoc["time1"]=curtime; - testdoc["time2"]=curtime; - float odo1=float(millis())/10000; - float odo2=float(millis())/20000; - //Serial.println(odo1,3); - testdoc["odo1"]=String(odo1,3); - testdoc["odo2"]=String(odo2,3); // if disabled, the web will get undefined value - //serializeJson(testdoc,Serial); - serializeJson(testdoc,hasil); - //testdoc.printTo(hasil); - // testdoc.clear(); - return hasil; -} -String getCalib(){ - struct tm timeinfo; - String hasil; - if(!getLocalTime(&timeinfo)){ - Serial.println("Failed to obtain time"); - return hasil; - } - DynamicJsonDocument testdoc(200); - //String datetime = &timeinfo; - char datetime[21]; - char curtime[9]; - strftime(datetime, 21, "%d %b %Y %H:%M:%S", &timeinfo); - strftime(curtime, 9, "%H:%M:%S", &timeinfo); - //Serial.println(&timeinfo); - //Serial.println(datetime); - // testdoc["datetime"]=datetime; - testdoc["curtime"]=curtime; - testdoc["speed"]=String(float(random(1,20000))/100,1); - testdoc["counter"]=random(0,50000); - String bb[]={"A","B","C","D","E","F","G","H","I","J","K","L"}; - testdoc["curtrack"]=bb[random(12)]; - float calkm=float(millis())/100000; - float calmeter=float(millis())/100; - testdoc["caldist"]=random(9); - testdoc["calman"]=random(100000, 150000); - testdoc["calkm"]=String(calkm,3); - testdoc["calmeter"]=String(calmeter,3); - //Serial.println(odo1,3); - testdoc["calval"]=String(calmeter*1000); // if disabled, the web will get undefined value - //serializeJson(testdoc,Serial); - serializeJson(testdoc,hasil); - //testdoc.printTo(hasil); - // testdoc.clear(); - return hasil; -} +// String getPin(){ //can be delete +// struct tm timeinfo; +// String hasil; +// if(!getLocalTime(&timeinfo)){ +// Serial.println("Failed to obtain time"); +// return hasil; +// } +// // StaticJsonBuffer<200> jsonBuffer; +// // JsonObject& root = JsonBuffer.createObject(); +// DynamicJsonDocument testdoc(512); +// //String datetime = &timeinfo; +// char datetime[21]; +// char curtime[9]; +// strftime(datetime, 21, "%d %b %Y %H:%M:%S", &timeinfo); +// strftime(curtime, 9, "%H:%M:%S", &timeinfo); +// //Serial.println(&timeinfo); +// //Serial.println(datetime); +// testdoc["pin36"]=242; +// testdoc["pin39"]=datetime; +// testdoc["time"]=curtime; +// // testdoc["datetime"]=datetime; +// testdoc["pin5"]=millis(); +// testdoc["curtime"]=curtime; +// testdoc["speed"]=String(float(random(1,20000))/100,1); +// testdoc["counter"]=random(0,50000); +// String bb[]={"A","B","C","D","E","F","G","H","I","J","K","L"}; +// testdoc["curtrack"]=bb[random(12)]; +// String dir[]={"FW","STOP","BACK"}; +// testdoc["dir1"]=dir[random(3)]; +// testdoc["dir2"]=dir[random(3)]; +// testdoc["time1"]=curtime; +// testdoc["time2"]=curtime; +// float odo1=float(millis())/10000; +// float odo2=float(millis())/20000; +// //Serial.println(odo1,3); +// testdoc["odo1"]=String(odo1,3); +// testdoc["odo2"]=String(odo2,3); // if disabled, the web will get undefined value +// //serializeJson(testdoc,Serial); +// serializeJson(testdoc,hasil); +// //testdoc.printTo(hasil); +// // testdoc.clear(); +// return hasil; +// } + +// String getCalibFunc(){ can be delete +// struct tm timeinfo; +// String hasil; +// if(!getLocalTime(&timeinfo)){ +// Serial.println("Failed to obtain time"); +// return hasil; +// } +// DynamicJsonDocument testdoc(200); +// //String datetime = &timeinfo; +// char datetime[21]; +// char curtime[9]; +// strftime(datetime, 21, "%d %b %Y %H:%M:%S", &timeinfo); +// strftime(curtime, 9, "%H:%M:%S", &timeinfo); +// //Serial.println(&timeinfo); +// //Serial.println(datetime); +// // testdoc["datetime"]=datetime; +// testdoc["curtime"]=curtime; +// testdoc["speed"]=String(float(random(1,20000))/100,1); +// testdoc["counter"]=random(0,50000); +// String bb[]={"A","B","C","D","E","F","G","H","I","J","K","L"}; +// testdoc["curtrack"]=bb[random(12)]; +// float calkm=float(millis())/100000; +// float calmeter=float(millis())/100; +// testdoc["caldist"]=random(9); +// testdoc["calman"]=random(100000, 150000); +// testdoc["calkm"]=String(calkm,3); +// testdoc["calmeter"]=String(calmeter,3); +// //Serial.println(odo1,3); +// testdoc["calval"]=String(calmeter*1000); // if disabled, the web will get undefined value +// //serializeJson(testdoc,Serial); +// serializeJson(testdoc,hasil); +// //testdoc.printTo(hasil); +// // testdoc.clear(); +// return hasil; +// } void printLocalTime(){ struct tm timeinfo; - if(!getLocalTime(&timeinfo)){ - Serial.println("Failed to obtain time"); - return; - } - t.hour=timeinfo.tm_hour; - t.min=timeinfo.tm_min; - t.sec=timeinfo.tm_sec; - t.mday=timeinfo.tm_mday; - t.mon=timeinfo.tm_mon; - t.year=timeinfo.tm_year; - DS3231_set(t); + if (WiFi.status() == WL_CONNECTED){ + if(!getLocalTime(&timeinfo)){ + Serial.println("Failed to obtain NTP time"); + return; + } + } else return; + // t.hour=timeinfo.tm_hour; + // t.min=timeinfo.tm_min; + // t.sec=timeinfo.tm_sec; + // t.mday=timeinfo.tm_mday; + // t.mon=timeinfo.tm_mon; + // t.year=timeinfo.tm_year; + // DS3231_set(t); Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S"); Serial.print("Day of week: "); Serial.println(&timeinfo, "%A"); @@ -665,7 +673,7 @@ unsigned long getValueSetTime(const char* st){ unsigned long getMemStime(uint8_t getmemsTimecurTrip); -String getsTime(uint8_t getsTimecurtrip){ +String getShortsTime(uint8_t getsTimecurtrip){ unsigned long sTimeinconstanta; int sTimeHour; int sTimeMin; @@ -682,7 +690,7 @@ String getsTime(uint8_t getsTimecurtrip){ char sTime[6]; // if (sTimeHour<10){ sprintf(sTime, "%02d:%02d", sTimeHour, sTimeMin); - // Serial.print(getsTimecurtrip);Serial.print("getsTime:");Serial.print(sTimeHour);Serial.print(":");Serial.print(sTimeMin);Serial.print(";");Serial.println(sTime); + // Serial.print(getsTimecurtrip);Serial.print("getShortsTime:");Serial.print(sTimeHour);Serial.print(":");Serial.print(sTimeMin);Serial.print(";");Serial.println(sTime); // } return sTime; } @@ -691,12 +699,14 @@ void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventT if(type == WS_EVT_CONNECT){ globalClientRally++; + gHasRallyClient=true; Serial.println("Websocket client connection received"); Serial.print("Rally Client=");Serial.println(globalClientRally); Serial.print("IPAdd client:"); Serial.println(client->remoteIP()); client->text(strRallyJson); } else if(type == WS_EVT_DISCONNECT){ globalClientRally--; + if (globalClientRally<=0) gHasRallyClient=false; Serial.println("Client disconnected"); Serial.print("Rally Client=");Serial.println(globalClientRally); Serial.print("IPAdd client:"); Serial.println(client->remoteIP()); @@ -815,12 +825,14 @@ void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventT void onWsEventCalibration(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ if(type == WS_EVT_CONNECT){ globalClientCalib++; + gHasCalibClient=true; Serial.println("wscal Websocket client connection received"); Serial.print("Calib Client=");Serial.println(globalClientCalib); Serial.print("IPAdd client:"); Serial.println(client->remoteIP()); client->text(strCalibJson); } else if(type == WS_EVT_DISCONNECT){ globalClientCalib--; + if (globalClientCalib<=0) gHasCalibClient=false; Serial.println("wscal Client disconnected"); Serial.print("Calib Client=");Serial.println(globalClientCalib); Serial.print("IPAdd client:"); Serial.println(client->remoteIP()); @@ -885,12 +897,14 @@ void onWsEventCalibration(AsyncWebSocket * server, AsyncWebSocketClient * client void onWsEventSetTime(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ if(type == WS_EVT_CONNECT){ globalClientSetTime++; + gHasSetTimeClient=true; Serial.println("wssettime Websocket client connection received"); Serial.print("SetTime Client=");Serial.println(globalClientSetTime); Serial.print("IPAdd client:");Serial.println(client->remoteIP()); client->text(strSetTimeJson); } else if(type == WS_EVT_DISCONNECT){ globalClientSetTime--; + if (globalClientSetTime<=0) gHasSetTimeClient=false; Serial.println("wssettime Client disconnected"); Serial.print("SetTime Client=");Serial.println(globalClientSetTime); Serial.print("IPAdd client:"); Serial.println(client->remoteIP()); @@ -924,7 +938,8 @@ void onWsEventSetTime(AsyncWebSocket * server, AsyncWebSocketClient * client, Aw int yMinVal=(uint8_t)(y.toInt()); Serial.print("x=");Serial.println(xHourVal); Serial.print("y=");Serial.println(yMinVal); - DS3231_get(&mts); + //// DS3231_get(&mts); + mts = t; mts.sec=0; mts.min=yMinVal; mts.hour=xHourVal; @@ -932,18 +947,22 @@ void onWsEventSetTime(AsyncWebSocket * server, AsyncWebSocketClient * client, Aw Serial.println("Manual Time Saved"); // } else if(setTime=="NTP") { //save NTP Time to DS3231 } else if(strcmp(setTime, "NTP") == 0) { //save NTP Time to DS3231 - if(!getLocalTime(&mtm)){ - Serial.println("Failed to obtain NTP time"); - // return; - } - mts.hour = mtm.tm_hour; - mts.min = mtm.tm_min; - mts.sec = mtm.tm_sec; - mts.mday = mtm.tm_mday; - mts.mon = mtm.tm_mon; - mts.year = mtm.tm_year; - DS3231_set(mts); - Serial.println("NTP Saved"); + if (WiFi.status() == WL_CONNECTED){ + if(!getLocalTime(&mtm)){ + Serial.println("Failed to obtain NTP time"); + // return; + } else { + mts.hour = mtm.tm_hour; + mts.min = mtm.tm_min; + mts.sec = mtm.tm_sec; + mts.mday = mtm.tm_mday; + mts.mon = mtm.tm_mon; + mts.year = mtm.tm_year; + DS3231_set(mts); + Serial.println("NTP Saved"); + } + } + // else Serial.println("No WiFi"); } } } @@ -1039,6 +1058,10 @@ void memretrieveTrip(int pointer, int startaddress) if (Trip[pointer].startHour >= 24) Trip[pointer].startHour = 23; if (Trip[pointer].startMin >= 60) Trip[pointer].startMin = 59; if (Trip[pointer].startSec >= 60) Trip[pointer].startSec = 59; + Serial.print(Trip[pointer].speed);Serial.print(";"); + Serial.print(Trip[pointer].startHour);Serial.print(":"); + Serial.print(Trip[pointer].startMin);Serial.print(":"); + Serial.print(Trip[pointer].startSec);Serial.println(""); } void constantatodigit() @@ -1169,7 +1192,7 @@ void lcdprint2digit(byte val) if (val<10) lcd.print("0"); lcd.print(val); } -void setTheTime(char *cmd) +void setTheTime(char *cmd) //// Not Used, Maybe Can delete { // ssmmhhWDDMMYYYY set time @@ -1440,7 +1463,7 @@ void constantaMenu() //lcd.print( lcd.setCursor(0,3); lcd.print("Start Time:"); - //DS3231_get(&t); //Get time + lcd.setCursor(12,3); //Go to second line of the LCD Screen if(starttracthour<10) { @@ -1595,7 +1618,8 @@ void redrawcalibrationMenuForESP32() Calibrationtime = VSSCount; // lcd.setCursor(xtemp,2); // lcd.print(cur_distance_str); - getCalib["counter"]=VSSCount; ///// + getCalib["counter2"]=VSSCount; ///// + getCalib["counter"]=String(gVSSCountDiff); getCalib["curTrip"]=String(Trip[curTrip].sub); ///// getCalib["curTripSpeed"]=String(Trip[curTrip].speed); ///// // String curTime = runningtimeforESP32(6,0); @@ -1623,23 +1647,28 @@ void fillSetTimeJsonForESP32() { DynamicJsonDocument docSetTime(512); deserializeJson(docSetTime, strSetTimeJson); - - docSetTime["counter"]=VSSCount; ///// + + docSetTime["counter2"]=VSSCount; ///// + docSetTime["counter"]=String(gVSSCountDiff); docSetTime["curTrip"]=String(Trip[curTrip].sub); ///// docSetTime["curTripSpeed"]=String(Trip[curTrip].speed); ///// - DS3231_get(&t); + // DS3231_get(&t); struct tm NTPTimeInfo; - if(!getLocalTime(&NTPTimeInfo)){ - Serial.println("Failed to obtain NTP time"); - // return; + String NTPTime; + if (WiFi.status() == WL_CONNECTED){ + if(!getLocalTime(&NTPTimeInfo)){ + Serial.println("Failed to obtain NTP time"); + // return; + } + NTPTime = runningtimeforESP32(&NTPTimeInfo); + docSetTime["NTPTime"]=NTPTime; + } else { + // Serial.println("No WiFi"); + docSetTime["NTPTime"]="N/A"; } gcurTime = runningtimeforESP32(6,0); - String NTPTime; - NTPTime = runningtimeforESP32(&NTPTimeInfo); docSetTime["curTime"]=gcurTime; - docSetTime["NTPTime"]=NTPTime; - strSetTimeJson = ""; serializeJson(docSetTime, strSetTimeJson); } @@ -1674,7 +1703,7 @@ void fillSetTimeJsonForESP32() void redrawrallyMenu() { // Serial.println("redrawRM"); - DS3231_get(&t); //Get time + // DS3231_get(&t); //Get time //runningtime(6,0); //float distance, distance1, distance2; @@ -1884,7 +1913,7 @@ void calculationRally_BACKUP() //calculation only ESP32 { DynamicJsonDocument getRally(1024); deserializeJson(getRally, strRallyJson); - DS3231_get(&t); //Get time + // DS3231_get(&t); //Get time // Serial.println("startCRal"); updateCount(); @@ -2073,7 +2102,7 @@ void calculationRally_BACKUP() //calculation only ESP32 void calculationRally() //calculation only ESP32 { - DS3231_get(&t); //Get time + // DS3231_get(&t); //Get time // Serial.println("startCRal"); updateCount(); @@ -2390,14 +2419,30 @@ void IRAM_ATTR isr() { //esp32 only ledstate=!ledstate; } -void convertJsonTripToTripStruct(uint8_t iTrip, const char* strJson){ +void convertJsonTripToTripStruct(uint8_t iTrip, const char* strJson){ //this also will check if loaded dist and time equal to the value from spiff and memload // Serial.print(iTrip); Serial.print(";");Serial.println(strJson); DynamicJsonDocument doc(256); deserializeJson(doc, strJson); + char mspeed[7]; + + dtostrf(Trip[iTrip].speed, 6, 4, mspeed); + Serial.print(String(char(iTrip)));Serial.print(mspeed);Serial.print(" VS ");Serial.println(doc["speed"].as()); + // if (Trip[iTrip].speed!=doc["speed"]) + if (strcmp(mspeed, doc["speed"].as()) != 0) + { + Serial.print(String(char(iTrip)));Serial.println(" speed is different"); + // Serial.print(String(char(iTrip)));Serial.print(Trip[iTrip].speed);Serial.print(" VS ");Serial.println(doc["speed"].as()); + // Trip[iTrip].speed = doc["speed"]; + } + // if (Trip[iTrip].subTime!=doc["stime"]) + // { + // Serial.print(String(iTrip));Serial.print(Trip[iTrip].subTime);Serial.print(" VS ");Serial.println(doc["time"].as()); + // Trip[iTrip].subTime = doc["time"]; + // } Trip[iTrip].distance = doc["dist"]; Trip[iTrip].subTime = doc["time"]; } -void fillTripArray(){ +void fillTripArray(){ //run by setup() char tempTrip[7]="/tripZ"; // Serial.println(tempTrip); String tempReadFile; @@ -2473,7 +2518,7 @@ void handleloadConst(AsyncWebServerRequest *request, JsonVariant &json) { deserializeJson(doc, tempTrip); speedinconstanta = getMemSpeedInConstanta(i-65); // sTimeinconstanta = getMemStime(i-65); - tempsTime = getsTime(i-65); + tempsTime = getShortsTime(i-65); tempSpeed=String(speedinconstanta,5); tempSpeed.remove(6); // Serial.print(tempSpeed);Serial.println(speedinconstanta,3); @@ -2528,11 +2573,8 @@ char* unConstChar(const char* s) { } } -char *temp2char; -// char *charVal; -char gsTime[10]; -char gSpeed[10]; -void getTripFromSPIFF(uint8_t charcurTrip, char *&pDist, char **pSpeed, char **pTime, char **psTime){ +void getTripFromSPIFF(uint8_t charcurTrip, char *pDist, char *pSpeed, char *pTime, char *psTime){ //read from the source ie:from mem and from SPIFF. not read fromStruct Trip. + // void getTripFromSPIFF(uint8_t charcurTrip, char *&pDist, char **pSpeed, char **pTime, char **psTime){ // Serial.print((uint32_t) psTime);Serial.print(";");Serial.print((uint32_t) *psTime);Serial.print(";");Serial.println((uint32_t) **psTime); DynamicJsonDocument doc(200); char filename[7] = "/tripZ"; @@ -2543,52 +2585,25 @@ void getTripFromSPIFF(uint8_t charcurTrip, char *&pDist, char **pSpeed, char ** tempSpeed.reserve(10); String tempsTime; tempsTime.reserve(10); - // for(uint8_t i=65; i(); - // *pDist = (char*)xTemp1.c_str(); - // char charVal[10]; - float speedinconstanta = getMemSpeedInConstanta(charcurTrip-65); - tempsTime = getsTime(charcurTrip-65); - // Serial.print(speedinconstanta);Serial.print(";"); - // Serial.print(tempsTime);Serial.println(";"); - pDist = unConstChar( doc["dist"].as()); - // *pDist = "hi"; - // *pSpeed = (char*)doc["speed"].as(); //take from the eeprom data - *pTime = (char*)doc["time"].as(); - // *psTime = (char*)doc["stime"].as(); - // *pSpeed =(char*) (String(speedinconstanta,4).c_str()); //not working - // char hsTime[10]; - char charVal[10]; - tempsTime.toCharArray(gsTime, 10); - dtostrf(speedinconstanta,1,4,gSpeed); - // Serial.println(gsTime); - // const char *tempchar=tempsTime.c_str(); - // temp2char=(char*)tempchar; - // Serial.println(tempchar); - // Serial.println((char*)tempchar); - // Serial.println(temp2char); - // Serial.println((uint32_t) &temp2char); - // Serial.println((uint32_t) temp2char); - // *psTime = &(char*)tempchar; - // *psTime = temp2char; - // strncpy(charVal, tempsTime.c_str(), 6); - *psTime = gsTime; - // *psTime = charVal; - *pSpeed = gSpeed; - // Serial.println((uint32_t) gsTime); - // Serial.println((uint32_t) *psTime); - // dtostrf(speedinconstanta,1,4,charVal); - // *pSpeed = charVal; - // Serial.println(charVal); + + tempTrip=readFile(SPIFFS, filename); + // Serial.print(tempTrip.length()); Serial.print(";");Serial.println(tempTrip); + deserializeJson(doc, tempTrip); + float speedinconstanta = getMemSpeedInConstanta(charcurTrip-65); + tempsTime = getShortsTime(charcurTrip-65); + tempsTime.toCharArray(psTime, 10); // cannot use strcpy + // Serial.print(speedinconstanta);Serial.print(";"); + // Serial.print(tempsTime);Serial.println(";"); + // pDist = unConstChar( doc["dist"].as()); + strcpy(pDist, doc["dist"]); + + // pTime = (char*)doc["time"].as(); + strcpy(pTime, doc["time"]); + + dtostrf(speedinconstanta,6,4,pSpeed); + // dtostrf(speedinconstanta,1,4,gSpeed); + // Serial.println(gsTime); } void handleConstantaHTML(AsyncWebServerRequest *request) { //PAGE.replace("%serveripaddress%", WiFi.localIP().toString()); @@ -2606,10 +2621,10 @@ void handleConstantaHTML(AsyncWebServerRequest *request) { PAGEROW.reserve(pageZiseConstRow); PAGE = FPSTR(HTML_CONSTHEADER); - char *xDist; - char *xSpeed; - char *xTime; - char *xsTime; + char xDist[8]; + char xSpeed[8]; + char xTime[8]; + char xsTime[8]; for (uint8_t i=65; i<(TRIPSIZE+65); i++){ PAGEROW = FPSTR(HTML_CONSTROW); PAGEROW.replace("%A%", String(char(i))); @@ -2620,7 +2635,8 @@ void handleConstantaHTML(AsyncWebServerRequest *request) { // Serial.println(PAGEROW); // Fill with data // Serial.print((uint32_t) xsTime);Serial.print(";");Serial.print((uint32_t) *xsTime);Serial.print(";");Serial.println((uint32_t) &xsTime); - getTripFromSPIFF(i, xDist, &xSpeed, &xTime, &xsTime); + // getTripFromSPIFF(i, xDist, &xSpeed, &xTime, &xsTime); + getTripFromSPIFF(i, xDist, xSpeed, xTime, xsTime); // Serial.print((uint32_t) xsTime);Serial.print(";");Serial.print((uint32_t) *xsTime);Serial.print(";");Serial.println((uint32_t) &xsTime); Serial.print(String(char(i)));Serial.print(";"); Serial.print(xDist);Serial.print(";"); @@ -2667,7 +2683,6 @@ void handlesetConst(AsyncWebServerRequest *request, JsonVariant &json){ } else { canSave = false; } - // const char* speed = data["speed"].as(); float speed = data["speed"].as(); float dist = data["dist"].as(); @@ -2796,7 +2811,7 @@ Trip[9].startSec = 58; #ifdef DEBUG Serial.println("Setting time"); #endif - DS3231_init(DS3231_CONTROL_INTCN); + DS3231_init(DS3231_CONTROL_INTCN); //0X4 address DS3231_get(&t); //Get time blinkON=false; @@ -2804,10 +2819,11 @@ Trip[9].startSec = 58; min60=t.min; hour24=t.hour; - delay(100); // delay for reading mem.read + //mainMenu(); printUPchar(); printDOWNchar(); + delay(100); // delay for reading mem.read count1 = memretrieveLong(count1Address, RRcountSIZE, count1Seq); //(int startaddress, byte RRsize, unsigned long seq) Serial.println(count1Seq); int countaddresspointer = count1count2diffAddress*32; @@ -2938,7 +2954,7 @@ Serial.println("calibration and constanta"); } Serial.print("try to connect to ssid:");Serial.print(ssid);Serial.print("; with pwd:");Serial.println(password); WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { + if (WiFi.waitForConnectResult(15000) != WL_CONNECTED) { Serial.println("WiFi Failed!"); //return; } @@ -4155,11 +4171,13 @@ void loop() //loop from VSS RALLY V2 break; } } - + gHasLcdClient=false; if (MENU==RALLY) { + gHasLcdClient=true; //to start the get DS3231 time if (((now1 - prevtemprally) >= tempintervalrally) && !isloadingConst) { //if ((long)(now1 - prevtemprally) >= 0) { testLoadTime=millis(); + //rallyMenu(); if (!rallyEdit) { iscalculatingRally=true; @@ -4169,14 +4187,15 @@ void loop() //loop from VSS RALLY V2 fillRallyLCDScreen(); iscalculatingRally=false; } - Serial.println(millis()-testLoadTime); + // Serial.println(millis()-testLoadTime); prevtemprally=now1; //prevtemprally+=tempintervalrally; } } - + if (MENU==SETTIME) { + gHasLcdClient=true; //if ((long)(now1 - prevtempint) >=0 ){ if ((now1 - prevtempint) >=tempinterval ){ temperature = DS3231_get_treg(); //Get temperature @@ -4193,7 +4212,7 @@ void loop() //loop from VSS RALLY V2 } //if ((long)(now1- prevsettime) >=0 ){ //show SET TIME MENU if ((now1 - prevsettime) >=intervalsettime ){ //show SET TIME MENU - DS3231_get(&t); //Get time + // DS3231_get(&t); //Get time if (prevsec!=t.sec) { //will update the LCD every sec(as long as the t.sec is different) eventhough intervalseetime is 250ms settimeMenu(); prevsettime = now1; @@ -4235,7 +4254,7 @@ void loop() //loop from VSS RALLY V2 else if (VSSCountDiff < 70) intervalsavemillis = 60000; else intervalsavemillis = 4000000; if (VSSCountDiff > 0) savedCount = false; - if ((MENU!=CALIBRATION && MENU!=MAIN && MENU!=CONSTANTA) || globalClientRally) { + if ((MENU!=CALIBRATION && MENU!=MAIN && MENU!=CONSTANTA) || gHasRallyClient) { // lcd.setCursor(0,0); /// if (VSSCountDiff==0) gVSSCountDiff='0';//lcd.print("0"); else if (VSSCountDiff <= 10) gVSSCountDiff='1';//lcd.print("1"); @@ -4266,7 +4285,7 @@ void loop() //loop from VSS RALLY V2 lcd.setCursor(x,y); } */ - if ((millis()-updatecounttime)>=250) { + if ((millis()-updatecounttime)>=50) { // if ((millis()-updatecounttime)>=250) { updateCount(); updatecounttime = millis(); @@ -4281,20 +4300,20 @@ void loop() //loop from VSS RALLY V2 startsavemillis = millis(); } - if ((MENU==RALLY || globalClientRally) && ((now1 - prevCalculatingRallyMillis)>=calculatingRallyMillis)){ + if ((MENU==RALLY || gHasRallyClient) && ((now1 - prevCalculatingRallyMillis)>=calculatingRallyMillis)){ if(semaphoreS){ prevCalculatingRallyMillis=millis(); - Serial.println("St calculationRally()"); + // Serial.println("St calculationRally()"); semaphoreS=false; calculationRally(); - Serial.print("end calculationRally() in:");Serial.println(millis()-prevCalculatingRallyMillis); + // Serial.print("end calculationRally() in:");Serial.println(millis()-prevCalculatingRallyMillis); prevCalculatingRallyMillis=now1; semaphoreS=true; } } - if ((millis()-broadcastwebsocket) > 330 && !isloadingConst && globalClientRally) { + if ((millis()-broadcastwebsocket) > 330 && !isloadingConst && gHasRallyClient) { broadcastwebsocket = micros(); iscalculatingRally=true; // calculationRally(); @@ -4307,20 +4326,25 @@ void loop() //loop from VSS RALLY V2 broadcastwebsocket = millis(); } - if ((millis()-timerWebsocketCalibration) > 499 && !isloadingConst && globalClientCalib) { + if ((millis()-timerWebsocketCalibration) > 499 && !isloadingConst && gHasCalibClient) { timerWebsocketCalibration = millis(); - // if (globalClientCalib) { + // if (gHasCalibClient) { redrawcalibrationMenuForESP32(); wscal.textAll(strCalibJson); // } } - if ((millis()-timerWebsocketSetTime) > 1000 && globalClientSetTime) { + if ((millis()-timerWebsocketSetTime) > 450 && gHasSetTimeClient) { timerWebsocketSetTime = millis(); fillSetTimeJsonForESP32(); wssettime.textAll(strSetTimeJson); } + if ((millis()-timerDS3231Get) > 500 && (gHasCalibClient || gHasRallyClient || gHasSetTimeClient || gHasLcdClient)) { + timerDS3231Get = millis(); + DS3231_get(&t); + // Serial.println(""); + } if(!isloadingConst){ for (int i=(REQUESTCOUNT-1); i>=0; i--){ // for (int i=0; i