mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 16:29:51 +03:00
Merge pull request #1711 from MichaelDvP/dev
small fixes, check second dhw circuit
This commit is contained in:
@@ -31,7 +31,7 @@ export function formatValue(
|
||||
uom: DeviceValueUOM
|
||||
) {
|
||||
if (typeof value !== 'number') {
|
||||
return '';
|
||||
return value;
|
||||
}
|
||||
switch (uom) {
|
||||
case DeviceValueUOM.HOURS:
|
||||
@@ -41,10 +41,7 @@ export function formatValue(
|
||||
case DeviceValueUOM.SECONDS:
|
||||
return LL.NUM_SECONDS({ num: value });
|
||||
case DeviceValueUOM.NONE:
|
||||
if (typeof value === 'number') {
|
||||
return new Intl.NumberFormat().format(value);
|
||||
}
|
||||
return value;
|
||||
case DeviceValueUOM.DEGREES:
|
||||
case DeviceValueUOM.DEGREES_R:
|
||||
case DeviceValueUOM.FAHRENHEIT:
|
||||
|
||||
@@ -91,6 +91,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
register_telegram_type(0x4A5, "HPFan", true, MAKE_PF_CB(process_HpFan));
|
||||
}
|
||||
|
||||
// some gas boilers, see #1701
|
||||
if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
|
||||
register_telegram_type(0x2E, "Meters", false, MAKE_PF_CB(process_Meters));
|
||||
register_telegram_type(0x3B, "Energy", false, MAKE_PF_CB(process_Energy));
|
||||
}
|
||||
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) {
|
||||
register_telegram_type(0x772, "HIUSettings", false, MAKE_PF_CB(process_HIUSettings));
|
||||
register_telegram_type(0x779, "HIUMonitor", false, MAKE_PF_CB(process_HIUMonitor));
|
||||
@@ -389,6 +395,29 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
99);
|
||||
}
|
||||
*/
|
||||
if (model() != EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&meterHeat_,
|
||||
DeviceValueType::UINT24,
|
||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||
FL_(meterHeat),
|
||||
DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &meterWw_, DeviceValueType::UINT24, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(meterWw), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&gasMeterHeat_,
|
||||
DeviceValueType::UINT24,
|
||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||
FL_(gasMeterHeat),
|
||||
DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &gasMeterWw_, DeviceValueType::UINT24, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(gasMeterWw), DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&nrgHeat2_,
|
||||
DeviceValueType::UINT24,
|
||||
DeviceValueNumOp::DV_NUMOP_DIV10,
|
||||
FL_(nrgHeat2),
|
||||
DeviceValueUOM::KWH);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &nrgWw2_, DeviceValueType::UINT24, DeviceValueNumOp::DV_NUMOP_DIV10, FL_(nrgWw2), DeviceValueUOM::KWH);
|
||||
}
|
||||
|
||||
// heatpump info
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_HEATPUMP) {
|
||||
@@ -617,7 +646,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
|
||||
FL_(auxHeaterOff),
|
||||
DeviceValueUOM::NONE,
|
||||
MAKE_CF_CB(set_additionalHeater));
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxHeaterStatus_, DeviceValueType::BOOL, FL_(auxHeaterStatus), DeviceValueUOM::NONE);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &auxHeaterStatus_, DeviceValueType::UINT8, FL_(auxHeaterStatus), DeviceValueUOM::PERCENT);
|
||||
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA,
|
||||
&auxHeaterDelay_,
|
||||
DeviceValueType::UINT16,
|
||||
@@ -1134,11 +1163,13 @@ void Boiler::process_UBAFactory(std::shared_ptr<const Telegram> telegram) {
|
||||
if (nomPower > 0 && nomPower_ == 0) {
|
||||
has_update(nomPower_, nomPower);
|
||||
}
|
||||
if (min <= max) {
|
||||
set_minmax(&burnMinPower_, 0, max);
|
||||
set_minmax(&burnMaxPower_, min, max);
|
||||
set_minmax(&wwMaxPower_, min, max);
|
||||
set_minmax(&selBurnPow_, 0, max);
|
||||
}
|
||||
}
|
||||
|
||||
// 0x18
|
||||
void Boiler::process_UBAMonitorFast(std::shared_ptr<const Telegram> telegram) {
|
||||
@@ -1562,14 +1593,15 @@ void Boiler::process_UBAEnergySupplied(std::shared_ptr<const Telegram> telegram)
|
||||
//XR1A050001 A05 Pump Heat circuit (1.0 ) 1 >> 1 & 0x01 ?
|
||||
//XR1A040001 A04 Pump Cold circuit (1.0 ) 1 & 0x1 ?
|
||||
void Boiler::process_HpPower(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, hpPower_, 11);
|
||||
has_bitupdate(telegram, hpSwitchValve_, 0, 4);
|
||||
has_bitupdate(telegram, hpCompOn_, 3, 4);
|
||||
has_bitupdate(telegram, hpEA0_, 3, 6);
|
||||
has_update(telegram, hpBrinePumpSpd_, 5);
|
||||
has_update(telegram, hpCompSpd_, 17);
|
||||
has_update(telegram, hpCircSpd_, 4);
|
||||
has_bitupdate(telegram, hpSwitchValve_, 0, 4);
|
||||
has_update(telegram, hpBrinePumpSpd_, 5);
|
||||
has_update(telegram, auxHeaterStatus_, 6);
|
||||
has_update(telegram, hpActivity_, 7);
|
||||
has_update(telegram, hpPower_, 11);
|
||||
has_update(telegram, hpCompSpd_, 17);
|
||||
|
||||
// has_update(hpHeatingOn_, hpActivity_ == 1 ? 0xFF : 0);
|
||||
// has_update(hpCoolingOn_, hpActivity_ == 2 ? 0xFF : 0);
|
||||
@@ -1861,7 +1893,7 @@ void Boiler::process_HpSilentMode(std::shared_ptr<const Telegram> telegram) {
|
||||
|
||||
// Boiler(0x08) -B-> All(0x00), ?(0x0488), data: 8E 00 00 00 00 00 01 03
|
||||
void Boiler::process_HpValve(std::shared_ptr<const Telegram> telegram) {
|
||||
has_bitupdate(telegram, auxHeaterStatus_, 0, 2);
|
||||
// has_bitupdate(telegram, auxHeaterStatus_, 0, 2);
|
||||
has_update(telegram, auxHeatMixValve_, 7);
|
||||
}
|
||||
|
||||
@@ -1948,6 +1980,20 @@ void Boiler::process_HpFan(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, fan_, 9);
|
||||
}
|
||||
|
||||
// Boiler(0x08) -B-> All(0x00), ?(0x2E), data: 00 00 1C CE 00 00 05 E8 00 00 00 18 00 00 00 02
|
||||
void Boiler::process_Meters(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, gasMeterHeat_, 0);
|
||||
has_update(telegram, gasMeterWw_, 4);
|
||||
has_update(telegram, meterHeat_, 8);
|
||||
has_update(telegram, meterWw_, 12);
|
||||
}
|
||||
|
||||
// boiler(0x08) -B-> All(0x00), ?(0x3B), data: 00 00 1B D1 00 00 05 7F
|
||||
void Boiler::process_Energy(std::shared_ptr<const Telegram> telegram) {
|
||||
has_update(telegram, nrgHeat2_, 0);
|
||||
has_update(telegram, nrgWw2_, 4);
|
||||
}
|
||||
|
||||
// HIU unit
|
||||
|
||||
// boiler(0x08) -B-> All(0x00), ?(0x0779), data: 06 05 01 01 AD 02 EF FF FF 00 00 7F FF
|
||||
|
||||
@@ -225,11 +225,15 @@ class Boiler : public EMSdevice {
|
||||
uint32_t nrgTotal_;
|
||||
uint32_t nrgWw_;
|
||||
uint32_t nrgHeat_;
|
||||
uint32_t nrgWw2_;
|
||||
uint32_t nrgHeat2_;
|
||||
uint32_t meterTotal_;
|
||||
uint32_t meterComp_;
|
||||
uint32_t meterEHeat_;
|
||||
uint32_t meterHeat_;
|
||||
uint32_t meterWw_;
|
||||
uint32_t gasMeterHeat_;
|
||||
uint32_t gasMeterWw_;
|
||||
uint8_t hpEA0_;
|
||||
uint8_t hpPumpMode_;
|
||||
uint8_t hpSetDiffPress_;
|
||||
@@ -367,6 +371,10 @@ class Boiler : public EMSdevice {
|
||||
void process_HpMeters(std::shared_ptr<const Telegram> telegram);
|
||||
void process_WeatherComp(std::shared_ptr<const Telegram> telegram);
|
||||
void process_HpFan(std::shared_ptr<const Telegram> telegram);
|
||||
|
||||
void process_Meters(std::shared_ptr<const Telegram> telegram);
|
||||
void process_Energy(std::shared_ptr<const Telegram> telegram);
|
||||
|
||||
// HIU
|
||||
void process_HIUSettings(std::shared_ptr<const Telegram> telegram);
|
||||
void process_HIUMonitor(std::shared_ptr<const Telegram> telegram);
|
||||
|
||||
@@ -1203,6 +1203,12 @@ void Thermostat::process_RC300WWmode(std::shared_ptr<const Telegram> telegram) {
|
||||
// type 02F6
|
||||
// RC300WWmode(0x2F6), data: 02 FF 04 00 00 00 08 05 00 08 04 00 00 00 00 00 00 00 00 00 01
|
||||
void Thermostat::process_RC300WW2mode(std::shared_ptr<const Telegram> telegram) {
|
||||
telegram->read_value(wwCircuit2_, 0);
|
||||
if (wwCircuit2_ == 0) {
|
||||
toggle_fetch(telegram->type_id, false);
|
||||
return;
|
||||
}
|
||||
toggle_fetch(telegram->type_id, true);
|
||||
has_update(telegram, wwCircPump2_, 1); // FF=off, 0=on ?
|
||||
|
||||
if (model() == EMSdevice::EMS_DEVICE_FLAG_BC400) {
|
||||
@@ -1227,6 +1233,9 @@ void Thermostat::process_RC300WW2mode(std::shared_ptr<const Telegram> telegram)
|
||||
// types 0x31D and 0x31E
|
||||
// RC300WWmode2(0x31D), data: 00 00 09 07
|
||||
void Thermostat::process_RC300WWmode2(std::shared_ptr<const Telegram> telegram) {
|
||||
if (telegram->type_id == 0x31E && wwCircuit2_ == 0) {
|
||||
return;
|
||||
}
|
||||
// 0x31D for WW system 1, 0x31E for WW system 2
|
||||
// pos 1 = holiday mode
|
||||
// pos 2 = current status of DHW setpoint
|
||||
@@ -3887,7 +3896,7 @@ void Thermostat::register_device_values() {
|
||||
DeviceValueUOM::MINUTES,
|
||||
MAKE_CF_CB(set_wwchargeduration));
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &wwCharge_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge));
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &wwExtra1_, DeviceValueType::UINT8, FL_(wwExtra1), DeviceValueUOM::DEGREES);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1, &wwExtra1_, DeviceValueType::UINT8, FL_(wwExtra), DeviceValueUOM::DEGREES);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW1,
|
||||
&wwDisinfecting_,
|
||||
DeviceValueType::BOOL,
|
||||
@@ -3940,7 +3949,7 @@ void Thermostat::register_device_values() {
|
||||
DeviceValueUOM::MINUTES,
|
||||
MAKE_CF_CB(set_wwchargeduration));
|
||||
register_device_value(DeviceValueTAG::TAG_DHW2, &wwCharge2_, DeviceValueType::BOOL, FL_(wwCharge), DeviceValueUOM::NONE, MAKE_CF_CB(set_wwcharge));
|
||||
register_device_value(DeviceValueTAG::TAG_DHW2, &wwExtra2_, DeviceValueType::UINT8, FL_(wwExtra2), DeviceValueUOM::DEGREES);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW2, &wwExtra2_, DeviceValueType::UINT8, FL_(wwExtra), DeviceValueUOM::DEGREES);
|
||||
register_device_value(DeviceValueTAG::TAG_DHW2,
|
||||
&wwDisinfecting2_,
|
||||
DeviceValueType::BOOL,
|
||||
|
||||
@@ -220,6 +220,7 @@ class Thermostat : public EMSdevice {
|
||||
uint8_t humidity_;
|
||||
uint8_t battery_;
|
||||
|
||||
uint8_t wwCircuit2_ = EMS_VALUE_UINT8_NOTSET; // not published, initialize here
|
||||
uint8_t wwExtra1_; // wwExtra active for wwSystem 1
|
||||
uint8_t wwExtra2_;
|
||||
uint8_t wwMode_;
|
||||
|
||||
@@ -543,12 +543,16 @@ MAKE_TRANSLATION(releaseWait, "releasewait", "boiler release wait time", "Wartez
|
||||
MAKE_TRANSLATION(nrgTotal, "nrgtotal", "total energy", "Energie gesamt", "", "", "całkowita energia", "", "", "", "", "celková energia") // TODO translate
|
||||
MAKE_TRANSLATION(nrgHeat, "nrgheat", "energy heating", "Energie Heizen", "", "", "energia na ogrzewanie", "", "", "ısıtma enerjisi", "", "energetické vykurovanie") // TODO translate
|
||||
MAKE_TRANSLATION(nrgWw, "nrgdhw", "energy", "Energie", "", "", "energia", "", "", "sıcak kullanım suyu enerjisi", "", "energia") // TODO translate
|
||||
MAKE_TRANSLATION(nrgHeat2, "nrgheat2", "energy heating 2", "Energie Heizen 2", "", "", "energia na ogrzewanie 2", "", "", "ısıtma enerjisi 2", "", "energetické vykurovanie") // TODO translate
|
||||
MAKE_TRANSLATION(nrgWw2, "nrgdhw2", "energy 2", "Energie 2", "", "", "energia 2", "", "", "sıcak kullanım suyu enerjisi 2", "", "energia 2") // TODO translate
|
||||
MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", "", "moc nominalna", "", "", "nominal güç", "", "nominálny výkon") // TODO translate
|
||||
MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "licznik całkowity", "", "", "", "", "meter celkom") // TODO translate
|
||||
MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "licznik sprężarki", "", "", "", "", "meter kompresor") // TODO translate
|
||||
MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "licznik dogrzewacza", "", "", "", "", "elektrický ohrievač") // TODO translate
|
||||
MAKE_TRANSLATION(meterHeat, "meterheat", "meter heating", "Messung Heizen", "", "", "licznik ogrzewania", "", "", "", "", "") // TODO translate
|
||||
MAKE_TRANSLATION(meterWw, "meterdhw", "meter", "Messung", "", "", "licznik", "", "", "", "", "") // TODO translate
|
||||
MAKE_TRANSLATION(gasMeterHeat, "gasmeterheat", "gas meter heating", "Gas Messung Heizen", "", "", "", "", "", "", "", "") // TODO translate
|
||||
MAKE_TRANSLATION(gasMeterWw, "gasmeterdhw", "gas meter", "Gas Messung", "", "", "", "", "", "", "", "") // TODO translate
|
||||
|
||||
// HIU
|
||||
MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento", "teplota prívodu tepelnej siete") // TODO translate
|
||||
@@ -636,8 +640,7 @@ MAKE_TRANSLATION(pvLowerCool, "pvlowercool", "lower cooling with PV", "Kühlabse
|
||||
MAKE_TRANSLATION(wwMode, "mode", "mode", "Modus", "Modus", "Läge", "tryb pracy", "modus", "mode", "mod", "modalità", "režim")
|
||||
MAKE_TRANSLATION(wwSetTempLow, "settemplow", "set low temperature", "untere Solltemperatur", "Onderste streeftemperatuur", "Nedre Börvärde", "zadana temperatura obniżona", "nedre settverdi", "réglage température basse", "hedef düşük sıcaklık", "imposta bassa temperatura", "nastaviť nízku teplotu")
|
||||
MAKE_TRANSLATION(wwWhenModeOff, "whenmodeoff", "when thermostat mode off", "bei Thermostatmodus AUS", "Als Thermostaat op UIT", "när Termostatläge är AV", "gdy wyłączono na termostacie", "når modus er av", "lorsque mode thermostat off", "termostat modu kapalı olduğunda", "quando termostato modalita OFF", "keď je režim termostatu vypnutý")
|
||||
MAKE_TRANSLATION(wwExtra1, "extra1", "circuit 1 extra", "Kreis 1 Extra", "Circuit 1 extra", "Krets 1 Extra", "obieg dodatkowy 1", "ekstra krets 1", "circuit 1 extra", "devre 1 ekstra", "Circuito 1 extra", "okruh 1 extra")
|
||||
MAKE_TRANSLATION(wwExtra2, "extra2", "circuit 2 extra", "Kreis 2 Extra", "Circuit 2 extra", "Kets 2 Extra", "obieg dodatkowy 2", "ekstra krets 2", "circuit 2 extra", "devre 2 ekstra", "Circuito 2 extra", "okruh 2 extra")
|
||||
MAKE_TRANSLATION(wwExtra, "extra", "extra", "Extra", "extra", "Extra", "obieg", "ekstra", "extra", "ekstra", "extra", "extra")
|
||||
MAKE_TRANSLATION(wwCharge, "charge", "charge", "Laden", "Laden", "Ladda", "grzanie", "lade", "charge", "doldurma", "carica", "nabiť")
|
||||
MAKE_TRANSLATION(wwChargeDuration, "chargeduration", "charge duration", "Ladedauer", "Laadtijd", "Laddtid", "czas grzania dodatkowej ciepłej wody", "ladetid", "durée charge", "doldurma süresi", "durata carica", "doba nabíjania")
|
||||
MAKE_TRANSLATION(wwDisinfect, "disinfect", "disinfection", "Desinfektion", "Desinfectie", "Desinfektion", "dezynfekcja termiczna", "desinfeksjon", "désinfection", "dezenfeksiyon", "disinfezione", "dezinfekcia")
|
||||
|
||||
Reference in New Issue
Block a user