AquaIllumination have a range of WiFi enabled aquarium lights, which are controllable from a mobile app, or via a web app. They don’t publish any APIs for their range of lights but I managed to reverse engineer their API and created a python module AquaIPy to allow control of the lights.
I’ve created a HA component to support these lights, which can be found here: https://github.com/mcclown/home-assistant-custom-components.
Currently it supports:
- Individual control of each light channel, as a seperate light entity in HA.
- Control over if the light is in ‘Schedule Mode’, via a switch entity.
- A separate sensor entity for each light channels brightness value (making graphing easier).
- Although these lights support boosting some light channels to more than 100%, this component doesn’t yet support this.
- Adjusting the light channels when ‘Schedule Mode’ is enabled will cause the lights to flash the new light level, before returning to the previous light level.
The required config in configuration.yaml, is very simple. Both host and name are required but nothing else is required. If you have multiple lights paired together, then you should specify the parent light. If you don’t you will get an error. Here is an example of a config with two lights.
aquaillumination: - host: 192.168.1.100 name: sump ai - host: 192.168.1.101 name: dt ai
I’m using this component with a custom Lovelace entity, lovelace-slider-entity-row. It’s not required to use this entity but it makes the component more usable. The screenshot above shows this Lovelace UI in action. Here’s my config, as an example, for one light.
entities: - entity: light.sump_ai_uv step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_violet step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_royal step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_blue step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_green step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_deep_red step: 1 type: 'custom:slider-entity-row' - entity: light.sump_ai_cool_white step: 1 type: 'custom:slider-entity-row' title: Prime HD type: entities
I intend to contribute this back into HA, if they will accept it, since I think it’s a good candidate for a new platform. I’ll probably remove the sensor when submitting it, as the HA way of doing this would probably be to use a template sensor for each light channel.
Support for setting multiple light channels at once. It’s quite jarring as it is, since there is a slight delay in each channel adjusting, if you do it in a script. This will be implemented by adding a service for this component.
Support for the HD range of these lights (ie. driving channels over 100%. Not sure how I will support this yet, it may have to be via custom front end code, since it really needs the UI to be aware of the max power output limitations. The underlying python module supports it, so it’s just down to how to integrate that into HA.
It would be nice to have the graph and the UI use an appropriate colour for each color channel. There doesn’t seem to be a great way of doing any of that though, so it may remain a pipe dream.
I created the python module late last year and then built a test platform for HA soon afterward. I never did a write up on this at the time, as I was working out some kinks. I made some major changes recently and finally I’m pretty happy with how this all works. I’m keen for any feedback, if anyone has any?