Bring full functionality to light and media player controllers. From turning devices on/off to changing the color lights.

ControllerX brings the following functionalities for different controllers:

  • Turn on/Turn off light(s) or switch(es)
  • Toggle light(s) or switch(es)
  • Manual increase/decrease of brightness and color temperature
  • Smooth increase/decrease (holding button) of brightness and color temperature
  • Color loop changing if the light supports xy color.
  • Play/pause music
  • Volume up/down for a media player.

Why ControllerX?

Solutions like zigbee2mqtt, deconz and zha have their pros and cons, but if there is something good about these solutions is that you remove the dependency of a propietary hub (e.g.: IKEA, Xiaomi, Philips). However, there is a downside about removing this dependency and it is that not only the propietary hubs let you integrate a controller with lights or media players, but it also gives a behaviour to them. Home Assistant is great and we love it, but when it comes to create complex automations, it gets tricky. This is why I created ControllerX with AppDaemon and the Home Assistant plugin, to give the behaviour to the devices we lose when not having the original hub.

Quick example

With just this configuration placed in /config/appdaemon/apps/apps.yaml, you can have the E1810 controller from IKEA (5 buttons one) connected to the bedroom light and be able to change the brightness and color temperature or color.

  module: controllerx
  class: E1810Controller
  controller: sensor.livingroom_controller_action
  integration: z2m
  light: light.bedroom


ControllerX uses an async loop to make HA call services requests (e.g. to change the brightness, the color temperature, the xy color, the volume of a media player). This means that when a button is held, ControllerX calls periodically HA services until a release action is fired.

If you use deCONZ integration and what you want is just to dim your lights smoothly, we recommend that you to use this AppDaemon app from @Burningstone91. It brighten/dim your lights with a deCONZ calls instead of an async loop, this means that deCONZ would handle the dimming for you. Furthermore, it allows you to customise the controller the same way you can do it with CallServiceController in ControllerX.

How to start?