ESP32 Projeto Telegram de Automação Residencial

O ESP32 Projeto Telegram é um recurso que vem crescendo bastante nos últimos tempos, normalmente utilizamos o Aplicativo Telegram para o envio de mensagem apenas, porém hoje vamos explorar um pouco mais este recurso.

ESP32 Projeto Telegram

ESP32 Projeto Telegram

Quando trabalhamos com Automação Residencial normalmente encontramos algumas barreiras que inviabilizam o nosso projeto, ou é a complexibilidade dos códigos que precisamos utilizar ou até mesmo a inviabilidade da parte física.

Através do ESP32 Projeto Telegram existe a facilidade de realizarmos o projeto de Automação com apenas um módulo que é o próprio Microcontrolador e nos preocupamos neste caso, apenas com o código, que não necessita de linguagens extras de comunicação.

 

Telegram

O Telegram é um aplicativo gratuito disponível para Android, Windows Phone, iOS e Web bastante semelhante com o famoso Whatsapp, que possibilita ao usuário enviar mensagens de texto, fotos e vídeos, emoticons e stickers.

Logo do Aplicativo Telegram

Logo do Aplicativo Telegram

Com um sistema de funcionamento semelhante ao Whatsapp, o Telegram também utiliza e classifica os contatos através da rede telefônica, possibilitando a criação de um perfil e posterior utilização.

Qual a diferença entre o Telegram e o Whatsapp?

Uma das vantagens que o Telegram possui e que consequentemente o destaca em relação ao seu concorrente é a possibilidade de utilização de bots (robots – robôs), mecanismo que realiza diversos serviços de forma gratuita e diferenciada.

 

Telegram Bot

O Telegram oferece além de todas as suas vantagens uma série de recursos com perfis automáticos que são operados via software e que realizam diversos serviços de forma totalmente gratuita.

Estes recursos são encontrados através do sistema de pesquisa do próprio aplicativo e funcionam de forma individual e de diferentes modos, cada com qual as suas características e funcionalidade.

Através dos bots podemos obter informações do clima, convertes arquivos para PDF, traduzir textos e diversos outros recursos que não se limitam apenas a isto, podemos por exemplo, criar nosso próprio bot e atribuímos através do ESP32 diversas funções vinculadas.

 

Como Criar um Bot no Telegram?

Para criarmos um Bot e trabalharmos com ele precisamos antes de mais nada falar com o “The Botfather”, uma plataforma disponibilizada para a criação de Perfis únicos e exclusivos para as mais diversificadas aplicações.

Logo BotFather

Logo BotFather

O processo para criação de um Bot é extremamente simples e pode ser obtido seguindo os passos abaixo:

1 – Em primeiro lugar vamos baixar o Telegram em nossos dispositivos e então buscar por @BotFather com o selo de verificação original ao lado, veja:

Pesquisa por BotFather no Telegram

Pesquisa por BotFather no Telegram

2 – Após termos aberto o perfil do BotFather vamos clicar em Começar, com isto vamos receber uma mensagem com diversas funções e então retornaremos com o seguinte comando: “/newbot”. Após enviada a mensagem recebermos a seguinte mensagem:

  • Alright, a new bot. How are we going to call it? Please choose a name for your bot.
  • “Tudo bem, um novo bot. Como vamos chamá-lo? Por favor, escolha um nome para o seu bot.”

3 – Agora inserimos o nome do nosso Bot, que pode ser qualquer um, utilizei “Teste do Bot” e após enviar a mensagem recebe-se o seguinte retorno:

  • Good. Now let’s choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot.
  • “Boa. Agora vamos escolher um nome de usuário para o seu bot. Deve terminar em bot. Assim, por exemplo: TetrisBot ou tetris_bot.”

4 – Neste momento devemos inserir o Usuário Bot, este nick deve ser único e terminar com “Bot”, caso receba uma mensagem de erro infelizmente o nick inserido já está sendo usado, caso contrário, ao final do processo você obterá um resultado semelhante a este:

Resultado pós criação de perfil Bot

Resultado pós criação de perfil Bot

Tendo isto finalizado junto com a mensagem teremos o link para o seu Bot gerado e a chave de acesso API que iremos usar posteriormente no desenvolvimento do código.

 

Produtos Utilizados no ESP32 Projeto Telegram

NodeMCU ESP32 Iot com WiFi e Bluetooth – 38 Pinos;

Cabo Micro USB 1,2m para Nodemcu ESP32;

Módulo Relé 5V 10A 4 Canais com Optoacopladores;

– 6 Jumper Premium para Protoboard Macho-Fêmea 20 cm.

 

Esquema de Ligação ESP32 Projeto Telegram

O esquema de ligação do projeto é extremamente simples, a inclusão de um módulo relé possibilita o controle de, por exemplo, até 4 dispositivos elétricos como lâmpadas, cafeteiras, TV e outros.

Como vemos a baixo o esquema de ligação é extremamente simples, lembrando que os testes podem ser desenvolvidos sem a necessidade do modo relé apenas com o aplicativo, ou até mesmo com módulos com menos relés.

Esquema de Ligação do ESP32 Projeto Telegram

Esquema de Ligação do ESP32 Projeto Telegram

Vale lembrar que para o funcionamento do projeto o ESP32 precisa estar constantemente alimentado, então após a programação é recomendado que o mesmo seja atribuído a uma fonte de alimentação.

 

Código de Funcionamento ESP32 Projeto Telegram

O código de funcionamento é parcialmente simples, porém tem algumas partes que precisam ser alteradas antes do carregamento e que iremos verificar logo abaixo e também algumas bibliotecas precisam ser incluídas para o sucesso do carregamento.

Biblioteca WiFiClientSecure DOWNLOAD AQUI.

Biblioteca UniversalTelegramBot DOWNLOAD AQUI.

O código completo deste projeto você consegue observar logo, veja:

Neste momento vamos verificar algumas informações que precisam ser alteradas, começando com os dados da rede WiFi através das seguintes funções:

Após alterarmos esta rede, o próximo valor a ser alterado é a API, que pode ser verificada através da seguinte variável, enquanto que o local para obtenção de dados é elencado logo abaixo através da imagem em anexo.

Local com o Token API para código do ESP32 Projeto Telegram

Local com o Token API para código do ESP32 Projeto Telegram

Com estes dados em ordem e de acordo com os dados da rede de internet e o Bot criado através do Telegram, já é possível carregar o código junto ao ESP32 para os devidos testes.

 

Teste de Funcionamento ESP32 Projeto Telegram

O funcionamento deste projeto junto ao aplicativo Telegram é feito através do Bot que criamos e pode ser obtido através do seguinte Link encontrado em nossa última mensagem recebida pelo BotFather, veja:

Local com o Link de Acesso para o ESP32 Projeto Telegram

Local com o Link de Acesso para o ESP32 Projeto Telegram

Após abrirmos o link vamos ter acesso à nossa área de envio e recebimento de dados, iniciada após clicarmos na primeira vez no botão começas, vale lembrar que após isto, esta função não precisa ser mais executada.

Como vimos junto ao código, temos as funções ON1, ON2, ON3 e ON4 que acionam de maneira isolada cada um dos relés do módulo e estão hipoteticamente associados à lâmpada de um cômodo residencial com as respectivas funções OFF1, OFF2, OFF3 e OFF4 com função inversa.

Além destas funções temos uma função geral responsável por ligar todas as lâmpadas que é o ON e uma função para desligar todas estas lâmpadas que é a função OFF. Um breve teste do funcionamento deste projeto junto ao aplicativo pode ser observado abaixo:

Imagem Teste de Funcionamento do ESP32 Projeto Telegram

Imagem Teste de Funcionamento do ESP32 Projeto Telegram

Caso não esteja recebendo retorno ao receber uma imagem, isto pode representar uma rede WiFi preenchida de maneira incorreta ou até mesmo o código API com algum símbolo, letra ou número inserido com algum caractere faltando.

 

Conclusão

Trabalhar com o Telegram é algo extremamente novo e funcional, são diversas possibilidades e funções que podem ser implementadas, é um aplicativo de fácil obtenção, disponível para download de forma gratuita e que facilita além da programação o acesso as informações.

Além da função de automação utilizada para o acionamento de Relés, é possível utilizarmos o sistema Bot para a obtenção de informações externas via sensor de temperatura, por exemplo, ou até mesmo associado a um sensor de presença para notificação de movimentos em um dado local.

Se você gostou deste projeto ou tem alguma sugestão para nossos próximos Artigos não esqueça de deixar o seu comentário abaixo. Até a Próxima!

Categorias
ESP32

Mecânico de Manutenção com Experiência em Sistemas Embarcados, Automação e Desenvolvimento de Projetos; Graduado nos Cursos de Matemática - URI e Física - UFFS.
23 Número de Comentários
  • Marco Massao Kato
    30 maio 2020 at 00:14
    Deixe seu Comentário

    Não consigo sair desse erro

    error: ‘keyboardBuffer’ was not declared in this scope

    DynamicJsonBuffer keyboardBuffer;

    • Matheus Gebert Straub
      15 junho 2020 at 09:58
      Deixe seu Comentário

      Bom Dia Marco! Infelizmente não reconheço a variável “keyboardBuffer” nem sua aplicação uma vez que não a utilizei no meu projeto, verifique a sua aplicação, ao que parece o Arduino não reconhece como um elemento declarado, ele não foi introduzido antes da sua utilização.

  • Marcelo
    24 junho 2020 at 22:39
    Deixe seu Comentário

    Boa noite, amigo posso usar ESP8266 no lugar do NodeMCU ESP32

    • Matheus Gebert Straub
      30 junho 2020 at 16:35
      Deixe seu Comentário

      Boa Tarde Marcelo! É possível realizar devidos ajustes para utilização do ESP8266, porém alguns detalhes do projeto irão mudar também.

  • Diego
    23 setembro 2020 at 16:36
    Deixe seu Comentário

    Caso eu queria fazer uma automação, como limito outros usuários a não usar bot QUE CRIEI? Existe possibilidade?

    • Matheus Gebert Straub
      6 outubro 2020 at 16:20
      Deixe seu Comentário

      Boa Tarde Diego! Ao criar um Bot, ele é unicamente utilizado por você, tanto que para criar um, ninguém pode ter utilizado este nome antes.

  • Joel D.
    1 outubro 2020 at 08:40
    Deixe seu Comentário

    Bom dia Matheus ficou ótima e funcional a automação 🙂
    Tenho um caso que gostaria que vc me desse uma LUZ(literalmente),
    qdo os interruptores da cas tem que funcionar estao em conjunto, exemplo luz da cozinha, pensei em interruptores
    paralelos, blz funcionou com o rele, mas neste caso como saber se a LUZ ja esta acesa ?

    Ai é que a coisa engrena, vc teria uma idea de como fazer? Pensei em um sensor de corrente..

    • Matheus Gebert Straub
      7 outubro 2020 at 09:31
      Deixe seu Comentário

      Boa Tarde Joel! A utilização de uma ligação em paralelo neste caso é muito útil, porém realmente retira a nossa autonomia de controle. Uma das opção mais viáveis provavelmente seja a inclusão de um sensor de corrente ou até mesmo de um sensor de tensão para a verificação do dado desejado, porém vale verificar o local de instalação e demais detalhes de compatibilidade.

  • Carlos
    9 novembro 2020 at 20:11
    Deixe seu Comentário

    Bom dia Matheus, testei o seu código e verifiquei que a resposta aos comandos são sempre em duplicado. Alguma explicação?
    Obrigado.

    OFF1
    Luz do Quarto 1 Apagada
    Luz do Quarto 1 Apagada

    ON2
    Luz do Quarto 2 Acesa
    Luz do Quarto 2 Acesa

    • Matheus Gebert Straub
      27 novembro 2020 at 12:04
      Deixe seu Comentário

      Bom Dia Carlos! Estranho isto estar acontecendo, se observar o print que inclui no projeto, isto não aconteceu comigo quando desenvolvi o projeto, você não fez nenhuma alteração no código base?

  • Ulysses silva
    4 março 2021 at 19:21
    Deixe seu Comentário

    Bom dia Matheus, estou fazendo um projeto com boia de nível de água que preciso ser avisando quando um pino receber um sinal alto, ou seja quando a boia for acionada. Qual mudança eu deveria fazer?

  • altamiro soares
    13 março 2021 at 23:26
    Deixe seu Comentário

    Eu fiz este projeto e deu algumas mensagem de erro, que acreditei que fosse defeito da placa e enviei ela para a loja onde comprei e não era defeito e montei novamente e não deu certo. Talvez seja por que estou usando um módulo de dois relés. Me ajudem aí, as mensagens de erro são: Arduino: 1.8.13 (Windows 10), Placa:”NodeMCU 1.0 (ESP-12E Module), 80 MHz, Serial, 115200, 4M (1M SPIFFS)”

    In file included from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/static_array.hpp:11:0,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Numbers/FloatTraits.hpp:14,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Numbers/convertNumber.hpp:18,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantData.hpp:9,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/SlotFunctions.hpp:8,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayIterator.hpp:7,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayRef.hpp:8,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:17,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9,

    from C:\Users\Altamiro\Documents\Arduino\libraries\CTBot\src/CTBotInlineKeyboard.h:15,

    from C:\Users\Altamiro\Documents\Arduino\libraries\CTBot\src/CTBot.h:7,

    from C:\Users\Altamiro\Documents\Arduino\COMUNICAwifi\COMUNICAwifi.ino:1:

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace_generic.hpp: In function ‘typename ArduinoJson6173_D1::enable_if<ArduinoJson6173_D1::is_pointer::value, T>::type ArduinoJson6173_D1::pgm_read(const void*)’:

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace_generic.hpp:14:44: error: there are no arguments to ‘pgm_read_ptr’ that depend on a template parameter, so a declaration of ‘pgm_read_ptr’ must be available [-fpermissive]

    return reinterpret_cast(pgm_read_ptr(p));

    ^

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace_generic.hpp:14:44: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)

    In file included from C:\Users\Altamiro\Documents\Arduino\COMUNICAwifi\COMUNICAwifi.ino:14:0:

    C:\Users\Altamiro\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.1.0\libraries\ESP8266WiFi\src/WiFiClientSecure.h: At global scope:

    C:\Users\Altamiro\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.1.0\libraries\ESP8266WiFi\src/WiFiClientSecure.h:34:3: error: ‘WiFiClientSecure::~WiFiClientSecure()’ marked override, but does not override

    ~WiFiClientSecure() override;

    ^

    C:\Users\Altamiro\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.1.0\libraries\ESP8266WiFi\src/WiFiClientSecure.h:49:10: error: ‘size_t WiFiClientSecure::peekBytes(uint8_t*, size_t)’ marked override, but does not override

    size_t peekBytes(uint8_t *buffer, size_t length) override;

    ^

    C:\Users\Altamiro\Documents\Arduino\COMUNICAwifi\COMUNICAwifi.ino: In function ‘void setup()’:

    COMUNICAwifi:45:8: error: ‘class WiFiClass’ has no member named ‘mode’

    WiFi.mode(WIFI_STA);

    ^

    COMUNICAwifi:45:13: error: ‘WIFI_STA’ was not declared in this scope

    WiFi.mode(WIFI_STA);

    ^

    In file included from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/static_array.hpp:11:0,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Numbers/FloatTraits.hpp:14,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Numbers/convertNumber.hpp:18,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/VariantData.hpp:9,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Variant/SlotFunctions.hpp:8,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayIterator.hpp:7,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Array/ArrayRef.hpp:8,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp:17,

    from C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h:9,

    from C:\Users\Altamiro\Documents\Arduino\libraries\CTBot\src/CTBotInlineKeyboard.h:15,

    from C:\Users\Altamiro\Documents\Arduino\libraries\CTBot\src/CTBot.h:7,

    from C:\Users\Altamiro\Documents\Arduino\COMUNICAwifi\COMUNICAwifi.ino:1:

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace_generic.hpp: In instantiation of ‘typename ArduinoJson6173_D1::enable_if<ArduinoJson6173_D1::is_pointer::value, T>::type ArduinoJson6173_D1::pgm_read(const void*) [with T = const __FlashStringHelper*; typename ArduinoJson6173_D1::enable_if<ArduinoJson6173_D1::is_pointer::value, T>::type = const __FlashStringHelper*]’:

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Deserialization/DeserializationError.hpp:103:12: required from here

    C:\Users\Altamiro\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Polyfills/pgmspace_generic.hpp:14:44: error: ‘pgm_read_ptr’ was not declared in this scope

    return reinterpret_cast(pgm_read_ptr(p));

    ^

    exit status 1

    ‘class WiFiClass’ has no member named ‘mode’

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    • Matheus Gebert Straub
      15 março 2021 at 10:09
      Deixe seu Comentário

      Olá Altamiro! Pelo que pude observar você está utilizando a configuração “Placa: NodeMCU 1.0 (ESP-12E Module)” porém para projetos com o ESP32, o correto seria utilizar a “Porta: ESP32 Dev Module”. Verifique esta configuração e tente novamente, acredito que irá resolver o problema.

  • ITALO TORRES
    24 março 2021 at 23:46
    Deixe seu Comentário

    Boa noite Matheus
    o telegram não est´funcionando
    sabe me dizer a respeito??

    • Matheus Gebert Straub
      26 março 2021 at 09:28
      Deixe seu Comentário

      Olá Italo! A princípio não estou sabendo de nenhuma atualização que tenha desabilitado as funções, se já utilizava antes e agora começou a dar defeito, sugiro desinstalar e instalar de novo ou verificar a necessidade de alguma atualização por parte do aplicativo.

  • Sandro
    1 outubro 2021 at 16:29
    Deixe seu Comentário

    Olá Matheus. Primeiramente obrigado por compartilhar conosco essa solução. Preciso implementar um trabalho para o projeto de fim de ano da minha escola. Você conhece algum módulo que eu possa medir a força de atrito? Queria colocar um objeto sob uma rampa e o dados fosse compartilhados via telegram.

    • Matheus Gebert Straub
      26 outubro 2021 at 08:58
      Deixe seu Comentário

      Olá Sandro! Infelizmente nunca realizei nenhum projeto com base neste estudo de cálculo, porém recomendo estudar aplicações de fórmulas em soluções práticas, como verificar o tempo de deslocamento de um objeto de massa conhecida em uma superfície inclinada e aplicação de fórmulas, este procedimento seria facilmente executado através de um sensor ultrassônico, por exemplo, diferentes variáveis podem ser obtidas de diferentes formas, espero que esta informação tenha sido útil para um direcionamento ao seu projeto, ao menos.

  • marcelo lino da silva
    26 dezembro 2021 at 19:16
    Deixe seu Comentário

    Boa tarde antes de mais nada parabens pelo projeto , teria como acrescentar neste projeto 2 sensores de temperatura

    • Matheus Gebert Straub
      4 janeiro 2022 at 12:05
      Deixe seu Comentário

      Olá Marcelo! Algumas alterações teriam que ser feitas no código, porém acredito que seja possível, claro que existem fatores de compatibilidade que precisam ser verificados.

  • Larry
    3 maio 2022 at 12:08
    Deixe seu Comentário

    Bom dia, o esp32 tem sinal de 3.3V nas portas mas o rele trabalha com sinal de 5V.
    Via acionar de boa ou não seria melhor um rele de 3V?

  • André Costa
    9 março 2024 at 20:16
    Deixe seu Comentário

    olá.
    queria saber se tem como enviar mensagens para mais de um celular.
    exe. um sensor na porta, eu e minha esposa seriamos notificados caso a porta fosse aberta

    • Victor
      4 junho 2024 at 10:48
      Deixe seu Comentário

      Olá André Costa.
      Sim é possível modificar o código para isto, pode utilizar a ajuda de uma IA como o Chat GPT para ajudar a adaptar o código.

    Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados