mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
add vacation mode CR50 #2403
This commit is contained in:
@@ -749,6 +749,7 @@ MAKE_TRANSLATION(wwHolidays, "holidays", "holiday dates", "Feiertage", "Feestdag
|
|||||||
MAKE_TRANSLATION(wwVacations, "vacations", "vacation dates", "Urlaubstage", "Vakantiedagen", "Semesterdatum Varmvatten", "dni urlopowe", "ferie dato varmtvann", "dates vacances", "izin günleri", "date vacanze", "termíny dovolenky", "data pro prázdniny")
|
MAKE_TRANSLATION(wwVacations, "vacations", "vacation dates", "Urlaubstage", "Vakantiedagen", "Semesterdatum Varmvatten", "dni urlopowe", "ferie dato varmtvann", "dates vacances", "izin günleri", "date vacanze", "termíny dovolenky", "data pro prázdniny")
|
||||||
MAKE_TRANSLATION(holidays, "holidays", "holiday dates", "Feiertage", "Feestdagen", "Helgdatum", "święta", "helligdager", "dates vacances", "tatil günleri", "date feste pubbliche", "sviatočné termíny", "data pro dovolenou")
|
MAKE_TRANSLATION(holidays, "holidays", "holiday dates", "Feiertage", "Feestdagen", "Helgdatum", "święta", "helligdager", "dates vacances", "tatil günleri", "date feste pubbliche", "sviatočné termíny", "data pro dovolenou")
|
||||||
MAKE_TRANSLATION(vacations, "vacations", "vacation dates", "Urlaubstage", "Vakantiedagen", "Semesterdatum", "urlop", "feriedager", "dates vacances", "izin günleri", "date vacanze", "termíny dovolenky", "data pro prázdniny")
|
MAKE_TRANSLATION(vacations, "vacations", "vacation dates", "Urlaubstage", "Vakantiedagen", "Semesterdatum", "urlop", "feriedager", "dates vacances", "izin günleri", "date vacanze", "termíny dovolenky", "data pro prázdniny")
|
||||||
|
MAKE_TRANSLATION(vacationmode, "vacationmode", "vacation mode", "Urlaubsmodus", "", "", "", "", "", "", "", "", "") // ToDo Translate
|
||||||
MAKE_TRANSLATION(wwprio, "dhwprio", "dhw priority", "WW-Vorrang", "Prioriteit warm water", "Prioritera Varmvatten", "priorytet dla c.w.u.", "prioroter varmtvann", "priorité ecs", "sıcak kullanım suyu önceliği", "priorita acqua calda", "Priorita TÚV", "přednost ohřevu TUV")
|
MAKE_TRANSLATION(wwprio, "dhwprio", "dhw priority", "WW-Vorrang", "Prioriteit warm water", "Prioritera Varmvatten", "priorytet dla c.w.u.", "prioroter varmtvann", "priorité ecs", "sıcak kullanım suyu önceliği", "priorita acqua calda", "Priorita TÚV", "přednost ohřevu TUV")
|
||||||
MAKE_TRANSLATION(nofrostmode1, "nofrostmode1", "nofrost mode", "Frostschutz", "Vorstbeveiligingsmodus", "Frostskyddsläge", "ochrona przed zamarzaniem", "frostbeskyttelse", "mode protection gel", "donma koruması modu 1", "modalita protezione antigelo", "nofrost režim", "režim proti zamrznutí")
|
MAKE_TRANSLATION(nofrostmode1, "nofrostmode1", "nofrost mode", "Frostschutz", "Vorstbeveiligingsmodus", "Frostskyddsläge", "ochrona przed zamarzaniem", "frostbeskyttelse", "mode protection gel", "donma koruması modu 1", "modalita protezione antigelo", "nofrost režim", "režim proti zamrznutí")
|
||||||
MAKE_TRANSLATION(reducehours, "reducehours", "duration for nighttemp", "Dauer Nachttemp.", "Duur nachtverlaging", "Timmar Nattsänkning", "czas trwania trybu nocnego", "timer nattsenkning", "durée température nuit", "gece sıcaklığı süresi", "durata temperatura notturna", "trvanie nočnej teploty", "délka trvání noční teploty")
|
MAKE_TRANSLATION(reducehours, "reducehours", "duration for nighttemp", "Dauer Nachttemp.", "Duur nachtverlaging", "Timmar Nattsänkning", "czas trwania trybu nocnego", "timer nattsenkning", "durée température nuit", "gece sıcaklığı süresi", "durata temperatura notturna", "trvanie nočnej teploty", "délka trvání noční teploty")
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
|||||||
|
|
||||||
} else if (model == EMSdevice::EMS_DEVICE_FLAG_CR11) {
|
} else if (model == EMSdevice::EMS_DEVICE_FLAG_CR11) {
|
||||||
monitor_typeids = {0x02A5};
|
monitor_typeids = {0x02A5};
|
||||||
set_typeids = {0x2B9};
|
set_typeids = {0x02B9};
|
||||||
curve_typeids = {0x029B};
|
curve_typeids = {0x029B};
|
||||||
register_telegram_type(monitor_typeids[0], "RC300Monitor", true, MAKE_PF_CB(process_CR11Monitor));
|
register_telegram_type(monitor_typeids[0], "RC300Monitor", true, MAKE_PF_CB(process_CR11Monitor));
|
||||||
register_telegram_type(set_typeids[0], "RC300Set", false, MAKE_PF_CB(process_RC300Set));
|
register_telegram_type(set_typeids[0], "RC300Set", false, MAKE_PF_CB(process_RC300Set));
|
||||||
@@ -188,7 +188,11 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i
|
|||||||
|
|
||||||
register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings));
|
register_telegram_type(0xBB, "HybridSettings", true, MAKE_PF_CB(process_HybridSettings));
|
||||||
register_telegram_type(0x23E, "PVSettings", true, MAKE_PF_CB(process_PVSettings));
|
register_telegram_type(0x23E, "PVSettings", true, MAKE_PF_CB(process_PVSettings));
|
||||||
register_telegram_type(0x269, "RC300Holiday1", true, MAKE_PF_CB(process_RC300Holiday));
|
if (model == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
|
register_telegram_type(0x43F, "CRHolidays", true, MAKE_PF_CB(process_RC300Holiday));
|
||||||
|
} else {
|
||||||
|
register_telegram_type(0x269, "RC300Holiday", true, MAKE_PF_CB(process_RC300Holiday));
|
||||||
|
}
|
||||||
register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent));
|
register_telegram_type(0x16E, "Absent", true, MAKE_PF_CB(process_Absent));
|
||||||
|
|
||||||
// JUNKERS/HT3
|
// JUNKERS/HT3
|
||||||
@@ -1114,6 +1118,7 @@ void Thermostat::process_RC300Monitor(std::shared_ptr<const Telegram> telegram)
|
|||||||
has_update(telegram, hc->curroominfl, 27);
|
has_update(telegram, hc->curroominfl, 27);
|
||||||
has_update(telegram, hc->currSolarInfl, 29);
|
has_update(telegram, hc->currSolarInfl, 29);
|
||||||
has_update(telegram, hc->coolingon, 32);
|
has_update(telegram, hc->coolingon, 32);
|
||||||
|
has_update(telegram, hc->vacationmode, 18);
|
||||||
|
|
||||||
add_ha_climate(hc);
|
add_ha_climate(hc);
|
||||||
}
|
}
|
||||||
@@ -1341,7 +1346,7 @@ void Thermostat::process_RC300Floordry(std::shared_ptr<const Telegram> telegram)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 0x269 - 0x26D RC300 EMS+ holidaymodes 1 to 5
|
// 0x269 - 0x26D RC300 EMS+ holidaymodes 1 to 5
|
||||||
// special case R3000 only date in 0x269
|
// special case R3000 only date in 0x269, CR50 only 0x043F
|
||||||
void Thermostat::process_RC300Holiday(std::shared_ptr<const Telegram> telegram) {
|
void Thermostat::process_RC300Holiday(std::shared_ptr<const Telegram> telegram) {
|
||||||
if (telegram->offset || telegram->message_length < 6) {
|
if (telegram->offset || telegram->message_length < 6) {
|
||||||
return;
|
return;
|
||||||
@@ -2694,7 +2699,7 @@ bool Thermostat::set_RC30Vacation(const char * value, const int8_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set R3000 holiday as string dd.mm.yyyy-dd.mm.yyyy
|
// set R3000 holiday as string dd.mm.yyyy-dd.mm.yyyy
|
||||||
// RC30 and rego 3000
|
// RC30 and rego 3000 and CR50
|
||||||
bool Thermostat::set_R3000Holiday(const char * value, const int8_t id) {
|
bool Thermostat::set_R3000Holiday(const char * value, const int8_t id) {
|
||||||
if (strlen(value) != 21) {
|
if (strlen(value) != 21) {
|
||||||
return false;
|
return false;
|
||||||
@@ -2711,7 +2716,11 @@ bool Thermostat::set_R3000Holiday(const char * value, const int8_t id) {
|
|||||||
if (!data[2] || data[2] > 31 || !data[1] || data[1] > 12 || !data[5] || data[5] > 31 || !data[4] || data[4] > 12) {
|
if (!data[2] || data[2] > 31 || !data[1] || data[1] > 12 || !data[5] || data[5] > 31 || !data[4] || data[4] > 12) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
write_command(0x269, 0, data, 6, 0x269);
|
if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) {
|
||||||
|
write_command(0x269, 0, data, 6, 0x269);
|
||||||
|
} else if (model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
|
write_command(0x43F, 0, data, 6, 0x269);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4201,7 +4210,7 @@ void Thermostat::register_device_values() {
|
|||||||
MAKE_CF_CB(set_minexttemp));
|
MAKE_CF_CB(set_minexttemp));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping));
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &ibaDamping_, DeviceValueType::BOOL, FL_(damping), DeviceValueUOM::NONE, MAKE_CF_CB(set_damping));
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hasSolar_, DeviceValueType::BOOL, FL_(hasSolar), DeviceValueUOM::NONE, MAKE_CF_CB(set_solar));
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hasSolar_, DeviceValueType::BOOL, FL_(hasSolar), DeviceValueUOM::NONE, MAKE_CF_CB(set_solar));
|
||||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000) {
|
if (model() == EMSdevice::EMS_DEVICE_FLAG_R3000 || model() == EMSdevice::EMS_DEVICE_FLAG_RC100) {
|
||||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||||
&vacation[0],
|
&vacation[0],
|
||||||
DeviceValueType::STRING,
|
DeviceValueType::STRING,
|
||||||
@@ -4638,6 +4647,7 @@ void Thermostat::register_device_values_hc(std::shared_ptr<Thermostat::HeatingCi
|
|||||||
MAKE_CF_CB(set_summermode));
|
MAKE_CF_CB(set_summermode));
|
||||||
register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
|
register_device_value(tag, &hc->summermode, DeviceValueType::ENUM, FL_(enum_summer), FL_(summermode), DeviceValueUOM::NONE);
|
||||||
register_device_value(tag, &hc->hpoperatingstate, DeviceValueType::ENUM, FL_(enum_operatingstate), FL_(hpoperatingstate), DeviceValueUOM::NONE);
|
register_device_value(tag, &hc->hpoperatingstate, DeviceValueType::ENUM, FL_(enum_operatingstate), FL_(hpoperatingstate), DeviceValueUOM::NONE);
|
||||||
|
register_device_value(tag, &hc->vacationmode, DeviceValueType::BOOL, FL_(vacationmode), DeviceValueUOM::NONE);
|
||||||
if (model == EMSdevice::EMS_DEVICE_FLAG_RC100 || model == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
if (model == EMSdevice::EMS_DEVICE_FLAG_RC100 || model == EMSdevice::EMS_DEVICE_FLAG_CR120) {
|
||||||
register_device_value(
|
register_device_value(
|
||||||
tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode));
|
tag, &hc->controlmode, DeviceValueType::ENUM, FL_(enum_controlmode), FL_(controlmode), DeviceValueUOM::NONE, MAKE_CF_CB(set_controlmode));
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ class Thermostat : public EMSdevice {
|
|||||||
int8_t reducetemp;
|
int8_t reducetemp;
|
||||||
int8_t vacreducetemp;
|
int8_t vacreducetemp;
|
||||||
uint8_t vacreducemode;
|
uint8_t vacreducemode;
|
||||||
|
uint8_t vacationmode;
|
||||||
uint8_t wwprio;
|
uint8_t wwprio;
|
||||||
uint8_t fastHeatup;
|
uint8_t fastHeatup;
|
||||||
char holiday[22];
|
char holiday[22];
|
||||||
|
|||||||
Reference in New Issue
Block a user