Web application development in AWS regarding IoT and user administration.
Only stage 1 is required. The following stages will be arranged later.
Amazon web services (an account will be provided), Nodejs or python, Web-Frontend.
I will be happy to answer any questions regarding the project.
Definitions to make the description easier:
Node: is a piece of hardware installed at the user’s facility that has different sensors. It can communicate through HTTP requests or send messages through Mqtt protocol. It can receive information through SMS messages too.
TIOS: Time interval of synchronization. The amount of time between two data packets of the same parameter sent by the node.
NOL: Normal operation limits.
WA: Web Application.
AWS: Amazon Web Services.
OSWA: Out of the Scope of the Web App.
Overall Project description (All stages):
It is intended to create a web application to display information about different nodes connected to the internet via different channels (HTTP Restful API and Mqtt). The node’s connectivity is OSWA.
The architecture will be server-less, meaning that the application must rely entirely on the different AWS services like Lambda, S3, Dynamo DB, etc.
There are several nodes. Each node has a unique ID and is assigned to one (or more) user(s) by the administrator. Each node has a set of parameters, the data of each parameter is sent to the WA at defined time intervals(TIOS). The WA logs all the information sent by the node.
Each parameter in the node has normal operation limits which are set by the administrator.
In case the value of one sensor gets out of the range specified by the parameter’s limits, the node will send an alert (OSWA); the application must be able to handle the alert and notify the user via email and SMS if it is critical.
There will be a console to send commands to the node (like setting a TIOS, a parameter’s NOL, request a sync, etc.). The administrator can change all the parameters of every node and perform all the commands. The administrator can grant permission to a user to perform certain commands on his nodes.
The user can check the status of a node and display information about it (histograms, graphs, log reports, alerts, etc.)
The administrator can check the status of a node (Last seen, TIOS, battery level, etc.) but cannot access to the data produced by the node (the data synchronized every TIOS, alerts).
For testing purposes, a traffic generator must be created along the project. This module can simulate several nodes sending data and alerts to the WA.
Stage 1 (This is what you should do)
A user can create an account with an email, a password and a cellphone number.
The administrator can register new nodes, each with a unique ID, description, a mqtt ID and a phone number.
The administrator can assign nodes to users. Display a list of nodes, users. And he can enter to the details of the user or node.
The node will send syncs though mqtt service (12 char) with a specific syntax which will need some processing. These syncs are catched by AWS IoT and there the service can trigger different actions (save to DynamoDB, a Lambda microservice).
The node will send syncs through HTTP GET with the same format as mqtt. For stage 1 it does not need to be secure. In the following stages a SSL protocol will be used.
The user can display a list of his nodes where each node has a notification symbol with the count of alerts each has sent and the “last seen”.
The user can display the information logged for each of his nodes, as graphs. Each graph displays the NOL of each parameter.
The user receives an email notification every time the node sends a new alert. A new alert happens once when the node just went outside the NOLs.
The traffic generator will be used to send random data (inside a defined range) of selected nodes. Or it can send specific data given by the admin.
Category: IT & Programming
Subcategory: Web development
What's the project's scope?: Create a new custom site
Is this a project or a position?: A project
I currently have: I have the design
Experience in this type of project: Yes (I have managed this kind of project before)
Required availability: As needed
Roles needed: Developer
API Integrations: Others (Other APIs)