Universidade Federal de Santa Maria
Ci. e nat., Santa Maria, V. 42, Special Edition, e39, 2020
DOI: http://dx.doi.org/10.5902/2179460X40643
Received: 10/10/2019 Accepted: 10/10/2019
Special Edition
ResEnControl: Um Sistema de Monitoramento de Consumo de Energia Elétrica Residencial em Tempo Real
ResEnControl: A Real-Time Residential Electricity Consumption Monitoring System
I Universidade Federal de Santa Maria – Laboratório de Computação Ubíqua, Móvel e Aplicada (LUMAC), Cachoeira do Sul, Brasil - cunhalimaandrei1@gmail.com
II Universidade Federal de Santa Maria – Laboratório de Computação Ubíqua, Móvel e Aplicada (LUMAC), Cachoeira do Sul, Brasil - eduardodornellessilveira@hotmail.com,
III Universidade Federal de Santa Maria – Laboratório de Computação Ubíqua, Móvel e Aplicada (LUMAC), Cachoeira do Sul, Brasil - diones.de@redes.ufsm.br
IV Universidade Federal de Santa Maria – Laboratório de Computação Ubíqua, Móvel e Aplicada (LUMAC), Cachoeira do Sul, Brasil - angelicoloretoteixeira@gmail.com
V Universidade Federal de Santa Maria – Laboratório de Computação Ubíqua, Móvel e Aplicada (LUMAC), Cachoeira do Sul, Brasil - viniciusmaran@gmail.com
Resumo
A preocupação mundial em relação ao setor energético vem crescendo gradativamente. Diversos sistemas que buscam aliar controle e eficiência energética vêm sendo desenvolvidos no decorrer dos anos. Diante de tal problemática, este trabalho propõe um sistema de controle de consumo de energia elétrica residencial, que visa dar ao usuário flexibilidade e monitoramento em tempo real dos gastos em energia elétrica por eletrodomésticos em sua residência. O sistema proposto conta com um servidor desenvolvido em linguagem de programação Python que oferece uma interface web ao usuário e utiliza micro controladores para realizar a medição de energia e transmissão de dados para o servidor de controle. Através da aplicação dos protótipos desenvolvidos em um cenário de uso, foi possível observar que os protótipos atenderam aos requisitos definidos no início do desenvolvimento.
Palavras-chave: Eficiência energética; Python; Microcontrolador
Abstract
The worldwide concern about the energy sector has been growing gradually. Several systems that seek to combine control and energy efficiency have been developed over the years. Given this problem, this work proposes a system of control of residential electricity consumption, which aims to give the user flexibility and real-time monitoring of the electrical energy expenditure by home appliances. The proposed system has a server developed in Python programming language that offers a web user interface and uses micro controllers to perform the energy measurement and data transmission to the control server. By applying the developed prototypes in a use scenario, it was observed that the prototypes met the requirements defined at the beginning of development.
Keywords: Energetic efficiency; Python; Microcontroller
Em vários setores da economia, a redução de custos em energia elétrica em residências é considerado um grande desafio (SCHIEFELBEIN et al., 2019). Frente à tal perspectiva, o desenvolvimento de sistemas de controle, atuação e obtenção de dados relacionados ao consumo de energia vêm tornando-se economicamente viável e atrativo.
Neste trabalho é apresentado um sistema de controle e monitoramento, baseado em comunicação via socket e uso de um servidor local (enviando comandos e recebendo informações do cliente), e microcontroladores como clientes (enviando os dados ao servidor local, e recebendo comandos do servidor).
O trabalho está estruturado da seguinte forma: Na seção dois, são apresentados os trabalhos relacionados, nesta seção, é realizado uma breve revisão bibliográfica dos trabalhos já implementados nesta área, além de ser realizada uma revisão dos produtos já disponíveis no mercado. Na seção 3, é apresentada a metodologia utilizada para criação do sistema, além dos requisitos iniciais de projeto, definidos antes de começar a realizar a implementação prática. Na seção 4 é apresentada uma avaliação do sistema de um cenário simulado de uso, onde são obtidos resultados do sistema. A seção 5 apresenta a conclusão do trabalho.
Na pesquisa apresentada em Brito (2016) foi desenvolvido um sistema de medição de energia elétrica através da plataforma Arduino, utilizando o microcontrolador ATMEGA328P e utilizando um Shield Ethernet, e o software Bliynk para realizar o controle remoto do sistema. No sistema proposto pelo trabalho, não foi elaborado uma rede inteligente de manejo de informações. BLANCO-NOVOA et al. (2017) desenvolveu uma rede inteligente através de microcontroladores esp8266, onde foi elaborada uma rede mestre – escravo, onde o mestre requisita informações aos escravos e as envia ao servidor. A tabela abaixo relaciona os produtos disponíveis no mercado atualmente (adaptada de (BLANCO-NOVOA et al., 2017)):
Tabela 1 – Modelos de tomadas disponíveis no mercado
Modelo |
Fabricante |
Tecnologia de Comunicação |
Controle Remoto |
Programação |
Medidor de Potência |
Custo em tempo real |
Preço |
DSP-W215 |
Dlink |
Wi-Fi |
Possui |
Possui |
Possui |
Não |
Alto |
MeterPlug |
StickNFind |
Bluethooth 4.0 |
Raio de 30m |
Não possui |
Possui |
Não |
Aceitável |
Circle |
PlugWise |
ZigBee |
Possui |
Possui |
Possui |
Não |
Alto |
S20 |
Orvibo |
WiFi, RF 433MHz |
Possui |
Possui |
Não Possui |
Não |
Aceitável |
Observa-se pela Tabela 1, que vários dos modelos disponíveis no mercado não trabalham com os custos da energia em moeda. O sistema proposto neste trabalho atende todos os requisitos da Tabela 1, e permite que o usuário consiga ver quanto está gastando de dinheiro em tempo real em sua tomada, de acordo com a energia medida.
Inicialmente, o primeiro passo desenvolvido foi estabelecer os requisitos que o sistema deveria atender, sendo eles:
· Possibilitar ao usuário o controle de tomadas em sua residência, podendo liga-las e desliga-las através de uma aplicação web, que pode ser executada em qualquer navegador;
· Propor um sistema bidirecional de comunicação;
· Elaborar um servidor em Python de manejo de informações;
· Construir um banco de dados responsável por salvar as informações provenientes do usuário e do microcontrolador;
· Permitir ao usuário o monitoramento de corrente, tensão, potência, energia gasta em kwh, e o consumo da tomada, em reais.
O Sistema proposto pode ser separado em 3 grandes pilares: servidor, microcontrolador e interface Web.
O servidor é o responsável pelo manejo de dados: ele estabelece a comunicação entre o microcontrolador e o banco de dados, elaborado em SQL.
Já o microcontrolador é a parte física do projeto. Foi utilizado um ESP32, que possibilita a comunicação via Wi-Fi, diretamente através da rede internet da residência. Ele realiza medições de corrente, tensão, e energia de uma tomada física da residência, e os envia diretamente ao servidor. Na prática, não foram ligados sensores de corrente e de tensão nos terminais do microcontrolador, mas sim implementados uma corrente fictícia de 10A e uma tensão de 220V na programação do ESP32, para simular os sensores de corrente e tensão. Como atuador, foi utilizado um relé de 10A, com o intuito de chavear a carga ligada nos terminais do microcontrolador, permitindo ou interrompendo a passagem de corrente. No decorrer do trabalho, algumas vezes o conjunto de componentes do microcontrolador serão referidos como tomada.
A interface web possibilita que o usuário visualize as informações acerca dos dados medidos instantaneamente, e possibilita que o usuário ligue ou desligue a carga diretamente pelo computador. Além disso, a interface conta com um histórico de medições, com a data e hora das medições realizadas.
A aplicação servidora do sistema foi desenvolvida na linguagem de programação Python. Para realizar a implementação, foi utilizado o protocolo de comunicação socket, que possibilita a comunicação entre o computador servidor e os clientes (que utilizam o microcontrolador ESP32). A troca de mensagens entre os dispositivos é realizada através de troca de strings e esta troca de mensagens é bidirecional. O modo de operação do servidor pode ser sintetizado através da execução sequencial dos seguintes itens (representados na Figura 1):
1. O ESP32 incialmente estabelece conexão com o servidor, através da porta 10000 de comunicação.
2. O servidor consulta o banco de dados buscando comandos de ligar ou desligar.
3. O servidor envia o comando encontrado: 0 para desligar, e 1 para ligar.
4. Como resposta, o microcontrolador envia os dados obtidos ao servidor.
5. O servidor recebe os dados, e salva-os no banco de dados, em conjunto com a hora da medição.
6. Posteriormente, o ciclo é reiniciado.
Figura 1 – Fluxograma de processos
A aplicação servidora utiliza um banco de dados, modelado na ferramenta MySQL e que armazena os dados de interesse, tais como corrente, tensão, potência, energia e cálculos de custos. A Figura 2 apresenta as tabelas do banco de dados utilizadas na modelagem do sistema referentes às medições utilizadas pelo sistema.
Figura 2 – Tela ilustrativa demonstrando a tabela de aquisição de dados do banco de dados
A implementação da aplicação servidora foi realizada considerando a necessidade de execução das seguintes atividades principais: (i) Conexão e gerenciamento do banco de dados; (ii) Conexão com os clientes, e (iii) Gerenciamento de informações de medição e apresentação das mesmas aos usuários. A Figura 3 apresenta um trecho de código da aplicação servidora, referente ao gerenciamento de conexão com os clientes.
Figura 3 – Recorte da tela demonstrando parte da programação do servidor
Observa-se que o servidor consegue gerenciar diversos dispositivos ESP32 ao mesmo tempo. O servidor opera através de um laço de repetição infinito, no qual fica estabelecendo conexão com um dos clientes através do endereço IP de cada microcontrolador. O comando na linha 207 da Figura 3 demonstra como o servidor conecta-se aos dispositivos. Após todos os dados serem repassados ao servidor, a conexão é encerrada. A linha 219 da Figura 3 mostra o comando responsável por encerrar a conexão com o objeto socket que representa a tomada estudada.
Os clientes do sistema são implementados em microcontroladores, que realizam a medição de energia e as informam à aplicação servidora. O servidor requisita os dados à uma das tomadas, e a tomada requisitada responde com os dados em sua programação (tensão, corrente, entre outros).
O microcontrolador utilizado na implementação dos clientes foi o ESP32, e o atuador utilizado foi um relé de 10A. A Figura 4 demonstra o circuito utilizado para testes. A programação dos microcontroladores (os clientes do servidor) foi realizada através da IDE do Arduino. A programação dos clientes (um trecho de código utilizado nos clientes é apresentado na Figura 5) foi realizada para realizar as seguintes atividades:
1. O ESP32 conecta-se à rede Wi-Fi local através do SSID da rede, e da senha.
2. O microcontrolador conecta-se ao servidor em Python, através da porta 10000 como cliente.
3. O cliente espera requisições do servidor.
4. O cliente executa a requisição do servidor (ligar ou desligar o relé e enviar dados).
5. O ciclo de trabalho reinicia para o tópico 3 novamente.
Figura 4 – Circuito utilizado para testes
Figura 5 – Ilustração de parte da programação do microcontrolador
Para apresentar os resultados de medições para os usuários, foi implementada uma aplicação web. Na implementação da aplicação web, foi utilizado o microframework Flask. Este microframework é baseado em um sistema de rotas. Cada página web da aplicação tem um endereço, e a programação em Python é encarregada de redirecionar o usuário a determinada página, de acordo com a ação desejada pelo usuário: ver os dados da tomada, histórico de consumo, ligar ou desligar o relé, entre outros.
Quando o usuário entra pela primeira vez no sistema web, ele é redirecionado a uma página de login. A página de login do sistema é apresentada na Figura 6.
Figura 6 – Ilustração da tela de login do sistema
Caso o usuário não esteja cadastrado, ele pode realizar o cadastro ao sistema, conforme a Figura 7
Figura 7 – Ilustração da tela de cadastro de usuário
Para realizar o cadastro no sistema, o usuário deve criar um nome de usuário e uma senha. Ele deve informar também o IP do Gateway (do microcontrolador), para que o sistema possa conectar-se à tomada do usuário. Além do mais, deve informar o número de tomadas conectadas ao sistema, e o preço do KHW em sua região, para que o servidor possa realizar os cálculos referentes ao consumo.
Após realizar o cadastro, o usuário é redirecionado à página de supervisão dos dados. Nesta página, o usuário pode ver de que tomada da casa estão vindo os dados, a corrente instantânea que a tomada está fornecendo ao aparelho, a tensão em seus terminais, a potência instantânea, o status: se o relé está ligado ou desligado, como também quanto que o usuário já gastou em reais. Ressalta-se novamente que nos testes não foram utilizados sensores de corrente e de tensão para realizar as medições, mas os valores foram arbitrados, apenas para validação do sistema de comunicação e do servidor implementado. Como trabalho futuro, pretende-se ligar sensores de corrente (ACS712) e tensão para realizar as medições. A página de supervisão é apresentada na Figura 8.
Figura 8 – Ilustração da página de supervisão de dados
Como apresentado na Figura 8, foi desenvolvido um gráfico de relação entre potência e tempo, no qual o usuário pode observar a curva de potência de seus aparelhos eletrodomésticos no decorrer das horas do dia. Além disso, o usuário pode programar a tomada de interesse para ligar em uma determinada data, e desligar em outra data, conforme suas necessidades. Além disso, o servidor guarda um histórico mensal de dados que pode ser consultado a qualquer hora.
Após implementação, realizou-se testes com o sistema proposto. Foi utilizada uma tomada inteligente para simular um ar condicionado em uma residência. Considerou-se o ar condicionado como uma carga invariante no tempo, e o período transitório foi desconsiderado: simulou-se o ar condicionado como uma carga de 10A invariante no tempo.
Após a aplicação dos protótipos no cenário de uso, pode-se considerar que o sistema respondeu de forma satisfatória, enviando os dados dos microcontroladores ao servidor a uma taxa de atualização de 2 segundos.
Figura 9 – Dados Obtidos no cenário de testes
Posteriormente, realizou-se testes quanto à resposta das tomadas em relação aos comandos enviados da página web à elas. O sistema respondeu em média com 3 segundos de atraso, desde o tempo em que o botão de ligar/desligar era pressionado na aplicação web da figura 8, até o chaveamento do relé representado na figura 4. Os dados obtidos nos testes estão representados na tabela do banco de dados da Figura 9.
Através deste trabalho foi possível elaborar um sistema funcional de controle de consumo de energia elétrica residencial. Além disso, foi possível validar as funcionalidades e o sistema de comunicação propostos na metodologia do trabalho.
A partir de testes práticos foi possível validar a programação do servidor elaborado em Python, e a comunicação estabelecida entre cliente (microcontroladores) e servidor. Validou-se as funcionalidades do sistema através da aplicação web, que mostrou com êxito as informações solicitadas e interpretou corretamente as requisições feitas pelo usuário.
Os autores agradecem à Universidade Federal de Santa Maria, que através do programa FIPE auxiliou financeiramente a realização desta pesquisa.
BLANCO-NOVOA, Óscar et al. An electricity price-aware open-source smart socket for the internet of energy. Sensors, v. 17, n. 3, p. 643, 2017.
DORNELAS, E.; CAMPELLO, S. Monitoramento de consumo doméstico de água utilizando uma meta-plataforma de IoT. Revista de Engenharia e Pesquisa Aplicada, v. 2, n. 2, 27 jul. 2017.
João Luis Grizinsky de Brito. Sistema para monitoramento de consumo de energia elétrica particular, em tempo real e não invasivo utilizando a tecnologia Arduino. Londrina: Departamento de Engenharia Elétrica/Universidade Estadual de Londrina; 2016.
SCHIEFELBEIN, Un Hee et al. Internet of Things Based on Situation-Awareness for Energy Efficiency. iSys-Revista Brasileira de Sistemas de Informação, v. 12, n. 1, p. 28-53, 2019.