AC Infinity fans ship with a one-button 433 MHz remote and no smart-home integration. This project replaces the remote: an ESP32 with a CC1101 radio module speaks the fan's own protocol, and announces itself to Home Assistant over MQTT discovery. You get a clean OFF/1–10 dropdown plus a standard fan entity for voice, scenes and automations, and you can set any speed directly instead of stepping through them.
The protocol had to be worked out from captures. The big lesson, documented in the repo so nobody loses the day again: the remote is 2-FSK, not on-off keying, even though the demodulated stream looks exactly like a PWM envelope. The 16-bit frame carries a 4-bit address, a 4-bit speed and an 8-bit checksum that turned out to be a multiply in GF(2⁸), not a CRC; three codes were predicted by the rule before they were ever captured and then confirmed on air.
The repository has the Home Assistant bridge, a standalone serial transmitter for testing, a receiver that decodes the real remote, an offline decoder, reference captures and a full protocol specification so you can port it to any radio.
