1.10 is a meaty release that brings two major changes: asynchronous packet handling, and transitions.
Async packet handling means integrations like REST and MQTT no longer block on milight packets being sent. This means better throughput and performance under high loads.
Transitions enable moving from one state to another smoothly. You can, for example, fade from 0% to 100% brightness over a configurable duration.
Additionally, there are quite a few smaller features, improvements, and bug fixes. See release notes below for more details.
New Features
Asynchronous packet handling
- Packets are now handled asynchronously. Sending a command to espMH via any of the supported integrations (HTTP, MQTT, UDP) will enqueue packets which are processed out-of-band. This means that espMH will perform significantly better under high loads. If the queue fills up and more packets come in, older packets will be dropped.
- A new setting was added related to the previous point:
packet_repeats_per_loop
. This controls how much time is spent processing packets in the queue vs. handling background tasks. - New fields in the output of
/about
display some internal information about the state of the packet queue. - For REST calls, the query parameter
waitOnQueue=true
can be provided to make the call synchronous.
Transitions
- ( #113 ) Add support for smooth transitions between two values for a field. Documentation on how to use transitions is availble in the README.
- New RESTful
/transitions
routes are available to fully control transitions.
Labels and MQTT discovery
- ( #210 ) Add ability to configure aliases/labels for device configurations in the UI. You're then able to use these labels in the REST API and MQTT.
- ( #437 ) Add support for HomeAssistant's MQTT discovery protocol. This allows for an easy way to integrate with HASS assuming that MQTT discovery is enabled. Documentation is available on the wiki.
New remote type
- Add support for the FUT020 remote type. Note that support for state is very limited because the remote itself is limited -- on and off use the same command, and mode switch is the same command.
API Documentation
-
The REST API is now specified/documented using the OpenAPI v3 spec schema.
-
Generated documentation and snapshots of the schema will be available on the Github pages site for this project. Documentation for the latest branch can always be found at this URL:
https://sidoh.github.io/esp8266_milight_hub/branches/latest/
Miscellaneous additions
- ( #448 ) WiFi mode -- allow user to specify 802.11b, g, or n mode (rather than just b or g). Default is now N (same as SDK default)
- ( #499 ) Add support for hex colors (e.g., #FF0000) in color fields. Also add a hex_color field type, which publishes the color in hex format.
Bug Fixes
- ( #266 ) Fix sniffed packets from RGB remotes
- ( #486 ) Fix bug where packets were improperly decoded as CCT when they were in fact RGB_CCT
- Fix a memory leak that occurred when settings were saved and there is a non-empty state cache.
- (Internal bug) Linked List library had a bug that prevented arbitrary nodes from being deleted
Improvements
- Use PROGMEM in a couple of new places. Will marginally improve free heap.
- ( #489 ) Put hostname in web UI title/header if set
- Pull string constants like
"brightness"
into actual constants rather than having the literals scattered throughout the codebase. Prevents typo bugs and decreases heap/flash utilization. - Refactor main JSON command -> milight packets handler to not use a mess of conditionals.
- ( #503 ) Update label for enable_automatic_mode_switching to better reflect the behavior it introduces. Add a warning that it is incompatible with color commands.