@@ -184,7 +184,9 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
184
184
185
185
register_telegram_type (0x488 , " HPValve" , true , MAKE_PF_CB (process_HpValve));
186
186
register_telegram_type (0x484 , " HPSilentMode" , true , MAKE_PF_CB (process_HpSilentMode));
187
+ register_telegram_type (0x48B , " HPPumps" , true , MAKE_PF_CB (process_HpPumps));
187
188
register_telegram_type (0x491 , " HPAdditionalHeater" , true , MAKE_PF_CB (process_HpAdditionalHeater));
189
+ register_telegram_type (0x499 , " HPDhwSettings" , true , MAKE_PF_CB (process_HpDhwSettings));
188
190
}
189
191
190
192
/*
@@ -625,6 +627,41 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const
625
627
DeviceValueUOM::DEGREES,
626
628
MAKE_CF_CB (set_tempParMode));
627
629
register_device_value (DeviceValueTAG::TAG_DEVICE_DATA, &auxHeatMixValve_, DeviceValueType::INT, FL_ (auxHeatMixValve), DeviceValueUOM::PERCENT);
630
+ register_device_value (DeviceValueTAG::TAG_DEVICE_DATA,
631
+ &tempDiffHeat_,
632
+ DeviceValueType::UINT,
633
+ DeviceValueNumOp::DV_NUMOP_DIV10,
634
+ FL_ (tempDiffHeat),
635
+ DeviceValueUOM::K,
636
+ MAKE_CF_CB (set_tempDiffHeat),
637
+ 3 ,
638
+ 10 );
639
+ register_device_value (DeviceValueTAG::TAG_DEVICE_DATA,
640
+ &tempDiffCool_,
641
+ DeviceValueType::UINT,
642
+ DeviceValueNumOp::DV_NUMOP_DIV10,
643
+ FL_ (tempDiffCool),
644
+ DeviceValueUOM::K,
645
+ MAKE_CF_CB (set_tempDiffCool),
646
+ 3 ,
647
+ 10 );
648
+ // heatpump DHW settings
649
+ register_device_value (DeviceValueTAG::TAG_BOILER_DATA_WW,
650
+ &wwComfOffTemp_,
651
+ DeviceValueType::UINT,
652
+ FL_ (wwComfOffTemp),
653
+ DeviceValueUOM::DEGREES,
654
+ MAKE_CF_CB (set_wwComfOffTemp),
655
+ 15 ,
656
+ 65 );
657
+ register_device_value (DeviceValueTAG::TAG_BOILER_DATA_WW,
658
+ &wwEcoOffTemp_,
659
+ DeviceValueType::UINT,
660
+ FL_ (wwEcoOffTemp),
661
+ DeviceValueUOM::DEGREES,
662
+ MAKE_CF_CB (set_wwEcoOffTemp),
663
+ 15 ,
664
+ 65 );
628
665
}
629
666
630
667
// dhw - DEVICE_DATA_ww topic
@@ -1267,6 +1304,7 @@ void Boiler::process_HpInConfig(std::shared_ptr<const Telegram> telegram) {
1267
1304
has_update (hpInput[3 ].option , option, 12 );
1268
1305
}
1269
1306
1307
+ // Boiler(0x08) -W-> Me(0x0B), HpHeaterConfig(0x0492), data: 03 00 00 04 00
1270
1308
void Boiler::process_HpHeaterConfig (std::shared_ptr<const Telegram> telegram) {
1271
1309
has_update (maxHeatComp_, 2 );
1272
1310
has_update (maxHeatHeat_, 3 );
@@ -1537,6 +1575,12 @@ void Boiler::process_HpValve(std::shared_ptr<const Telegram> telegram) {
1537
1575
has_update (telegram, auxHeatMixValve_, 7 );
1538
1576
}
1539
1577
1578
+ // Boiler(0x08) -B-> All(0x00), ?(0x048B), data: 00 00 0A 1E 4E 00 1E 01 2C 00 01 64 55 05 12 50 50 50 00 00 1E 01 2C 00
1579
+ // Boiler(0x08) -B-> All(0x00), ?(0x048B), data: 00 1E 00 96 00 1E (offset 24)
1580
+ void Boiler::process_HpPumps (std::shared_ptr<const Telegram> telegram) {
1581
+ has_update (telegram, tempDiffHeat_, 4 ); // is * 10
1582
+ has_update (telegram, tempDiffCool_, 3 ); // is * 10
1583
+ }
1540
1584
1541
1585
// Boiler(0x08) -> All(0x00), ?(0x0491), data: 03 01 00 00 00 02 64 00 00 14 01 2C 00 0A 00 1E 00 1E 00 00 1E 0A 1E 05 05
1542
1586
void Boiler::process_HpAdditionalHeater (std::shared_ptr<const Telegram> telegram) {
@@ -1546,6 +1590,13 @@ void Boiler::process_HpAdditionalHeater(std::shared_ptr<const Telegram> telegram
1546
1590
has_update (telegram, auxHeaterDelay_, 16 ); // is / 10
1547
1591
}
1548
1592
1593
+ // DHW 0x499
1594
+ // Boiler(0x08) -B-> All(0x00), ?(0x0499), data: 31 33 3F 3B 01
1595
+ void Boiler::process_HpDhwSettings (std::shared_ptr<const Telegram> telegram) {
1596
+ has_update (telegram, wwComfOffTemp_, 1 );
1597
+ has_update (telegram, wwEcoOffTemp_, 0 );
1598
+ }
1599
+
1549
1600
// Settings AM200
1550
1601
1551
1602
// pos 12: off(00)/Keelbypass(01)/(hc1pump(02) only standalone)
@@ -2526,7 +2577,7 @@ bool Boiler::set_tempParMode(const char * value, const int8_t id) {
2526
2577
bool Boiler::set_additionalHeaterDelay (const char * value, const int8_t id) {
2527
2578
int v;
2528
2579
if (Helpers::value2number (value, v)) {
2529
- v /= 5 ;
2580
+ v /= 10 ;
2530
2581
uint8_t data[2 ] = {(uint8_t )(v >> 8 ), (uint8_t )v};
2531
2582
write_command (0x491 , 16 , data, 2 , 0x491 );
2532
2583
return true ;
@@ -2537,11 +2588,30 @@ bool Boiler::set_additionalHeaterDelay(const char * value, const int8_t id) {
2537
2588
bool Boiler::set_hpHyst (const char * value, const int8_t id) {
2538
2589
int v;
2539
2590
if (Helpers::value2number (value, v)) {
2540
- v /= 10 ;
2591
+ v /= 5 ;
2541
2592
uint8_t data[2 ] = {(uint8_t )(v >> 8 ), (uint8_t )v};
2542
2593
write_command (0x484 , id, data, 2 , 0x484 );
2543
2594
return true ;
2544
2595
}
2545
2596
return false ;
2546
2597
}
2598
+
2599
+ bool Boiler::set_tempDiff (const char * value, const int8_t id) {
2600
+ float v;
2601
+ if (Helpers::value2float (value, v)) {
2602
+ write_command (0x48B , id, (uint8_t )(v * 10 ), 0x48B );
2603
+ return true ;
2604
+ }
2605
+ return false ;
2606
+ }
2607
+
2608
+ bool Boiler::set_wwOffTemp (const char * value, const int8_t id) {
2609
+ int v;
2610
+ if (Helpers::value2number (value, v)) {
2611
+ write_command (0x499 , id, v, 0x499 );
2612
+ return true ;
2613
+ }
2614
+ return false ;
2615
+ }
2616
+
2547
2617
} // namespace emsesp
0 commit comments