In this post, we will dive deeper into how the admin dashboard is being developed and how it is deployed using AWS services. We will also take a look at how the Brain Computer that is in each Pod communicates with our cloud servers as well as how past data can be seen by the Ocean Builders staff on the Admin Dashboard.
The admin dashboard is still under early development. It is built using a Javascript framework called React and it integrates with the AWS Amplify library so that it can communicate with our cloud server infrastructure which is entirely deployed in AWS.
We are implementing the admin dashboard so that it will be responsive and comfortably used on mobile devices as well.
Looking at the architecture of the system as a whole (Pod Brain Computer, cloud servers, and Admin Dashboard) we have the following:
– In the Pod, we have the Brain Computer that is connected to all of the sensors and actuators in the home. Currently, our implementation of the Brain Computer is a Raspberry Pi with a modified version of Home Assistant running on it. Home Assistant is a wonderful open-source home automation platform that is an essential component of our entire software stack. The Brain Computer receives data from the sensors and then stores the data in a local database. It can also “talk” to the different devices and send them orders.
Part of the data collected from the sensors will be sent to our cloud servers if the Pod owner has given consent to share that data. For this, Home Assistant sends POST requests to the AWS API Gateway service.
– The cloud server is a combination of several AWS services that are talking to each other. When the cloud server receives data from a pod through the API Gateway service, the data is sent to a Lambda (a popular AWS serverless service) for processing and storage in the cloud database. We use Dynamo DB for our cloud database implementation.
– When the Ocean Builders staff or the admins use the Admin Dashboard, there has to first be an authentication step. Both the account creation and the user login are based on communication between the React code (using AWS Amplify Library) and AWS Cognito service. Cognito will take care of all our user databases and provide us with authentication across all our services (Single Sign-On).
The rest of the actions that happen in the Admin Dashboard (once the user has been authenticated) will be based on requests (GET/PUT/POST/DELETE) sent by the React application to the API Gateway service using AWS Amplify. Depending on what the request is for, the API Gateway will trigger a specific Lambda that will process the request and write/read data from the Dynamo DB if needed.
All of this is shown in the video below which was recorded by our Lead Admin Dashboard Developer, Talha. (Apologies about the audio quality, some of us are not well experienced or equipped for audio recording yet)