O projeto consiste em um monitor de nível de água utilizando uma placa Arduíno com uma integração com a nuvem AWS.
Para isso, foi utilizado um sensor ultrassônico para calcular o nível da água em um intervalo de tempo. As métricas coletadas são passadas para uma aplicação em Python que envia os dados para o serviços de fila de mensageria SQS na AWS.
O tratamento dos dados recebidos é de responsabilidade de uma função Lambda, a qual será inscrita no tópico da fila para receber as métricas coletadas. A função envia um e-mail através de um tópico SNS caso uma alteração seja identificada no nível da água, e também o dado coletado vai ser registrado em uma tabela do DynamoDB para registros históricos.
- Breadboard
- Arduino Mega 2560
- Sensor ultrassônico
- Cabo USB 2.0 B para conexão do Arduino
- Criada a fila SQS do tipo Standard para envio das métricas coletadas pelo sensor relativos ao nível da água
- Criada o tópico SNS e a subscription de e-mail que vai receber notificações sobre alterações nas medidas da água
- Criada a tabela do DynamoDB para receber os registros das coletas, com a chave primária sendo a data e hora em que foi realizada
- Criada a função Lambda e adicionada as seguintes permissões na política da sua role de execução:
"sqs:DeleteMessage",
"sqs:Get*",
"sqs:ReceiveMessage",
"sns:Publish",
"dynamodb:BatchWriteItem",
"dynamodb:PutItem"
- Adicionada a fila SQS para servir como trigger da função Lambda criada
- Criado um usuário com as permissões necessárias para enviar mensagens ao SQS