IMPORTANT NOTE: This is an unofficial DIY devolpment of a web based remote control for Aeratron ceiling fans. There is neither a whatsoever guarantee that this software is working properly nor of its completeness.
This project implements a simple web interface to remote control your Aeratron AE2+ ceiling fan. The AE3+ model might also work but isn't tested.
- Download and install all listed software packages to your Arduino IDE.
- Copy all provided resource files (favicon, syslog, styles, etc.) from the
data
folder using the ESP32 Sketch Data Upload function to your ESP32 flash memory. - Download the source code and open it with your Arduino IDE.
- Compile and run the code on your device.
- Check for the IP address of your ESP32 device which is printed on your Serial Monitor.
- Connect to your device with a web brwoser of your choice.
In order to use this application you need an ESP32 module with a 433MHz transmitter attached. In my case the device is USB bus powered only and capable to control the fan over a distance of approximately 4 meters.
In order to enable all implemented features the following packages are used:
- Arduino core for the ESP32 for ESP32 core features
- ESPAsyncWebServer for web services
- AsyncTCP for network routines
- ESP32FS Plugin to make use of SPIFFS
- ArduinoJson to store a syslog as json file on the SPIFFS
- Useful: ESP32 Erase Flash Plugin to erase the whole ESP32 flash memory if necessary
Aeratrons RF remote controls (at least model AE+) are communicating using the LPD433 UHF band.
Worth mentioning: the data transfer method is similar to those of the famous WS2812 RGB LEDs. Each bit is represented in a timely manner of a 0 and 1.
Representation of a logic 0:
+--------+
|
+-------------+
<-----T0L-----><--T0H-->
Representation of a logic 1:
+--------------+
|
+-------+
<--T1L--><-----T1H----->
According to my measurements, the timings are as follows:
Period | Duration |
---|---|
T0L | 1000µs |
T0H | 500µs |
T1L | 500µs |
T1H | 1000µs |
A single command of the Aeratron fan always consists of a start bit (logic 1) followed by three bytes of the fan address, fan state and light state.
+---+------------------------+------------------------+------------------------+
| S | Fan Address | Fan State | Light State |
+---+------------------------+------------------------+------------------------+
^
Start bit
The first byte represents the fan address. The address is related to the position of the dip switches inside your original Aeratron (AE+) remote control. You find the dip switches right next to the battery case. By factory setting all four dip switches are set. Therefore the address byte equals 0xF0
.
The second byte contains information about the fan speed as well the rotation direction. The byte pattern is as follows:
+---+---+---+---+---+---+---+---+
| | | D | | | S P E E D |
+---+---+---+---+---+---+---+---+
^ ^
direction bit speed level
The speed level (0 to 6) is stored binary coded within the last three bits, where 0 means the fan is turned off. If the direction bit is clear (0) the fan will rotate left (summer season). By setting the direction bit (1) it will rotate right (winter season).
Unfortunately my fan is not equipped with the light kit. Therefore I am not able to test this feature. However, at least it's possible to re-enact the sequence for turning on and off the light switch. In order to implement the whole dimming feature further equipment and testing would be necessary.
A next step could be to implement the full light dimming feature. If you would like to contribute to this project and are owning an Aeratron fan with the light kit, maybe you could provide me some light dimming sequences which I could implement. Let's get in touch!