Here’s what I found so far, with help from the GPTs
Example TX frame, 9600 baud, even parity:
F9 00 01 03 1D 00 00 44 01 5A 00 06 80 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 BC
Byte 1 (F9): This byte seems to signal the start of a message or potentially indicate the type of message or command.
Bytes 2-3 (00 01): These two bytes could be a static header or potentially a command or a device ID.
Byte 4 (03): This byte could be a command or a specific setting.
Byte 5 (1D): This byte could also be part of the command or specific setting.
Bytes 6-7 (00 00): These two bytes appear to be reserved or unused.
Bytes 8-9: Operation mode:
01 58: Heat
00 55: Dry
07 55: Fan
08 55: Auto
03 18: Cool
Bytes 10-11: Temperature setting (in Fahrenheit) which seems to be valid for all modes:
57: 73°F
56: 74°F
55: 75°F
54: 76°F
00: When the operation mode is not Heat?
Byte 12: Fan speed setting:
07: Turbo
06: High
03: Medium-High
04: Medium
02: Medium-Low
00: Low
06: Auto
02: Mute (or possibly a repeated Medium-Low speed and the mute setting is missing from the data)
Bytes 13-14: These bytes change when the operation mode changes but the exact mapping is unclear.
Byte 15: GEN mode setting:
00: OFF
02: 30%
03: 50%
01: 80%
Bytes 16-36: These bytes seem to be a data payload related to the command or setting, possibly containing status information, sensor readings, or other data.
Byte 37 (BC): This is the checksum byte. It’s calculated as the XOR of all the previous bytes in the message (excluding the checksum byte itself).
Checksum Calculation Method:
The checksum is calculated by taking the XOR (exclusive OR) of all bytes in the message, excluding the checksum byte. The result is then placed in the checksum byte. This method provides a simple and effective way of checking if the message has been received correctly.