ControllerX. Bring full functionality to light and media player controllers

Hi @xaviml,

legacy: false was the trick, is working now. The kitchen_lights is a group of lights in Zigbee2MQTT.

Thank you for your help.

Regards,
Paul

1 Like

Hi ,

Iā€™m using the new Z2M integration but iā€™ve noticed that i cant use ON HOLD function anymore to change the color of the lights. With the new integration it only changes the color temp. Iā€™ve tried to use mapping/ merge_mapping feature for the first time but it seems that i canā€™t overwrite this

slaapkamer:
  module: controllerx
  class: Philips929002398602Z2MLightController
  controller: dimmer switch
  integration:
    name: z2m
    listen_to: mqtt
  light: 
    name: slaapkamer_lampen
    mode: mqtt
  merge_mapping:
    on_hold: hold_color_up

iā€™m getting the following error:

ValueError: hold_color_up is not one of the predefined actions. Available actions are: [ā€˜onā€™, ā€˜offā€™, ā€˜toggleā€™, ā€˜releaseā€™, ā€˜on_full_brightnessā€™, ā€˜on_full_color_tempā€™, ā€˜on_min_brightnessā€™, ā€˜on_min_color_tempā€™, ā€˜set_half_brightnessā€™, ā€˜set_half_color_tempā€™, ā€˜clickā€™, ā€˜click_brightness_upā€™, ā€˜click_colortemp_upā€™, ā€˜click_brightness_downā€™, ā€˜click_colortemp_downā€™, ā€˜holdā€™, ā€˜hold_brightness_upā€™, ā€˜hold_colortemp_upā€™, ā€˜hold_brightness_downā€™, ā€˜hold_brightness_toggleā€™, ā€˜hold_colortemp_downā€™, ā€˜hold_colortemp_toggleā€™, ā€˜xycolor_from_controllerā€™, ā€˜colortemp_from_controllerā€™, ā€˜brightness_from_controller_levelā€™, ā€˜brightness_from_controller_angleā€™].

Blockquote

Is the expected behaviour or do i need a differtent mapping code ?

regards

Hi @mountain ,

This is expected. As mentioned in here the color looping is not supported on Zigbee2MQTT light controllers. This is because Zigbee2MQTT does not have a command for those. The solution is to either use a normal Light Controller or use 2 configurations. I will give you an eexample of 2 configurations to use zigbee2mqtt commands for everything except for the light looping.

slaapkamer:
  module: controllerx
  class: Philips929002398602Z2MLightController
  controller: dimmer switch
  integration:
    name: z2m
    listen_to: mqtt
  light: 
    name: slaapkamer_lampen
    mode: mqtt
  excluded_actions: [on_hold, on_hold_release, off_hold, off_hold_release]

slaapkamer_for_light_looping:
  module: controllerx
  class: Philips929002398602LightController
  controller: dimmer switch
  integration:
    name: z2m
    listen_to: mqtt
  light: light.slaapkamer_lampen  # this is the HA entity
  actions: [on_hold, on_hold_release, off_hold, off_hold_release]

Regards,
Xavi M.

Ohā€¦ you are right, itā€™s literally mentioned in the post. Guess i missed that one , my badā€¦
Thanks for the given examples , it makes sense for me now how i need to use them.
Thanks for your help !
regards
Mountain

1 Like

My lights started acting upā€¦ Whenever I press the Ikea button now, I have to really mash the button to switch the light on or off; one press isnā€™t enough anymore. Sometimes it still only takes one press but most of the time I have to do it 3ā€“5 times. Not sure what has changed, controllerx updated though.

Using Ikea E1743 button and Philips Hue lights.

The button press clearly is registered by AppDaemon every time, from the logs:

2022-07-09 11:19:23.532250 INFO office_controller: šŸ¤– Service: e[1mlight.turn_offe[0m - entity_id: light.office_light
2022-07-09 11:19:23.529098 INFO office_controller: šŸƒ Running `Predefined (off)` now
2022-07-09 11:19:23.527666 INFO office_controller: šŸŽ® Button event triggered: `off`
2022-07-09 11:19:22.484029 INFO office_controller: šŸ¤– Service: e[1mlight.turn_offe[0m - entity_id: light.office_light
2022-07-09 11:19:22.481877 INFO office_controller: šŸƒ Running `Predefined (off)` now
2022-07-09 11:19:22.480449 INFO office_controller: šŸŽ® Button event triggered: `off`
2022-07-09 11:19:19.956750 INFO office_controller: šŸ¤– Service: e[1mlight.turn_one[0m - entity_id: light.office_light
2022-07-09 11:19:19.954631 INFO office_controller: šŸƒ Running `Predefined (on)` now
2022-07-09 11:19:19.953240 INFO office_controller: šŸŽ® Button event triggered: `on`
2022-07-09 11:19:17.702869 INFO office_controller: šŸ¤– Service: e[1mlight.turn_one[0m - entity_id: light.office_light
2022-07-09 11:19:17.700157 INFO office_controller: šŸƒ Running `Predefined (on)` now
2022-07-09 11:19:17.698399 INFO office_controller: šŸŽ® Button event triggered: `on`
2022-07-09 11:19:16.448765 INFO office_controller: šŸ¤– Service: e[1mlight.turn_one[0m - entity_id: light.office_light
2022-07-09 11:19:16.446302 INFO office_controller: šŸƒ Running `Predefined (on)` now
2022-07-09 11:19:16.444826 INFO office_controller: šŸŽ® Button event triggered: `on`
2022-07-09 11:19:14.673688 INFO office_controller: šŸ¤– Service: e[1mlight.turn_one[0m - entity_id: light.office_light
2022-07-09 11:19:14.671436 INFO office_controller: šŸƒ Running `Predefined (on)` now
2022-07-09 11:19:14.669807 INFO office_controller: šŸŽ® Button event triggered: `on`
# apps.yaml
office_controller:
  module: controllerx
  class: E1743Controller
  controller:
    - sensor.office_switch_action
    - sensor.office_switch_desk_action
  integration: z2m
  light: light.office_light
# z2m log
nfo MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"on","battery":74,"click":"on","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"","battery":74,"linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"battery":74,"click":"","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/action', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/click', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"on","battery":74,"click":"on","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"","battery":74,"linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"battery":74,"click":"","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/action', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/click', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"on","battery":74,"click":"on","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"","battery":74,"linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"battery":74,"click":"","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/action', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/click', payload 'on'
info MQTT publish: topic 'zigbee2mqtt/Office light', payload '{"brightness":245,"color_temp":336,"linkquality":174,"state":"ON","update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"off","battery":74,"click":"off","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"","battery":74,"linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"battery":74,"click":"","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/action', payload 'off'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/click', payload 'off'
info MQTT publish: topic 'zigbee2mqtt/Lobby light', payload '{"brightness":120,"color_temp":391,"linkquality":174,"state":"OFF","update":{"state":"available"},"update_available":true}'
info Update available for 'Lobby light'
info MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"Update available for 'Lobby light'","meta":{"device":"Lobby light","status":"available"},"type":"ota_update"}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"off","battery":74,"click":"off","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"action":"","battery":74,"linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)', payload '{"battery":74,"click":"","linkquality":174,"update":{"state":"idle"},"update_available":false}'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/action', payload 'off'
info MQTT publish: topic 'zigbee2mqtt/Office switch (desk)/click', payload 'off'
info MQTT publish: topic 'zigbee2mqtt/Office light', payload '{"brightness":245,"color_temp":336,"linkquality":174,"state":"OFF","update":{"state":"idle"},"update_available":false}'

But sometimes in z2m, I get a bunch of these:

error Publish 'set' 'brightness' to 'Office light' failed: 'Error: Command 0x00178801047301dc/11 genLevelCtrl.moveToLevelWithOnOff({"level":247,"transtime":0}, {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (no response received)'
info MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"Publish 'set' 'brightness' to 'Office light' failed: 'Error: Command 0x00178801047301dc/11 genLevelCtrl.moveToLevelWithOnOff({\"level\":247,\"transtime\":0}, {\"timeout\":10000,\"disableResponse\":false,\"disableRecovery\":false,\"disableDefaultResponse\":false,\"direction\":0,\"srcEndpoint\":null,\"reservedBits\":0,\"manufacturerCode\":null,\"transactionSequenceNumber\":null,\"writeUndiv\":false}) failed (no response received)'","meta":{"friendly_name":"Office light"},"type":"zigbee_publish_error"}'

So z2m gets the button press, so does appdaemon, so does controllerx. What is going on?

Well, nevermind. Itā€™s the amazing conbee II acting up again because it was too close to the ethernet cableā€¦ I moved it to the next bunch of USB ports (2cm over) and now it works fine. So happy with this great piece of hardware that the conbee II is :frowning:

1 Like

Hi @kiwoa ,

Glad you found out the problem. I was about to say thatthe problem might be from the light, not the controller. You probably have had experienced the same by turning on/off the light from Home Asisstant directly.

Cheers,
Xavi M.

@xaviml Iā€™ve set up an Ikea e1810 with zha and Iā€™m having an issue with the down hold function. Once the lights start dimming they donā€™t stop until the lights turn off. Increasing brightness functions as normal, lights stop increasing brightness on release. Any ideas what could be going on?

living_room_remote_dimming:
  module: controllerx
  class: E1810Controller
  controller: 5c:02:72:ff:fe:3c:f9:62
  integration: zha
  light: light.living_room_lights

Hi @baralien.spm ,

At first I would say that is either a problem with the controller or the mapping is off due to changes on ZHA. Could ypu please share logs when you experience this? It would help if you share logs for brightness up (working) and brightness down (not working). Also, could you please add the log level in the configuration?

living_room_remote_dimming:
  log_level: DEBUG
  module: controllerx
  class: E1810Controller
  controller: 5c:02:72:ff:fe:3c:f9:62
  integration: zha
  light: light.living_room_lights

Regards,
Xavi M.

2022-07-13 03:05:28.458241 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:28.464842 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 109.80
  - transition: 0.35
2022-07-13 03:05:28.467842 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 109.8, 'transition': 0.35}
2022-07-13 03:05:28.829196 DEBUG living_room_remote_dimming: šŸŽ® Button event triggered, but not registered: `stop`
2022-07-13 03:05:28.844905 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:28.849579 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 84.40
  - transition: 0.35
2022-07-13 03:05:28.852329 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 84.4, 'transition': 0.35}
2022-07-13 03:05:29.219110 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:29.224203 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 59.00
  - transition: 0.35
2022-07-13 03:05:29.226305 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 59.0, 'transition': 0.35}
2022-07-13 03:05:29.593427 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:29.600605 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 33.60
  - transition: 0.35
2022-07-13 03:05:29.602676 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 33.6, 'transition': 0.35}
2022-07-13 03:05:29.966601 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:29.973451 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 8.20
  - transition: 0.35
2022-07-13 03:05:29.975350 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 8.2, 'transition': 0.35}
2022-07-13 03:05:30.345051 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:30.352703 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 1
  - transition: 0.35
2022-07-13 03:05:30.354732 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 1, 'transition': 0.35}
2022-07-13 03:05:31.847317 INFO living_room_remote_dimming: šŸŽ® Button event triggered: `toggle`
2022-07-13 03:05:31.852970 DEBUG living_room_remote_dimming: Extra:
None
2022-07-13 03:05:31.858152 INFO living_room_remote_dimming: šŸƒ Running `Predefined (toggle)` now
2022-07-13 03:05:31.861918 DEBUG living_room_remote_dimming: `toggle` is not recognized as a template
2022-07-13 03:05:31.866997 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:31.871903 INFO living_room_remote_dimming: 
šŸ¤– Service: light.toggle
  - entity_id: light.living_room_lights
2022-07-13 03:05:31.874138 DEBUG living_room_remote_dimming: call_service: light/toggle, {'entity_id': 'light.living_room_lights'}
2022-07-13 03:05:34.029355 INFO living_room_remote_dimming: šŸŽ® Button event triggered: `move_with_on_off_0_84`
2022-07-13 03:05:34.033162 DEBUG living_room_remote_dimming: Extra:
None
2022-07-13 03:05:34.038801 INFO living_room_remote_dimming: šŸƒ Running `Predefined (hold_brightness_up)` now
2022-07-13 03:05:34.042281 DEBUG living_room_remote_dimming: `hold_brightness_up` is not recognized as a template
2022-07-13 03:05:34.047306 DEBUG living_room_remote_dimming: `light.signify_netherlands_b_v_lwv001_64d59609_level_on_off` is not recognized as a template
2022-07-13 03:05:34.049593 DEBUG living_room_remote_dimming: get state: light.signify_netherlands_b_v_lwv001_64d59609_level_on_off, {} from living_room_remote_dimming
2022-07-13 03:05:34.054259 DEBUG living_room_remote_dimming: `light.signify_netherlands_b_v_lwv001_64d59609_level_on_off` is not recognized as a template
2022-07-13 03:05:34.056939 DEBUG living_room_remote_dimming: get state: light.signify_netherlands_b_v_lwv001_64d59609_level_on_off, {} from living_room_remote_dimming
2022-07-13 03:05:34.061695 DEBUG living_room_remote_dimming: Attribute value before running the hold action: 85.0
2022-07-13 03:05:34.065357 DEBUG living_room_remote_dimming: Going direction: up
2022-07-13 03:05:34.070660 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:34.075226 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 110.40
  - transition: 0.35
2022-07-13 03:05:34.076910 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 110.4, 'transition': 0.35}
2022-07-13 03:05:34.440240 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:34.447707 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 135.80
  - transition: 0.35
2022-07-13 03:05:34.449876 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 135.8, 'transition': 0.35}
2022-07-13 03:05:34.812287 DEBUG living_room_remote_dimming: `light.living_room_lights` is not recognized as a template
2022-07-13 03:05:34.818804 INFO living_room_remote_dimming: 
šŸ¤– Service: light.turn_on
  - entity_id: light.living_room_lights
  - brightness: 161.20
  - transition: 0.35
2022-07-13 03:05:34.821456 DEBUG living_room_remote_dimming: call_service: light/turn_on, {'entity_id': 'light.living_room_lights', 'brightness': 161.2, 'transition': 0.35}
2022-07-13 03:05:34.976660 INFO living_room_remote_dimming: šŸŽ® Button event triggered: `stop_with_on_off`
2022-07-13 03:05:34.981527 DEBUG living_room_remote_dimming: Extra:
None
2022-07-13 03:05:34.991949 INFO living_room_remote_dimming: šŸƒ Running `Predefined (release)` now
2022-07-13 03:05:34.996703 DEBUG living_room_remote_dimming: `release` is not recognized as a template

Thanks for taking the time to help me out!

Hi @baralien.spm ,

I see that the no action is shown in the logs, could you check in Developer Tools > Events if the stop/release action is shown in the ZHA events? For that you will need to listen to ā€œzha_eventā€ and check the logs there.

Let me know what you see when doing hold and releasing brightness up/down.

Thanks,
Xavi M.

Brightness up hold/release

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "5c:02:72:ff:fe:3c:f9:62",
        "unique_id": "5c:02:72:ff:fe:3c:f9:62:1:0x0008",
        "device_id": "3a1f3031d52283a31b93bd96df1b9562",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "stop_with_on_off",
        "args": [],
        "params": {}
    },
    "origin": "LOCAL",
    "time_fired": "2022-07-13T02:39:55.890104+00:00",
    "context": {
        "id": "01G7TPTRZJDGRWN9KEAYXGXWDP",
        "parent_id": null,
        "user_id": null
    }
}

Brightness down hold/release

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "5c:02:72:ff:fe:3c:f9:62",
        "unique_id": "5c:02:72:ff:fe:3c:f9:62:1:0x0008",
        "device_id": "3a1f3031d52283a31b93bd96df1b9562",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "stop",
        "args": [
            0,
            0
        ],
        "params": {
            "options_mask": 0,
            "options_override": 0
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-07-13T02:42:20.694010+00:00",
    "context": {
        "id": "01G7TPZ6CP9Z40NA7358DWKTA9",
        "parent_id": null,
        "user_id": null
    }
}

Hi @baralien.spm ,

I see that the 2 events registered in ControllerX for release actions are:

  • stop_with_on_off
  • release

However, your down release shows a stop_0_0 event (the 0s come from the args argument)

This either means that:

  • You are using a different firmware version that the supported in ControllerX.
  • ZHA has changed the event command and args (not the first time it would happenā€¦)

I might take action on fixing mapping if I know that yours is the latest maping supported by fw and ZHA. Could you please provide Home Assistant version used and controller firmware version?

In the meantime, the following config should work for you:

living_room_remote_dimming:
  module: controllerx
  class: E1810Controller
  controller: 5c:02:72:ff:fe:3c:f9:62
  integration: zha
  light: light.living_room_lights
  merge_mapping:
    stop_0_0: release

Regards,
Xavi M.

Home Assistant version: 2022.7.3
Controller: 0x23080631

The config didnā€™t work, I have two of these and they both still dim all the way to off with any length of hold.

Could you please share all logs (available after a restart) when you dim down (remember to add the debug log part as well). Just send the logs to a private message since it might be quite long.

Cheers,

Thanks for this.
Can the automation that is controlled by a ZigBee device control any (non-zigbee) device?
Iā€™ve created the /config/appdaemon/apps/apps.yaml file with:

example_app:
  module: controllerx
  class: E1744LightController
  controller: sensor.volume_action
  integration: z2m
  light: light.lampada_2
  delay: 200
  automatic_steps: 25

where ā€œvolumeā€ is the symfonisk remote and ā€œlampada_2ā€ a wiz wifi lamp.
It doesnā€™t work, Iā€™m probably doing something wrong but I cannot even debug what is going wrong.

Iā€™ve managed to do this in node red, but would prefer to have this simple way to integrate other sensors

Hi @pinanunes ,

What you are trying to do is totally possible, not a problem. Configuration looks good to me, although I would not recommend a delay tht low for a wifi lamp, probably more like 500, but you can change that once it works.

Could you please share the AppDaemon logs to know where the problem might be?

Cheers,
Xavi M.

Hi @xaviml
Iā€™ve gotten this ā€˜friends of hueā€™ controller made for the danish wallpanel ā€˜FUGAā€™.
Itā€™s a nice controller with four buttons (Iā€™ve also entered it on the github as a request).

Iā€™m trying to get it to work like the blinds controller from IKEA (E1766).
I made a config like this:

office-cover-up2:
  module: controllerx
  class: E1766CoverController
  controller: office_sofa_multi_control
  integration: deconz
  cover: cover.office_window_blind
  mapping:
    - 2002: open
    - 2003: stop
office-cover-down2:
  module: controllerx
  class: E1766CoverController
  controller: office_sofa_multi_control
  integration: deconz
  cover: cover.office_window_blind
  constrain_input_boolean: binary_sensor.office_window_sensor,off
  mapping:
    - 4002: close
    - 4003: stop

But this config gives me this in the log:


2022-07-17 10:32:16.470279 WARNING office-cover-up2: ------------------------------------------------------------
2022-07-17 10:32:16.471735 WARNING office-cover-up2: Unexpected error running initialize() for office-cover-up2
2022-07-17 10:32:16.472254 WARNING office-cover-up2: ------------------------------------------------------------
2022-07-17 10:32:16.473743 WARNING office-cover-up2: Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/appdaemon/app_management.py", line 163, in initialize_app
    await init()
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 104, in initialize
    await self.init()
  File "/config/appdaemon/apps/controllerx/cx_core/type/cover_controller.py", line 39, in init
    await super().init()
  File "/config/appdaemon/apps/controllerx/cx_core/type_controller.py", line 66, in init
    await super().init()
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 122, in init
    self.actions_mapping = self.parse_action_mapping(custom_mapping)
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 287, in parse_action_mapping
    return {event: parse_actions(self, action) for event, action in mapping.items()}
AttributeError: 'list' object has no attribute 'items'
2022-07-17 10:32:16.475682 WARNING office-cover-up2: ------------------------------------------------------------
2022-07-17 10:32:16.477811 INFO office-cover-down2: šŸŽ® ControllerX v4.22.0
2022-07-17 10:32:16.485290 WARNING office-cover-down2: ------------------------------------------------------------
2022-07-17 10:32:16.486019 WARNING office-cover-down2: Unexpected error running initialize() for office-cover-down2
2022-07-17 10:32:16.487433 WARNING office-cover-down2: ------------------------------------------------------------
2022-07-17 10:32:16.488656 WARNING office-cover-down2: Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/appdaemon/app_management.py", line 163, in initialize_app
    await init()
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 104, in initialize
    await self.init()
  File "/config/appdaemon/apps/controllerx/cx_core/type/cover_controller.py", line 39, in init
    await super().init()
  File "/config/appdaemon/apps/controllerx/cx_core/type_controller.py", line 66, in init
    await super().init()
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 122, in init
    self.actions_mapping = self.parse_action_mapping(custom_mapping)
  File "/config/appdaemon/apps/controllerx/cx_core/controller.py", line 287, in parse_action_mapping
    return {event: parse_actions(self, action) for event, action in mapping.items()}
AttributeError: 'list' object has no attribute 'items'
2022-07-17 10:32:16.490515 WARNING office-cover-down2: ------------------------------------------------------------

So it is obviously not working.
I also tried to enter ā€˜actionsā€™ to limit the number of actions it should react to, as I think these are the only two actions needed. That didnā€™t help either.

I made this for the other two buttons of the controller to control a light, and that works perfectly:

office_sofa_hue:
  module: controllerx
  class: E1743Controller
  controller: office_sofa_multi_control
  integration: deconz
  light: light.office_sofa
  mapping:
    1002: "on"
    1001: hold_brightness_up
    1003: release
    3002: "off"
    3001: hold_brightness_down
    3003: release

Hi @fribse ,

The mapping does not have to be a list, but a mapping. So the - is causing the failure. You can see the difference with the working configuration you shared last.

Cheers,
Xavi M.

1 Like