Skip to content

Minimising disturbances to enable productive remote work. Complete design files and architecture configuration..

License

Notifications You must be signed in to change notification settings

ImSeanConroy/disturbance-free-calling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Disturbance Free Calling

Minimising disturbances to enable productive remote work - In today's remote work environment, unintentional interruptions can disrupt productivity and professional communication. This project aims to solves this challenge by creating an IoT-driven indicator that signals your availability and minimizes disturbances during critical work activities such as calls and meetings.

This is version 2.0, building on the foundations of the original version developed in 2020. The initial solution utilized an ESP32 microcontroller based development board to poll the Webex API and display availability using an LED strip. While effective, improvements were needed in performance, reliability, and design — which are now addressed in this upgraded version..

Table of Contents

Features and Development Roadmap

This project is a work in progress, the following outlines the current features and planned improvements:

Current Features

  • Terraform Provisioning: Automates the setup and deployment of necessary cloud infrastructure.
  • Webhook Integration: Allows seamless communication between the IoT device and external services.

Upcoming Features

  • Custom PCB: Designed specifically to support the IoT-driven indicator system.
  • Custom ESP32 Integration: Incorporate the newly developed custom ESP32 board into the system architecture.

Architecture Diagram

Below is a high-level overview of how the architecture operates:

Architecure Diagram

1. Webhook Trigger - A Webex webhook sends a request to an AWS API Gateway endpoint when a user’s availability status changes.

2. Cloud Processing - AWS API Gateway triggers an AWS Lambda function, which processes the Webex data and publishes the updated availability status to an AWS IoT Core MQTT topic.

3. Device Update - The device subscribes to the AWS IoT topic and receives status updates, updatings the LED indicator accordingly.

Note: A simplified polling-based version of the firmware is also available for setups that cannot use Webex webhooks. This version periodically queries the Webex API for status updates instead of relying on real-time push notifications.

Hardware Requirements

To build this system, you’ll need the following components:

  • Seeed XIAO ESP32C3 - PiHut
  • LED Strip - PiHut
  • Power Adapter - PiHut
  • 3D Printed Enclosure (Requires 3D Printer)

Getting Started

Prerequisites

Before getting started, ensure you have the following installed:

Installation

Follow these steps to set up the project for your self:

  1. Clone the repository:
git clone https://github.com/ImSeanConroy/disturbance-free-calling.git
cd disturbance-free-calling
  1. Zip AWS Lambda Function.
cd Backend && npm run zip && cd ..
  1. Configure Terraform Environment Variables.
export AWS_ACCESS_KEY_ID={Your AWS Access Key}
export AWS_SECRET_ACCESS_KEY={Your AWS Secret Access Key}
export AWS_REGION={Your AWS Region}
  1. Configure AWS Infrastructure using Terraform
terraform apply
  1. Configure Device Secrets: Configure AWS_CERT_CA, AWS_CERT_CRT and AWS_CERT_PRIVATE in the Firmware secrets file with the ouput from the following:
terraform output root_ca_url
terraform output device_certificate
terraform output device_private_key
  1. Configure Device Credentials: Add Wifi SSID and Password to enable device to connenct with the interent.

  2. Upload to Device Firmware: Within Audrino IDE and test connection.

  3. Configure Webex Webhook: Ensure the Webex webhook is configured for to send requests to your AWS API Gateway.

Contributing

Contributions are welcome. Please open an issue or submit a pull request for any enhancements or bug fixes.

License

This project is Distributed under the MIT License - see the LICENSE file for information.

Support

If you are having problems, please let me know by raising a new issue.

Acknowledgments

This project was made possible thanks to the following resources:

  • AWS re:Post - Publish a MQTT Message to IOT Core inside a Lambda function with Node and SDK 3
  • AWS Samples - Several Arduino examples for AWS IoT projects using ESP32.

About

Minimising disturbances to enable productive remote work. Complete design files and architecture configuration..

Topics

Resources

License

Stars

Watchers

Forks