#include "config_user.h" #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; #ifndef USE_WIFIMANAGER if (WiFi.status() != WL_CONNECTED) { debug("Not connected to WLAN"); return; } #endif 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 Serial.print("InfluxDB connect success\n"); #endif } else { // fail #ifdef DEBUG Serial.print("InfluxDB connect failed\n"); #endif } } void pushToInfluxDB(String device, float sensorValues[]) { #ifndef USE_WIFIMANAGER if (WiFi.status() != WL_CONNECTED) { debug("Not connected to WLAN"); return; } #endif 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_BAT_VOLTAGE]))) { sensor.clearFields(); sensor.addField("batvoltage", sensorValues[SENSOR_BAT_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() { // wait unitl ready do { #ifdef DEBUG Serial.print("InfluxDB: waiting for write ready\n"); #endif } while (client.canSendRequest() == false); // Write point if (!client.writePoint(sensor)) { #ifdef DEBUG Serial.print("InfluxDB write failed: "); Serial.println(client.getLastErrorMessage()); Serial.print("\nErrorcode: "); Serial.println(client.getLastStatusCode()); Serial.print("\n"); #endif } else { #ifdef DEBUG Serial.print("InfluxDB write done\n"); #endif } } #endif // influxdb version 2 check