Browse Source

Переделал обработку времени.

Vladimir N. Shilov 9 years ago
parent
commit
97d3dde3c8
3 changed files with 39 additions and 64 deletions
  1. 30 46
      app/application.cpp
  2. 8 7
      app/webserver.cpp
  3. 1 11
      web/index.html

+ 30 - 46
app/application.cpp

@@ -13,19 +13,13 @@
 DHT dht(DHT_PIN, DHT22);
 
 Timer procTimer;
-//Timer serialTimer;
 Timer displayTimer;
 
-bool state = false;
 // Sensors values
 float SensorT, SensorH, SensorHI, SensorCR;
 String StrCF;
 // Time values
-String oldStrTime, StrTime, StrTimeLastUpdate;
-//String StrVDD, StrADC;
-
-// date and time
-uint16_t Year, Month, Day, Hour, Minute, Second;
+time_t Time, NTPLastUpdate;
 
 /* FTPServer ftp; */
 
@@ -79,48 +73,41 @@ void init()
 
 void showTime()
 {
-	static uint16_t oldHour, oldMinute;
+	static int8_t oldHour, oldMinute;
+	static time_t oldTime;
+	DateTime dt;
+	int16_t *year;
 
-	StrTime = SystemClock.getSystemTimeString();
+	Time = SystemClock.now();
 
-	if (oldStrTime != StrTime)
+	if (oldTime != Time)
 	{
-		Vector<String> datetime;
-		int idx = splitString(StrTime, ' ' , datetime);
-		if (idx == 2)
-		{
-			// date
-			Vector<String> date;
-			int di = splitString(datetime[0], '-', date);
-			if(di == 3)
-			{
-				Year = date[0].toInt();
-				Month = date[1].toInt();
-				Day = date[2].toInt();
-			}
-			// time
-			Vector<String> time;
-			int ti = splitString(datetime[1], ':', time);
-			if(ti == 3)
-			{
-				Hour = time[0].toInt();
-				Minute = time[1].toInt();
-				Second = time[2].toInt();
-			}
-		}
+		oldTime = Time;
+		dt.setTime(Time);
+
+		/*
+		 * òåïåðü â dt ó íàñ ñëåäóþùåå:
+		 * 	int8_t Hour;
+		 * 	int8_t Minute;
+		 * 	int8_t Second;
+		 * 	int16_t Milliseconds;
+		 * 	int8_t Day;
+		 * 	int8_t DayofWeek; -- Sunday is day 0
+		 * 	int8_t Month; // Jan is month 0
+		 * 	int16_t Year;  // Full Year numer
+		 */
 
-		oldStrTime = StrTime;
 		MAX7219_writeData(MAX7219_DIGIT2, SYM_Minus);
-		if (oldMinute != Minute)
+		if (oldMinute != dt.Minute)
 		{
-			oldMinute = Minute;
-			MAX7219_writeData(MAX7219_DIGIT3, Minute/10);
-			MAX7219_writeData(MAX7219_DIGIT4, Minute%10);
-			if (oldHour != Hour)
+			oldMinute = dt.Minute;
+			MAX7219_writeData(MAX7219_DIGIT3, dt.Minute/10);
+			MAX7219_writeData(MAX7219_DIGIT4, dt.Minute%10);
+			if (oldHour != dt.Hour)
 			{
-				oldHour = Hour;
-				MAX7219_writeData(MAX7219_DIGIT0, Hour/10);
-				MAX7219_writeData(MAX7219_DIGIT1, Hour%10);
+				oldHour = dt.Hour;
+				MAX7219_writeData(MAX7219_DIGIT0, dt.Hour/10);
+				MAX7219_writeData(MAX7219_DIGIT1, dt.Hour%10);
 			}
 		}
 	}
@@ -137,7 +124,6 @@ void showTime()
  */
 void process()
 {
-	PinSet(CONTROL_PIN); // DEBUG
 	TempAndHumidity th;
 	ComfortState cf;
 
@@ -182,7 +168,6 @@ void process()
 			break;
 		}
 	}
-	PinRes(CONTROL_PIN); // DEBUG
 }
 
 /*
@@ -229,7 +214,6 @@ void connectFail()
  */
 void onNtpReceive(NtpClient& client, time_t timestamp) {
 	SystemClock.setTime(timestamp, eTZ_UTC);
-	StrTimeLastUpdate = SystemClock.getSystemTimeString();
+	NTPLastUpdate = SystemClock.now();
 	Serial.println("*** Time synchronized OK! ***"); // DEBUG
-	Serial.println(SystemClock.now()); // DEBUG
 }

+ 8 - 7
app/webserver.cpp

@@ -8,7 +8,8 @@ bool serverStarted = false;
 HttpServer server;
 
 extern float SensorT, SensorH, SensorHI, SensorCR;
-extern String StrCF, StrTimeLastUpdate; // Sensors values
+extern String StrCF;
+extern time_t NTPLastUpdate;
 
 /*
  * Index page.
@@ -22,11 +23,10 @@ void onIndex(HttpRequest &request, HttpResponse &response)
 	vars["RH"] = String(SensorH, 0);
 	vars["HI"] = String(SensorHI, 0);
 	vars["CR"] = String(SensorCR, 0);
-	vars["CF"] = StrCF; // ïîõîæå ýòî åäèíñòâåííîå ìåñòî, ãäå îíî èñïîëüçóåòñÿ
+	vars["CF"] = StrCF; // ýòî ïåðâîå ìåñòî, ãäå îíî èñïîëüçóåòñÿ
 	vars["ADC"] = String(system_adc_read());
 	vars["VDD"] = String(system_get_vdd33());
-	vars["TIME"] = SystemClock.getSystemTimeString();
-	vars["LASTNTP"] = StrTimeLastUpdate;
+	vars["LASTNTP"] = String(SystemClock.now() - NTPLastUpdate);
 	response.sendTemplate(tmpl);
 }
 
@@ -117,11 +117,12 @@ void onApiSensors(HttpRequest &request, HttpResponse &response)
 	sensors["humidity"] = String(SensorH, 2);
 	sensors["heatindex"] = String(SensorHI, 2);
 	sensors["comfortp"] = String(SensorCR, 2);
-	sensors["comforts"] = StrCF.c_str(); // àãà, åù¸ òóò :-)
+	sensors["comforts"] = StrCF.c_str(); // âòîðîå ìåñòî
 	sensors["adcvalue"] = String(system_adc_read());
 	sensors["vddvalue"] = String(system_get_vdd33());
-	sensors["datetime"] = SystemClock.getSystemTimeString();
-	sensors["lastntp"] = StrTimeLastUpdate.c_str();
+	time_t now = SystemClock.now();
+	sensors["datetime"] = String(now);
+	sensors["lastntp"] = String(now - NTPLastUpdate);
 	response.sendJsonObject(stream);
 }
 

+ 1 - 11
web/index.html

@@ -89,23 +89,13 @@
 				</div>
 			  </div>
 			</div>
-			<div class="col-xs-10 col-md-5">
-			  <div class="panel panel-default">
-				<div class="panel-heading">
-				  <h3 class="panel-title">SystemTime</h3>
-				</div>
-				<div class="panel-body">
-				  <h1 class="text-center main">{TIME}</h1>
-				</div>
-			  </div>
-			</div>
 			<div class="col-xs-10 col-md-5">
 			  <div class="panel panel-default">
 				<div class="panel-heading">
 				  <h3 class="panel-title">Last NTP Update</h3>
 				</div>
 				<div class="panel-body">
-				  <h1 class="text-center main">{LASTNTP}</h1>
+				  <h1 class="text-center main">{LASTNTP} seconds ago</h1>
 				</div>
 			  </div>
 			</div>