60

São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Embed Size (px)

Citation preview

Page 1: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 2: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

São Carlos

2016

user1
Text Box
Page 3: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

André Progiante

Sistema de Gerenciamento e Consulta de

Consumo de Energia Elétrica na Nuvem

para Residências

Trabalho de Conclusão de Curso apresentado

à Escola de Engenharia de São Carlos, da

Universidade de São Paulo

Curso de Engenharia Elétrica

ORIENTADOR: Prof. Dr. Evandro Luis Linhari Rodrigues

São Carlos

2016

Page 4: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

AUTORIZO A REPRODUÇÃO TOTAL OU PARCIAL DESTE TRABALHO,POR QUALQUER MEIO CONVENCIONAL OU ELETRÔNICO, PARA FINSDE ESTUDO E PESQUISA, DESDE QUE CITADA A FONTE.

Progiante, André

PA543sSistema de gerenciamento e consulta de consumo de

energia elétrica na nuvem para residências / AndréProgiante; orientador Evandro Luis Linhari Rodrigues.São Carlos, 2016.

Monografia (Graduação em Engenharia Elétrica com ênfase em Eletrônica) -- Escola de Engenharia de SãoCarlos da Universidade de São Paulo, 2016.

1. consumo. 2. energia elétrica. 3. internet das coisas. 4. sistemas embarcados. 5. arduino. 6. aspberrypi. 7. computação em nuvem. 8. automação residencial.I. Título.

Page 5: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

página com a folha de aprovação (página ímpar).

Figura 1: Folha de Aprovação.

user1
Text Box
user1
Text Box
user1
Text Box
Page 6: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 7: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Dedicatória

Dedico este trabalho aos meus pais, Shirley e José Mauro, e às minhas irmãs, Ana Lia

e Sara, os quais sempre me apoiaram em todas as fases de minha vida, estimulando-me a

prosseguir nos estudos e a enfrentar desafios.

Page 8: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 9: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Agradecimentos

Ao meu orientador, Professor Doutor Evandro Luís Linhari Rodrigues, pela condução se-

gura e competente; aos meus pais, Shirley e José Mauro, pelo amor incondicional; às minhas

irmãs, Ana Lia e Sara, por terem sido, para mim, exemplos de dedicação e responsabilidade;

ao amigo Felipe da Cruz Bueno, pela inestimável ajuda; à empresa DuPont, pela preciosa

colaboração durante a realização deste trabalho.

Page 10: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 11: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

"Se quer viver uma vida feliz,

amarre-se a uma meta, não às pessoas nem às coisas."

Albert Einstein

Page 12: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 13: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Resumo

Entre os vários itens que impactam o orçamento das famílias brasileiras nos dias atuais, está

o gasto com energia elétrica. Embora existam planos do atual governo federal para aumentar

a matriz energética nacional - o que demandará investimentos públicos e privados de longo

prazo-, é necessário que a população encontre mecanismos de economia de energia. Di-

ante desse cenário e após analisar as opções já existentes no mercado, foi desenvolvido um

dispositivo que propiciará ao cidadão o controle de gastos por fonte consumidora. Tal con-

trole pode acontecer por cômodo da residência ou por tomada. Como embasamento teórico,

foram utilizados os conceitos de internet das coisas, microcontroladores e sistemas embar-

cados.Também foi desenvolvido um website para o acompanhamento do consumo em tempo

real ou num período específico: horário, dia, mês. Nessa análise, é possível reconhecer picos

de consumo de energia elétrica em determinada data e também verificar padrões de consumo

por horário.Os indicadores são em kWh e em real. O protótipo foi desenvolvido utilizando

ESP-12 e Raspberry Pi; atingiu os resultados especificados no projeto e se mostrou uma

alternativa viável para o controle e redução do consumo de energia elétrica em residências.

Palavras-Chave: consumo, energia elétrica, internet das coisas, sistemas embarcados, ar-

duino, aspberry pi, esp8266, computação em nuvem, automação residencial.

Page 14: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 15: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Abstract

Among the many items that impact the budget of Brazilian families nowadays is electricity

spending. Although there are government plans to increase the national energy matrix - which

will require long term public and private investments-, it is necessary that people find elec-

tricity saving mechanisms. Given this scenario and after analyzing the existing options on

the market, it was developed a device that will provide the citizen control of electricity spen-

ding individualized by source. Such control could be analyzed individually or by room in the

house. As a theoretical basis, it was used the concept of internet of things, microcontrollers

and embedded systems. Also, it was developed a website to monitor consumption in real time

or at a specific time: hours, days months. In this analysis, it is possible to recognize electri-

city consumption peaks in certain date and also check consumption patterns by hours. The

indicators are in kWh and R$. The prototype was developed using ESP-12 and Raspberry

Pi; it achieved the results specified on the project and is a viable option for home electrical

energy consumption reduction and control.

Keywords: consumption, electricity, internet of things, embedded systems, arduino, rasp-

berry pi, esp8266, cloud computing, home automation .

Page 16: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 17: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Lista de Figuras

1 Folha de Aprovação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1 Visão Geral do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2 Foto do FTDI232-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3 Comparação do tamanho do ESP-12 com uma moeda . . . . . . . . . . . . . 33

3.4 Página de Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.5 Gráfico de Consumo no período . . . . . . . . . . . . . . . . . . . . . . . . 38

3.6 Gráfico de Consumo em Tempo Real . . . . . . . . . . . . . . . . . . . . . . 39

3.7 Página de Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.8 Página Locais - Detalhes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.9 Página de Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.10 Página de Pontos - Edição . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.11 Página de Usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.12 Página de Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Page 18: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 19: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Lista de Tabelas

3.1 Tabela Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.2 Tabela Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.3 Tabela Pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.4 Tabela Consumos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.5 Tabela Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.6 Tabela Pontos Perfis Ativos . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1 Tabela Custos por Módulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Page 20: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 21: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

Siglas

UART Universal asynchronous receiver/transmitter -

Transmissor/Receptor Universal Síncrono e Assíncrono

PWM Pulse Width Modulation -

Modulação por largura de pulso

HTML HyperText Markup Language -

Linguagem de Marcação de Hipertexto

CSS Cascading Style Sheets -

Folhas de estilo cascateadas

JSON JavaScript Object Notation" -

Notação de objeto JavaScript

RAM Random Access Memory -

Memória de acesso aleatório

ROM Read-Only Memory -

Memória somente leitura

Page 22: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título
Page 23: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

23

Sumário

1 Introdução 25

1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.3 Justificativas/relevância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.4 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 Fundamentação Teórica 29

2.1 Microcontroladores e Sistemas Embarcados . . . . . . . . . . . . . . . . . . 29

2.2 Computação na Nuvem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.3 Internet das Coisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Material, Ferramentas e Métodos 31

3.1 Visão Geral do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2 Materiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.1 FTDI232-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.2 ESP-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.3 Raspberry Pi Rev 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.1 Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.2 NodeMCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.3 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.4 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.5 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.6 Chart.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.4.1 ESP-12 - Recepção das medições e envio dos dados via socket . . . . 35

Page 24: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

24

3.4.2 Criação de servidor socket HTTP e threadings na Rapsberry Pi . . . . 36

3.4.3 Estrutura do website e apresentação dos dados para o usuário . . . . . 36

4 Resultados e Discussões 49

4.1 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.1.1 ESP-12, Comunicação Wi-Fi e LUA . . . . . . . . . . . . . . . . . . 49

4.1.2 Raspberry PI, Python, Comunicação com Banco de Dados por meio

das APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.1.3 Website em PHP no DigitalOcean, Banco de dados MySQL . . . . . 50

4.2 Discussões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.1 Limitações da Aplicação . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.2 Impactos da aplicação na rede elétrica . . . . . . . . . . . . . . . . . 51

5 Conclusões 53

5.0.1 Expansões do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 54

A Algoritmos do Projeto 57

A.1 Algoritmos LUA no ESP-12 . . . . . . . . . . . . . . . . . . . . . . . . . . 57

A.1.1 init.lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

A.1.2 generatesend.lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

A.2 Algoritmo Python na Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 58

A.2.1 socketserver.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Page 25: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

25

Capítulo 1

Introdução

O Banco Central estimou um aumento de 51,7% no preço da Energia Elétrica no Brasil no

início 2015, conforme publicado pelo Globo- G1 [1]. Tal aumento se deve à alta nos custos de

geração de energia elétrica em usinas Hidroelétricas e Termoelétricas e nos encargos setoriais

para compra de energia elétrica, bem como à implantação do sistema de bandeiras, ocorrido

no início do ano.

Influenciando diretamente os índices de inflação, o crescimento do preço da Energia Elé-

trica tem grande impacto na renda das famílias brasileiras.

Diante desse cenário, é necessário e urgente que a população encontre mecanismos de

redução do consumo de energia em residências.

Para isso, seriam eficazes ações simples como utilização de eletrodomésticos com maior

eficiência (índices A, B ou C), certeza de que aparelhos elétricos que não estão sendo uti-

lizados se mantenham desligados e desconectados da tomada, e utilização mais breve de

chuveiros elétricos e ferros de passar.

Atualmente, o consumo de energia elétrica é acompanhado apenas por meio da fatura

fornecida mensalmente pela concessionária. Por esse demonstrativo, não é possível visualizar

o consumo individual de cada aparelho elétrico. Porém, já é viável essa medição individual,

a qual permite ao usuário ter um controle de gastos por fonte consumidora de energia, o que,

por sua vez, possibilita ações que mitiguem o gasto de um determinado aparelho elétrico.

Recentemente, foi criada uma campanha de arrecadação para produção de um dispositivo

similar ao desse trabalho no website "IndieGoGo". O projeto é chamado "Curb"[2].

Page 26: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

26

1.1 Motivação

A motivação para este trabalho surgiu durante as aulas de Projetos de Sistemas Digitais,

no estágio realizado no Canadá, bem como diante da percepção do alto custo da energia

elétrica no Brasil. Além disso, a atual e imprescindível preocupação com o meio ambiente

também nos motivou a desenvolver um dispositivo que pudesse, além de reduzir as despesas

familiares, contribuir para o arrefecimento dos danos ao meio ambiente.

1.2 Objetivos

O objetivo deste trabalho de conclusão de curso é desenvolver o projeto e montar um sistema

que, conectado a um medidor de consumo de energia elétrica, permita consulta em tempo

real por meio da internet. Essa consulta permitirá aos usuários rastrear as maiores fontes

consumidoras da casa e desligá-las.

1.3 Justificativas/relevância

O tema foi escolhido por envolver microcontroladores e sistemas embarcados, temas pelos

quais tenho interesse e nos quais desenvolvi projetos pessoais durante a graduação. O projeto

tem também um cunho ambiental,já que a proposta é reduzir o consumo de energia elétrica,

tema de suma relevância em nosso país hoje.

1.4 Organização do Trabalho

Este trabalho é dividido em cinco capítulos, incluindo esta introdução, dispostos conforme a

descrição que segue: Capítulo 1 - Introdução: apresenta os objetivos, motivação e justificativa

deste trabalho.

Capítulo 2 - Embasamento Teórico: Introduz a teoria de microcontroladores e sistemas

embarcados.

Capítulo 3 - Materiais e Métodos: Define os materiais e componentes utilizados no pro-

jeto, apresenta todo o código desenvolvido, montagem e ligação dos componentes além de

detalhes na elaboração do projeto.

Capítulo 4 - Resultados e Discussões: Discussão dos resultados obtidos com o projeto,

apresentação do que foi bem sucedido e o que não foi possível alcançar. Apresenta dados

Page 27: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

27

obtidos em testes no projeto.

Capítulo 5 - Conclusões: Conclusão do trabalho, objetivos alcançados, pontos de conti-

nuidade e aprendizados obtidos com o projeto de conclusão de curso.

Page 28: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

28

Page 29: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

29

Capítulo 2

Fundamentação Teórica

2.1 Microcontroladores e Sistemas Embarcados

Um microcontrolador é um chip que contém núcleo de processamento, memórias RAM,

ROM e Flash, periféricos, gerador de clock, e outros circuitos típicos de computadores. Atu-

almente, estão presentes em diversos produtos como: eletrodomésticos, máquinas industriais

e comerciais, brinquedos, sistemas embarcados, entre outros. Os microcontroladores são

amplamente utilizados por seu baixo custo e fácil implementação.[3]

Um sistema embarcado é um sistema microprocessado completamente dedicado ao dis-

positivo onde está encapsulado, realizando tarefas predefinidas e que não podem ser alteradas

durante o uso.[4] São exemplos de dispositivos que utilizam microcontroladores e sistemas

embarcados:

• Smartphones

• Impressoras

• Roteadores

• Equipamentos Médicos

Nesse projeto, o microcontrolador utilizado foi o ESP8266[5] com firmware embarcado

NodeMCU.[6]

2.2 Computação na Nuvem

Computação nas nuvens ou, em inglês, cloud computing é o princípio que propõe que pro-

cessamento, armazenamento podem ser realizados na em computadores servidores remotos

Page 30: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

30

e acessados de qualquer ponto utilizando a internet, daí a alusão à nuvem. A viabilidade do

uso desse modelo é mais viável do que o uso de unidades físicas locais.[7] Atualmente, em-

presas como Google, Microsoft e Amazon oferecem serviços de computação na nuvem.[8]

Nesse projeto, a ideia de um sistema online que controle dispositivos físicos é uma aplicação

de Computação na Nuvem e utiliza o servidor OceanCloud, que disponibiliza ao usuário um

computador servidor por meio da internet.

2.3 Internet das Coisas

Internet das coisas ou, em inglês Internet of Things, é um conceito em que todas as coisas do

dia a dia estão conectadas à internet. A conexão de um objeto qualquer à internet possibilita

controle remoto, medições, integração, geração de dados de funcionamento, entre outros.

Tudo isso é possível com a presença de sensores, microcontroladores e módulos de conexão,

integrados ou externos.

Atualmente, o desenvolvimento de soluções utilizando o conceito de internet das coisas

não está restrito a grandes companhias de tecnologia. Graças à redução de preços, popula-

rização e aumento na quantidade de material de suporte, desenvolvedores amadores podem

colocar suas ideias em prática e desenvolver aplicações em internet das coisas.[9]

Page 31: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

31

Capítulo 3

Material, Ferramentas e Métodos

Neste capítulo serão descritos o material e métodos utilizados no projeto. Primeiramente os

componentes serão apresentados e explicados, posteriormente é mostrada a montagem e as

conexões realizadas no trabalho.

Page 32: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

32

3.1 Visão Geral do sistema

A visão geral do sistema é representada pela Figura 3.1, que apresenta a comunicação entre

os dispositivos e o fluxo de funcionamento do projeto.

Figura 3.1: Visão Geral do sistema

Page 33: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

33

3.2 Materiais

3.2.1 FTDI232-1

O FTDI232-1 é uma placa que contém o microcontrolador de interface USB - UART FT232RL,

que permite, com auxílios de drivers instalados em um computador, realizar a programação e

o teste de dispositivos que utilizam comunicação serial e são programados utilizando-se essa

tecnologia. Nesse projeto, o FTDI232-1 foi utilizado para programar e testar o ESP-12. A

figura 3.2 mostra o componente utilizado.[10]

Figura 3.2: Foto do FTDI232-1

3.2.2 ESP-12

o ESP-12 é um chip que possui o microcontrolador ESP8266 e oferece acesso às portas de

entrada e saída do componente. O microcontrolador possui 80Mhz de clock, 4Mb de memória

Flash e funciona como cliente ou ponto de acesso para conexões Wi-Fi. O processador pode

ser programado com o firmware NodeMCU e pode executar códigos em Lua e C.[5]

Na figura 3.3, pode-se comparar o tamanho do ESP-12 com uma moeda americana.

Figura 3.3: Comparação do tamanho do ESP-12 com uma moeda

Page 34: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

34

3.2.3 Raspberry Pi Rev 2

Raspberry Pi é um computador de uma única placa desenvolvido no Reino Unido pela Rasp-

berry Pi Foundation em 2012. Desde seu lançamento, a popularidade do modelo em projetos

de automação, gerenciamento de arquivos de mídia entre outras aplicações de internet das

coisas cresceu exponencialmente. A placa possui um processador de 700Mhz e é capaz de

executar Sistemas Operacionais Unix. [11] Nessa aplicação, foi utilizado o ArchLinux, versão

simplificada do Sistema Operacional, muito utilizada em processadores ARM.

3.3 Ferramentas

3.3.1 Lua

Lua é uma linguagem de script criada em 1993 na PUC-RJ. A linguagem possui simplicidade

única, extensível e permite prototipagens rápidas e integrações eficientes entre diferentes

linguagens.[12] Nesse projeto, foram utilizados códigos Lua no NodeMCU no ESP-12.

3.3.2 NodeMCU

NodeMCU é uma plataforma aberta de desenvolvimento de Internet das Coisas que utiliza

Lua como linguagem. É um firmware para ESP8266 que facilita a integração do módulo

Wi-Fi a outros hardwares. Nesse projeto, os ESP-12 utilizados possuem NodeMCU como

firmware.[6]

3.3.3 Python

Python é uma linguagem de programação e script, interpretada, orientada a objetos criada em

1991 por Guido Van Rossum. A linguagem possui uma sintaxe concisa e grande diversidade

de bibliotecas. Nessa aplicação, foi utilizada a versão 2.7 do Python, instalada e executada

na Raspberry Pi.[13]

3.3.4 PHP

PHP é uma linguagem interpretada criada em 1994 para ser utilizada no lado do servidor de

aplicações web. Atualmente, é a linguagem de programação mais utilizada no mundo para

esse tipo de aplicação.[14] Neste projeto, todo o website foi desenvolvido com base em um

Page 35: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

35

framework PHP que utiliza o VoodOrm para facilitar a comunicação com o banco de dados

MySQL. Para o design das páginas, foram utilizados HTML, CSS e JavaScript.

3.3.5 MySQL

MySQL é uma ferramenta de gerenciamento de banco de dados que utiliza linguagem SQL.

Foi criado na década de 1980 e atualmente é o banco de dados relacional mais utilizado do

mundo.[15] Nesse projeto, o banco de dados MySQL armazena informações sobre os locais

e pontos da residência e o consumo nos pontos específicos.

3.3.6 Chart.js

Chart.js é uma biblioteca JavaScript para a criação de gráficos. Ideal para pequenas apli-

cações, oferece gráficos simples, elegantes e responsivos. A biblioteca utiliza HTML 5 e é

compatível com todos os navegadores.[16] Neste projeto, todos os gráficos foram montados

utilizando Chart.js.

3.4 Métodos

3.4.1 ESP-12 - Recepção das medições e envio dos dados via socket

O ESP-12 funciona como escravo na relação com a RaspberryPi e como mestre na relação

com o dispositivo medidor.

O ESP-12 executa o arquivo LUA, init.lua que conecta à rede Wi-Fi pré configurada e

executa o arquivo generatesend.lua

O arquivo generatesend.lua se conecta ao servidor socket HTTP, que está sendo execu-

tado na Rasperry Pi e, ao receber a requisição de medida e o status do sensor, envia uma

requisição ao dispositivo medidor em conjunto com o comando para ligar ou desligar o relé

e o dispositivo medidor envia a leitura serialmente ao ESP-12.

Em posse do valor da medição, o ESP-12 envia o dado via socket HTTP para a Raspberry

Pi.

Os códigos LUA completos são explicitados nos apêndices A.1.1 e A.1.2

Page 36: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

36

3.4.2 Criação de servidor socket HTTP e threadings na Rapsberry Pi

O código presente na Raspberry Pi utiliza multi-threading para desempenhar múltiplas fun-

ções simultaneamente.

São utilizados os seguintes threads:

• main_thread

É o thread principal, se mantém aguardando novas conexões de sensores e, ao receber

uma nova conexão, cria um novo thread exclusivo, chamando a função clientthread.

• clientthread

Cada conexão da Raspberry Pi com sensores é mantida por um thread exclusivo, que

executam a função clientthread Essa função envia um pedido de leitura ao ESP-12

em questão, juntamente com o status do sensor e recebe o valor lido pelo dispositivo

medidor e enviado pelo ESP-12. Em posse do dado da medida, a função grava esse

valor em uma lista global juntamente com o endereço físico do ESP-12 e a data e hora

da medição.

• requestT hread

Esse thread é executado continuamente a partir do momento em que há uma conexão

ativa. Ele realiza a conexão da Raspberry Pi ao servidor PHP. A função executada

primeiramente, realiza uma leitura dos sensores ativos no servidor, utilizando a request

ativos e então atualiza a lista de sensores da Raspberry Pi. Em seguida, é feita a

conversão da lista de medições em um JSON e esse JSON é submetido ao servidor PHP

via request adicionar

bulk.

O código Python presente na Raspbery Pi é explicitado no Apêndice A.2.1.

3.4.3 Estrutura do website e apresentação dos dados para o usuário

No momento da defesa, O website está hospedado em uma máquina do serviço DigitalOcean

e pode ser acessado da internet pelo endereço http://107.170.36.176/. O website também está

hospedado e será mantido em um endereço dentro dos domínios da USP com disponibilidade

regida pela universidade.

O website possui seis views principais e diversas views auxiliares acessíveis ao usuário:

Page 37: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

37

Login

Na tela de login, o usuário digita seu login e senha, que são checados na tabela de usuários

no banco de dados. Pode-se visualizar a página de login na figura 3.4.

Figura 3.4: Página de Login

Page 38: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

38

Visão Geral

É a página principal do website, onde o usuário pode visualizar o consumo de Energia elétrica

nos locais que possuem tomadas com sensores conectados.

O primeiro gráfico, Consumo no Período, permite visualização em R$ ou em kWh. O

preço do kWh é inserido manualmente pelo usuário.

O gráfico pode ser ajustado para mostrar um dia, mês, semana, ano ou um período definido

manualmente.

O agrupamento dos dados pode ser feito por Horário, Dias ou Meses. Pode-se visualizar

a página de visão geral na figura 3.5

Figura 3.5: Gráfico de Consumo no período

O segundo gráfico, Consumo em Tempo Real, permite ao usuário visualizar a potência

em Watts que está sendo consumida em seus locais em tempo real. O gráfico de consumo em

tempo real é apresentado na figura 3.6

Page 39: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

39

Figura 3.6: Gráfico de Consumo em Tempo Real

Page 40: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

40

Locais

A página de Locais apresenta todos os locais cadastrados no Banco de Dados. Permite inserir

novos locais, ordenar, buscar, editar e excluir locais existentes e acessar a página de detalhes

dos locais. Pode-se visualizar a página de locais na figura 3.7

Figura 3.7: Página de Locais

Page 41: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

41

Locais - Detalhes

Na página de detalhes de um local, é possível visualizar o consumo por período e em tempo

real do local, além da lista dos pontos cadastradas ao local. É possível também, nessa página,

incluir novos pontos manualmente ao local. Os gráficos funcionam da mesma forma que os

da página Visão Geral. Pode-se visualizar a página de detalhes de um determinado local na

figura 3.8

Figura 3.8: Página Locais - Detalhes

Page 42: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

42

Pontos

A página de Pontos apresenta todos os Pontos, ou tomadas, cadastrados no Banco de Dados e

suas informações, como tensão e local. Permite inserir novos pontos, ordenar, buscar, editar

e excluir pontos existentes. Pode-se visualizar a página de pontos na figura 3.9

Figura 3.9: Página de Pontos

Page 43: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

43

Pontos - Edição

Na página de edição dos pontos, é possível modificar o comportamento do ponto selecionado

em todos os perfis existentes. É possível fazer com que um ponto permaneça ligado ou

desligado constantemente ou em um determinado período. A página de edição de pontos,

pode ser visualizada na figura 3.10

Figura 3.10: Página de Pontos - Edição

Page 44: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

44

Usuários

A página de Usuários apresenta todos os usuários cadastrados no Banco de Dados. Permite

inserir novos usuários, ordenar, buscar, editar e excluir usuários existentes. Pode-se visualizar

a página de usuários na figura 3.11

Figura 3.11: Página de Usuários

Page 45: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

45

Perfis

Na página de perfis, o usuário pode incluir, alterar ou excluir os perfis de utilzação, além de

poder escolher qual o perfil ativo. Pode-se visualizar a página de perfis na figura 3.12.

Figura 3.12: Página de Perfis

Page 46: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

46

Estrutura do Banco de dados e Lógica de inserção de medições

O Banco de dados é estruturado da seguinte forma:

• A tabela Usuários é descrita como na Tabela 3.1.

Tabela 3.1: Tabela UsuariosCampo Tipo Chave

id int primária

nome varchar

login varchar

senha varchar

• A tabela Locais é descrita como na Tabela 3.2.

Tabela 3.2: Tabela LocaisCampo Tipo Chave

id int primária

descrição varchar

• A tabela Pontos é descrita como na Tabela 3.3.

Tabela 3.3: Tabela PontosCampo Tipo Chave

id int primária

idlocal int estrangeira

descrição varchar

identificador varchar

ativo int

tensão int

consumo_atual decimal

consumo_atual_datahora timestamp

• A tabela Consumos é descrita como na Tabela 3.4:

• A tabela Perfis é descrita como na Tabela 3.5:

Page 47: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

47

Tabela 3.4: Tabela ConsumosCampo Tipo Chave

id int primária

idponto int estrangeira

consumo decimal

datainicial timestamp

datafinal timestamp

somatória decimal

quantidade int

tempo_decorrido int

Tabela 3.5: Tabela PerfisCampo Tipo Chave

id int primária

descrição varchar

Tabela 3.6: Tabela Pontos Perfis AtivosCampo Tipo Chave

idperfil int estrangeira

idponto int estrangeira

idponto int

ativo int

horainicial varchar

horafinal varchar

Page 48: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

48

• A tabela Pontos_Perfis_Ativos, que armazena os períodos de funcionamento de cada

ponto em cada perfil é descrita como na Tabela 3.6:

Cada medição incluída no banco de dados por meio da API passa pela seguinte lógica:

• É comparada a hora da medição com a hora da última medição do mesmo ponto;

Caso a medição anterior tenha ocorrido menos de 10 segundos antes e esteja dentro

da mesma hora, a medição atual é agrupada com a anterior e a média de consumo no

período é recalculada;

Caso a medição anterior tenha ocorrido mais de 10 segundos antes ou esteja em

uma hora diferente, é criada uma nova linha no banco de dados e a medição atual é

incluída.

Com essa lógica, é possível detectar cortes no consumo de energia dentro de uma hora e

reduzir o número total de linhas no banco de dados.

Os códigos fontes do website estão disponíveis no endereço www.opencore.eesc.usp.

br/evandro/TCC_2016/Progis

Page 49: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

49

Capítulo 4

Resultados e Discussões

4.1 Resultados

O trabalho atingiu os resultados especificados na definição do projeto, funcionando como um

protótipo de um sistema que permite ao usuário o controle e monitoramento do consumo de

energia elétrica, individualizado por tomada, em uma residência. A seguir, serão discutidas

especifidades do trabalho com cada ferramenta e material.

4.1.1 ESP-12, Comunicação Wi-Fi e LUA

Inicialmente, foi utilizado o ESP-01 como módulo wireless, porém, devido ao comporta-

mento inconsistente do módulo, decidiu-se utilizar um componente mais robusto, da mesma

família e de aplicação semelhante, o ESP-12 . O firmware para aplicações IOT NodeMCU

atendeu completamente os requisitos do projeto, sendo facilmente configurável e programá-

vel. Utilizando a linguagem LUA, foi possível testar e desenvolver o código que recebe os

valores lidos do medidor de potência e os transmite para a Raspberry Pi.

4.1.2 Raspberry PI, Python, Comunicação com Banco de Dados por meio das APIs

Por possuir-se mais familiaridade com a linguagem Python e o dispositivo, a Raspberry Pi

não se apresentou como empecilho e pode-se explorar todo o potencial do dispositivo. A

Raspberry Pi é um dispositivo superdimensionado para a aplicação. O componente foi utili-

zado devido à disponibilidade e por atender os requisitos do projeto, poderiam ser utilizados

quaisquer microcontroladores ARMs com WiFi ou Ethernet, sem necessidade de alteraçÕes

nos códigos ou configurações adicionais. O código Python da Raspberry Pi utiliza APIs para

incluir informações no banco de dados. A inclusão do valor medido em todas as tomadas

Page 50: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

50

capturadas pela Raspberry Pi é feita a cada 1s e tratada pelo servidor PHP. Esse período foi

definido para que seja mantida a precisão no tempo da medida porém a rede não seja sobre-

carregada.

4.1.3 Website em PHP no DigitalOcean, Banco de dados MySQL

O website foi desenvolvido utilizando um Framework PHP, o que facilitou no desenvolvi-

mento, porém não eliminou todas as dificuldades. A criação das páginas utilizando-se HTML,

CSS e Javascript exigiu muito estudo das ferramentas e foi suportada pela ampla quantidade

de material disponível para consulta na internet. A comunicação com o banco de dados utili-

zando Vood ORM foi eficaz. As escolhas de agrupamento e escala dos gráficos permitem ao

usuário a detecção de picos de consumo de energia elétrica em horas específicas do dia, em

um dia específico ou em uma hora qualquer de um dia específico. Foi definida a amostragem

de uma hora para visualização nos gráficos, pois foi considerado que, para o usuário final, não

seria necessária amostragem maior. Outro fator determinante para a escolha da amostragem

foi que, ao testar-se com valor maior, o banco de dados passou a demorar mais de 1s para

executar algumas queries; preferiu-se então a manutenção da performance do sistema sobre

o aumento da amostragem.

4.2 Discussões

4.2.1 Limitações da Aplicação

A aplicação possui limitações nos seguintes pontos:

• Para o funcionamento do sistema, é necessário que o módulo medidor de potência trans-

mita os dados via serial para o ESP-12 a taxa de 9600bpm;

• A máxima amostragem dos dados de consumo suportada pelo projeto é uma hora; Para

aumentar a amostragem, seria necessário alterar a forma de armazenamento no banco

de dados e consequentemente utilizar um servidor de banco de dados com processador

mais pontente e mais memória RAM;

• É necessário pré-configurar os módulos de medição individualmente; Essa limitação é

inerente da utilização de módulos ESP-12;

Page 51: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

51

4.2.2 Impactos da aplicação na rede elétrica

O projeto apresenta impactos na rede elétrica, consumindo energia. O consumo dos módu-

los não é medido pela aplicação. O consumo médio dos dispositivos é explicitado em seus

datasheets[17]:

• ESP-12

O ESP-12 possui corrente de entrada média de operação de 150mA durante a transmis-

são de dados, consumindo assim em média 495mWh

Considerando as impedâncias da fonte e dos fios utilizados, o módulo completo consume

aproximadamente 550mWh. Em um mês, ligado em tempo integral o módulo consumiria

396Wh ou aproximadamente R$0,10 nas tarifas atuais. Em uma aplicação com 20 módulos,

o gasto total mensal não passaria de R$2,50.

Page 52: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

52

Page 53: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

53

Capítulo 5

Conclusões

O desenvolvimento de um sistema na nuvem para controle residencial de consumo de energia

elétrica mostrou-se viável do ponto de vista técnico e útil do ponto de vista social. Com um

pequeno investimento, o cidadão poderá acompanhar o gasto de energia em pontos determi-

nados e empreender ações que visem à economia de energia elétrica, como troca de aparelhos

elétricos ou racionalização do seu uso. O nome do website resume bem o objetivo do aparelho

ora proposto: WISE - WHAT’S INDEED SPENDING ELECTRICITY? Em Português: O

que realmente está gastando energia? O projeto foi desenvolvido utilizando conceitos apren-

didos na graduação e novos conceitos necessários para a composição do trabalho; o trabalho

em si serviu como incentivo para o aprendizado de diversas ferramentas como PHP, HTML,

CSS, Javascript, LUA.

O custo dos componentes utilizados na confecção do módulo protótipo é apresentado na

Tabela 5.1

Tabela 5.1: Tabela Custos por Módulo

Componente Custo(US$)

ESP-12 7

Fonte 5

Placa Perfurada 2

Fios e Adaptadores 2

Total 16

A Raspberry Pi possui custo aproximado de US$50,00

Page 54: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

54

5.0.1 Expansões do trabalho

Como possíveis expansões do trabalho, poderiam ser incluídas funcionalidades como:

• Desenvolvimento de módulos que utilizem outros tipos sensores e o mesmo sistema

web de monitoramento. São exemplos dessa expansão: Sensores de alarme, portões

eletrônicos, câmeras de segurança, interfones, etc;

• Migração do sistema web para plataforma com múltiplos clientes;

• Utilização do Azure Machine Learning ou outro algoritmo estatístico para análise dos

dados capturados e predição do consumo futuro.

Page 55: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

55

Referências Bibliográficas

[1] Bc ve alta de 51,7% na energia em 2015 e de 15% na gasolina. http:

//g1.globo.com/economia/noticia/2015/10/bc-ve-alta-de-517-na-

energia-em-2015-e-de-15-na-gasolina.html, Acesso em: 19 de janeiro de

2016.

[2] IndieGoGo - Curb. https://www.indiegogo.com/projects/curb-power-your-

life-smarter#/, Acesso em: 19 de janeiro de 2016.

[3] Microcontroladores. http://www.bosontreinamentos.com.br/eletronica/

eletronica-geral/introducao-aos-microcontroladores/, Acesso em: 23 de

fevereiro de 2016.

[4] Sistemas embarcados. http://www.embarc.com.br/p1600.aspx, Acesso em: 23 de

fevereiro de 2016.

[5] Esp-12. https://www.adafruit.com/product/2491, Acesso em: 25 de fevereiro de

2016.

[6] Nodemcu. http://nodemcu.com/index_en.html, Acesso em: 12 de maio de 2016.

[7] Cloud cmputing. http://www.gartner.com/newsroom/id/707508, Acesso em: 12

de maio de 2016.

[8] Network world. http://www.networkworld.com/article/2161274/cloud-

computing/gartner-s-iaas-magic-quadrant--a-who-s-who-of-cloud-

market.html, Acesso em: 12 de maio de 2016.

[9] Internet of things. http://www.itu.int/en/ITU-T/gsi/iot/Pages/default.

aspx, Acesso em: 12 de maio de 2016.

Page 56: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

56

[10] Ftdi. http://www.ftdichip.com/FTCorporate.htm, Acesso em: 24 de fevereiro de

2016.

[11] What’s a raspberry pi? https://www.raspberrypi.org/help/what-is-a-

raspberry-pi/, Acesso em: 24 de fevereiro de 2016.

[12] Lua. https://www.lua.org/start.html, Acesso em: 12 de maio de 2016.

[13] Python. https://www.python.org/, Acesso em: 12 de maio de 2016.

[14] Php. http://php.net/manual/pt/, Acesso em: 12 de maio de 2016.

[15] Mysql. http://www.mysql.com/why-mysql/, Acesso em: 12 de maio de 2016.

[16] chart.js. http://www.chartjs.org/docs/, Acesso em: 12 de maio de 2016.

[17] Esp-12 datasheet. http://www.seeedstudio.com/wiki/images/7/7d/ESP-12E_

brief_spec.pdf, Acesso em: 12 de maio de 2016.

Page 57: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

57

Apêndice A

Algoritmos do Projeto

A.1 Algoritmos LUA no ESP-12

A.1.1 init.lua

w i f i . se tmode ( w i f i . STATION)

w i f i . s t a . c o n f i g ( " PROGISNET" , " 1 2 4 2 0 0 3 1 5 " )

w i f i . s t a . c o n n e c t ( )

tmr . a l a rm ( 0 , 2000 , 1 , f u n c t i o n ( )

l o c a l i p = w i f i . s t a . g e t i p ( )

i f i p t h e n

tmr . s t o p ( 0 )

p r i n t ( i p )

d o f i l e ( " g e n e r a t e _ s e n d . l u a " )

e l s e

p r i n t ( " C o n n e c t i n g t o WIFI . . . " )

end

end )

A.1.2 generatesend.lua

f u n c t i o n c o n n e c t _ s o c k e t ( sk )

sk : on ( " c o n n e c t i o n " , f u n c t i o n ( sck , c )

macAdd = w i f i . ap . getmac ( )

sk : send ( " i d : " . . macAdd )

c o n n e c t e d = t r u e

end )

sk : on ( " r e c e i v e " , f u n c t i o n ( sck , c )

i f s t r i n g . f i n d ( c , " 0 " ) t h e n

s t a t u s _ s e n s o r = ’0 ’

e l s e i f s t r i n g . f i n d ( c , " 1 " ) t h e n

s t a t u s _ s e n s o r = ’1 ’

end

i f s t r i n g . f i n d ( c , " SendData " ) t h e n

p r i n t ( " S t a t u s S en so r : " . . s t a t u s _ s e n s o r )

i f p c a l l ( g e n e r a t e , sk , s t a t u s _ s e n s o r ) t h e n

main ( s t a t u s _ s e n s o r )

e l s e

c o n n e c t e d = f a l s e

end

end

end )

end

Page 58: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

58

f u n c t i o n g e n e r a t e ( sk , s t a t u s _ s e n s o r )

da taToSend = " meas : " . . 2 5 + math . random ( 1 , 5 )

sk : send ( da taToSend )

sk : on ( " s e n t " , f u n c t i o n ( sk )

p r i n t ( " D a t a S e n t " . . da taToSend )

end )

end

f u n c t i o n main ( s t a t u s _ s e n s o r )

tmr . a l a rm ( 0 , 1000 , 1 , f u n c t i o n ( )

i f w i f i . s t a . g e t i p ( ) == n i l t h e n

−−p r i n t ( " No IP " )

d o f i l e ( ’ i n i t . lua ’ )

e l s e

i f c o n n e c t e d == f a l s e t h e n

−−p r i n t ( " C o n n e c t i n g t o S oc ke t S e r v e r . . . " )

sk= n e t . c r e a t e C o n n e c t i o n ( n e t . TCP , 0 )

sk : c o n n e c t ( 9 9 9 9 , " 1 9 2 . 1 6 8 . 0 . 1 6 " )

end

c o n n e c t _ s o c k e t ( sk )

end

end )

end

c o n n e c t e d = f a l s e

s t a t u s _ s e n s o r = ’1 ’

main ( s t a t u s _ s e n s o r )

A.2 Algoritmo Python na Raspberry Pi

A.2.1 socketserver.py

i m p o r t s o c k e t

i m p o r t s y s

i m p o r t t h r e a d i n g

i m p o r t t ime

i m p o r t d a t e t i m e

i m p o r t j s o n

i m p o r t r e q u e s t s

HOST = ’ ’

PORT = 9999

s = s o c k e t . s o c k e t ( s o c k e t . AF_INET , s o c k e t .SOCK_STREAM)

p r i n t ( ’ S oc ke t c r e a t e d ’ )

# Bind s o c k e t t o l o c a l h o s t and p o r t

t r y :

s . b ind ( ( HOST, PORT ) )

e x c e p t s o c k e t . e r r o r a s msg :

p r i n t ’ Bind f a i l e d . E r r o r Code : ’ + s t r ( msg [ 0 ] ) + ’ Message ’ + msg [ 1 ]

s y s . e x i t ( )

p r i n t ’ S oc ke t b ind comple te ’

# S t a r t l i s t e n i n g on s o c k e t

s . l i s t e n ( 1 0 )

p r i n t ’ S oc ke t now l i s t e n i n g ’

d e f c l i e n t t h r e a d ( conn , add r ) :

i = None

a t i v o _ s t r = ’ Off ’

w h i l e True :

g l o b a l l i s t _ s e n s o r s

t r y :

a t i v o _ s t r = s t r ( l i s t _ s e n s o r s [ i ] [ " a t i v o " ] )

e x c e p t E x c e p t i o n as e r r :

Page 59: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

59

p r i n t e r r

p r i n t ’ Ainda nao tem S t a t u s \ n ’

p a s s

conn . s e n d a l l ( ’ SendData ’ + a t i v o _ s t r )

p r i n t ’ Sen t t o ESP : ’ + a t i v o _ s t r

# R e c e i v i n g from c l i e n t

d a t a = conn . r e c v ( 1 0 2 4 )

i f d a t a :

i f d a t a [ : 3 ] == ’ i d : ’ :

# p r i n t d a t a [ 4 : ]

i = g e t _ i n d e x ( l i s t _ s e n s o r s , d a t a [ 4 : ] )

p r i n t ’ Old Index : ’ + s t r ( i )

i f i == None :

p r i n t ’ Not found , Adding . . . \ n ’

l i s t _ s e n s o r s . append ( { " i d e n t i f i c a d o r " : d a t a [ 4 : ] , " d a t a h o r a " : 0 , " v a l o r " : 0 } )

i = g e t _ i n d e x ( l i s t _ s e n s o r s , d a t a [ 4 : ] )

p r i n t ’New Index : ’ + s t r ( i )

e l i f d a t a [ : 4 ] == ’ meas ’ :

# p r i n t " g o t : " + d a t a [ 5 : ]

l i s t _ s e n s o r s [ i ] [ " d a t a h o r a " ] = d a t e t i m e . d a t e t i m e . now ( ) . s t r f t i m e ("%Y−%m−%d %H:%M:%S " )

t r y :

l i s t _ s e n s o r s [ i ] [ " v a l o r " ] = ( f l o a t ( d a t a [ 5 : ] . s t r i p ( " \ n " ) ) ∗ l i s t _ s e n s o r s [ i ] [ " t e n s a o " ] ) / 1 0

e x c e p t E x c e p t i o n as e r r :

p r i n t e r r

p r i n t " e s p e r a n d o t e n s a o "

t ime . s l e e p ( 0 . 5 )

# conn . s e n d a l l ( r e p l y )

p r i n t ( ’ # came o u t o f loop ’ )

conn . c l o s e ( )

#now keep t a l k i n g wi th t h e c l i e n t

d e f g e t _ i n d e x ( l i s t _ s e n s o r s , d a t a ) :

f o r index , d i c t _ s e n s o r i n enumera t e ( l i s t _ s e n s o r s ) :

i f d i c t _ s e n s o r [ " i d e n t i f i c a d o r " ] == d a t a :

r e t u r n i n d e x

d e f g e t A c t i v e ( u r l G e t ) :

t r y :

r = r e q u e s t s . g e t ( u r l G e t )

d i c t = j s o n . l o a d s ( r . c o n t e n t )

r e t u r n d i c t [ " p o n t o s " ]

e x c e p t E x c e p t i o n as e r r :

p r i n t e r r

p r i n t ’ r e q u e s t s ge t ’

p a s s

d e f r e q u e s t T h r e a d ( u r l S t r , u r l G e t ) :

w h i l e True :

g l o b a l t h r e a d _ r u n n i n g

t h r e a d _ r u n n i n g = 1

t _ e n d = t ime . t ime ( ) + 10

w h i l e t ime . t ime ( ) < t _ e n d :

g l o b a l l i s t _ s e n s o r s

t r y :

l i s t _ a c t i v e s = g e t A c t i v e ( u r l G e t )

f o r a c t i v e i n l i s t _ a c t i v e s :

f o r s e n s o r i n l i s t _ s e n s o r s :

i f ( s e n s o r [ " i d e n t i f i c a d o r " ] == a c t i v e [ " i d e n t i f i c a d o r " ] ) :

s e n s o r [ " t e n s a o " ] = a c t i v e [ " t e n s a o " ]

s e n s o r [ " a t i v o " ] = a c t i v e [ " a t i v o " ]

e x c e p t E x c e p t i o n as e r r :

p r i n t e r r

p a s s

t _ w a i t = t ime . t ime ( ) + 1

w h i l e t ime . t ime ( ) < t _ w a i t :

Page 60: São Carlos 2016 - Biblioteca Digital de Trabalhos Acadêmicos · Sistema de Gerenciamento e Consulta de ... pi. 7. computação em nuvem. 8. automação residencial. I. Título

60

t r y :

p a r s e d _ j s o n = j s o n . dumps ( l i s t _ s e n s o r s )

p r i n t p a r s e d _ j s o n

r = r e q u e s t s . p o s t ( u r l S t r , d a t a ={ ’ bulk ’ : p a r s e d _ j s o n } )

wi th open ( ’ d a t a . t x t ’ , ’w’ ) a s o u t f i l e :

j s o n . dump ( l i s t _ s e n s o r s , o u t f i l e )

e x c e p t E x c e p t i o n as e r r :

p r i n t e r r

p r i n t " w a i t i n g d a t a "

p a s s

t r y :

t ime . s l e e p ( t _ w a i t − t ime . t ime ( ) )

e x c e p t E x c e p t i o n as e r r :

p r i n t e r r

p a s s

i f __name__ == ’ __main__ ’ :

m a i n _ t h r e a d = t h r e a d i n g . c u r r e n t _ t h r e a d ( )

u r l S t r = ’ h t t p : / / 1 0 7 . 1 7 0 . 3 6 . 1 7 6 / consumos / a d i c i o n a r / bu lk ? k=3 d5d088eb89f3b209b763e88e80871c7d9e717d6 ’

u r l G e t = ’ h t t p : / / 1 0 7 . 1 7 0 . 3 6 . 1 7 6 / consumos / a t i v o s ? k=3 d5d088eb89f3b209b763e88e80871c7d9e717d6 ’

l i s t _ s e n s o r s = [ ]

t h r e a d _ r u n n i n g = 0

t h r e a d s = [ ]

w h i l e True :

i f t h r e a d _ r u n n i n g == 0 :

t _ r e q u e s t = t h r e a d i n g . Thread ( t a r g e t = r e q u e s t T h r e a d , a r g s =( u r l S t r , u r l G e t ) )

t _ r e q u e s t . daemon = True

t h r e a d s . append ( t _ r e q u e s t )

t _ r e q u e s t . s t a r t ( )

# w a i t t o a c c e p t a c o n n e c t i o n − b l o c k i n g c a l l

conn , add r = s . a c c e p t ( )

p r i n t ’ Connec ted wi th ’ + add r [ 0 ] + ’ : ’ + s t r ( add r [ 1 ] )

t _ c l i e n t = t h r e a d i n g . Thread ( t a r g e t = c l i e n t t h r e a d , a r g s =( conn , add r ) )

t _ c l i e n t . daemon = True

t h r e a d s . append ( t _ c l i e n t )

t _ c l i e n t . s t a r t ( )

s . c l o s e ( )