ControllerX. Bring full functionality to light and media player controllers

How can i controll Magic home Led strip effect_list with Ikea E1524 remote control ? I can control brightness and change color, but can’t change effects.

effect_list:
  - blue_fade
  - blue_strobe
  - colorjump
  - colorloop
  - colorstrobe
  - cyan_fade
  - cyan_strobe
  - gb_cross_fade
  - green_fade
  - green_strobe
  - purple_fade
  - purple_strobe
  - rb_cross_fade
  - red_fade
  - red_strobe
  - rg_cross_fade
  - white_fade
  - white_strobe
  - yellow_fade
  - yellow_strobe
  - random
supported_color_modes:
  - rgb
color_mode: rgb
brightness: 255
hs_color:
  - 255.059
  - 100
rgb_color:
  - 64
  - 0
  - 255
xy_color:
  - 0.158
  - 0.05
ip_address: 192.168.1.xxx
friendly_name: leds strip
supported_features: 36

Configuration in yaml

led_controller:
  module: controllerx
  class: E1810Controller
  controller: sensor.led_controller_action
  integration: z2m
  light: light.leds_strip
  mapping:
  toggle:
    service: light.leds_strip 
    data:
      entity_id: flux_led.set_custom_effect
      effect: "{{ state_attr('light.leds_strip', 'effect_list') | random }}" 

Also tried

led_controller:
  module: controllerx
  class: E1810Controller
  controller: sensor.led_controller_action
  integration: z2m
  light: light.leds_strip
  mapping:
  toggle:
    service: flux_led.set_custom_effect
    data:
      entity_id: light.leds_strip 
      effect: "{{ state_attr('flux_led.set_custom_effect', 'effect_list') | random }}" 

Hi, I’m also looking for the exact same functionality (in fact I have opened a issue with a question for it).
Just one question on setting the input selector - can I do it from the controller itself? For example: double_click the toggle button and the value of the input selector is “1”, tripple click and the value is “2”, etc.?

I have tried to include the following code but it doesn’t seem to work:

livingroom_light_app:
  module: controllerx
  class: E1810Controller
  controller: sensor.ikea_action
  integration: z2m 
  light: light.livingroom
  merge_mapping:
    toggle$2:
      input_number.ikea_button_lamp_selector: 1
      service: light.toggle
      data:
        entity_id: light.sofa_light
    toggle$3:
      input_number.ikea_button_lamp_selector: 2
      service: light.toggle
      data:
        entity_id: light.table_light

Hello,

I am trying to switch a Tasmota plug with an Ikea E1810 controller, but I get an error. And idea what I am doing wrong?

  module: controllerx
  class: E1810Controller
  controller: zigbee2mqtt/Ikea1/action
  integration: mqtt
  switch: switch.xmastree
  actions:
    - toggle

I het the following error:


2021-12-07 09:09:49.893594 INFO Ikea1_app: 🎮 ControllerX v4.16.0

2021-12-07 09:09:49.893854 WARNING Ikea1_app: ------------------------------------------------------------

2021-12-07 09:09:49.894231 WARNING Ikea1_app: Unexpected error running initialize() for Ikea1_app

2021-12-07 09:09:49.894521 WARNING Ikea1_app: ------------------------------------------------------------

2021-12-07 09:09:49.895541 WARNING Ikea1_app: Traceback (most recent call last):

  File "/usr/local/lib/python3.9/site-packages/appdaemon/app_management.py", line 163, in initialize_app

    await init()

  File "/conf/apps/controllerx/cx_core/controller.py", line 107, in initialize

    await self.init()

  File "/conf/apps/controllerx/cx_core/type/light_controller.py", line 139, in init

    await super().init()

Gr. Remco

------Update------

I fixed it by first turning the switch into a light entity in HA. But I am still curious why it doesn’t work with switch:

This looks really cool, will try it out.

My applications use two Ikea E1744 symfonisk knobs. One for controlling three media players in one large room, and one for controlling different groups of lights. HASS automations determine which media player/light group was most recently activated, store this in input_text entities, and then hopefully I can use AppDaemon + ControllerX to yield reliable and smooth volume/brightness changes. My spaghetti automations to do the controlling part are really cool when they work, but are not reliable/smooth enough that I’d stop optimizing just yet :nerd_face:

My cover experience (in french)

1 Like

Anybody able to help me to get my Ikea E1744 symfonisk controller to be more responsive in controlling Philips Hue lights? I’ve followed the steps mentioned under 9. Symfonisk controller (E1744) works, but pretty laggy in the ControllerX FAQ, however the Hue Light group still lags ~2 seconds behind knob turns. It is also a bit hit or miss if the brightness will increase or decrease reagardless of which direction I turn the knob, and the changes are not very smooth.

I am using the Hue integration on it’s own hub, but triggering light changes from within the HA frontend or even via other Zigbee devices through MQTT happens without measurable delay, so I don’t think it’s something to do with Hue.

Here is what I have in apps.yaml:

symfonisk_light_controller:  # direct via mqtt topic
  module: controllerx
  class: E1744LightController
  integration:
    name: z2m
    listen_to: mqtt
  controller: symfonisk_light_controller
  light: light.dining_room
  smooth_power_on: true

Here is the relevant section from Zigbee2MQTT devices.yaml. I’ve tried playing around with the debounce and removing it entirely but I don’t notice much of a difference.

'0x680ae2fffe5c1fc9':
  friendly_name: symfonisk_light_controller
  optimistic: true
  legacy: false
  simulated_brightness: {}
  debounce: 0.5
  debounce_ignore:
    - action

And here is how I’ve added the MQTT broker in appdaemon.yaml:

secrets: /config/secrets.yaml
appdaemon:
  latitude: 52...
  longitude: 4...
  elevation: 2
  time_zone: Europe/Amsterdam
  plugins:
    HASS:
      type: hass
    MQTT:
      type: mqtt
      namespace: mqtt # This is important
      client_host: 192.168.178.44
      client_user: mqtt-user
      client_password: !secret mqtt_client_password
http:
  url: http://127.0.0.1:5050
admin:
api:
hadashboard:

Hello. It used to be where we were able to long press to dim down the light or up. Now, it doesn’t work any more. We need to tap press constantly for it to dim. The code changed or it is due to one of HA core updates?

Update: Upgrade to 2021.5 and it started to work again. Not sure if that was the issue.

Thank god I found this thread ;-).

A few weeks ago I bought a Hue Wall Switch Module for my odd wall switch to operate some hue bulbs. As I’m using Home Assistant I thought it will be an easy thing. Well…

I got AppDeamon and ControllerX to work and configured everything. I could use the switch but I always had to do “double clicks” even I wanted to have a toggled momentary switch. I had the same problem when I used the switch directly in the phoscon configurator.

Today I finally found out that it is a problem of my special dumb wall-switch. It is not a momentary switch. It is a mix between a momentary switch and a classical switch (called Tastschalter in German). So once you click the circuit is closed and the light turns on. Next you click again and the circuit is open. So no signal for the wall module. This means you always have to click twice for the module/controllerx to get a signal.

When I configure the switch in the Phoscon App as a classical wall switch I can finally use it as intended.

No my question, how can I get this in ControllerX?

Thanks a lot for helb and Merry Christmas from good old Germany.

Hi, thank you for this great project.

I just want to make sure it’s still maintained and still working as I saw this issue:

I tried to make my install work with z2m yesterday but it didn’t work.

Is there a discord or something to discuss ControllerX with other users?

Hi @thanasegar,

I would need to see the AppDaemon logs to see what is happening. To easily track your error, I recommend you create a GitHub issue with the Question form so I can help you out easily.

The configuration looks good to me, so it must be something else.

Regards,
Xavi M.

Hi @smile,

There are few things wrong in the configuration:

  • The indentation. The toggle should go inside the mapping
  • The entity_id should be the light you want to change
  • The service should be the service you want to call (light.turn_on)

Configuration looks like:

led_controller:
  module: controllerx
  class: E1810Controller
  controller: sensor.led_controller_action
  integration: z2m
  light: light.leds_strip
  mapping:
    toggle:
      service: light.turn_on 
      data:
        entity_id: light.leds_strip
        effect: "{{ state_attr('light.leds_strip', 'effect_list') | random }}"

However, you need to know that by using the mapping you are overwriting the default mapping and the center button will not toggle the light anymore. If you still want to toggle it you need to replace light.turn_on for light.toggle.

Regards,
Xavi M.

Hi @Papi77,

Please check the issue you open where I answer your question: Control brightness for two lamps seperatelly · Issue #393 · xaviml/controllerx · GitHub

Regarding the input_select you can call multiple services by passing an array to the actions:

livingroom_light_app:
  module: controllerx
  class: E1810Controller
  controller: sensor.ikea_action
  integration: z2m 
  light: light.livingroom
  merge_mapping:
    toggle$2:
      - service: light.toggle
        entity_id: light.sofa_ligh
      - service: input_number.set_value
        entity_id: input_number.ikea_button_lamp_selector
        data:
          value: 1

You can do the same for toggle$3.

Regards,
Xavi M.

Hi @rhannink,

The E1810Controller is a LightController, so it does expect a light, not a switch. The E1810 does not have a Switch controller, but you can overcome that with the SwitchController class:

example_app:
  module: controllerx
  class: SwitchController
  controller: zigbee2mqtt/Ikea1/action
  integration: mqtt
  switch: switch.xmastree
  mapping:
    toggle: toggle

Regards,
Xavi M.

Hi @cjborchert,

E1744 controller is a tricky one. I see you follow all the steps from the FAQ site, so these are the reasons you are still experiencing some lag:

  • Network is slow. Either the light or the controller is far from the coordinator or a router in the Zigbee network.
  • Light is slow to respond. Maybe the light is not responding quick through the Hue hub.

To debug this further. I recommend:

  • Check z2m logs to see if the logs of the E1744 appear quick or there is the delay you are experiencing.
  • If you have more lights or media players, and more controller, try different setups like: Symfonisk + media player or other controller + hue. This way you can identify where is the bottle neck.

Regards,
Xavi M.

Hi @bamboozilla,

I have checked these days if the E1744 is still working and I did not find any issues with my setup. You can read more about in the ticket you linked.

If you are experiencing a problem, please open a ticket in GitHub and show in there the logs so I can see what is happening.

Regards,
Xavi M.

Hi @Camille2906,

I believe this problem comes from the switch and there is no much ControllerX can do for you. Is there a signal or event sent when you click the first time, or just when clicked the 2nd time? Since the circuit is close, I imagine that no signal can be sent, so neither Home Assistant or ControllerX can control that part since is a hardware flaw.

Regards,
Xavi M.

HI @xaviml

Thanks for this addon for home assistant.

I have added the Ikea E1810 to control my kitchen lights and it is working out of the box.

Of course I try to experiment with it. I would like to turn off the kitchen lights with a delay of 10 seconds.

I changed the config in apps.xml as stated below:

kitchen_panel_controller:
  module: controllerx
  class: E1810Controller
  controller: rc_kitchen
  integration: deconz
  light: light.kitchen_lights
  action_delay:
    1002: 10

When the lights are on the run off afte 10 seconds. Exactly what I want, but … turning the lights on will also take 10 seconds before they are turned on. Is is possible to check the state of the lights before applying the delay? And if so, how do I do it?

Regards,
Guido

Hi @MrTopKat,

Unfortunately, you cannot do this in a single config app, you will need to use 2. One for when the light is on, and another when is off with the callback constraint (AppDaemon feature):

kitchen_panel_controller_on:
  module: controllerx
  class: E1810Controller
  controller: rc_kitchen
  integration: deconz
  light: light.kitchen_lights
  action_delay:
    1002: 10
  constrain_input_select: light.kitchen_lights,on

kitchen_panel_controller_off:
  module: controllerx
  class: E1810Controller
  controller: rc_kitchen
  integration: deconz
  light: light.kitchen_lights
  constrain_input_select: light.kitchen_lights,off

Regards,
Xavi M.

Hi @xaviml
Thanks, this is working.

Keep up to good work.

Regards,
Guido

1 Like

Ive been using Symfonisk remote directly linked to the lights it been controlling, but now linked the symfonisk controller with ControllerX and its very nice and smooth, but the amount of steps when turning it is alot less now, meaning i have to rotate it 2-3 times to get the same result i just had to spin one time befor… ive seen i can adjust steps / clicks for other controller, but havent found how i do that with the Symfonisk controller? anyone can help?