AiLight Versions Save

AiLight is a custom firmware for the esp8266 based Ai-Thinker (or equivalent) RGBW WiFi light bulbs

v1.0.0

2 years ago

AiLight has not been updated for over two years which is a sign that either it is abandoned or has matured. For me personally it is the latter: I feel the firmware contains all the bells and whistles needed for a good smart WiFi light bulb. And all my light bulbs have been running smoothly over the years. As such, this release will then be the final release of AiLight.

For those that still would look for some more improvements or additional features, please feel free to fork this repository and add your own.

A big final thanks to everybody that helped (and tested) making AiLight a great little piece of firmware!

Below you will find a summary of the most significant changes. For more details, please check the CHANGELOG file of this project.

Added

  • Support for OpenHAB colorwheel #76. (aHcVolle)
  • my92XX Support. This allows for support of light bulbs with the my9231 LED driver such as the LOHAS brand bulbs . #50 (Nick Wolff)

Changed

  • All references to the Ai-Thinker brand name now that the AiLight Firmware also supports other types (based on the MY9231 LED driver).
  • Locked ESP Libraries to v1.2.2 as the 1.2.3 version of the WebServer package fails to build.
  • The example PlatformIO configuration has been changed due to the release of PlatformIO v4.0. If you use PlatformIO make sure the configuration entry env_default is renamed to default_envs in your platformio.ini file!
  • Updated third-party dependencies and packages.
  • Various typo fixes, security updates and clean-up.

Fixed

  • Connection to the MQTT broker was assumed to be always present and in case of a disconnect, a retry would be triggered. However in the case of the MQTT broker becoming unavailable, there was no possibility to get the connection back except for restarting the device. This has been resolved by checking at regular intervals if the connection is still there. #56, #66.
  • Building with VSCode + PlatformIO 4.0 extension gives error: ".text' will not fit in region iram1_0_seg'". #59 (Donnie)
  • Corrected duplicate 'platform' JSON definition (to 'schema') for the MQTT discovery message. #55 (Ole-Kenneth)

Removed

  • TravisCI configuration as now GitHub Actions is used.
  • 'manufacturer' information element from the Web UI now that the AiLight Firmware also supports other types (based on the MY9231 LED driver).
  • LiteServer for testing the UI as it was hardly used.

v0.6.0

5 years ago

Quite a number of changes and fixes in this new release of the AiLight firmware. Although the focus has not been on new features, most of the work has been targeting stability and security of the firmware.

Thanks to everybody helping testing and providing improvements!

Added

  • Included additional HTTP response headers for the Web UI to increase security.
  • As it may be hard to identify which ESP Core version is used, this Core version information has been added to the About page on the Web UI and the debug output.
  • Enabled Travis CI so the AiLight firmware gets build and tested with each change.
  • Allow Gamma Correction option to be set via REST API and MQTT. #23
  • Possibility to define the state (ON/OFF) of the light upon power on / reset. Three options are available: Always On, Always Off and As Before. This can be extremely useful if for example you have your light connected to a regular switch and like it to behave like a general light switch. #24.
  • MQTT availability topic for HomeAssistant is included and set to the same topic as the Last Will and Testament topic. #35.

Changed

  • Locked down versions of the platform and dependent libraries to safeguard stability. Altered the debug flag in the platformio.ini configuration file to show all warnings.
  • Home Assistant 0.84 (and up) changed the configuration syntax for the MQTT JSON platform type. A compiler directive is introduced to allow the firmware to be compiled for versions 0.84 or older of Home Assistant. #51
  • Added monitor_speed parameter for development environments in the platformio.ini configuration file to be able to override the default (9600).
  • In addition to the hostname, if the MQTT state topic, command topic or state topic are changed, the device will re-register itself on Home Assistant via the MQTT Auto discovery (if enabled). These settings are part of the Home Assistant device configuration and therefor need to be re-initialized if they are changed.
  • Renamed the 'extra_script' parameter to 'extra_scripts' in the platformio.ini configuration file as 'extra_script' will be deprecated.
  • Increased buffer for MQTT discovery payload. Payload was too small causing Home Assistant not to recognize all configuration options.
  • Added DEBUG block for code parts that are only required in debug mode.
  • Suppressed message during build and included step to remove prior generated files for the WebUI (gulpfile.js).
  • Changed the name of the ESPAsyncWebServer library in the platformio.ini configuration file since original project has changed their naming.
  • Updated e-mail address and copyright year.

Fixed

  • MQTT Reconnect timer was using the WiFi timeout directive rather than the applicable MQTT timeout directive. Created a new compiler directive to allow for setting the WiFi reconnect time to a custom value.
  • Corrected OTA port argument in the platformio.ini configuration file (Needs equal sign)
  • When settings in the Web UI were saved, the Lights tab was made active. This made verifying your changed settings quite cumbersome. After saving, the Settings tab now stays active. #14.
  • Removed the Program Memory Macros for all constants used with AsyncWebServer methods. These were causing random Software WDT resets and removing these were the remedy. #27.
  • Corrected debug flag in the platformio.ini configuration file.

v0.5.0

6 years ago

Summertime is the time to relax and take time off of work, so work on AiLight has been a tad slow :) Nevertheless, some time was found to give you a new version of AiLight: v0.5.0!

Sometimes we forget that MQTT is not the only way we have to communicate with IoT devices. That's why AiLight v0.5.0 includes an RESTful API to allow other type of applications, integrations, etc. to interact with your light.

In addition, AiLight now supports Home Assistants' MQTT Auto discovery, so your Ai-Thinker Light will be added to Home Assistant automagically.

Added

  • REST API
  • Support for Home Assistant's MQTT Discovery. Have AiLight set up your light automatically!

Changed

  • Moved MQTT Discovery notify event and reconnect timer to device callback function. MQTT functions become decoupled from device implementation.
  • Refactored MQTT and WiFi connections using event driven methods that are executed asynchronously.
  • Changed signature use of MQTT callback handlers (based on AsyncMQTT's own examples.)
  • Updated Bulma CSS Framework to 0.4.4 (including other NPM packages).
  • Clear EEPROM space before loading factory defaults.
  • Replaced core function 'memcpy' with the ESP8266 SDK counterpart.

Fixed

  • #13 Ensured (new) configuration setting has a proper value before sending via WebSockets.
  • Decreased refresh time as UI is available again within 10 seconds.

v0.4.1

6 years ago

This minor release only addresses a few minor issues and some enhancements. Most importantly with this release going forward, compiled binaries will be made available. Also, Open System WiFi networks (i.e. without a passphrase/password) can now be used as the password check on the Web UI settings page has been adjusted accordingly.

v0.4.0

6 years ago

Excited to tell you AiLight has a new version!

The biggest addition to the AiLight firmware is the support for transitions. You can now make your Ai-Thinker Light slowly transition (cross fade) between colors, rather than immediately.

Furthermore, you will be greeted with a nice popup message on the Web UI when you perform an OTA update, and when your restart or restart your light. At least now you know what is going on :)

AiLight - OTA Progress

And lastly, it was reported that saving the settings didn't work, which was due to small error in the underlying JavaScript code. This has been resolved now as well.

Thanks to all contributing and testing this AiLight firmware!

Added

  • In stead of immediately switching to a new state, you can now make the transition to a desired state (i.e. colours, brightness, etc.) perform more gradually. This will change the light (cross fade) from the current to the next state given the specified time.
  • Now the html.gz.h file is included for people that are not able to build this file themselves.
  • When an OTA update has been initiated, a message window - with a nice progress bar - is being displayed in the Web UI to indicate the user that an update is in progress. Subsequently, the Web UI is now reloaded automatically.
  • When the user chooses RESTART or RESET, a user friendly message window is being shown in the Web UI.
  • Gulpfile now includes task for generating the gamma correction table.

Changed

  • Changed position of password visibility icon to be inside input box.
  • Adjusted path to gulp binary in the 'build.py' file to provide better support Windows OS.

Fixed

  • Fixed issue #10: In the Web UI, the object holding the form's input values wasn't initialized, resulting in the user settings not being saved.
  • Ensured OTA 'complete' message isn't shown multiple times.
  • Fixed issue #8: [Violation] Added non-passive event listener to a scroll-blocking 'touchmove' event in Web UI.
  • Included missing gulp-util package in the 'package.json' file.

Removed

  • SVG font (used for icons) as most browsers started not supporting it anymore. Helps reducing the size of the firmware.
  • Removed unnecessary onConnect handler.

v0.3.0

7 years ago

Happy to announce a new release of AiLight! This version contains various fixes and a couple of new additions.

Most importantly the Over The Air (OTA) feature is now working properly. Unfortunately, it was behaving erratically due to an incorrect datatype applied. As a result, you have to upload this version of the firmware via the Serial port again.

Some additions have been made to the 'platformio.ini' and 'config.h' files as well. If you are upgrading from a previous release, please compare your version of these files to the new (example) ones in this release:

  • Migrated to the AsyncMQTTClient library (replacing PubSubClient Library): this needs to be reflected in your 'platformio.ini' file
  • MQTT Last Will and Testament support added: two new constants have been created that needs to be added to your 'config.h' file.

Thanks to all contributing and testing this AiLight firmware!

Added

  • MQTT Last Will and Testament, giving the MQTT broker and other clients option to know if the Ai-Thinker RGBW light has been disconnected gracefully or not.
  • Gamma Correction: makes the colours of the LED light to appear closer to what our eyes perceive. This allows for better colour representations.
  • favico added to HTML UI
  • Added model name to distinguish naming between AiLight and Ai-Thinker light bulb manufacturer/model name.

Changed

  • Migrated to AsyncMQTTClient library (replacing PubSubClient Library) * Please be aware of changes to the platformio.ini and config.h files!
  • Build.py script now uses locally installed Gulp binary instead of global one
  • HTML UI title includes now the device name so it's easier to identify which light you are looking at
  • Reduced size of HTML UI by removing unused style sheet elements, shrinking logo and removing unnecessary code.
  • The sliders are now accompanied with a value bubble to make it easier understanding what the actual value is.

Fixed

  • Reset button now properly performs a factory reset. Previously it was executing a restart.
  • OTA upload was behaving erratically caused by incorrectly implementing the asynchronous 'onProgress' method (Wrong datatypes used).

v0.2.0-alpha

7 years ago

After two weeks of hacking and modding, a first Alpha release is ready! So what can this AiLight firmware then do? The AiLight firmware allows you via WiFi to:

  • switch the light on or off
  • set the level of the 4 colour channels (Red, Green, Blue and White)
  • set the brightness level
  • set the light at a particular colour temperature
  • let the light flash (with a defined colour and brightness)
  • after powering on the light again, the last known settings are remembered (colour, brightness, etc.)

This can all be done in HomeAssistant (using the MQTT integration) or the built in (mobile friendly) UI.

v0.1.0

7 years ago

Initial Release of the AiLight: AiLight is a simple library to control an AiLight that contains the MY9291 LED driver.