AWS + Raspberry Pi application coded in Nodejs and JavaScript. It uses sensors to fire predefined actions and control IoT scenarios. The application's codes are also automatically deployed to the respective servers.
This project uses a bunch of AWS services connected to a Raspberry Pi and a doorSensor switch, exploring IoT scenarios with topics being published/subscribed, and actions automaticaly lunched in response to the sensor's status. It also implements flows of Continuous Delivery and Continuous Deployment of the application's codes, automaticaly updating the production versions running on both, the Raspberry Pi server and the AWS EC2 Webserver instance.
The project starts with a fork from perinei/Door-Alarm-Pi. After that, new incorporations and customizations will complement the application's design and implementation.
The project comprehends two main processes/flows:
- DoorSensor's notifications are reflected to the Raspberry Pi and published using AWS SNS. The IoT device status is sent to subscribed cellphones, and the sensor's data is stored in AWS DynamoDB for future recovery through the provided WebServer interface.
- This flow implements a WebServer instance using AWS EC2. It provides a web user interface that fetches dedicated API (through AWS API Gateway), and fires an AWS Lambda code which retrives data/status from AWS DynamoDB about the IoT device (DoorSensor).
The codes of both Flows are kept in GitHub repositories. AWS CodePipeline is used to monitor updates to the codes' repositories and call AWS CodeDeploy to automatically launch new deployment process to its respective production server (Raspberry Pi and/or AWS EC2 WebServer instance).