Fixed influxdb write

This commit is contained in:
klaute 2019-02-02 13:58:47 +01:00
parent 2bdc615ddb
commit 29c52d0a34

78
firmware/influxdb.ino Normal file → Executable file
View file

@ -1,37 +1,71 @@
void pushToInfluxDB(String device, float sensorValues[]) { void pushToInfluxDB(String device, float sensorValues[]) {
#ifdef DEBUG
String msg = "weather,device=" + device + " temperature=" + String(sensorValues[SENSOR_TEMPERATURE])
+ ",humidity=" + String(sensorValues[SENSOR_HUMIDITY])
+ ",light=" + String(sensorValues[SENSOR_LIGHT])
+ ",windspeed=" + String(sensorValues[SENSOR_WINDSPEED])
+ ",pressure=" + String(sensorValues[SENSOR_PRESSURE])
+ ",batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE])
+ ",esavemode=" + String(sensorValues[SENSOR_ESAVEMODE])
+ ",batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE]);
Serial.println(msg);
#endif
uint8_t tries = 0; uint8_t tries = 0;
do { boolean addComma = false;
tries++; tries++;
String msg = "weather,device=" + device + " ";
if (!(isnan(sensorValues[SENSOR_TEMPERATURE]))) if (!(isnan(sensorValues[SENSOR_TEMPERATURE])))
influxdb.write("weather,device=" + device + " temperature=" + String(sensorValues[SENSOR_TEMPERATURE])); {
msg += "temperature=" + String(sensorValues[SENSOR_TEMPERATURE]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_HUMIDITY]))) if (!(isnan(sensorValues[SENSOR_HUMIDITY])))
influxdb.write("weather,device=" + device + " humidity=" + String(sensorValues[SENSOR_HUMIDITY])); {
if (true == addComma)
msg += ",";
msg += "humidity=" + String(sensorValues[SENSOR_HUMIDITY]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_LIGHT]))) if (!(isnan(sensorValues[SENSOR_LIGHT])))
influxdb.write("weather,device=" + device + " light=" + String(sensorValues[SENSOR_LIGHT])); {
if (true == addComma)
msg += ",";
msg += "light=" + String(sensorValues[SENSOR_LIGHT]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_WINDSPEED]))) if (!(isnan(sensorValues[SENSOR_WINDSPEED])))
influxdb.write("weather,device=" + device + " windspeed=" + String(sensorValues[SENSOR_WINDSPEED])); {
if (true == addComma)
msg += ",";
msg += "windspeed=" + String(sensorValues[SENSOR_WINDSPEED]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_PRESSURE]))) if (!(isnan(sensorValues[SENSOR_PRESSURE])))
influxdb.write("weather,device=" + device + " pressure=" + String(sensorValues[SENSOR_PRESSURE])); {
if (true == addComma)
msg += ",";
msg += "pressure=" + String(sensorValues[SENSOR_PRESSURE]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_BAT_VOLTAGE]))) if (!(isnan(sensorValues[SENSOR_BAT_VOLTAGE])))
influxdb.write("weather,device=" + device + " batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE])); {
if (true == addComma)
msg += ",";
msg += "batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_ESAVEMODE]))) if (!(isnan(sensorValues[SENSOR_ESAVEMODE])))
influxdb.write("weather,device=" + device + " esavemode=" + String(sensorValues[SENSOR_ESAVEMODE])); {
if (true == addComma)
msg += ",";
msg += "esavemode=" + String(sensorValues[SENSOR_ESAVEMODE]);
addComma = true;
}
if (!(isnan(sensorValues[SENSOR_BATCHARGESTATE]))) if (!(isnan(sensorValues[SENSOR_BATCHARGESTATE])))
influxdb.write("weather,device=" + device + " batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE])); {
if (true == addComma)
msg += ",";
msg += "batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE]);
addComma = true;
}
#ifdef DEBUG
Serial.println(msg);
#endif
do {
influxdb.write(msg);
} while (influxdb.response() != DB_SUCCESS and tries < 5); } while (influxdb.response() != DB_SUCCESS and tries < 5);
} }