ControllerX. Bring full functionality to light and media player controllers

added

integration: z2m

and now appdeamon does not crash but nothing happened when I press the Ikea sound button

The sensor.sound_controller_action registers a button press in HA
Screenshot 2020-08-26 at 16.58.49

media_player: media_player.tv_sonos is correct.

In appdeamon I can see Callbacks increase with each button press.

Cheers, rolling back to v3.3.0 worked!

I guess you mean the firmware of the Hue Dimmer Switch? This is the info I have under the device page:

Device info

RWL021

by Philips

Zigbee Coordinator

Firmware: 0x42006f9d

Zigbee info

IEEE: 00:17:88:01:04:e7:ba:25

Nwk: 0x69c1

Device Type: EndDevice

LQI: Unknown

RSSI: Unknown

Last Seen: 2020-08-26T17:50:12

Power Source: Battery or Unknown

Quirk: zhaquirks.philips.rwl021.PhilipsRWL021

I apologize. I didn’t realize that I needed to install AppDaemon. I guess I assumed it was one of those things built into HASS.

I have since removed all of my “existing” AppDaemon config/folders, deleted them, then installed AppDaemon (4, v.0.3.0), then reinstalled ControllerX (3.4.0).

I am getting the following in the log: https://pastebin.com/s8TfUwMz

Edit: Updated Pastebin link.

Hi @smikwily,

Sorry, it was my fault, the SmartThingsButtonLightController class expects a light attribute, but since you don’t need it, you can just change SmartThingsButtonLightController for Controller in the configuration.

That did it! Muuuch appreciated! Sorry for the headaches :slight_smile:

For reference, this is what I currently have. Going to tweak it to see if I can get it going with a few other bells and whistles.

office_controller:
  module: controllerx
  class: Controller
  controller: <controllerid>
  integration: zha
  mapping:
    button_single_1_0_0_0:
      - service: light.turn_on
        data:
          entity_id: light.your_lights
      - service: switch.turn_on
        data:
          entity_id: switch.office_fan_on_off
    button_hold_3_0_0_0:
      service: switch.turn_off
      data:
        entity_id: switch.office_fan_on_off
1 Like

FYI, I did a little digging and was able to trade out:

      service: switch.turn_off

with

      service: switch.toggle

to allow me to use the same configuration I had previously, which was with SmartThings, BTW. I’m now able to long hold to toggle the fan off and on.

1 Like

Hi @xaviml - Great app!

Can we use tempting in the CallServiceController? I tried to use hold_brightness_toggle but it didnt work so i thought i could use the below config but the double click doesnt do anything.

stephen_button:
  module: controllerx
  class: CallServiceController
  controller: sensor.bedroom_stephenbutton
  integration: z2m
  mapping:
    single:
      service: light.toggle
      data:
        entity_id: light.stephen_lamp
    double:
      service: light.turn_on
      entity_id: light.stephen_lamp
      data_template:
        brightness_pct: >
          {% if states.light.stephen_lamp.attributes.brightness <= 127 %}
            100
          {% else %}  
            1
          {% endif %}
    triple:
      service: light.toggle
      data:
        entity_id: light.bedroom_spot
    quadruple:
      service: light.toggle
      data:
        entity_id: light.bedroom_lamps
    many:
      service: scene.turn_on
      data:
        entity_id: scene.nighttime
    long:
      service: light.toggle
      data:
        entity_id: light.bedroom

An someone her can tell me the difference between the Ikea E1743 and E1766?
Is it only the 0/1 or the two other symbols?
In functionalty I can see no difference.

Hi’ @Eeeeeediot

No direct templating in ControllerX yet - but Xavi has it in the pipeline:wink:

But you can still get same functionality by splitting your app in two and use contrain_input_boolean like below. Your need to add a binary light brightness sensor in HA that’s on when brightness is above 127 else off.

stephen_button_1:
  module: controllerx
  class: CallServiceController
  controller: sensor.bedroom_stephenbutton
  integration: z2m
  constrain_input_boolean: binary_sensor.brightness_above_127,on # Your HA light brightness sensor
  mapping:
    single:
      service: light.toggle
      data:
        entity_id: light.stephen_lamp
    double:
      service: light.turn_on
      entity_id: light.stephen_lamp
      data:
        brightness_pct: 1
    triple:
      service: light.toggle
      data:
        entity_id: light.bedroom_spot
    quadruple:
      service: light.toggle
      data:
        entity_id: light.bedroom_lamps
    many:
      service: scene.turn_on
      data:
        entity_id: scene.nighttime
    long:
      service: light.toggle
      data:
        entity_id: light.bedroom

stephen_button_2:
  module: controllerx
  class: CallServiceController
  controller: sensor.bedroom_stephenbutton
  integration: z2m
  constrain_input_boolean: binary_sensor.brightness_above_127,off # Your HA light brightness sensor
  mapping:
    single:
      service: light.toggle
      data:
        entity_id: light.stephen_lamp
    double:
      service: light.turn_on
      entity_id: light.stephen_lamp
      data:
        brightness_pct: 100
    triple:
      service: light.toggle
      data:
        entity_id: light.bedroom_spot
    quadruple:
      service: light.toggle
      data:
        entity_id: light.bedroom_lamps
    many:
      service: scene.turn_on
      data:
        entity_id: scene.nighttime
    long:
      service: light.toggle
      data:
        entity_id: light.bedroom

Ciao !

1 Like

Hi’ @carsten_h

I believe that they’re completely identical, as Ikea filed for fcc approval simultaneously.

Only have the E1743 though, so firmware could differ as well as payloads.

Ciao !

Ok! Thank you for the answer!

Hello!
First of all great project, I’ve been struggling to setup my Symfonic for media controls and ended up finding out about ControllerX which sounds amazing!

I have a bit of a specific setup that I’m looking into implementing. I’m looking to be able to control media volume, depending on where the media is playing. I see from @htvekov recent message that we can use the constrain_input_boolean field to specify a boolean constraint. Would it be able to fetch a state as well?

For example to know if my bedroom Chromecast is playing I would find this information in HA by looking at the state of my media_player.bedroom. Same for my group Everywhere and my other Chromecast Salon. Would this info be available from ControllerX for me to use?

Thanks for the help!
Cheers,
Mickael

Hi’ @MagicMicky

Welcome to Xavi’s ‘World of ControllerX’ :laughing:

As far as I know you can’t fetch states directly and use as constraints.
Four different possible callback constraints in appdaemon I believe (link to doc. further down)

But I guess you could use (tweak) the input_select for this ?
Would of course need a template automation in HA to set the input_select as media players state.

But as most media players have very few possible states (playing, paused, idle, unavailable) it should be possible to do it like this.

appdaemon callback constraints link

I would imagine that Xavi can ‘fill in’ with his extensive appdaemon knowledge :wink::sunglasses:

EDIT: If you only want to know if entity is active (playing or not), then you could just make a HA binary sensor to reflect that and use this as contrain_input_boolean in ControllerX. Probably a much easier approach if you only need to distinguish between playing state and anything else.

Ciao !

Great! I think the input_select will give me more control from ControlerX then! Will look into this, and setting up the automation for it!
Thanks a lot :slight_smile:

You’re welcome, @MagicMicky

When you’re done, I’m sure Xavi would like to include your working configuration to examples page :slightly_smiling_face:

For sure!
I have one issue right now which I cannot add multiple constraints for the same app, or put “priorities” for one app unfortunately.

I’ll try to find if I can do anything about it, and will try to keep you updated :slight_smile:

Hi, I am having some trouble trying to get controllerX to work with my huedimmer. What I am trying to do is turn on and off a ZHA group of lights using a huedimmer remote.


My version of the remote has on/off instead of the I/O.

In my initial setup I could not get it to work at all. No response. After reading through the entire thread and making sure appdaemon and controllerx were setup properly, I saw that xaviml updated the code for someones huedimmer and that the new huedimmer zha events did not match the events my huedimmer was putting out. My events matched the old code. That looked like whats below

	        "on": Light.ON,
            "step_0_30_9": Light.CLICK_BRIGHTNESS_UP,
            "step_0_56_9": Light.HOLD_BRIGHTNESS_UP,
            "step_1_30_9": Light.CLICK_BRIGHTNESS_DOWN,
            "step_1_56_9": Light.HOLD_BRIGHTNESS_DOWN,
            "off_with_effect_0_0": Light.OFF,
            "stop": Light.RELEASE

So to see if I was on to something I changed the code in the philips.py to match the above. And then things stared working or so I though. I can get the group to turn on but no off. Just to make sure it isn’t something weird with ZHA groups I changed the controllerx app to control one individual light

tv_can_lights:
  module: controllerx
  class: HueDimmerController
  controller: 00:17:88:01:10:32:77:5a
  integration: zha
  #light: light.tv_room_zha_group_0x0002
  light: light.basement_lamp_1

I get the same results, llight turns on but not off.

This is the zha event when the off button is pressed,

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "00:17:88:01:10:32:77:5a",
        "unique_id": "00:17:88:01:10:32:77:5a:1:0x0006",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "off_with_effect",
        "args": [
            0,
            0
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2020-09-03T22:43:34.349295+00:00",
    "context": {
        "id": "e60d3f11ee3611ea95634532034ba2b3",
        "parent_id": null,
        "user_id": null
    }
}

Which matches the code in my modified version of philips.py
Logs show nothing wrong except the “off” button press doesn’t show up.

2020-09-03 16:46:31.281574 INFO AppDaemon: AppDaemon Version 4.0.5 starting
2020-09-03 16:46:31.290323 INFO AppDaemon: Python version is 3.8.5
2020-09-03 16:46:31.292150 INFO AppDaemon: Configuration read from: /config/appdaemon/appdaemon.yaml
2020-09-03 16:46:31.293261 INFO AppDaemon: Added log: AppDaemon
2020-09-03 16:46:31.294349 INFO AppDaemon: Added log: Error
2020-09-03 16:46:31.295407 INFO AppDaemon: Added log: Access
2020-09-03 16:46:31.296429 INFO AppDaemon: Added log: Diag
2020-09-03 16:46:31.381089 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
2020-09-03 16:46:31.446985 INFO HASS: HASS Plugin Initializing
2020-09-03 16:46:31.448470 INFO HASS: HASS Plugin initialization complete
2020-09-03 16:46:31.450791 INFO AppDaemon: Initializing HTTP
2020-09-03 16:46:31.452972 INFO AppDaemon: Using 'ws' for event stream
2020-09-03 16:46:31.467145 INFO AppDaemon: Starting API
2020-09-03 16:46:31.480840 INFO AppDaemon: Starting Admin Interface
2020-09-03 16:46:31.482587 INFO AppDaemon: Starting Dashboards
2020-09-03 16:46:31.609952 INFO HASS: Connected to Home Assistant 0.114.4
2020-09-03 16:46:31.747073 INFO AppDaemon: App 'tv_can_lights' added
2020-09-03 16:46:31.750876 INFO AppDaemon: Found 1 total apps
2020-09-03 16:46:31.753131 INFO AppDaemon: Starting Apps with 1 workers and 1 pins
2020-09-03 16:46:31.762530 INFO AppDaemon: Running on port 5050
2020-09-03 16:46:32.597377 INFO HASS: Evaluating startup conditions
2020-09-03 16:46:32.712524 INFO HASS: Startup condition met: hass state=RUNNING
2020-09-03 16:46:32.721039 INFO HASS: All startup conditions met
2020-09-03 16:46:32.931141 INFO AppDaemon: Got initial state from namespace default
2020-09-03 16:46:34.820790 INFO AppDaemon: Scheduler running in realtime
2020-09-03 16:46:35.026561 INFO AppDaemon: Adding /config/appdaemon/apps to module import path
2020-09-03 16:46:35.029484 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx to module import path
2020-09-03 16:46:35.032548 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core to module import path
2020-09-03 16:46:35.035011 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/integration to module import path
2020-09-03 16:46:35.037645 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/stepper to module import path
2020-09-03 16:46:35.040315 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/feature_support to module import path
2020-09-03 16:46:35.042784 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/type to module import path
2020-09-03 16:46:35.045216 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_devices to module import path
2020-09-03 16:46:35.404415 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/controllerx/controllerx.py
2020-09-03 16:46:35.480457 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_version.py - ignoring
2020-09-03 16:46:35.490139 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_const.py - ignoring
2020-09-03 16:46:35.507499 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/__init__.py - ignoring
2020-09-03 16:46:35.514192 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/custom_controller.py - ignoring
2020-09-03 16:46:35.521517 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/color_helper.py - ignoring
2020-09-03 16:46:35.527570 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/controller.py - ignoring
2020-09-03 16:46:35.533864 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/zha.py - ignoring
2020-09-03 16:46:35.539341 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/state.py - ignoring
2020-09-03 16:46:35.544197 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/mqtt.py - ignoring
2020-09-03 16:46:35.552501 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/__init__.py - ignoring
2020-09-03 16:46:35.558188 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/deconz.py - ignoring
2020-09-03 16:46:35.567453 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/z2m.py - ignoring
2020-09-03 16:46:35.574589 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/minmax_stepper.py - ignoring
2020-09-03 16:46:35.584338 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/circular_stepper.py - ignoring
2020-09-03 16:46:35.589697 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/__init__.py - ignoring
2020-09-03 16:46:35.596075 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/light.py - ignoring
2020-09-03 16:46:35.602781 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/media_player.py - ignoring
2020-09-03 16:46:35.610179 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/__init__.py - ignoring
2020-09-03 16:46:35.617059 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/cover.py - ignoring
2020-09-03 16:46:35.625079 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/__init__.py - ignoring
2020-09-03 16:46:35.631526 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/cover_controller.py - ignoring
2020-09-03 16:46:35.638014 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/switch_controller.py - ignoring
2020-09-03 16:46:35.645341 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/light_controller.py - ignoring
2020-09-03 16:46:35.652540 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/media_player_controller.py - ignoring
2020-09-03 16:46:35.659175 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/smartthings.py - ignoring
2020-09-03 16:46:35.671033 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/trust.py - ignoring
2020-09-03 16:46:35.679305 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/philips.py - ignoring
2020-09-03 16:46:35.684516 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/legrand.py - ignoring
2020-09-03 16:46:35.691625 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/lutron.py - ignoring
2020-09-03 16:46:35.698428 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/__init__.py - ignoring
2020-09-03 16:46:35.704230 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/ikea.py - ignoring
2020-09-03 16:46:35.712449 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/aqara.py - ignoring
2020-09-03 16:46:35.717426 INFO AppDaemon: Initializing app tv_can_lights using class HueDimmerController from module controllerx
2020-09-03 16:46:36.032238 INFO tv_can_lights: 🎮 ControllerX v3.4.0
2020-09-03 16:46:36.046117 INFO AppDaemon: App initialization complete
2020-09-03 16:46:44.434955 INFO tv_can_lights: 🎮 Button event triggered: `on`
2020-09-03 16:46:44.459166 INFO tv_can_lights: 🏃 Running `on` now
2020-09-03 16:46:44.531288 INFO tv_can_lights: 🤖 Service: e[1mlight.turn_one[0m
2020-09-03 16:46:44.554382 INFO tv_can_lights:   - entity_id: light.basement_lamp_1
2020-09-03 16:46:44.578539 INFO tv_can_lights:   - transition: 0.30
2020-09-03 16:50:36.727425 INFO tv_can_lights: 🎮 Button event triggered: `on`
2020-09-03 16:50:36.733299 INFO tv_can_lights: 🏃 Running `on` now
2020-09-03 16:50:36.743623 INFO tv_can_lights: 🤖 Service: e[1mlight.turn_one[0m
2020-09-03 16:50:36.750173 INFO tv_can_lights:   - entity_id: light.basement_lamp_1
2020-09-03 16:50:36.756763 INFO tv_can_lights:   - transition: 0.30

Does anyone have an idea what I am missing? I assume at this point that maybe something in the code isn’t compatible with what I changed.

Hey,

I don’t like how the default behaviour of the cube rotates around the whole colour wheel in HA as some of the colours are not very different/interesting.

I have made an input_select with the colours i like and i am trying to call a service to select_next and select_previous but it isn’t working. When i manually select the colours in HA an automation fires and changes the bulbs colours.

I would think this is supported and therefore cant identify the issue

2020-09-05 13:36:19.375861 INFO custom_cube_livingroom: 🎮 Button event triggered: `flip90`
2020-09-05 13:36:19.380331 INFO custom_cube_livingroom: 🏃 Running `(<bound method Controller.call_services of <cx_core.custom_controller.CallServiceController object at 0x7f7bfd99d0>>, [('input_select/select_next', {})])` now
2020-09-05 13:36:19.385421 INFO custom_cube_livingroom: 🤖 Service: input_select.select_next
2020-09-05 13:36:19.425002 WARNING HASS: Error calling Home Assistant service default/input_select/select_next
2020-09-05 13:36:19.426198 WARNING HASS: Code: 400, error: 400: Bad Request
2020-09-05 13:36:22.783639 INFO custom_cube_livingroom: 🎮 Button event triggered: `flip180`
2020-09-05 13:36:22.788225 INFO custom_cube_livingroom: 🏃 Running `(<bound method Controller.call_services of <cx_core.custom_controller.CallServiceController object at 0x7f7bfd99d0>>, [('input_select/select_previous', {})])` now
2020-09-05 13:36:22.793314 INFO custom_cube_livingroom: 🤖 Service: input_select.select_previous
2020-09-05 13:36:22.825032 WARNING HASS: Error calling Home Assistant service default/input_select/select_previous
2020-09-05 13:36:22.826251 WARNING HASS: Code: 400, error: 400: Bad Request
2020-09-05 13:36:28.788561 INFO custom_cube_livingroom: 🎮 Button event triggered: `flip90`
2020-09-05 13:36:28.792906 INFO custom_cube_livingroom: 🏃 Running `(<bound method Controller.call_services of <cx_core.custom_controller.CallServiceController object at 0x7f7bfd99d0>>, [('input_select/select_next', {})])` now
2020-09-05 13:36:28.797678 INFO custom_cube_livingroom: 🤖 Service: input_select.select_next
2020-09-05 13:36:28.867523 WARNING HASS: Error calling Home Assistant service default/input_select/select_next
2020-09-05 13:36:28.868562 WARNING HASS: Code: 400, error: 400: Bad Request

Hi’ @Eeeeeediot

I believe that your missing entity id data in your service call.
Working here:

2020-09-05 20:27:49.829607 INFO office4_controller: 🎮 Button event triggered: `single`
2020-09-05 20:27:49.833959 INFO office4_controller: 🏃 Running `(<bound method Controller.call_services of <cx_core.custom_controller.CallServiceController object at 0x7f732f2bdd90>>, [('input_select/select_previous', {'entity_id': 'input_select.zigbee2mqtt_log_level'})])` now
2020-09-05 20:27:49.838335 INFO office4_controller: 🤖 Service: input_select.select_previous
2020-09-05 20:27:49.842663 INFO office4_controller:   - entity_id: input_select.zigbee2mqtt_log_level
office4_controller:
  module: controllerx
  class: CallServiceController
  controller: sensor.0x00158d00035a660f_click
  integration: z2m
  mapping:
    single:
      - service: input_select.select_previous
        data:
          entity_id: input_select.zigbee2mqtt_log_level

Ciao !

Hello, I can’t find how to make this works…

What I did from now:

Installing AppDaemon

If I’m not wrong, I have to put folder “controllerx” into apps folder and change the apps.yaml

I’m trying to turn off and on a Yeelight LED (this Yeelight is integrated under HA)

chambre:
  module: controllerx
  class: E1743SwitchController
  controller: zigbee2mqtt/0x842e14fffe17b5f9/action
  integration: z2m
  light: light.ampoule_chambre
  actions:
    - on
    - off

Here’s the log

2020-09-05 20:58:15.534200 INFO AppDaemon: Adding /config/appdaemon/apps to module import path
2020-09-05 20:58:15.536052 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx to module import path
2020-09-05 20:58:15.537563 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_devices to module import path
2020-09-05 20:58:15.539454 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core to module import path
2020-09-05 20:58:15.540973 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/stepper to module import path
2020-09-05 20:58:15.542903 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/type to module import path
2020-09-05 20:58:15.544505 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/feature_support to module import path
2020-09-05 20:58:15.546305 INFO AppDaemon: Adding /config/appdaemon/apps/controllerx/cx_core/integration to module import path
2020-09-05 20:58:15.628290 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/hello.py
2020-09-05 20:58:15.655818 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_version.py - ignoring
2020-09-05 20:58:15.659717 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/controllerx/controllerx.py
2020-09-05 20:58:15.732085 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_const.py - ignoring
2020-09-05 20:58:15.736260 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/smartthings.py - ignoring
2020-09-05 20:58:15.739844 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/aqara.py - ignoring
2020-09-05 20:58:15.744065 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/ikea.py - ignoring
2020-09-05 20:58:15.747700 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/trust.py - ignoring
2020-09-05 20:58:15.751510 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/philips.py - ignoring
2020-09-05 20:58:15.755118 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/__init__.py - ignoring
2020-09-05 20:58:15.758978 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/lutron.py - ignoring
2020-09-05 20:58:15.762620 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_devices/legrand.py - ignoring
2020-09-05 20:58:15.766468 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/controller.py - ignoring
2020-09-05 20:58:15.770086 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/__init__.py - ignoring
2020-09-05 20:58:15.774232 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/color_helper.py - ignoring
2020-09-05 20:58:15.777853 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/custom_controller.py - ignoring
2020-09-05 20:58:15.781879 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/circular_stepper.py - ignoring
2020-09-05 20:58:15.785513 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/__init__.py - ignoring
2020-09-05 20:58:15.789222 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/stepper/minmax_stepper.py - ignoring
2020-09-05 20:58:15.793239 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/switch_controller.py - ignoring
2020-09-05 20:58:15.797083 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/cover_controller.py - ignoring
2020-09-05 20:58:15.800702 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/__init__.py - ignoring
2020-09-05 20:58:15.804594 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/media_player_controller.py - ignoring
2020-09-05 20:58:15.808205 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/type/light_controller.py - ignoring
2020-09-05 20:58:15.812035 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/cover.py - ignoring
2020-09-05 20:58:15.815667 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/__init__.py - ignoring
2020-09-05 20:58:15.819488 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/media_player.py - ignoring
2020-09-05 20:58:15.823477 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/feature_support/light.py - ignoring
2020-09-05 20:58:15.827341 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/mqtt.py - ignoring
2020-09-05 20:58:15.830955 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/__init__.py - ignoring
2020-09-05 20:58:15.834808 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/zha.py - ignoring
2020-09-05 20:58:15.838359 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/deconz.py - ignoring
2020-09-05 20:58:15.842340 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/state.py - ignoring
2020-09-05 20:58:15.846012 WARNING AppDaemon: No app description found for: /config/appdaemon/apps/controllerx/cx_core/integration/z2m.py - ignoring
2020-09-05 20:58:15.849378 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2020-09-05 20:58:15.853961 INFO AppDaemon: Initializing app chambre using class E1743SwitchController from module controllerx
2020-09-05 20:58:16.175085 INFO hello_world: Hello from AppDaemon
2020-09-05 20:58:16.179505 INFO hello_world: You are now ready to run Apps!
2020-09-05 20:58:16.184660 WARNING chambre: ------------------------------------------------------------
2020-09-05 20:58:16.185709 WARNING chambre: Unexpected error running initialize() for chambre
2020-09-05 20:58:16.187021 WARNING chambre: ------------------------------------------------------------
2020-09-05 20:58:16.190743 WARNING chambre: Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/appdaemon/app_management.py", line 148, in initialize_app
    await init()
  File "/config/appdaemon/apps/controllerx/cx_core/type/switch_controller.py", line 18, in initialize
    self.switch = self.args["switch"]
KeyError: 'switch'
2020-09-05 20:58:16.192424 WARNING chambre: ------------------------------------------------------------
2020-09-05 20:58:16.196089 INFO AppDaemon: App initialization complete