Added battery charging states.
This commit is contained in:
parent
1f1bd3d19b
commit
87fe6c6e7a
4 changed files with 38 additions and 8 deletions
7
firmware/config.h
Executable file → Normal file
7
firmware/config.h
Executable file → Normal file
|
@ -8,6 +8,12 @@
|
|||
#define SENSOR_WINDSPEED 3
|
||||
#define SENSOR_PRESSURE 4
|
||||
#define SENSOR_BAT_VOLTAGE 5
|
||||
#define SENSOR_ESAVEMODE 6
|
||||
#define SENSOR_BATCHARGESTATE 7
|
||||
|
||||
#define BAT_CHARGE_STATE_CHARGED 2.0
|
||||
#define BAT_CHARGE_STATE_CHARGING 1.0
|
||||
#define BAT_CHARGE_STATE_NOTCHARGING 0.0
|
||||
|
||||
#define WIFI_AUTOCONNECT_TIMEOUT_S 60
|
||||
#define WIFI_CONFIG_PORTAL_TIMEOUT_S 60
|
||||
|
@ -35,4 +41,3 @@
|
|||
#define INITIAL_WEBSERVER_TIME 20
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -33,10 +33,10 @@
|
|||
|
||||
//*************************************************************************//
|
||||
|
||||
float currentSensorData[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
||||
float currentSensorData[8] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
||||
|
||||
uint16_t update_sensor_cnt = 0;
|
||||
uint16_t update_webserver_cnt = 0;
|
||||
uint16_t update_sensor_cnt = 0;
|
||||
uint16_t update_webserver_cnt = 0;
|
||||
uint16_t energySavingIterations = 0;
|
||||
|
||||
WiFiManager wifiManager;
|
||||
|
@ -179,6 +179,7 @@ void loop() {
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
_loop();
|
||||
|
||||
//Needed to give WIFI time to function properly
|
||||
|
@ -202,15 +203,19 @@ void _loop() {
|
|||
currentSensorData[SENSOR_LIGHT] = fetchLight();
|
||||
currentSensorData[SENSOR_PRESSURE] = fetchPressure();
|
||||
#ifdef BATTERY_POWERED
|
||||
currentSensorData[SENSOR_BAT_VOLTAGE] = getBatteryVoltage();
|
||||
currentSensorData[SENSOR_BAT_VOLTAGE] = getBatteryVoltage();
|
||||
currentSensorData[SENSOR_BATCHARGESTATE] = isBatCharging();
|
||||
#else
|
||||
currentSensorData[SENSOR_BAT_VOLTAGE] = 0xFFFFFFFF;
|
||||
currentSensorData[SENSOR_BAT_VOLTAGE] = 0xFFFFFFFF;
|
||||
currentSensorData[SENSOR_BATCHARGESTATE] = 0xFFFFFFFF;
|
||||
#endif
|
||||
// Disable expensive tasks
|
||||
if (energySavingMode() == 0) {
|
||||
currentSensorData[SENSOR_WINDSPEED] = fetchWindspeed();
|
||||
currentSensorData[SENSOR_ESAVEMODE] = 1.0;
|
||||
} else {
|
||||
currentSensorData[SENSOR_WINDSPEED] = 0xFFFFFFFF;
|
||||
currentSensorData[SENSOR_ESAVEMODE] = 0.0;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -222,6 +227,8 @@ void _loop() {
|
|||
Serial.println("Windspeed: " + String(currentSensorData[SENSOR_WINDSPEED]) + " km/h");
|
||||
Serial.println("Pressure: " + String(currentSensorData[SENSOR_PRESSURE]) + " hPa");
|
||||
Serial.println("Bat Voltage: " + String(currentSensorData[SENSOR_BAT_VOLTAGE]) + " V");
|
||||
Serial.println("Bat charge state: " + String(currentSensorData[SENSOR_BATCHARGESTATE]));
|
||||
Serial.println("Energy saving: " + String(currentSensorData[SENSOR_ESAVEMODE]));
|
||||
#endif
|
||||
|
||||
delay(100);
|
||||
|
|
|
@ -7,7 +7,9 @@ void pushToInfluxDB(String device, float sensorValues[]) {
|
|||
+ ",light=" + String(sensorValues[SENSOR_LIGHT])
|
||||
+ ",windspeed=" + String(sensorValues[SENSOR_WINDSPEED])
|
||||
+ ",pressure=" + String(sensorValues[SENSOR_PRESSURE])
|
||||
+ ",batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE]);
|
||||
+ ",batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE])
|
||||
+ ",esavemode=" + String(sensorValues[SENSOR_ESAVEMODE])
|
||||
+ ",batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE]);
|
||||
|
||||
Serial.println(msg);
|
||||
#endif
|
||||
|
@ -27,6 +29,9 @@ void pushToInfluxDB(String device, float sensorValues[]) {
|
|||
influxdb.write("weather,device=" + device + " pressure=" + String(sensorValues[SENSOR_PRESSURE]));
|
||||
if (!(isnan(sensorValues[SENSOR_BAT_VOLTAGE])))
|
||||
influxdb.write("weather,device=" + device + " batvoltage=" + String(sensorValues[SENSOR_BAT_VOLTAGE]));
|
||||
if (!(isnan(sensorValues[SENSOR_ESAVEMODE])))
|
||||
influxdb.write("weather,device=" + device + " esavemode=" + String(sensorValues[SENSOR_ESAVEMODE]));
|
||||
if (!(isnan(sensorValues[SENSOR_BATCHARGESTATE])))
|
||||
influxdb.write("weather,device=" + device + " batchargestate=" + String(sensorValues[SENSOR_BATCHARGESTATE]));
|
||||
} while (influxdb.response() != DB_SUCCESS and tries < 5);
|
||||
}
|
||||
|
||||
|
|
13
firmware/sensors.ino
Executable file → Normal file
13
firmware/sensors.ino
Executable file → Normal file
|
@ -61,4 +61,17 @@ float getBatteryVoltage() {
|
|||
float volt = raw / 1023.0;
|
||||
return volt * 4.2;
|
||||
}
|
||||
|
||||
float isBatCompletelyCharged() {
|
||||
if (HIGH == digitalRead(BAT_CHARGED_PIN))
|
||||
{
|
||||
return BAT_CHARGE_STATE_CHARGED;
|
||||
} else if (HIGH == digitalRead(BAT_CHARGING_PIN))
|
||||
{
|
||||
return BAT_CHARGE_STATE_CHARGING;
|
||||
}
|
||||
|
||||
return BAT_CHARGE_STATE_NOTCHARGING;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue