From 9dd90841a53bb0bc02722d8d8b1430da1a44eba5 Mon Sep 17 00:00:00 2001 From: klaute Date: Wed, 11 Jul 2018 11:49:58 +0200 Subject: [PATCH] Frickelt in a sensor status page. --- firmware/firmware.ino | 13 +++++++++++-- firmware/webUpdater.ino | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/firmware/firmware.ino b/firmware/firmware.ino index c602082..487a3bd 100644 --- a/firmware/firmware.ino +++ b/firmware/firmware.ino @@ -43,6 +43,8 @@ Influxdb influxdb(INFLUXDB_HOST, INFLUXDB_PORT); Adafruit_APDS9960 apds; Adafruit_BME280 bme; +String localIP = "127.0.0.1"; + //*************************************************************************// void setup() { @@ -89,6 +91,8 @@ void setup() { setupWebUpdater(); + localIP = WiFi.localIP().toString(); + delay(100); digitalWrite(STATUS_LED_PIN, LOW); @@ -115,7 +119,11 @@ void loop() { currentSensorData[SENSOR_WINDSPEED] = fetchWindspeed(); currentSensorData[SENSOR_PRESSURE] = fetchPressure(); currentSensorData[SENSOR_BAT_VOLTAGE] = getBatteryVoltage(); - + + if (currentSensorData[SENSOR_BAT_VOLTAGE] <= 3.7) + { + ESP.deepSleep(4294967295); // battery low, shutting down + } #ifdef DEBUG Serial.println(""); //Serial.println("Current readings:"); @@ -128,9 +136,10 @@ void loop() { #endif pushToInfluxDB(DEVICE_NAME, currentSensorData); + setSensorData(DEVICE_NAME, localIP, currentSensorData); } - //ESP.deepSleep(UPDATE_INTERVAL * 1000000); + //ESP.deepSleep(DELAY_LOOP_MS * 1000); // the ESP.deepSleep requires microseconds as input, after the sleep the system will run into the setup routine //delay(100); delay(DELAY_LOOP_MS); diff --git a/firmware/webUpdater.ino b/firmware/webUpdater.ino index 48a5da0..ee85d61 100644 --- a/firmware/webUpdater.ino +++ b/firmware/webUpdater.ino @@ -14,6 +14,10 @@ ESP8266WebServer httpServer(8080); ESP8266HTTPUpdateServer httpUpdater; +String ip = "127.0.0.1"; +String dev = "unknown"; +float sensValues[6]; + void setupWebUpdater(void) { #ifdef DEBUG @@ -22,6 +26,9 @@ void setupWebUpdater(void) #endif httpUpdater.setup(&httpServer); + + httpServer.on("/", showHTMLMain); // oko specific site + httpServer.begin(); #ifdef DEBUG @@ -34,4 +41,29 @@ void doWebUpdater(void) digitalWrite(D0, HIGH); httpServer.handleClient(); } + +void setSensorData(String device, String localip, float sensorValues[]) { + dev = device; + ip = localip; + for (uint8_t i = 0; i < 7; i++) + { + sensValues[i] = sensorValues[i]; + } +} + +void showHTMLMain(void) { + String message = "OKO Weatherstation - " + String(dev) + "" +"
firmware update

" +"" +"" +"" +"" +"" +"" +""; +"
temperature" + String(sensValues[SENSOR_TEMPERATURE]) + "
humidity=" + String(sensValues[SENSOR_HUMIDITY]) + "
light=" + String(sensValues[SENSOR_LIGHT]) + "
windspeed=" + String(sensValues[SENSOR_WINDSPEED]) + "
pressure=" + String(sensValues[SENSOR_PRESSURE]) + "
batvoltage=" + String(sensValues[SENSOR_BAT_VOLTAGE]) + "
" +""; + + httpServer.send(200, "text/html", message); +}