#include #include #include #include #include "config.h" /** * Whishlist: * - Push sensor values to influxdb * - Webserver for /metrics endpoint (Prometheus) * - Show current sensor values over simple webpage * - Push sensor values to various 3rd party services (https://openweathermap.org/) * - MQTT? * * - Buffer sensor values if there is no WIFI connection * - Configure weather station over http webinterface * - OTA firmware update * * TODO: * - https://sminghub.github.io/Sming/about/ * - https://github.com/marvinroger/homie-esp8266 */ float currentSensorData[4] = {0.0, 0.0, 0.0, 0.0}; WiFiManager wifiManager; void setup() { #ifdef DEBUG Serial.begin(115200); #endif // Pin settings pinMode(STATUS_LED_PIN, OUTPUT); pinMode(ANEMOMETER_PIN, INPUT_PULLUP); // Establish wifi connection String wifiName = "oko-weather-" + String(ESP.getChipId()); wifiManager.setMinimumSignalQuality(15); if (!wifiManager.autoConnect(wifiName.c_str(), "DEADBEEF")) { #ifdef DEBUG Serial.println("WiFi connection failed, we reboot ..."); #endif ESP.reset(); delay(1000); } #ifdef DEBUG Serial.println("Connected!"); #endif } void loop() { digitalWrite(STATUS_LED_PIN, LOW); currentSensorData[SENSOR_TEMPERATURE] = fetchTemperature(); currentSensorData[SENSOR_HUMIDITY] = fetchHumidity(); currentSensorData[SENSOR_LIGHT] = fetchLight(); currentSensorData[SENSOR_WINDSPEED] = fetchWindspeed(); #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"); #endif pushToInfluxDB(currentSensorData); delay(UPDATE_INTERVAL*1000); }