Coder Social home page Coder Social logo

energysaver-flask's Introduction

Energysaver

Sobre

Energysaver é uma plataforma IoT para monitoramento de sensores e dados implementada em Python com o micro-framework Flask. A plataforma possui uma página web de gerenciamento de usuarios e sensores, onde os dados de cada sensor podem ser visualizados ou baixados em um arquivo .csv para uma futura análise em softwares exeternos. Atualmente a plataforma está em desenvolvimento, mas já possui uma fase de teste que está em andamento nas dependências da Universidade Federal do Oeste do Pará.

A plataforma é conectada a um banco de dados (MongoDB) do tipo não-relacional orientado a documentos (No-SQL) para o armazenamento das informações dos usuários, sensores e dos dados em si. As leituras dos sensores são enviadas através do portocolo MQTT (Message Queuing Telemetry Transport) de um Raspberry Pi disposto geograficamente. A principal vantagem é a sua utilização para a alta transferêcia de dados em pequenos intervalos de tempo e com baixos sinais de rede.

Script do Client

O script funciona em forma de loop onde o dado é coletado e enviado para o Broker MQTT. O requisito obrigatório é, como mencionado acima, a biblioteca “paho-mqtt” que oferece suporte para o uso do protocolo MQTT integrado ao Python.

Entendendo o sistema

Após criar o programa que será usado para enviar os dados para o sistema algumas observações devem ser cumpridas. A primeira delas é o modelo de envio de dados, este é utilizado para organizar o envio corretamente para que o servidor identifique e armazene cada dado. O modelo é definido por um objeto que contém as informações do sistema que está enviando os dados, bem como usuário, local, dispositivo que está enviando, dia, hora, tipo do sensor, modelo, e o valor da leitura. A segunda, deve-se indicar o tópico de envio do dado para o servidor. O tópico é uma string que redireciona o dado para um determinado canal que somente o cliente que possui acesso a ele pode receber as mensagens. E por último, deve ser indicado o endereço de chegada do dado, que é o IP do servidor de armazenamento de dados.

{
   “user”: “Dalton”,
   “local”: “laboratório”,
   ”device”: “raspberry pi”,
   “hour”: ”15:31:22”,
   “day”: “10-07-2017”,
   "name_sensor": "corrente01",
   “type_sensor”: “corrente”,
   “model_sensor”: “ACS712”,
   “value”: “0.45”
 }

Cliente simulado

Um cliente simulado foi criado para testar se o sistema está funcionando. Um cliente simulado é um programa genérico que simula os dados e suas informações de acordo com o que o usuário define, por exemplo, ao iniciar a simulação, configurações como número de leituras, intervalo entre elas, em segundos, e o valor de cada leitura pode ser determinado por um número aleatório definido por um intervalo numérico como um número entre 0.40 e 0.60. O cliente simulado ajuda nos testes e não depende de sensores, o que facilita bastante para definir se o sistema funciona corretamente. Após preencher as configurações básicas do modelo do banco de dados devemos preencher os campos do envio dos dados, como o tópico em formato de string que deve ser definido tanto no servidor quanto cliente e por último o local onde está instalado o servidor, se os dois, cliente e servidor, estão no mesmo dispositivo pode-se usar “localhost” para defini-lo, no entanto, o IP da máquina/servidor deverá ser o endereço.

Descrição da Plataforma

Servidor Flask

Possui algumas configurações e atua principalmente como ponte entre o Raspberry Pi e o banco de dados MongoDB.

Página Web

Atua como gerencidador de dispositivos (Raspberry Pi) e de sensores, além da vizualização em tempo real dos dados, bem como seu gerenciamento e disposição para download.

MQTT

É o protocolo para o envio e recepção das leituras dos dados dos sensores.

MongoDB

Banco de dados para o armazenamento das informações de usuários e dos dados.

Dependências

Vide requirements.txt

Instalação e dependências

  • Fazer o clone do repositório
  • Instalar e ativar um ambiente virtual
  • Instalar as dependências $ pip install -r requirements.txt
  • Ter uma versão do MongoDB rodando em sua máquina
  • Ter um broker MQTT rodando em sua máquina

Rodar a aplicação

Após o processo de instalação, rode o comando $ python run.py

energysaver-flask's People

Contributors

daltonvarao avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.