diff --git a/fan_control/data/index.html b/fan_control/data/index.html
index 7c4a26d..15554c6 100644
--- a/fan_control/data/index.html
+++ b/fan_control/data/index.html
@@ -16,20 +16,24 @@
Monthly
diff --git a/fan_control/include/collector.hpp b/fan_control/include/collector.hpp
index 6ac1e0f..5a8b198 100644
--- a/fan_control/include/collector.hpp
+++ b/fan_control/include/collector.hpp
@@ -8,20 +8,29 @@ void collector_setup();
void collector_loop();
+#define WEEK 1500
+#define MONTH 750
+
class Collector
{
protected:
- float week_in[1500]; // 10 per hour, 1 week
+ float week_in[WEEK]; // 10 per hour, 1 week
float week_out[1500]; // 10 per hour, 1 week
float month_in[750]; // 1 per hour, about a month
float month_out[750]; // 1 per hour, about a month
float minute = 0 ;
int counter = 0;
- int bucket = 30; // sampling every 2 sec
+
+ String one_week( float[] );
+ String one_month( float[] );
+
public:
+ const int bucket = 30; // sampling every 2 sec
void add(float in , float out) ;
-
+ String week_data();
+ String month_data();
+
};
extern Collector collector;
diff --git a/fan_control/src/collector.cpp b/fan_control/src/collector.cpp
index f9cd017..151c2a4 100644
--- a/fan_control/src/collector.cpp
+++ b/fan_control/src/collector.cpp
@@ -26,11 +26,13 @@ void collector_setup(){
// Initialize device.
dht_in.begin();
dht_out.begin();
+ for( int a = 0; a < 4* WEEK*collector.bucket ; a = a + 1 ) {
+ collector.add( random(10, 30) , random(10 , 30) );
+ }
}
void collector_loop(){
delay(delayMS);
- collector.add(1 , 2);
// Get temperature event and print its value.
Serial.print(F("Temperature inside: "));
@@ -41,18 +43,48 @@ void collector_loop(){
Serial.println("°C");
}
- void Collector::add(float in , float out)
- {
- minute += in;
- counter++ ;
- if(counter % bucket){
- int at_week = counter / bucket;
- week_in[at_week] = minute / bucket;
- minute = 0;
- }
- if(counter % (bucket*bucket)){
- int at_week = counter / bucket;
- month_in[at_week] = minute / bucket;
- counter = 0;
- }
+void Collector::add(float in , float out)
+{
+ minute += in;
+ counter++ ;
+ if(counter % bucket){
+ int at_week = counter / bucket;
+ week_in[at_week] = minute / bucket;
+ minute = 0;
}
+ if(counter % (bucket*bucket)){
+ int at_week = counter / bucket;
+ month_in[at_week] = minute / bucket;
+ counter = 0;
+ }
+}
+
+String Collector::one_week(float week[]){
+ String data = "[";
+ data += week[0];
+ for( int a = 1; a < WEEK ; a = a + 1 ) {
+ data += "," ;
+ data += week[a] ;
+ }
+ return data + "]";
+}
+
+String Collector::week_data(){
+ String data = "[";
+ return data + one_week(week_in) + "," + one_week(week_out) + "]";
+}
+
+String Collector::one_month(float month[]){
+ String data = "[";
+ data += month[0];
+ for( int a = 1; a < MONTH ; a = a + 1 ) {
+ data += "," ;
+ data += month[a] ;
+ }
+ return data + "]";
+}
+
+String Collector::month_data(){
+ String data = "[";
+ return data + one_month(month_in) + "," + one_month(month_out) + "]";
+}
diff --git a/fan_control/src/server.cpp b/fan_control/src/server.cpp
index a87aa0d..dc0de89 100644
--- a/fan_control/src/server.cpp
+++ b/fan_control/src/server.cpp
@@ -1,4 +1,5 @@
#include "server.hpp"
+#include "collector.hpp"
#include
#define DBG_OUTPUT_PORT Serial
@@ -37,38 +38,23 @@ bool handleFileRead(String path ){
return false;
}
-void handleHours(){
-
+void getWeekly() {
+ Serial.println("Weekly start");
+ String data = collector.week_data();
+ Serial.println("Weekly end");
+ server.send(200, "text/html", data);
}
-
-int LDRPin = A0;
-int LDRReading = 0;
-
-int milisInterval = 2000;
-int count = 0;
-
-void getData() {
- //This is a JSON formatted string that will be served. You can change the values to whatever like.
- // {"data":[{"dataValue":"1024"},{"dataValue":"23"}]} This is essentially what is will output you can add more if you like
- Serial.println("Data start");
- LDRReading = analogRead(LDRPin);
- String text2 = "{\"data\":[";
- text2 += "{\"dataValue\":\"";
- text2 += "LDRReading";
- text2 += "\"},";
- text2 += "{\"dataValue\":\"";
- text2 += "count";
- text2 += "\"}";
- text2 += "]}";
- Serial.println("Data end");
- server.send(200, "text/html", text2);
- count++;
+void getMonthly() {
+ Serial.println("Monthly start");
+ String data = collector.month_data();
+ Serial.println("Monthly end");
+ server.send(200, "text/html", data);
}
void server_setup(){
LittleFS.begin();
- server.on("/data", getData);
- server.on("/hour", handleHours);
+ server.on("/weekly", getWeekly);
+ server.on("/monthly", getMonthly);
server.begin();
Serial.println("HTTP server started");