Busy Light Part 2 // Introduction to ESPHome

Video

ESPHome Flasher Releases – https://tshouse.link/esphomeflash
ESPHome Light Component – https://tshouse.link/esplight|
MuteSync – https://mutesync.com

Busy/Status Light ESPHome Code – ESP32

esphome:
  name: statuslight

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "620b75aefcdab73984838cdffebed3df"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Statuslight Fallback Hotspot"
    password: "CfjqCfWbrMR6"

captive_portal:

light:
  - platform: neopixelbus
    type: GRB
    variant: WS2811
    pin: GPIO5
    num_leds: 3
    name: "NeoPixel Light"
    effects:
      - pulse:
      - pulse:
          name: "Fast Pulse"
          transition_length: 0.5s
          update_interval: 0.5s
      - pulse:
          name: "Slow Pulse"
          # transition_length: 1s      # defaults to 1s
          update_interval: 2s
      - flicker:
          name: Flicker Effect With Custom Values
          alpha: 95%
          intensity: 1.5%

Example “Simple” Busy Light Automation

alias: Light - Teams Status Color
description: ''
trigger:
  - platform: state
    entity_id: input_select.ryan_s_teams_status
  - platform: state
    entity_id: binary_sensor.muted
  - platform: state
    entity_id: binary_sensor.in_meeting
  - platform: state
    entity_id: media_player.series_x
  - platform: state
    entity_id: binary_sensor.GAMERTAG
  - platform: state
    entity_id: switch.office_monitor_switch
  - platform: state
    entity_id: person.ryan
  - platform: state
    entity_id: sensor.sm_n986u_phone_state
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.ryan_s_teams_status
            state: Available
          - condition: time
            after: '08:00:00'
            before: '17:00:00'
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
          - condition: not
            conditions:
              - condition: state
                entity_id: binary_sensor.in_meeting
                state: 'on'
          - condition: state
            entity_id: person.ryan
            state: home
          - condition: state
            entity_id: media_player.series_x
            state: 'off'
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office_status_light
            data:
              color_name: white
              brightness_pct: 100
              effect: None
      - conditions:
          - condition: or
            conditions:
              - condition: state
                entity_id: person.ryan
                state: away
              - condition: and
                conditions:
                  - condition: time
                    after: '17:00:00'
                    before: '07:00:00'
                    weekday:
                      - mon
                      - tue
                      - wed
                      - thu
                      - fri
                  - condition: state
                    entity_id: binary_sensor.in_meeting
                    state: 'off'
                  - condition: state
                    entity_id: person.ryan
                    state: home
                  - condition: state
                    entity_id: media_player.series_x
                    state: 'off'
                  - condition: or
                    conditions:
                      - condition: state
                        entity_id: input_select.ryan_s_teams_status
                        state: Available
                      - condition: state
                        entity_id: input_select.ryan_s_teams_status
                        state: away
                      - condition: state
                        entity_id: input_select.ryan_s_teams_status
                        state: offline
        sequence:
          - service: light.turn_off
            target:
              entity_id: light.office_status_light
            data: {}
      - conditions:
          - condition: or
            conditions:
              - condition: state
                entity_id: input_select.ryan_s_teams_status
                state: Busy
              - condition: state
                entity_id: input_select.ryan_s_teams_status
                state: DND
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office_status_light
            data:
              color_name: red
              brightness_pct: 100
              effect: None
      - conditions:
          - condition: state
            entity_id: input_select.ryan_s_teams_status
            state: away
          - condition: time
            after: '08:00:00'
            before: '17:00:00'
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office_status_light
            data:
              color_name: yellow
              brightness_pct: 100
              effect: None
      - conditions:
          - condition: or
            conditions:
              - condition: state
                entity_id: input_select.ryan_s_teams_status
                state: In a Meeting
              - condition: state
                entity_id: input_select.ryan_s_teams_status
                state: In a Call
              - condition: and
                conditions:
                  - condition: state
                    entity_id: sensor.sm_n986u_phone_state
                    state: offhook
                  - condition: state
                    entity_id: person.ryan
                    state: home
                  - condition: state
                    entity_id: sensor.ryan_s_phone_esp
                    state: office
                  - condition: time
                    after: '07:00:00'
                    before: '22:00:00'
                    weekday:
                      - mon
                      - tue
                      - wed
                      - thu
                      - fri
                      - sat
                      - sun
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office_status_light
            data:
              color_name: red
              brightness_pct: 100
              effect: Slow Pulse
    default:
      - service: light.turn_off
        data: {}
        target:
          entity_id: light.office_status_light
mode: single