With the increase in the need for working from home due to the on again /off again lockdowns and the slow return to public places (thanks Covid), one of the main issues that I have faced is interruptions during video meetings from the other denizens in the house. To make things easier, I decided to build a teams status light using PowerShell and MSAL. This will provide the other members of my household a way to know when I was or was not in a meeting. I will cover the build in multiple parts:
- Part 1 – The build of the teams status light itself (this post)
- Part 2 – The communication of my status
I have decided to build my own light as I wanted something that could sit outside my workspace and be seen easily allowing people coming into the main living area to know my status. It is a very rough build that is well hidden inside the 3D print. There are plenty of better ways to more effectively wire and connect up the components, but this post does not go over this.. This post will cover:
Parts list
Most of the following parts were lying around in my spare parts bucket:
- RGB circular LED board (Core Electronics, Jaycar)
- ESP8266 (Amazon)
- 5v 2.5amp DC power supply (Jaycar)
- 2.5mm DC socket
- 2 x 6amp screw terminals
3D Print of the status light
I wanted something that can sit nicely on a bookshelf and be seen easily. So I opted for a globe design that would be printed in clear filament with a rounded square base to house the electronics:
Wiring of the teams status light
The aim was to build this from spare parts and I am not an electrical engineer. Therefore I have wired the device in a quick and ready fashion. There are cleaner and more professional ways of achieving this, but this was a simple hack job to achieve some uninterrupted time during meetings.
Software for the ESP8266
HomeAssistant is a tool I am using for other automations around the home and has a REST API that interfaces with sensors and devices. As the LED ring is based on the 5050 RGB set, the neopixelbus is compatible and easily configured. Therefore I opted to install ESPHome onto the wemos D1 for control of the light status. The configuration is below
esphome:
name: light_meetingstatus
platform: ESP8266
board: esp01_1m
wifi:
ssid: "*****"
password: "*****"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "LightMeetingstatus"
password: "*****"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
# api:
ota:
web_server:
port: 80
light:
- platform: neopixelbus
type: GRB
pin: GPIO3
num_leds: 24
id: light_meetingstatus
name: "Meeting Light"
effects:
- addressable_color_wipe:
name: "Red Wipe"
colors:
- red: 100%
green: 0%
blue: 0%
num_leds: 1
- red: 0%
green: 0%
blue: 0%
num_leds: 1
add_led_interval: 100ms
reverse: False
- addressable_scan:
name: "Scan"
move_interval: 50ms
scan_width: 3
Once wired up and running, the device appeared within HomeAssistant and was able to be controlled as expected. The real magic sauce comes from the interface with Microsoft Teams and the connection to HomeAssistant, which will be covered in my upcoming posts.