mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
pumpmode enum for HT3 boilers #2721, add commands manual defrost, chimneysweeper
This commit is contained in:
@@ -305,6 +305,7 @@ MAKE_ENUM(enum_maxHeat2, FL_(3kW), FL_(6kW), FL_(9kW))
|
||||
MAKE_ENUM(enum_pumpMode, FL_(proportional), FL_(deltaP1), FL_(deltaP2), FL_(deltaP3), FL_(deltaP4))
|
||||
MAKE_ENUM(enum_pumpCharacter, FL_(proportional), FL_(pressure1), FL_(pressure2), FL_(pressure3), FL_(pressure4), FL_(pressure5), FL_(pressure6))
|
||||
MAKE_ENUM(enum_hpPumpMode, FL_(auto), FL_(continuous))
|
||||
MAKE_ENUM(enum_pumpMode2, FL_(pumpstep), FL_(consthigh), FL_(constmed), FL_(constlow), FL_(prophigh), FL_(proplow))
|
||||
|
||||
// thermostat lists
|
||||
MAKE_ENUM(enum_ibaMainDisplay, FL_(internal_temperature), FL_(internal_setpoint), FL_(external_temperature), FL_(burner_temperature), FL_(ww_temperature), FL_(functioning_mode), FL_(time), FL_(date), FL_(smoke_temperature))
|
||||
|
||||
@@ -233,6 +233,12 @@ MAKE_WORD_TRANSLATION(pressure3, "250mbar", "250mbar", "250mbar", "250mbar", "25
|
||||
MAKE_WORD_TRANSLATION(pressure4, "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar", "300mbar") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(pressure5, "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar", "350mbar") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(pressure6, "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar", "400mbar") // TODO translate
|
||||
MAKE_WORD_TRANSLATION(pumpstep, "pumpstep", "Stufen")
|
||||
MAKE_WORD_TRANSLATION(consthigh, "const.high", "konst.hoch")
|
||||
MAKE_WORD_TRANSLATION(constmed, "const.medium", "konst.mittel")
|
||||
MAKE_WORD_TRANSLATION(constlow, "const.low", "konst.niedrig")
|
||||
MAKE_WORD_TRANSLATION(prophigh, "prop.high", "prop.hoch")
|
||||
MAKE_WORD_TRANSLATION(proplow, "propo.low", "prop.niedrig")
|
||||
|
||||
// heatpump
|
||||
MAKE_WORD_TRANSLATION(none, "none", "keine", "geen", "ingen", "brak", "ingen", "aucun", "hiçbiri", "nessuno", "žiadny", "žádné")
|
||||
@@ -355,6 +361,7 @@ MAKE_TRANSLATION(haclimate, "haclimate", "mqtt discovery current room temperatur
|
||||
|
||||
// Entity translations: tag, mqtt, en, de, nl, sv, pl, no, fr, tr, it, sk, cz
|
||||
// Boiler
|
||||
MAKE_TRANSLATION(chimneysweeper, "chimneysweeper", "chimney sweeper", "Schornsteinfeger", "", "", "", "", "", "", "", "") // TODO translate
|
||||
MAKE_TRANSLATION(reset, "reset", "reset", "Reset", "Reset", "Återställ", "kasowanie komunikatu", "nullstill", "reset", "Sıfırla", "Reset", "reset", "reset")
|
||||
MAKE_TRANSLATION(forceHeatingOff, "heatingoff", "force heating off", "Heizen abschalten", "", "Uppvärmning avstängd", "wymuś wyłączenie grzania", "", "", "", "", "vynútené vypnutie kúrenia", "vynutit vypnutí vytápění") // TODO translate
|
||||
MAKE_TRANSLATION(wwtapactivated, "tapactivated", "turn on/off", "Durchlauferhitzer aktiv", "zet aan/uit", "på/av", "system przygotowywania", "Varmtvann active", "ecs activée", "aç/kapa", "commuta on/off", "zapnúť/vypnúť", "zapnout/vypnout")
|
||||
@@ -524,6 +531,7 @@ MAKE_TRANSLATION(auxHeatMode, "auxheatrmode", "aux heater mode", "Zusatzheizungs
|
||||
MAKE_TRANSLATION(auxMaxLimit, "auxmaxlimit", "aux heater max limit", "Zusatzheizer max. Grenze", "Bijverwarmer grensinstelling maximaal", "Eltillskott max begränsning", "dogrzewacz, maksymalny limit", "tillegsvarme maksgrense", "ilave ısıtıcı maks limit", "limite massimo riscaldatore addizionale", "maximálny limit pomocného ohrievača", "maximální limit pomocného topení")
|
||||
MAKE_TRANSLATION(auxLimitStart, "auxlimitstart", "aux heater limit start", "Zusatzheizer Grenze Start", "Bijverwarmer grens voor start", "Eltillskott begränsningsstart", "dogrzewacz, początek ograniczenia", "tillegsvarme startgrense", "ilave ısıtıcı limir başlangıcı", "avvio limite massimo riscaldatore addizionale", "spustenie limitu pomocného ohrievača", "startovací limit pomocného topení")
|
||||
MAKE_TRANSLATION(auxHeaterSource, "auxheatersource", "aux heater source", "Quelle Zusatzheizer", "", "", "", "", "", "", "", "pomocný zdroj tepla", "") // TODO translate
|
||||
MAKE_TRANSLATION(manDefrost, "mandefrost", "manual defrost", "Manuelle Enteisung", "Handmatige ontdooicyclus", "Manuell avfrostning", "ręczne odladzanie", "manuell avisning", "", "manuel buz çözme", "sbrinamento manuale", "manuálne odmrazovanie", "ruční odmrazování") // TODO translate
|
||||
MAKE_TRANSLATION(pvCooling, "pvcooling", "cooling only with PV", "Kühlen nur mit PV", "Koelen alleen met solar PV", "Kyla endast med solpanel", "chłodzenie tylko z PV", "kjøling med solpanel", "", "sadece PV ile soğutma", "solo raffrescamento con solare", "Chladenie len s FV", "chlazení pouze s FV") // TODO translate
|
||||
MAKE_TRANSLATION(hpCircPumpWw, "hpcircpump", "circulation pump available during dhw", "Zirkulation möglich bei WW-Bereitung", "Circulatiepomp WP beschikbaar tijdens ww", "Värmebärarpump på vid varmvattenberedning", "pompa cyrkulacji dostępna w trakcie c.w.u.", "sirkulasjonspumpe tilgjengelig under varmtvann", "", "SKS esnasında sirkülasyon pompasu uygun", "pompa di circolazione disponibile durante ACS", "obehové čerpadlo k dispozícii počas TÚV", "oběhové čerpadlo dostupné během TUV") // TODO translate
|
||||
MAKE_TRANSLATION(vp_cooling, "vpcooling", "valve/pump cooling", "Ventil/Pumpe für Kühlen", "Klep koeling", "Ventil/Pump kyla", "zawór/pompa chłodzenia", "varmepumpe kjøling", "", "vana/pompa soğuyor", "valvola/pompa raffrescamento", "chladenie ventilu/čerpadla", "ventil/čerpadlo chlazení") // TODO translate
|
||||
|
||||
@@ -142,7 +142,14 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
|
||||
// reset is a command uses a dummy variable which is always zero, shown as blank, but provides command enum options
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &reset_, DeviceValueType::CMD, FL_(enum_reset), FL_(reset), DeviceValueUOM::NONE, MAKE_CF_CB(set_reset));
|
||||
has_update(reset_, 0);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&reset_,
|
||||
DeviceValueType::CMD,
|
||||
FL_(enum_modetype5),
|
||||
FL_(chimneysweeper),
|
||||
DeviceValueUOM::NONE,
|
||||
MAKE_CF_CB(set_chimneysweeper));
|
||||
has_update(reset_, 0); // set reset to zero
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&forceHeatingOff_,
|
||||
DeviceValueType::BOOL,
|
||||
@@ -277,8 +284,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &heatingPump_, DeviceValueType::BOOL, FL_(heatingPump), DeviceValueUOM::NONE);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pumpModMax_, DeviceValueType::UINT8, FL_(pumpModMax), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_max_pump));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &pumpModMin_, DeviceValueType::UINT8, FL_(pumpModMin), DeviceValueUOM::PERCENT, MAKE_CF_CB(set_min_pump));
|
||||
register_device_value(
|
||||
DeviceValueTAG::TAG_DEVICE_DATA, &pumpMode_, DeviceValueType::ENUM, FL_(enum_pumpMode), FL_(pumpMode), DeviceValueUOM::NONE, MAKE_CF_CB(set_pumpMode));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&pumpMode_,
|
||||
DeviceValueType::ENUM,
|
||||
model() == EMSdevice::EMS_DEVICE_FLAG_HT3 ? FL_(enum_pumpMode2) : FL_(enum_pumpMode),
|
||||
FL_(pumpMode),
|
||||
DeviceValueUOM::NONE,
|
||||
MAKE_CF_CB(set_pumpMode));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&pumpCharacter_,
|
||||
DeviceValueType::ENUM,
|
||||
@@ -438,6 +450,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
|
||||
// heatpump info
|
||||
if (isHeatPump()) {
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&reset_,
|
||||
DeviceValueType::CMD,
|
||||
FL_(enum_modetype5),
|
||||
FL_(manDefrost),
|
||||
DeviceValueUOM::NONE,
|
||||
MAKE_CF_CB(set_manDefrost));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&nrgTotal_,
|
||||
DeviceValueType::UINT24,
|
||||
@@ -2670,17 +2689,10 @@ bool Boiler::set_max_pump(const char * value, const int8_t id) {
|
||||
|
||||
bool Boiler::set_pumpMode(const char * value, const int8_t id) {
|
||||
uint8_t v;
|
||||
if (is_received(EMS_TYPE_UBAParametersPlus)) {
|
||||
if (Helpers::value2enum(value, v, FL_(enum_pumpCharacter))) {
|
||||
write_command(EMS_TYPE_UBAParametersPlus, 15, v, EMS_TYPE_UBAParametersPlus);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (Helpers::value2enum(value, v, FL_(enum_pumpMode))) {
|
||||
if (Helpers::value2enum(value, v, model() == EMSdevice::EMS_DEVICE_FLAG_HT3 ? FL_(enum_pumpMode2) : FL_(enum_pumpMode))) {
|
||||
write_command(EMS_TYPE_UBAParameters, 11, v, EMS_TYPE_UBAParameters);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2979,6 +2991,24 @@ bool Boiler::set_reset(const char * value, const int8_t id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Boiler::set_manDefrost(const char * value, const int8_t id) {
|
||||
bool b;
|
||||
if (!Helpers::value2bool(value, b)) {
|
||||
return false;
|
||||
}
|
||||
write_command(0x05, 52, b ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Boiler::set_chimneysweeper(const char * value, const int8_t id) {
|
||||
bool b;
|
||||
if (!Helpers::value2bool(value, b)) {
|
||||
return false;
|
||||
}
|
||||
write_command(0x05, 0x04, b ? 100 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
// maintenance
|
||||
bool Boiler::set_maintenance(const char * value, const int8_t id) {
|
||||
if (value == nullptr) {
|
||||
|
||||
@@ -446,6 +446,8 @@ class Boiler : public EMSdevice {
|
||||
bool set_burn_period(const char * value, const int8_t id);
|
||||
bool set_pump_delay(const char * value, const int8_t id);
|
||||
bool set_reset(const char * value, const int8_t id);
|
||||
bool set_chimneysweeper(const char * value, const int8_t id);
|
||||
bool set_manDefrost(const char * value, const int8_t id);
|
||||
bool set_maintenance(const char * value, const int8_t id);
|
||||
bool set_maintenancetime(const char * value, const int8_t id);
|
||||
bool set_maintenancedate(const char * value, const int8_t id);
|
||||
|
||||
@@ -105,7 +105,7 @@ StateUpdateResult WebCustomization::update(JsonObject root, WebCustomization & c
|
||||
if (sensor.id == sensor.name) {
|
||||
sensor.name = ""; // no need to store id as name
|
||||
}
|
||||
sensor.is_system = sensorJson["is_system"];
|
||||
sensor.is_system = sensorJson["is_system"] | false;
|
||||
std::replace(sensor.id.begin(), sensor.id.end(), '-', '_'); // change old ids to v3.7 style
|
||||
customizations.sensorCustomizations.push_back(sensor); // add to list
|
||||
}
|
||||
@@ -124,7 +124,7 @@ StateUpdateResult WebCustomization::update(JsonObject root, WebCustomization & c
|
||||
analog.factor = analogJson["factor"];
|
||||
analog.uom = analogJson["uom"];
|
||||
analog.type = analogJson["type"];
|
||||
analog.is_system = analogJson["is_system"];
|
||||
analog.is_system = analogJson["is_system"] | false;
|
||||
if (_start && analog.type == EMSESP::analogsensor_.AnalogType::DIGITAL_OUT && analog.uom > DeviceValue::DeviceValueUOM::NONE) {
|
||||
analog.offset = analog.uom - 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user