diff --git a/firmware/influxdb.ino b/firmware/influxdb.ino index 91fa61e..90cd178 100644 --- a/firmware/influxdb.ino +++ b/firmware/influxdb.ino @@ -2,7 +2,85 @@ #include "config_user.h" -#if INFLUXDB_VERSION == 2 +#if INFLUXDB_VERSION == 1 + + +Influxdb _influxdb(INFLUXDB_HOST, INFLUXDB_PORT); + +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; + + String msg = "weather,device=" + device + " "; + 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; + } + + debug(msg); + + do { + tries++; + _influxdb.write(msg); + } while (_influxdb.response() != DB_SUCCESS and tries < 5); +} + +#elif INFLUXDB_VERSION == 2 // Data point Point sensor(DEVICE_NAME);