Figured it out, thanks to a friendly person on reddit!
https://www.reddit.com/r/AskElectronics/comments/13e3lcw/im_receiving_and_sending_the_same_exact_hex_over/?utm_source=share&utm_medium=web2x&context=3
So, the heartbeat is 0xBB, 0x00, 0x01, 0x04, 0x02, 0x01, 0x00, 0xBD
at 9600 baud, even parity. When sending, I get a status message, which we already know is 0xBB, 0x00, 0x01, 0x4, 0x37, 0x4, 0x0, 0x31, 0x97, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x69, 0x3, 0x88, 0x0, 0x0, 0x0, 0xBD
I found exactly one web result with the heartbeat message:
“In the current industrial control or household equipment communication projects, many serial port or serial-like communication protocols are used, many of which require reading operations. In order to prevent blocking, improve processing performance, and shorten processing time during reading, the select function is often used. To read serial data, select is a magic tool for linux. It can monitor a certain file or device, and it can be processed when there is a buffer. In order to try different lengths of different protocols, such as heartbeat packets and data packets, the processing is different. A more appropriate way is to read bit by bit. When it is the header of the heartbeat packet, read the next heartbeat packet and process the heartbeat. When it is a data packet, read the next data packet and process the data packet. The following is a serial port reading case”
Logic analyzer gets here soon.
Does any of this look like expected Midea communication protocol or is it something completely different?
This is my dongle, it does NOT seem to be a OSK103