diff --git a/firmware/constants.h b/firmware/constants.h index 6710d2e..19da869 100644 --- a/firmware/constants.h +++ b/firmware/constants.h @@ -11,6 +11,7 @@ #define SENSOR_ESAVEMODE 6 #define SENSOR_BATCHARGESTATE 7 + #define BAT_CHARGE_STATE_CHARGED 2.0 #define BAT_CHARGE_STATE_CHARGING 1.0 #define BAT_CHARGE_STATE_NOTCHARGING 0.0 diff --git a/firmware/firmware.ino b/firmware/firmware.ino index 6aec510..fbc636a 100644 --- a/firmware/firmware.ino +++ b/firmware/firmware.ino @@ -26,7 +26,7 @@ //*************************************************************************// // constant variables -const uint8_t VALUES = 8; +const uint8_t VALUES = 8; // see constants.h file - count of number of SENSOR_ defines float currentSensorData[VALUES] = {nanf("no value"), nanf("no value"), nanf("no value"), nanf("no value"), nanf("no value"), nanf("no value"), nanf("no value"), nanf("no value")}; float (*sensors[VALUES])() = {}; @@ -34,6 +34,8 @@ uint16_t update_sensor_cnt = 0; uint16_t update_webserver_cnt = 0; uint16_t update_windspeed_exceed_cnt = 0; +boolean validData = false; + WiFiManager wifiManager; //*************************************************************************// @@ -317,7 +319,20 @@ void _loop() delay(100); #ifdef INFLUXDB_FEATURE - pushToInfluxDB(DEVICE_NAME, currentSensorData); + + for (uint8_t i = 0; i < 5 and validData == false; i++) + { + if (currentSensorData[i] != 0) + { + validData = true; // at least one value is not zero, the data + } + } + + if (validData == true) + { + // send data only if valid data is available + pushToInfluxDB(DEVICE_NAME, currentSensorData); + } #endif #ifdef WEBUPDATER_FEATURE diff --git a/firmware/webUpdater.ino b/firmware/webUpdater.ino index b2a336e..932c8b3 100644 --- a/firmware/webUpdater.ino +++ b/firmware/webUpdater.ino @@ -30,8 +30,11 @@ String hb_ws_msg_light = "\"lightlevel\": "; String hb_ws_msg_windspeed = "\"windspeed\": "; String hb_ws_msg_pressure = "\"pressure\": "; String hb_ws_msg_timestamp = "\"timestamp\": "; +String hb_ws_msg_valid = "\"valid\": "; String hb_ws_msg_end = "}"; +boolean wuValidData = false; + void setupWebUpdater(String device, String ip) { debug("Starting WebUpdater... " + ip); @@ -62,6 +65,15 @@ void doWebUpdater(void) void setSensorData(float sensorValues[]) { + + for (uint8_t i = 0; i < 5 and wuValidData == false; i++) + { + if (_webUpdater_sensValues[i] != 0) + { + wuValidData = true; // at least one value is not zero, the data + } + } + for (uint8_t i = 0; i < VALUES; i++) { _webUpdater_sensValues[i] = sensorValues[i]; } @@ -69,6 +81,7 @@ void setSensorData(float sensorValues[]) void showHTMLMain(void) { + String message = "OKO Weatherstation - " + String(_webUpdater_dev) + "" "" "" @@ -81,6 +94,7 @@ void showHTMLMain(void) "pressure" + String(_webUpdater_sensValues[SENSOR_PRESSURE]) + "" "batvoltage" + String(_webUpdater_sensValues[SENSOR_BAT_VOLTAGE]) + "" "millis" + String(millis()) + "" +"valid" + String(wuValidData) + "" "" ""; @@ -107,6 +121,9 @@ void hb_webstat_send(void) ", " + hb_ws_msg_timestamp + String(millis()) + + ", " + + hb_ws_msg_valid + + String(wuValidData) + hb_ws_msg_end; httpServer.send(200, "text/html", msg);