diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index b3d717d65..d6d27c718 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -371,7 +371,12 @@ bool CseSerialInput() return 1; } } else { - if (0x5A == serial_in_byte) { // 0x5A - Packet header 2 + if ((0x5A == serial_in_byte) && (serial_in_byte_counter)) { // 0x5A - Packet header 2 + if (serial_in_byte_counter > 1) { // Sync buffer with data (issue #1907) + serial_in_buffer[0] = serial_in_buffer[--serial_in_byte_counter]; + serial_in_byte_counter = 1; + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Fixed out-of-sync")); + } cse_receive_flag = 1; } else { serial_in_byte_counter = 0;