#include "config_user.h" #ifdef INFLUXDB_FEATURE //*************************************************************************// #if INFLUXDB_VERSION == 1 #include // https://github.com/hwwong/ESP8266Influxdb Influxdb _influxdb(INFLUXDB_HOST, INFLUXDB_PORT); const String msg = "weather,device=" + device + " "; void influxdb_begin() { // Init variables to influxdb config - doesn't talk to database _influxdb.opendb(INFLUXDB_DB, INFLUXDB_USER, INFLUXDB_PASS); } void pushToInfluxDB(String device, float sensorValues[]) { uint8_t tries = 0; boolean addComma = false; if (!(isnan(sensorValues[SENSOR_TEMPERATURE]))) { msg += "temperature=" + String(sensorValues[SENSOR_TEMPERATURE]); addComma = true; } if (!(isnan(sensorValues[SENSOR_HUMIDITY]))) { if (true == addComma) msg += ","; msg += "humidity=" + String(sensorValues[SENSOR_HUMIDITY]); addComma = true; } if (!(isnan(sensorValues[SENSOR_LIGHT]))) { if (true == addComma) msg += ","; msg += "light=" + String(sensorValues[SENSOR_LIGHT]); addComma = true; } if (!(isnan(sensorValues[SENSOR_WINDSPEED]))) { if (true == addComma) msg += ","; msg += "windspeed=" + String(sensorValues[SENSOR_WINDSPEED]); addComma = true; } if (!(isnan(sensorValues[SENSOR_PRESSURE]))) { if (true == addComma) msg += ","; msg += "pressure=" + String(sensorValues[SENSOR_PRESSURE]); addComma = true; } if (!(isnan(sensorValues[SENSOR_BAT_VOLTAGE]))) { if (true == addComma) msg += ","; msg += "batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE]); addComma = true; } if (!(isnan(sensorValues[SENSOR_ESAVEMODE]))) { if (true == addComma) msg += ","; msg += "esavemode=" + String(sensorValues[SENSOR_ESAVEMODE]); addComma = true; } if (!(isnan(sensorValues[SENSOR_BATCHARGESTATE]))) { if (true == addComma) msg += ","; msg += "batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE]); addComma = true; } #ifdef LOG_MILLIS_TO_INFLUXDB if (true == addComma) msg += ","; msg += "timestamp=" + String(millis()); #endif debug(msg); do { tries++; _influxdb.write(msg); } while (_influxdb.response() != DB_SUCCESS and tries < 5); } //*************************************************************************// #elif INFLUXDB_VERSION == 2 #include // from bib manager // Data point Point sensor(DEVICE_NAME); // Init variables to influxdb config - doesn't talk to database InfluxDBClient client(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN); void influxdb_begin() { // Check server connection if (client.validateConnection()) { // success #ifdef DEBUG debug("InfluxDB connect success\n"); #endif } else { // fail #ifdef DEBUG debug("InfluxDB connect failed\n"); #endif } } void pushToInfluxDB(String device, float sensorValues[]) { if (!(isnan(sensorValues[SENSOR_TEMPERATURE]))) { sensor.clearFields(); sensor.addField("temperature", sensorValues[SENSOR_TEMPERATURE]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_HUMIDITY]))) { sensor.clearFields(); sensor.addField("humidity", sensorValues[SENSOR_HUMIDITY]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_LIGHT]))) { sensor.clearFields(); sensor.addField("light", sensorValues[SENSOR_LIGHT]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_WINDSPEED]))) { sensor.clearFields(); sensor.addField("windspeed", sensorValues[SENSOR_WINDSPEED]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_PRESSURE]))) { sensor.clearFields(); sensor.addField("pressure", sensorValues[SENSOR_PRESSURE]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_VOLTAGE]))) { sensor.clearFields(); sensor.addField("batvoltage", sensorValues[SENSOR_VOLTAGE]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_ESAVEMODE]))) { sensor.clearFields(); sensor.addField("esavemode", sensorValues[SENSOR_ESAVEMODE]); _writePoint(); } if (!(isnan(sensorValues[SENSOR_BATCHARGESTATE]))) { sensor.clearFields(); sensor.addField("batchargestate", sensorValues[SENSOR_BATCHARGESTATE]); _writePoint(); } #ifdef LOG_MILLIS_TO_INFLUXDB sensor.clearFields(); sensor.addField("timestamp", millis()); _writePoint(); #endif } void _writePoint() { uint32_t _timeout = millis(); //debug("InfluxDB2: check connection"); do { } while (client.validateConnection() and (_timeout + INFLUXDB_TIMEOUT_MS) <= millis()); if (! client.validateConnection()) { debug("Can't write to InfluxDB2, timeout validating connection"); return; } _timeout = millis(); //debug("InfluxDB2: waiting for write ready"); // wait unitl ready do { } while (client.canSendRequest() == false and (_timeout + INFLUXDB_TIMEOUT_MS) <= millis()); if (! client.canSendRequest()) { debug("Can't write to InfluxDB2, timeout canSendRequest"); return; } // Write point if (!client.writePoint(sensor)) { debug("InfluxDB2 write failed: " + String(client.getLastErrorMessage()) + " Err: " + String(client.getLastStatusCode())); } } #endif // influxdb version 2 check #endif // INFLUXDB_FEATURE //*************************************************************************//