fix ht3-reply

This commit is contained in:
MichaelDvP
2024-02-05 08:52:29 +01:00
parent 6564e444ab
commit 355c7cbd92

View File

@@ -122,7 +122,7 @@ void Roomctrl::send(const uint8_t addr) {
} }
} else { } else {
// acknowledge every poll, otherwise the master shows error A22-816 // acknowledge every poll, otherwise the master shows error A22-816
EMSuart::send_poll(addr ^ EMSbus::ems_mask()); EMSuart::send_poll(addr | EMSbus::ems_mask());
} }
} }
@@ -174,8 +174,8 @@ void Roomctrl::check(uint8_t addr, const uint8_t * data, const uint8_t length) {
*/ */
void Roomctrl::version(uint8_t addr, uint8_t dst) { void Roomctrl::version(uint8_t addr, uint8_t dst) {
uint8_t data[15]; uint8_t data[15];
data[0] = addr ^ EMSbus::ems_mask(); data[0] = addr | EMSbus::ems_mask();
data[1] = dst; data[1] = dst & 0x7F;
data[2] = 0x02; data[2] = 0x02;
data[3] = 0; data[3] = 0;
data[4] = type_; // set RC20 id 113, Ver 02.01 or Junkers FB10 id 109, Ver 16.05, RC100H id 200 ver 40.04 data[4] = type_; // set RC20 id 113, Ver 02.01 or Junkers FB10 id 109, Ver 16.05, RC100H id 200 ver 40.04
@@ -188,7 +188,8 @@ void Roomctrl::version(uint8_t addr, uint8_t dst) {
} }
// RC200 adds some extra bytes // RC200 adds some extra bytes
data[7] = 0; data[7] = 0;
data[8] = 0xFF, data[9] = 0; data[8] = 0xFF;
data[9] = 0;
data[10] = 0; data[10] = 0;
data[11] = 0; data[11] = 0;
data[12] = 0; data[12] = 0;
@@ -201,8 +202,8 @@ void Roomctrl::version(uint8_t addr, uint8_t dst) {
*/ */
void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t type, uint8_t offset) { void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t type, uint8_t offset) {
uint8_t data[10]; uint8_t data[10];
data[0] = addr ^ EMSbus::ems_mask(); data[0] = addr | EMSbus::ems_mask();
data[1] = dst; data[1] = dst & 0x7F;
data[2] = type; data[2] = type;
data[3] = offset; data[3] = offset;
data[4] = EMSbus::calculate_crc(data, 4); // apppend CRC data[4] = EMSbus::calculate_crc(data, 4); // apppend CRC
@@ -211,8 +212,8 @@ void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t type, uint8_t offset)
void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t offset, uint8_t typeh, uint8_t typel) { void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t offset, uint8_t typeh, uint8_t typel) {
uint8_t data[10]; uint8_t data[10];
data[0] = addr ^ EMSbus::ems_mask(); data[0] = addr | EMSbus::ems_mask();
data[1] = dst; data[1] = dst & 0x7F;
data[2] = 0xFF; data[2] = 0xFF;
data[3] = offset; data[3] = offset;
data[4] = typeh; data[4] = typeh;
@@ -226,8 +227,8 @@ void Roomctrl::unknown(uint8_t addr, uint8_t dst, uint8_t offset, uint8_t typeh,
*/ */
void Roomctrl::temperature(uint8_t addr, uint8_t dst, uint8_t hc) { void Roomctrl::temperature(uint8_t addr, uint8_t dst, uint8_t hc) {
uint8_t data[12]; uint8_t data[12];
data[0] = addr ^ EMSbus::ems_mask(); data[0] = addr | EMSbus::ems_mask();
data[1] = dst; data[1] = dst & 0x7F;
if (type_ == RC20) { // RC20, telegram 0xAF if (type_ == RC20) { // RC20, telegram 0xAF
data[2] = 0xAF; data[2] = 0xAF;
data[3] = 0; data[3] = 0;
@@ -282,8 +283,8 @@ void Roomctrl::temperature(uint8_t addr, uint8_t dst, uint8_t hc) {
// send telegram 0x047B only for RC100H // send telegram 0x047B only for RC100H
void Roomctrl::humidity(uint8_t addr, uint8_t dst, uint8_t hc) { void Roomctrl::humidity(uint8_t addr, uint8_t dst, uint8_t hc) {
uint8_t data[11]; uint8_t data[11];
data[0] = addr ^ EMSbus::ems_mask(); data[0] = addr | EMSbus::ems_mask();
data[1] = dst; data[1] = dst & 0x7F;
uint16_t dew = calc_dew(remotetemp_[hc], remotehum_[hc]); uint16_t dew = calc_dew(remotetemp_[hc], remotehum_[hc]);
if (type_ == RC100H) { // RC100H, telegram 47B if (type_ == RC100H) { // RC100H, telegram 47B
data[2] = 0xFF; data[2] = 0xFF;