The homepage. Signup using the "Sign up or login" button.
The dashboard. Where you can create new environments.
The environments page. Where managing your IoT MQTT devices is as easy as dragging and dropping.
The realtime MQTT data page.
The interaction page. This is a fully funcitonal MQTT publisher. The fastest way to publish data to your things' MQTT topics.
The triggers page allows you to create text message triggers based on the incoming MQTT data.
Live demo and video tutorial.
A super simple way to connect to my personal IoT devices, all powered by AWS IoT.
What it does
It allows you to connect to your IoT devices without having to personally manage things like certificates and policies. It is the central hub where you can see real-time data incoming MQTT data, publish MQTT data, and even use machine learning / triggers to stay up-to-date on the state of your devices. All the actions on Oasis (such as creating a new 'thing') is connected to AWS IoT using the aws-sdk. All heavy lifting of certificate management, policy attachment, and rule creation is handled by Oasis' Lambda powered backend.
How I built it
- AWS IoT - As mentioned, all the Oasis actions produce actions within AWS IoT.
- Lambda - Succeeded in making the backend completely serverless!
- API Gateway - Handles the GraphQL API which sits infront of DynamoDB.
- DynamoDB - Where all the data is stored.
- Cognito - For user identity management and access control.
- S3 - Where uploaded images and generated certificates exist. Also where the frontend website is hosted.
- Cloudfront - Where the public website is accessed from.
- AWS machine learning - Used to create binary classifiers based on the incoming data.
- SNS - Used for communicating among the many Lambda functions. Also used for text notifications.
- React - Used to power the frontend
- GraphQL - The layer which the frontend communicates with.
Challenges I ran into
Debugging complex serverless architecture is still in its infancy. There are a total of 17 Lambda functions which need to work in harmony. I also realized that Lambda can't do realtime sockets (which makes sense since the functions are ephemeral). So creating a realtime data based architecture was a real challenge. I also got quite familiar with many aspects of the aws-sdk.
Accomplishments that I'm proud of
This thing has the potential to be a fully grown startup! This was my first real hackathon project, and I've put in a lot of effort trying to create something that would not only be useful for me, but also many other IoT hobbyist .
What I learned
I undoubtedly learned about a year's worth of front-end / serverless / AWS within the past 2 months.
What's next for Oasis
I think I would like to take this project to some beta users, and we'll see where it goes from there! :rocket::rocket: