Thingio Project Case Study

Mar, 07 2024

Thingio is meant to provide an MQTT layer for IoT devices to easily interact with third party services. For example, if I wanted to develop an ESP32 based fixture that sends sensor readings to a Google Sheet, I would need to deploy a number of cloud resources to make this work. The goal of Thingio is to abstract a lot of that cloud infrastructure away to a simple MQTT message made on the device.

Thingio is built with React (NextJS), AWS IoT Core, Lambda functions, and Supabase BaaS. When a user deploys a new device, a Lambda function is called that uses the AWS Javascript SDK to provision and deploy a new "Thing" in IoT Core. The new thing is assigned an access policy allowing it to interact only with the MQTT topic relevant to the service the user has deployed. The details of the Thing like UUID and credentials are stored in the Supabase backend.

A code template is provided for each service that allows the user to get started interacting with the MQTT service. The template includes examples of how the MQTT message should be structured and is automatically injected with the necessary credentials for this specific deployment.

The user is then guided through a number of steps to connect their 3rd party service account to Thingio. In the case of Google Sheets, they allow the Thingio access to create a new Sheet on their behalf. These steps are mostly unique to the service deployed.

Once a service's MQTT topic is published to by a deployed Thing, a Lambda function is triggered that handles the interaction with the 3rd party's API and performs the necessary business logic.

Thingio launched with the following 3rd party services supported:

  1. Stripe
  2. Spotify
  3. Email
  4. Google Drive
  5. Google Sheets