Requisitos funcionais e não funcionais

Requisitos funcionais

1 - Realizar leitura de temperatura e umidade através do sensor.
2 - Realizar a leitura dos dados em determinados períodos pré determinados.
3 - A gestão dos horários será realizada através do módulo RTC.
4 - Transmitir os dados coletados da estação remota para a base através dos módulos de rádio.
5 - Na estação base os dados deverão ser recebidos sem violações ou erros.
6 - Com os dados já recebidos na estação base, os mesmos serão formatados e enviados para uma rede local onde ocorrerá a sua manipulação na web.
7 - Os módulos serão alimentados via rede elétrica local com o auxílio de fontes de alimentação.
8 - O sistema irá realizar o procedimento de proxy reverso em sua API.
9 - O sistema deve fornecer ao usuário uma representação gráfica via web das medidas coletadas.
10 - O sistema deve possuir um armazenamento dos dados lidos através de um banco de dado.
11 - Os módulos (remoto/base) do sistemas deverão se comunicar via rede wireless.
12 - Se o arduino não estiver cadastrado previamente no banco de dados, ao tentar enviar os dados de leitura, o servidor deverá retornar um erro do tipo 401 unauthorized.
13 - Ao acessar a página web, caso o acesso seja feito com sucesso, o servidor irá retornar um status code de sucesso do tipo 200 Ok.
14 - O servidor deverá retornar um status code de erro do tipo 400 bad request caso o usuário insira dados inconsistentes na URL.
15 - O sistema deverá apresentar os dados de medição em forma de gráficos em uma página web.
16 - Somente o módulo de recepção dos dados poderá fazer requisições de POST ao servidor. Caso o servidor receba uma requisição de POST e esta não pertença ao módulo de recepção o servidor deverá retorna um status code de erro 403 Forbidden.

Requisitos não funcionais

1 - Os módulos (Remoto e Base) deverão estar encapsulados em compartimentos fechados para uma maior segurança dos componentes e do usuário.
2 - Os dados coletados serão representados em formato legível.
3 - Todos os códigos referentes aos módulos, sensores e microcontroladores serão desenvolvidos na linguagem C++ na IDE Arduino.
4 - Todo o desenvolvimento relacionado a códigos serão implementados abertamente.
5 - A api será desenvolvida em Python Flask.
6 - O banco de dados utilizado é o banco não relacional Mongo DB