|
@@ -17,29 +17,25 @@ Timer procTimer;
|
|
Timer displayTimer;
|
|
Timer displayTimer;
|
|
|
|
|
|
bool state = false;
|
|
bool state = false;
|
|
-// Sensors string values
|
|
|
|
-String StrT, StrRH, StrHI, StrCR, StrCF;
|
|
|
|
-String oldStrTime, StrTime;
|
|
|
|
-String StrVDD, StrADC;
|
|
|
|
|
|
+// Sensors values
|
|
|
|
+float SensorT, SensorH, SensorHI, SensorCR;
|
|
|
|
+String StrCF;
|
|
|
|
+// Time values
|
|
|
|
+String oldStrTime, StrTime, StrTimeLastUpdate;
|
|
|
|
+//String StrVDD, StrADC;
|
|
|
|
|
|
// date and time
|
|
// date and time
|
|
uint16_t Year, Month, Day, Hour, Minute, Second;
|
|
uint16_t Year, Month, Day, Hour, Minute, Second;
|
|
|
|
|
|
-Timer httpcTimer;
|
|
|
|
-HttpClient thingSpeak;
|
|
|
|
-
|
|
|
|
/* FTPServer ftp; */
|
|
/* FTPServer ftp; */
|
|
|
|
|
|
void process();
|
|
void process();
|
|
-//void showValues();
|
|
|
|
void connectOk();
|
|
void connectOk();
|
|
void connectFail();
|
|
void connectFail();
|
|
-void onDataSent(HttpClient& client, bool successful);
|
|
|
|
-void sendData();
|
|
|
|
void onNtpReceive(NtpClient& client, time_t timestamp);
|
|
void onNtpReceive(NtpClient& client, time_t timestamp);
|
|
void showTime();
|
|
void showTime();
|
|
|
|
|
|
-NtpClient ntpClient ("ntps1-0.cs.tu-berlin.de", 60, onNtpReceive);
|
|
|
|
|
|
+NtpClient ntpClient ("ntps1-0.cs.tu-berlin.de", 300, onNtpReceive);
|
|
|
|
|
|
|
|
|
|
void init()
|
|
void init()
|
|
@@ -54,11 +50,7 @@ void init()
|
|
|
|
|
|
// Select control line
|
|
// Select control line
|
|
pinMode(CONTROL_PIN, OUTPUT);
|
|
pinMode(CONTROL_PIN, OUTPUT);
|
|
- digitalWrite(CONTROL_PIN, LOW);
|
|
|
|
-
|
|
|
|
- // Restart main screen output
|
|
|
|
-// procTimer.restart();
|
|
|
|
-// serialTimer.stop();
|
|
|
|
|
|
+ PinRes(CONTROL_PIN);
|
|
|
|
|
|
//wait for sensor startup
|
|
//wait for sensor startup
|
|
delay(1000);
|
|
delay(1000);
|
|
@@ -139,60 +131,58 @@ void showTime()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * ×èòàåì è äàííûå ñ DHT22, â ñëó÷àå íåóäà÷è -- äàííûå îñòàíóòüñÿ ñòàðìè.
|
|
|
|
+ * ìåíÿ ýòî ïîëíîñòüþ óñòðàèâàåò.
|
|
|
|
+ */
|
|
void process()
|
|
void process()
|
|
{
|
|
{
|
|
- float t = dht.readTemperature() + ActiveConfig.AddT;
|
|
|
|
- float h = dht.readHumidity() + ActiveConfig.AddRH;
|
|
|
|
- float hi = dht.getHeatIndex();
|
|
|
|
|
|
+ PinSet(CONTROL_PIN); // DEBUG
|
|
|
|
+ TempAndHumidity th;
|
|
ComfortState cf;
|
|
ComfortState cf;
|
|
- float cr = dht.getComfortRatio(cf);
|
|
|
|
-
|
|
|
|
- if (ActiveConfig.Trigger == eTT_Temperature)
|
|
|
|
- state = t < ActiveConfig.RangeMin || t > ActiveConfig.RangeMax;
|
|
|
|
- else if (ActiveConfig.Trigger == eTT_Humidity)
|
|
|
|
- state = h < ActiveConfig.RangeMin || h > ActiveConfig.RangeMax;
|
|
|
|
-
|
|
|
|
- digitalWrite(CONTROL_PIN, state);
|
|
|
|
- StrT = String(t, 0);
|
|
|
|
- StrRH = String(h, 0);
|
|
|
|
- StrHI = String(hi, 0);
|
|
|
|
- StrCR = String(cr, 0);
|
|
|
|
- switch(cf)
|
|
|
|
|
|
+
|
|
|
|
+ if(dht.readTempAndHumidity(th))
|
|
{
|
|
{
|
|
- case Comfort_OK:
|
|
|
|
- StrCF = "OK";
|
|
|
|
- break;
|
|
|
|
- case Comfort_TooHot:
|
|
|
|
- StrCF = "Too Hot";
|
|
|
|
- break;
|
|
|
|
- case Comfort_TooCold:
|
|
|
|
- StrCF = "Too Cold";
|
|
|
|
- break;
|
|
|
|
- case Comfort_TooDry:
|
|
|
|
- StrCF = "Too Dry";
|
|
|
|
- break;
|
|
|
|
- case Comfort_TooHumid:
|
|
|
|
- StrCF = "Too Humid";
|
|
|
|
- break;
|
|
|
|
- case Comfort_HotAndHumid:
|
|
|
|
- StrCF = "Hot And Humid";
|
|
|
|
- break;
|
|
|
|
- case Comfort_HotAndDry:
|
|
|
|
- StrCF = "Hot And Dry";
|
|
|
|
- break;
|
|
|
|
- case Comfort_ColdAndHumid:
|
|
|
|
- StrCF = "Cold And Humid";
|
|
|
|
- break;
|
|
|
|
- case Comfort_ColdAndDry:
|
|
|
|
- StrCF = "Cold And Dry";
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- StrCF = "Unknown";
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ SensorT = th.temp;
|
|
|
|
+ SensorH = th.humid;
|
|
|
|
+ SensorHI = dht.getHeatIndex();
|
|
|
|
+ SensorCR = dht.getComfortRatio(cf);
|
|
|
|
|
|
- StrADC = String(system_adc_read());
|
|
|
|
- StrVDD = String(system_get_vdd33());
|
|
|
|
|
|
+ switch(cf)
|
|
|
|
+ {
|
|
|
|
+ case Comfort_OK:
|
|
|
|
+ StrCF = "OK";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_TooHot:
|
|
|
|
+ StrCF = "Too Hot";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_TooCold:
|
|
|
|
+ StrCF = "Too Cold";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_TooDry:
|
|
|
|
+ StrCF = "Too Dry";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_TooHumid:
|
|
|
|
+ StrCF = "Too Humid";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_HotAndHumid:
|
|
|
|
+ StrCF = "Hot And Humid";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_HotAndDry:
|
|
|
|
+ StrCF = "Hot And Dry";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_ColdAndHumid:
|
|
|
|
+ StrCF = "Cold And Humid";
|
|
|
|
+ break;
|
|
|
|
+ case Comfort_ColdAndDry:
|
|
|
|
+ StrCF = "Cold And Dry";
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ StrCF = "Unknown";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ PinRes(CONTROL_PIN); // DEBUG
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -207,14 +197,10 @@ void startFTP()
|
|
|
|
|
|
void connectOk()
|
|
void connectOk()
|
|
{
|
|
{
|
|
-// debugf("connected");
|
|
|
|
WifiAccessPoint.enable(false);
|
|
WifiAccessPoint.enable(false);
|
|
Serial.print("I'm connecteed. IP: ");
|
|
Serial.print("I'm connecteed. IP: ");
|
|
Serial.println(WifiStation.getIP().toString());
|
|
Serial.println(WifiStation.getIP().toString());
|
|
|
|
|
|
- // Start send data loop
|
|
|
|
- httpcTimer.initializeMs(60 * 1000, sendData).start(); // every 60 seconds
|
|
|
|
-
|
|
|
|
startWebServer();
|
|
startWebServer();
|
|
|
|
|
|
/* startFTP(); */
|
|
/* startFTP(); */
|
|
@@ -225,7 +211,6 @@ void connectOk()
|
|
*/
|
|
*/
|
|
void connectFail()
|
|
void connectFail()
|
|
{
|
|
{
|
|
-// debugf("connection FAILED");
|
|
|
|
WifiAccessPoint.config("MeteoConfig", "", AUTH_OPEN);
|
|
WifiAccessPoint.config("MeteoConfig", "", AUTH_OPEN);
|
|
WifiAccessPoint.enable(true);
|
|
WifiAccessPoint.enable(true);
|
|
// Stop main screen output
|
|
// Stop main screen output
|
|
@@ -240,40 +225,11 @@ void connectFail()
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Îòïðàâêà äàííûõ íà âíåøíèé ñåðâåð
|
|
|
|
- */
|
|
|
|
-void onDataSent(HttpClient& client, bool successful)
|
|
|
|
-{
|
|
|
|
- if (successful)
|
|
|
|
- Serial.println("Success sent");
|
|
|
|
- else
|
|
|
|
- Serial.println("Failed");
|
|
|
|
-
|
|
|
|
- String response = client.getResponseString();
|
|
|
|
- Serial.println("Server response: '" + response + "'");
|
|
|
|
- if (response.length() > 0)
|
|
|
|
- {
|
|
|
|
- int intVal = response.toInt();
|
|
|
|
-
|
|
|
|
- if (intVal == 0)
|
|
|
|
- Serial.println("Sensor value wasn't accepted. May be we need to wait a little?");
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void sendData()
|
|
|
|
-{
|
|
|
|
- // We need to wait while request processing was completed
|
|
|
|
- if (thingSpeak.isProcessing()) return;
|
|
|
|
-
|
|
|
|
- thingSpeak.downloadString("http://api.thingspeak.com/update?key=26WYU9LJCBC3AE1X&field1=" + StrT + "&field2=" + StrRH + "&field3=" + StrHI, onDataSent);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- * NTP
|
|
|
|
|
|
+ * NTP Client
|
|
*/
|
|
*/
|
|
void onNtpReceive(NtpClient& client, time_t timestamp) {
|
|
void onNtpReceive(NtpClient& client, time_t timestamp) {
|
|
SystemClock.setTime(timestamp, eTZ_UTC);
|
|
SystemClock.setTime(timestamp, eTZ_UTC);
|
|
-
|
|
|
|
- Serial.println("*** Time synchronized! ***");
|
|
|
|
-// Serial.println(SystemClock.getSystemTimeString());
|
|
|
|
|
|
+ StrTimeLastUpdate = SystemClock.getSystemTimeString();
|
|
|
|
+ Serial.println("*** Time synchronized OK! ***"); // DEBUG
|
|
|
|
+ Serial.println(SystemClock.now()); // DEBUG
|
|
}
|
|
}
|