quarta-feira, 15 de agosto de 2018

Consumo de energia - Raspberry Pi + MySQL + NodeRED + ESP8266 + MQTT


Finalizada mais uma funcionalidade do meu projeto pessoal! Integrados Raspberry Pi + MySQL + NodeMCU, utilizando o protocolo de comunicação MQTT para publicar dados de energia.

Inicialmente elaborei uma interface, utilizando NodeRED, que supervisionava temperatura e umidade da cidade. Como me mudei há poucos meses para Natal-RN, me surgiu a curiosidade de saber a amplitude da temperatura utilizando minhas próprias mãos (e não indicações vindas dos aplicativos de Tempo).

Pois bem, implementada a primeira etapa, comprei um TC (transformador de corrente) e um NodeMCU para iniciar a implementação de um sistema de medição de consumo da minha residência. Estava acostumado a implementar outros tipos de protocolos (Modbus, por exemplo) e para este projeto,não haveria necessidade de um protocolo deste tipo. Pesquisando sobre tendências de IOT e protocolos utilizados neste meio, conheci o MQTT.

Apartir deste ponto, decidi utilizar meu Raspberry Pi que já estava fazendo aquisição de dados de temperatura e umidade, como Broker MQTT. Para quem não conhece, o Broker é uma espécie de servidor de dados, que escuta as informações que estão sendo disponibilidades pelo "Publisher" e disponibiliza esta mesma informação para um "Subscriber" interessado em utilizá-las.

Com o broker funcionando, foi a vez de programar o NodeMCU para publicar a corrente e cálculo de energia ativa acumulada. Nesta etapa enfrentei problemas razoáveis, com relação a estabilidade da conexão MQTT. Inicialmente o NodeMCU (Publisher) deixava de enviar dados sempre após 24h dado o primeiro envio. Fiz algumas correções sugeridas na WEB, na biblioteca MQTT e precisei fazer alguns rearranjos para garantir que o NodeMCU nunca deixasse de se conectar ao meu Raspberry P.

Por fim o resultado é o mostrado abaixo. Em breve irei implementar novas funcionalidades, mas até o momento o portal me atende perfeitamente para o dia a dia!


O sistema pode ser visualizado no link acima. Se tiver dúvidas sobre o que foi utilizado para desenvolvimento, fique a vontade em perguntar e me mandar um email.

24 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir

  2. Parabéns, excelente trabalho!!!
    Sugiro dar mais detalhes sobre ajustes e alterações comentadas no artigo.
    Também apresentar melhor o hardware utilizado (sensores) e se possível um projeto/diagrama do circuito.
    Os códigos estariam disponíveis? Poderia fazê-lo através do GitHub ou Google Drive ou DropBox ou Mega?

    ResponderExcluir
    Respostas
    1. Olá João, em breve faço outra publicação a respeito, divulgando o circuito eletrônico (muito simples) e maiores informações. Obrigado pelo feedback!

      Excluir
  3. Parabéns ... É um projeto assim que busco além de acionamentos de GPIO pela rede externa mas estou encontrando dificuldades. Se puder encaminhar informações e esquemas agradeço

    ResponderExcluir
    Respostas
    1. Boa tarde Giovane! Me diz o que vc tem implementado e as dificuldades que tento de ajudar. Abraços.

      Excluir
  4. Respostas
    1. Não utilizei nenhuma nuvem. O Mosquitto e o node red rodam dentro do raspberry!

      Excluir
  5. Estou enfrentando problemas com conexão, após cerca de 24h o Nodemcu deixa de enviar dados.
    Qual foi a solução que você encontrou?
    Muito obrigado!

    ResponderExcluir
  6. Olá como você faz para realizar os cálculos de Kw? São feitos na base de dados vai procedure ou é feito via programação.
    Obrogari

    ResponderExcluir
    Respostas
    1. Fiz no NodeMCU! O Cálculo do kWh é a integral do consumo instantâneo. Basicamente o que vc precisa fazer é a cada ciclo de leitura do microcontrolador, pegar o valor instantâneo de consumo e dividir pelo número de amostras em uma hora. Esse valor vc vai somar no acumulador.

      Recomendo armazenar este valor de tempos em tempos na EPROM, para não perder o acumulado se eventualmente o microcontrolador desligar.

      Excluir
    2. Muito bom, parabéns pelo projeto

      Excluir
    3. Olá Luiz.

      Não localizei a lista dos itens, diagrama, instrutivo ou mesmo o Node-RED.

      Vi que a aplicação ainda esta rodando na captura dos dados no site freeware. Só isto rende um belo parabéns.

      Fico no aguardo da disponibilização do material para estudo.

      Excluir
  7. Belíssimo trabalho! Onde conseguiu esses gráficos?

    ResponderExcluir
  8. Tenho um projeto no qual utilizo um medidor de energia Pzem-004t, ele já realiza leituras de todas as medidas que precisamos(tensão, corrente, potencia, energia, FP e frequência).

    Utilizo meu raspberry pi 4 como servidor(Mariadb) e o nodeMcu responsável por enviar dados das leituras para o servidor.

    Gostei bastante da forma que colocou no NodeRed todos os dados de consumo, principalmente separando por Dia de hoje, Dia de ontem e etc.

    Poderia disponibilizar a logica que utilizou ou ate mesmo o código completo ????

    Ficou muito bom seu Projeto.

    ResponderExcluir
    Respostas
    1. Olá Luís e Thiago.
      Estou implementando um projeto semelhante onde utilizo o sensor SCT013-020 para realizar a leitura de um eletrodoméstico e comparo com a tabela do INMETRO para certificar se o consumo é ideal ou não.
      Estou começando a implenetar minha interface no NodeRed, utilizo minha raspberry pi 3 B, e pretendo também salvar os dados em um banco MySQL, para ter informações.

      Gostaria que você me disponibilizasse por gentiliza o seu código para eu poder ter uma base, sou novato no Node Red.

      Meu e-mail é: eduardo.araujo95@outlook.com

      Muito obrigado, abraço!

      Excluir
  9. thiago.luis4656@gmail.com
    Desculpe somente hoje vim ver se tinha respondido

    ResponderExcluir
  10. Boa tarde muito bom seu trabalho estou com um TCC aqui na Universidade bem identico a este o objetivo e calcular o consumo de energia de toda a universidade . poderia compartilhar seu codigo para ver se estou no caminho correto grato meu email gregbalb62@gmail.com

    ResponderExcluir