diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h index 235ae07..5101597 100644 --- a/src/OpenThermTask.h +++ b/src/OpenThermTask.h @@ -305,6 +305,7 @@ protected: Sensors::setConnectionStatusByType(Sensors::Type::OT_DHW_BURNER_HOURS, false); Sensors::setConnectionStatusByType(Sensors::Type::OT_HEATING_PUMP_HOURS, false); Sensors::setConnectionStatusByType(Sensors::Type::OT_DHW_PUMP_HOURS, false); + Sensors::setConnectionStatusByType(Sensors::Type::OT_COOLING_HOURS, false); this->initialized = false; this->disconnectedTime = millis(); @@ -677,6 +678,21 @@ protected: } } + // Update cooling hours + if (Sensors::getAmountByType(Sensors::Type::OT_COOLING_HOURS, true)) { + if (this->updateCoolingHours()) { + Log.snoticeln(FPSTR(L_OT), F("Received cooling hours: %hu"), vars.slave.stats.coolingHours); + + Sensors::setValueByType( + Sensors::Type::OT_COOLING_HOURS, vars.slave.stats.coolingHours, + Sensors::ValueType::PRIMARY, true, true + ); + + } else { + Log.swarningln(FPSTR(L_OT), F("Failed receive cooling hours")); + } + } + // Auto fault reset if (settings.opentherm.options.autoFaultReset && vars.slave.fault.active && !vars.actions.resetFault) { vars.actions.resetFault = true; @@ -2171,6 +2187,25 @@ protected: return true; } + bool updateCoolingHours() { + const unsigned long response = this->instance->sendRequest(CustomOpenTherm::buildRequest( + OpenThermRequestType::READ_DATA, + OpenThermMessageID::CoolingOperationHours, + 0 + )); + + if (!CustomOpenTherm::isValidResponse(response)) { + return false; + + } else if (!CustomOpenTherm::isValidResponseId(response, OpenThermMessageID::CoolingOperationHours)) { + return false; + } + + vars.slave.stats.coolingHours = CustomOpenTherm::getUInt(response); + + return true; + } + bool updateModulationLevel() { const unsigned long response = this->instance->sendRequest(CustomOpenTherm::buildRequest( OpenThermRequestType::READ_DATA, diff --git a/src/Sensors.h b/src/Sensors.h index 170829e..71b9ac3 100644 --- a/src/Sensors.h +++ b/src/Sensors.h @@ -34,6 +34,7 @@ public: OT_DHW_BURNER_HOURS = 24, OT_HEATING_PUMP_HOURS = 25, OT_DHW_PUMP_HOURS = 26, + OT_COOLING_HOURS = 27, NTC_10K_TEMP = 50, DALLAS_TEMP = 51, diff --git a/src/Settings.h b/src/Settings.h index 13da7c2..580c9d5 100644 --- a/src/Settings.h +++ b/src/Settings.h @@ -389,6 +389,7 @@ struct Variables { uint16_t dhwBurnerStarts = 0; uint16_t heatingPumpStarts = 0; uint16_t dhwPumpStarts = 0; + uint16_t coolingHours = 0; uint16_t burnerHours = 0; uint16_t dhwBurnerHours = 0; uint16_t heatingPumpHours = 0; diff --git a/src/utils.h b/src/utils.h index 1a79642..f52f2ba 100644 --- a/src/utils.h +++ b/src/utils.h @@ -1932,6 +1932,7 @@ bool jsonToSensorSettings(const uint8_t sensorId, const JsonVariantConst src, Se case static_cast(Sensors::Type::OT_DHW_BURNER_HOURS): case static_cast(Sensors::Type::OT_HEATING_PUMP_HOURS): case static_cast(Sensors::Type::OT_DHW_PUMP_HOURS): + case static_cast(Sensors::Type::OT_COOLING_HOURS): case static_cast(Sensors::Type::NTC_10K_TEMP): case static_cast(Sensors::Type::DALLAS_TEMP): diff --git a/src_data/locales/cn.json b/src_data/locales/cn.json index 2f9cd01..aafbac7 100644 --- a/src_data/locales/cn.json +++ b/src_data/locales/cn.json @@ -243,6 +243,7 @@ "otDhwBurnerHours": "OpenTherm, number of burner operating hours (DHW)", "otHeatingPumpHours": "OpenTherm, number of pump operating hours (heating)", "otDhwPumpHours": "OpenTherm, number of pump operating hours (DHW)", + "otCoolingHours": "OpenTherm, number of cooling hours", "ntcTemp": "NTC 传感器", "dallasTemp": "DALLAS 传感器", diff --git a/src_data/locales/en.json b/src_data/locales/en.json index f0e3548..1514791 100644 --- a/src_data/locales/en.json +++ b/src_data/locales/en.json @@ -243,6 +243,7 @@ "otDhwBurnerHours": "OpenTherm, number of burner operating hours (DHW)", "otHeatingPumpHours": "OpenTherm, number of pump operating hours (heating)", "otDhwPumpHours": "OpenTherm, number of pump operating hours (DHW)", + "otCoolingHours": "OpenTherm, number of cooling hours", "ntcTemp": "NTC sensor", "dallasTemp": "DALLAS sensor", diff --git a/src_data/locales/it.json b/src_data/locales/it.json index eb3eb74..7469f64 100644 --- a/src_data/locales/it.json +++ b/src_data/locales/it.json @@ -243,6 +243,7 @@ "otDhwBurnerHours": "OpenTherm, numero di ore di funzionamento del bruciatore (ACS)", "otHeatingPumpHours": "OpenTherm, numero di ore di funzionamento della pompa (riscaldamento)", "otDhwPumpHours": "OpenTherm, numero di ore di funzionamento della pompa (ACS)", + "otCoolingHours": "OpenTherm, numero di ore di funzionamento della cooling", "ntcTemp": "Sensore NTC", "dallasTemp": "Sensore DALLAS", diff --git a/src_data/locales/nl.json b/src_data/locales/nl.json index d982f21..b670292 100644 --- a/src_data/locales/nl.json +++ b/src_data/locales/nl.json @@ -222,6 +222,8 @@ "otDhwBurnerHours": "OpenTherm, aantal branderuren (warm water)", "otHeatingPumpHours": "OpenTherm, aantal pompuren (verwarming)", "otDhwPumpHours": "OpenTherm, aantal pompuren (warm water)", + "otCoolingHours": "OpenTherm, aantal cooling", + "ntcTemp": "NTC-sensor", "dallasTemp": "DALLAS-sensor", "bluetooth": "BLE-sensor", diff --git a/src_data/locales/ru.json b/src_data/locales/ru.json index cd91c0c..98532a6 100644 --- a/src_data/locales/ru.json +++ b/src_data/locales/ru.json @@ -243,6 +243,7 @@ "otDhwBurnerHours": "OpenTherm, кол-во часов работы горелки (ГВС)", "otHeatingPumpHours": "OpenTherm, кол-во часов работы насоса (отопление)", "otDhwPumpHours": "OpenTherm, кол-во часов работы насоса (ГВС)", + "otCoolingHours": "OpenTherm, кол-во часов работы охлаждения", "ntcTemp": "NTC датчик", "dallasTemp": "DALLAS датчик", diff --git a/src_data/pages/sensors.html b/src_data/pages/sensors.html index b9496f6..47f9986 100644 --- a/src_data/pages/sensors.html +++ b/src_data/pages/sensors.html @@ -113,6 +113,7 @@ +