Skip to main content

Webex Status Light

This note provides the specific details needed to tie your Webex status into a Do Not Disturb light via Home Assistant.

First, you need to edit your HA configuration.yaml file to refer to two other files. One for command line sensor configurations, and the other for automations.

Place these two lines in configuration.yaml if they don't already exist.

command_line: !include command_line.yaml
automation: !include automations.yaml

Next, you'll need to open or create the file named command_line.yaml and enter the following lines to create the sensor which will reach out to the Webex API and check your status. This sensor configuration requires two pieces of information, one is a long-lived Bearer token for access to the Webex API. The easiest way to obtain one of these is to create an account at https://developer.webex.com and register a Webex bot. Registering a bot will give a token that you can use for this and any other access you may need to the Webex API. Make sure that you take note of this token when it is shown and keep it in a safe place. It will only be shown once and must be regenerated if forgotten.

Place the following in command_line.yaml. If you change the name of this sensor, you'll also need to change the name in all places where it is referenced within the automations.yaml file in the next step.

command_line:
  - sensor:
      name: Webex Status Curl
      command: "curl -H 'Authorization:Bearer <long-lived token>' https://webexapis.com/v1/people?email=<your email address>"
      # Since the response is JSON, we can parse out the Status key
      value_template: "{{ value_json.status }}"
      scan_interval: 10

Place the following in automations.yaml. The id in the first line can be any number you choose as long as it is unique within your HA configuration. Each potential status returned by Webex is listed here as a separate condition. You can change the service command for each status/condition to turn the light on or off for that status based on your preference.

id: '1690190769903'
  alias: Webex Teams DND Update
  description: ''
  trigger:
  - platform: state
    entity_id:
    - sensor.webex_status_curl
  condition: []
  action:
  - choose:
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: active
      sequence:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: call
      sequence:
      - service: light.turn_on
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: DoNotDisturb
      sequence:
      - service: light.turn_on
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: inactive
      sequence:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: meeting
      sequence:
      - service: light.turn_on
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: OutOfOffice
      sequence:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: pending
      sequence:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: presenting
      sequence:
      - service: light.turn_on
        data: {}
        target:
          entity_id: light.brian_dnd_light
    - conditions:
      - condition: state
        entity_id: sensor.webex_status_curl
        state: unknown
      sequence:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.brian_dnd_light
    default:
    - service: light.turn_on
      data: {}
      target:
        entity_id: light.brian_dnd_light
  mode: single

Finally, after all of these files have been edited and saved, you'll want to restart your HA instance.

Now, you'll have an automation within Home Assistant that will toggle your DND light based on your Webex Status. 

In this example, I already had a light entity named brian_dnd_light, so I didn't go into detail on how to create that. It is simply a smart bulb that I've tied into HA.