added tank heated and collector on/off - #422

This commit is contained in:
proddy
2020-07-06 13:27:47 +02:00
parent c5933e8c14
commit 58b93fb62d
2 changed files with 25 additions and 0 deletions

View File

@@ -73,6 +73,9 @@ void Solar::show_values(uuid::console::Shell & shell) {
shell.printfln(F(" Pump working time: %d days %d hours %d minutes"), pumpWorkMin_ / 1440, (pumpWorkMin_ % 1440) / 60, pumpWorkMin_ % 60); shell.printfln(F(" Pump working time: %d days %d hours %d minutes"), pumpWorkMin_ / 1440, (pumpWorkMin_ % 1440) / 60, pumpWorkMin_ % 60);
} }
print_value(shell, 2, F("Tank Heated"), tankHeated_, nullptr, EMS_VALUE_BOOL);
print_value(shell, 2, F("Collector"), collectorOnOff_, nullptr, EMS_VALUE_BOOL);
print_value(shell, 2, F("Energy last hour"), energyLastHour_, F_(wh), 10); print_value(shell, 2, F("Energy last hour"), energyLastHour_, F_(wh), 10);
print_value(shell, 2, F("Energy today"), energyToday_, F_(wh)); print_value(shell, 2, F("Energy today"), energyToday_, F_(wh));
print_value(shell, 2, F("Energy total"), energyTotal_, F_(kwh), 10); print_value(shell, 2, F("Energy total"), energyTotal_, F_(kwh), 10);
@@ -87,30 +90,47 @@ void Solar::publish_values() {
if (Helpers::hasValue(collectorTemp_)) { if (Helpers::hasValue(collectorTemp_)) {
doc["collectortemp"] = (float)collectorTemp_ / 10; doc["collectortemp"] = (float)collectorTemp_ / 10;
} }
if (Helpers::hasValue(bottomTemp_)) { if (Helpers::hasValue(bottomTemp_)) {
doc["bottomtemp"] = (float)bottomTemp_ / 10; doc["bottomtemp"] = (float)bottomTemp_ / 10;
} }
if (Helpers::hasValue(bottomTemp2_)) { if (Helpers::hasValue(bottomTemp2_)) {
doc["bottomtemp2"] = (float)bottomTemp2_ / 10; doc["bottomtemp2"] = (float)bottomTemp2_ / 10;
} }
if (Helpers::hasValue(pumpModulation_)) { if (Helpers::hasValue(pumpModulation_)) {
doc["pumpmodulation"] = pumpModulation_; doc["pumpmodulation"] = pumpModulation_;
} }
if (Helpers::hasValue(pump_, true)) { if (Helpers::hasValue(pump_, true)) {
doc["pump"] = Helpers::render_value(s, pump_, EMS_VALUE_BOOL); doc["pump"] = Helpers::render_value(s, pump_, EMS_VALUE_BOOL);
} }
if (Helpers::hasValue(valveStatus_, true)) { if (Helpers::hasValue(valveStatus_, true)) {
doc["valvestatus"] = Helpers::render_value(s, valveStatus_, EMS_VALUE_BOOL); doc["valvestatus"] = Helpers::render_value(s, valveStatus_, EMS_VALUE_BOOL);
} }
if (Helpers::hasValue(pumpWorkMin_)) { if (Helpers::hasValue(pumpWorkMin_)) {
doc["pumpWorkMin"] = (float)pumpWorkMin_; doc["pumpWorkMin"] = (float)pumpWorkMin_;
} }
if (Helpers::hasValue(tankHeated_, true)) {
doc["tankHeated"] = Helpers::render_value(s, tankHeated_, EMS_VALUE_BOOL);
}
if (Helpers::hasValue(collectorOnOff_, true)) {
doc["collectorOnOff"] = Helpers::render_value(s, collectorOnOff_, EMS_VALUE_BOOL);
}
if (Helpers::hasValue(energyLastHour_)) { if (Helpers::hasValue(energyLastHour_)) {
doc["energylasthour"] = (float)energyLastHour_ / 10; doc["energylasthour"] = (float)energyLastHour_ / 10;
} }
if (Helpers::hasValue(energyToday_)) { if (Helpers::hasValue(energyToday_)) {
doc["energytoday"] = energyToday_; doc["energytoday"] = energyToday_;
} }
if (Helpers::hasValue(energyTotal_)) { if (Helpers::hasValue(energyTotal_)) {
doc["energytotal"] = (float)energyTotal_ / 10; doc["energytotal"] = (float)energyTotal_ / 10;
} }
@@ -186,6 +206,9 @@ void Solar::process_SM100Status(std::shared_ptr<const Telegram> telegram) {
if (pumpmod == 0 && pumpModulation_ == 100) { // mask out boosts if (pumpmod == 0 && pumpModulation_ == 100) { // mask out boosts
pumpModulation_ = 15; // set to minimum pumpModulation_ = 15; // set to minimum
} }
telegram->read_bitvalue(tankHeated_, 3, 1); // issue #422
telegram->read_bitvalue(collectorOnOff_, 3, 0);
} }
/* /*

View File

@@ -56,6 +56,8 @@ class Solar : public EMSdevice {
uint32_t energyToday_ = EMS_VALUE_ULONG_NOTSET; uint32_t energyToday_ = EMS_VALUE_ULONG_NOTSET;
uint32_t energyTotal_ = EMS_VALUE_ULONG_NOTSET; uint32_t energyTotal_ = EMS_VALUE_ULONG_NOTSET;
uint32_t pumpWorkMin_ = EMS_VALUE_ULONG_NOTSET; // Total solar pump operating time uint32_t pumpWorkMin_ = EMS_VALUE_ULONG_NOTSET; // Total solar pump operating time
uint8_t tankHeated_ = EMS_VALUE_BOOL_NOTSET;
uint8_t collectorOnOff_ = EMS_VALUE_BOOL_NOTSET;
uint8_t availabilityFlag_ = EMS_VALUE_BOOL_NOTSET; uint8_t availabilityFlag_ = EMS_VALUE_BOOL_NOTSET;
uint8_t configFlag_ = EMS_VALUE_BOOL_NOTSET; uint8_t configFlag_ = EMS_VALUE_BOOL_NOTSET;