Skip to content

Commit 4a7d69c

Browse files
committed
add energy and meters emsesp#1359, emsesp#1350
1 parent 7dca774 commit 4a7d69c

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

src/devices/boiler.cpp

+25
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
8484
register_telegram_type(0x499, "HPDhwSettings", true, MAKE_PF_CB(process_HpDhwSettings));
8585
register_telegram_type(0x49C, "HPSettings2", true, MAKE_PF_CB(process_HpSettings2));
8686
register_telegram_type(0x49D, "HPSettings3", true, MAKE_PF_CB(process_HpSettings3));
87+
register_telegram_type(0x4AE, "HPEnergy", true, MAKE_PF_CB(process_HpEnergy));
88+
register_telegram_type(0x4AF, "HPMeters", true, MAKE_PF_CB(process_HpMeters));
8789
}
8890

8991
if (model() == EMSdevice::EMS_DEVICE_FLAG_HIU) {
@@ -280,6 +282,12 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
280282
MAKE_CF_CB(set_emergency_temp),
281283
15,
282284
70);
285+
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgTotal_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgTotal), DeviceValueUOM::KWH);
286+
register_device_value(DeviceValueTAG::TAG_BOILER_DATA_WW, &nrgWw_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgWw), DeviceValueUOM::KWH);
287+
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &nrgHeat_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(nrgHeat), DeviceValueUOM::KWH);
288+
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &meterTotal_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterTotal), DeviceValueUOM::KWH);
289+
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &meterComp_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterComp), DeviceValueUOM::KWH);
290+
register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &meterEHeat_, DeviceValueType::ULONG, DeviceValueNumOp::DV_NUMOP_DIV100, FL_(meterEHeat), DeviceValueUOM::KWH);
283291

284292
/*
285293
* Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
@@ -1780,6 +1788,23 @@ void Boiler::process_HpSettings3(std::shared_ptr<const Telegram> telegram) {
17801788
has_update(telegram, elHeatStep3_, 9);
17811789
}
17821790

1791+
// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 BD C4 00 00 5B 6A 00 00 00 24 00 00 62 59 00 00 00 00 00 00 00 00
1792+
// boiler(0x08) -W-> Me(0x0B), ?(0x04AE), data: 00 00 00 00 00 00 00 00 (offset 24)
1793+
void Boiler::process_HpEnergy(std::shared_ptr<const Telegram> telegram) {
1794+
has_update(telegram, nrgTotal_, 0);
1795+
has_update(telegram, nrgWw_, 4);
1796+
has_update(telegram, nrgHeat_, 12);
1797+
}
1798+
1799+
// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 48 B2 00 00 48 55 00 00 00 5D 00 00 01 78 00 00 00 00 00 00 07 61
1800+
// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 24 B0 00 00 00 12 00 00 23 A5 00 00 00 4B 00 00 00 00 00 00 00 00 (offset 24)
1801+
// boiler(0x08) -W-> Me(0x0B), ?(0x04AF), data: 00 00 00 00 00 00 00 00 (offset 48)
1802+
void Boiler::process_HpMeters(std::shared_ptr<const Telegram> telegram) {
1803+
has_update(telegram, meterTotal_, 0);
1804+
has_update(telegram, meterComp_, 4);
1805+
has_update(telegram, meterEHeat_, 8);
1806+
}
1807+
17831808
// HIU unit
17841809

17851810
// boiler(0x08) -B-> All(0x00), ?(0x0779), data: 06 05 01 01 AD 02 EF FF FF 00 00 7F FF

src/devices/boiler.h

+11-5
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ class Boiler : public EMSdevice {
209209
int16_t hpPh1_;
210210
int16_t hpTa4_;
211211
int16_t hpTw1_;
212+
uint32_t nrgTotal_;
213+
uint32_t nrgWw_;
214+
uint32_t nrgHeat_;
215+
uint32_t meterTotal_;
216+
uint32_t meterComp_;
217+
uint32_t meterEHeat_;
212218

213219
// Pool unit
214220
int8_t poolSetTemp_;
@@ -267,11 +273,9 @@ class Boiler : public EMSdevice {
267273
uint8_t setReturnTemp_;
268274

269275
// special
270-
double nrgHeatF_;
271-
double nrgWwF_;
272-
uint32_t nrgHeat_;
273-
uint32_t nrgWw_;
274-
uint8_t nomPower_;
276+
double nrgHeatF_; // double calcutate for nrgHeat
277+
double nrgWwF_; // double calcutate for nrgWw
278+
uint8_t nomPower_;
275279

276280
/*
277281
// Hybrid heatpump with telegram 0xBB is readable and writeable in boiler and thermostat
@@ -328,6 +332,8 @@ class Boiler : public EMSdevice {
328332
void process_HpDhwSettings(std::shared_ptr<const Telegram> telegram);
329333
void process_HpSettings2(std::shared_ptr<const Telegram> telegram);
330334
void process_HpSettings3(std::shared_ptr<const Telegram> telegram);
335+
void process_HpEnergy(std::shared_ptr<const Telegram> telegram);
336+
void process_HpMeters(std::shared_ptr<const Telegram> telegram);
331337
// HIU
332338
void process_HIUSettings(std::shared_ptr<const Telegram> telegram);
333339
void process_HIUMonitor(std::shared_ptr<const Telegram> telegram);

src/locale_translations.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,13 @@ MAKE_TRANSLATION(blockHyst, "blockhyst", "hyst. for boiler block", "Hysterese Sp
505505
MAKE_TRANSLATION(releaseWait, "releasewait", "boiler release wait time", "Wartezeit Kessel-Freigabe", "Wachttijd ketel vrijgave", "Väntetid Frisläppning", "czas oczekiwania na zwolnienie kotła", "kjele frigjøringsventetid", "temps attente libération chaudière", "kazan tahliyesi bekleme süresi", "tempo di attesa sblocco caldaia")
506506

507507
// energy
508+
MAKE_TRANSLATION(nrgTotal, "nrgtotal", "total energy", "Energie gesamt", "", "", "", "", "", "", "") // TODO translate
508509
MAKE_TRANSLATION(nrgHeat, "nrgheat", "energy heating", "Energie Heizen", "", "", "", "", "", "ısıtma enerjisi", "") // TODO translate
509-
MAKE_TRANSLATION(nrgWw, "nrgww", "energy dhw", "Energie Warmwasser", "", "", "", "", "", "sıcak kullanım suyu enerjisi", "") // TODO translate
510+
MAKE_TRANSLATION(nrgWw, "nrgww", "energy", "Energie", "", "", "", "", "", "sıcak kullanım suyu enerjisi", "") // TODO translate
510511
MAKE_TRANSLATION(nomPower, "nompower", "nominal Power", "Brennerleistung", "", "", "", "", "", "nominal güç", "") // TODO translate
512+
MAKE_TRANSLATION(meterTotal, "metertotal", "meter total", "Messung gesamt", "", "", "", "", "", "", "") // TODO translate
513+
MAKE_TRANSLATION(meterComp, "metercomp", "meter compressor", "Messung Kompressor", "", "", "", "", "", "", "") // TODO translate
514+
MAKE_TRANSLATION(meterEHeat, "metereheat", "meter e-heater", "Messung E-Heizer", "", "", "", "", "", "", "") // TODO translate
511515

512516
// HIU
513517
MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "System Vorlauftemperatur", "Netto aanvoertemperatuur", "", "", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento") // TODO translate

0 commit comments

Comments
 (0)