From c47116af892943a4fd84f0d066c9f5f2d3fda405 Mon Sep 17 00:00:00 2001 From: klaute Date: Sun, 24 Jun 2018 16:54:57 +0200 Subject: [PATCH] Main loop timing optimized. --- firmware/config.h | 4 +++- firmware/firmware.ino | 44 +++++++++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/firmware/config.h b/firmware/config.h index c3b087d..2bc773e 100755 --- a/firmware/config.h +++ b/firmware/config.h @@ -7,7 +7,9 @@ #define SENSOR_WINDSPEED 3 #define SENSOR_PRESSURE 4 -#define UPDATE_INTERVAL 4 +#define UPDATE_SENSOR_INTERVAL_S 10 +#define UPDATE_WEBSERVER_INTVERVAL_S 1 +#define DELAY_LOOP_MS 50 #define STATUS_LED_PIN BUILTIN_LED #define ANEMOMETER_PIN D7 diff --git a/firmware/firmware.ino b/firmware/firmware.ino index aabe8d5..6d54c60 100755 --- a/firmware/firmware.ino +++ b/firmware/firmware.ino @@ -35,6 +35,9 @@ float currentSensorData[5] = {0.0, 0.0, 0.0, 0.0, 0.0}; +uint16_t update_sensor_cnt = 0; +uint16_t update_webserver_cnt = 0; + WiFiManager wifiManager; Influxdb influxdb(INFLUXDB_HOST, INFLUXDB_PORT); Adafruit_APDS9960 apds; @@ -93,33 +96,42 @@ void setup() { void loop() { - doWebUpdater(); + if (UPDATE_WEBSERVER_INTVERVAL_S * 1000 / DELAY_LOOP_MS <= update_webserver_cnt) { + update_webserver_cnt = 0; + doWebUpdater(); + } #ifdef DEBUG digitalWrite(STATUS_LED_PIN, HIGH); #endif - currentSensorData[SENSOR_TEMPERATURE] = fetchTemperature(); - currentSensorData[SENSOR_HUMIDITY] = fetchHumidity(); - currentSensorData[SENSOR_LIGHT] = fetchLight(); - currentSensorData[SENSOR_WINDSPEED] = fetchWindspeed(); - currentSensorData[SENSOR_PRESSURE] = fetchPressure(); + if (UPDATE_SENSOR_INTERVAL_S * 1000 / DELAY_LOOP_MS <= update_sensor_cnt) { + update_sensor_cnt = 0; + currentSensorData[SENSOR_TEMPERATURE] = fetchTemperature(); + currentSensorData[SENSOR_HUMIDITY] = fetchHumidity(); + currentSensorData[SENSOR_LIGHT] = fetchLight(); + currentSensorData[SENSOR_WINDSPEED] = fetchWindspeed(); + currentSensorData[SENSOR_PRESSURE] = fetchPressure(); + #ifdef DEBUG - Serial.println(""); - //Serial.println("Current readings:"); - Serial.println("Temperature: " + String(currentSensorData[SENSOR_TEMPERATURE]) + " °C"); - Serial.println("Humidity: " + String(currentSensorData[SENSOR_HUMIDITY]) + " %"); - Serial.println("Light: " + String(currentSensorData[SENSOR_LIGHT]) + " Lumen"); - Serial.println("Windspeed: " + String(currentSensorData[SENSOR_WINDSPEED]) + " km/h"); - Serial.println("Pressure: " + String(currentSensorData[SENSOR_PRESSURE]) + " hPa"); + Serial.println(""); + //Serial.println("Current readings:"); + Serial.println("Temperature: " + String(currentSensorData[SENSOR_TEMPERATURE]) + " °C"); + Serial.println("Humidity: " + String(currentSensorData[SENSOR_HUMIDITY]) + " %"); + Serial.println("Light: " + String(currentSensorData[SENSOR_LIGHT]) + " Lumen"); + Serial.println("Windspeed: " + String(currentSensorData[SENSOR_WINDSPEED]) + " km/h"); + Serial.println("Pressure: " + String(currentSensorData[SENSOR_PRESSURE]) + " hPa"); #endif - pushToInfluxDB(DEVICE_NAME, currentSensorData); + pushToInfluxDB(DEVICE_NAME, currentSensorData); + } //ESP.deepSleep(UPDATE_INTERVAL * 1000000); //delay(100); - delay(UPDATE_INTERVAL * 1000); - /**/ + delay(DELAY_LOOP_MS); + + update_sensor_cnt++; + update_webserver_cnt++; } //*************************************************************************//