diff --git a/tasmota/xsns_69_opentherm.ino b/tasmota/xsns_69_opentherm.ino index 9ea2ed9f2..9df92742d 100644 --- a/tasmota/xsns_69_opentherm.ino +++ b/tasmota/xsns_69_opentherm.ino @@ -313,6 +313,8 @@ void sns_ot_start_handshake() AddLog(LOG_LEVEL_DEBUG, PSTR("[OTH]: perform handshake")); + sns_opentherm_protocol_reset(); + sns_ot_master->sendRequestAync( OpenTherm::buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0)); diff --git a/tasmota/xsns_69_opentherm_protocol.ino b/tasmota/xsns_69_opentherm_protocol.ino index f08d6b8a6..ce103ce3d 100644 --- a/tasmota/xsns_69_opentherm_protocol.ino +++ b/tasmota/xsns_69_opentherm_protocol.ino @@ -438,4 +438,16 @@ void sns_opentherm_dump_telemetry() add_coma = true; } } + +void sns_opentherm_protocol_reset() +{ + sns_opentherm_current_command = SNS_OT_COMMANDS_COUNT; + for (int i = 0; i < SNS_OT_COMMANDS_COUNT; ++i) + { + struct OpenThermCommandT *cmd = &sns_opentherm_commands[i]; + cmd->m_flags.m_flags = 0; + memset(cmd->m_results, 0, sizeof(OpenThermCommandT::m_results)); + } +} + #endif \ No newline at end of file