Video
Links
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