Controlando seu projeto com Telegram
Imagine uma automação ou projeto que permite você “conversar” com seu Microcontrolador (MCU) e também receber comandos, parece difícil, mas é bem simples. Aprenderemos a usar o Telegram para criar automações e projetos das mais diversas possibilidades e utilidades que estabelece uma comunicação amigável com o MCU. Para essa experiência usaremos o NodeMCU 8266, mas você pode fazer com outros ESPs, tal como os da linha ESP8266 e o ESP32.
[toc]
O Telegram
Podemos fazer desde simples controles de LEDs, ou até uma automação residencial controlada pelo Telegram, já que os BOTs permitem controle total de informações.
Usaremos o Telegram pois nos permite criar “BOTs”. Estes BOT’s, são como robôs virtuais e com eles, conseguimos criar uma interface IHM (Interface Homem-Máquina). Este método, permite o fluxo de informações de ambos sentidos (Input e Output), então conseguimos controlar o sistema e também ser notificado pelo sistema.
Criando seu Bot no Telegram
1-) Pesquise pelo “BotFather” no menu de pesquisa do Telegram, entre nele e clique em “Começar ou Reiniciar“.
2-) Pelo BotFater podemos criar novos Bots, configura-los e muito mais. Para criar, faça:
- Digite “/newbot“.
- Digite o nome do seu novo Bot.
- Digite o usuário do Bot com a terminação “bot“.
3-) Logo após a criação, o BotFater enviará uma mensagem com o link do Bot e logo abaixo o Token do Bot. Você pode clicar neste link para abrir a conversa com seu Bot ou pode pesquisa-lo futuramente.
Você precisa desse Token para inserir no código!
Mãos a obra
Componentes necessários
Para este projeto, usaremos o ESP8266 (versão NodeMCU). Entretanto, pode ser feito igualmente com o ESP32, sendo necessário alguns pequenos ajustes.
- 1x – ESP8266. (Usaremos o NodeMCU).
- 1x – Telegram no Celular.
- 1x – LED. (Usaremos o LED OnBoard da placa).
– Biblioteca utilizada
Clique AQUI para ir a pagina de download da biblioteca “UniversalTelegramBot” utilizada.
Alguns usuários relatam erro com a biblioteca “ArduinoJson“. Caso aconteça com você, será necessário instalar a biblioteca na Arduino IDE.
Para isso vá em “Gerenciador de bibliotecas“, procure pela biblioteca “ArduinoJson“, instale-a e reinicie a Arduino IDE.
– Código do projeto
Não se esqueça de alterar as credenciais do WiFi e também o Token do seu Bot. Sem isso não irá funcionar.
Vários usuários relatam erro com a versão 2.5 do esp8266 (core) instalado na Arduino IDE, que é resolvido instalando a 2.4.0.
#include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> #define BOTtoken "135924:AAErDKEJaQpEnqs_xj35asdGQ5kK6dQet4"//Define o Token do *seu* BOT WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); String id, text;//Váriaveis para armazenamento do ID e TEXTO gerado pelo Usuario unsigned long tempo; void setup() { pinMode(D4, OUTPUT);//LED conectado à saida WiFi.mode(WIFI_STA);//Define o WiFi como Estaçao connect();//Funçao para Conectar ao WiFi } void loop() { if (millis() - tempo > 2000)//Faz a verificaçao das funçoes a cada 2 Segundos { connect();//Funçao para verificar se ainda há conexao readTel();//Funçao para ler o telegram tempo = millis();//Reseta o tempo } } void connect()//Funçao para Conectar ao wifi e verificar à conexao. { if (WiFi.status() != WL_CONNECTED)//Caso nao esteja conectado ao WiFi, Ira conectarse { WiFi.begin("SUA REDE", "SUA SENHA");//Insira suas informaçoes da rede delay(2000); } } void readTel()//Funçao que faz a leitura do Telegram. { int newmsg = bot.getUpdates(bot.last_message_received + 1); for (int i = 0; i < newmsg; i++)//Caso haja X mensagens novas, fara este loop X Vezes. { id = bot.messages[i].chat_id;//Armazenara o ID do Usuario à Váriavel. text = bot.messages[i].text;//Armazenara o TEXTO do Usuario à Váriavel. text.toUpperCase();//Converte a STRING_TEXT inteiramente em Maiuscúla. if (text.indexOf("ON") > -1)//Caso o texto recebido contenha "ON" { digitalWrite(D4, 0);//Liga o LED bot.sendMessage(id, "LED ON", "");//Envia uma Mensagem para a pessoa que enviou o Comando. } else if (text.indexOf("OFF") > -1)//Caso o texto recebido contenha "OFF" { digitalWrite(D4, 1);//Desliga o LED bot.sendMessage(id, "LED OFF", "");//Envia uma Mensagem para a pessoa que enviou o Comando. } else if (text.indexOf("START") > -1)//Caso o texto recebido contenha "START" { bot.sendSimpleMessage(id, id, "");//Envia uma mensagem com seu ID. } else//Caso o texto recebido nao for nenhum dos acima, Envia uma mensagem de erro. { bot.sendSimpleMessage(id, "Comando Invalido", ""); } } }
Colocando para funcionar
Após a criação do BOT e upload do código, podemos ver funcionando. Veja o BOT respondeu como o esperado aos comandos:
Entendendo a fundo
Software
-Função UniversalTelegramBot::sendMessage()
bot.sendMessage(id, "LED OFF", "");
Com esta função, é feito o envio da mensagem para o determinado ID (referente ao ID de quem enviou a mensagem ao Bot). Logo ao iniciar seu BOT, automaticamente é enviado uma mensagem “/START”, e nosso sistema irá responder com o seu ID do Telegram; você pode usar isso para aceitar apenas comandos de seu ID.
-Variável id
id = bot.messages[i].chat_id;
Toda vez que o Bot receber um novo update (mensagem), irá armazenar o ID da pessoa que enviou a mensagem na variável id.
-Variável text
text = bot.messages[i].text;
Toda vez que o Bot receber um novo update (mensagem), irá armazenar o texto na variável text.
A biblioteca do Telegram permite mais opções interessantes, como por exemplo obter o horário em que a mensagem foi enviada ao Bot! Dê uma olhada na referência da biblioteca.
-Função UniversalTelegramBot::getUpdates()
int newmsg = bot.getUpdates(bot.last_message_received + 1);
Esta função faz a verificação de novas mensagens, sempre será lido da última (mais recente), para a primeira (mais antiga) mensagem no buffer do Bot. Isto será feito até que se tenha lido todas as mensagens disponíveis então tome cuidado para não travar ou atrasar o resto do seu código!
Desafio
Qualquer pessoa que adicionar seu Bot (basta pesquisar), pode enviar comandos e controla-lo. Você terá que criar algum tipo de “cadeado” para aceitar apenas comandos de pessoas autorizadas. Cada usuário no Telegram tem um ID, então você pode usar isso à seu favor e fazer o sistema aceitar apenas comandos de algumas pessoas.
Fechamento
Podemos facilmente incluir este controle com o Telegram em diversos projetos, permitindo que o mesmo seja controlado à distancia e até mesmo que você seja notificado, como por exemplo um alarme para sua casa que mande mensagem para seu celular ao detectar movimento. As aplicações são imensas, dependendo apenas da sua criatividade. Dúvidas? Sugestões? Críticas? Comente!
Estudante de Engenharia da Computação pela USC, pretende se aprimorar e fazer a diferença nesta imensa área da tecnologia. Apaixonado por IoT, sistemas embarcados, microcontroladores e integração da computação nos mais diversos fins práticos e didáticos.
67 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Show. Uma dúvida sobre essa biblioteca, como fazer o programa mandar mensagens automáticas para um determinado usuário? O que eu preciso é que cada vez que energize a placa o sistema carregue, me mande uma mensagem via telegram
Ola amigos, entrei nessa empreitada e fiz de tudo para não dar erro com o arquivo json, instalei varias versões e nada. Então resolvi procurar pelo explorer todos os arquivos arduinojson e deletei todos do meu computador, inclusive na nuvem one drive. Depois instalei novamente a bliblioteca arduinojson 5.13.5 e tudo funcionou como passe de magica. Acredito que o compilador busque o arquivo mais recente , por isso acontece o bug.
Como faco para rodar no ESP32?
Parabéns, funcionou de primeira!
Qual seria o pequeno ajuste para a ESP32?
Parabéns amigo! Muito bom o artigo. Consegui fazer funcionar aqui. Porém gostaria de fazer algumas modificações conforme minha aplicação. Como sei quais são os comandos? De enviar mensagem entre outros. Outra coisa, tentei tirar esse for de repetição na leitura mas fica mandando mensagem repetidamente para o celular. Mais uma vez obrigado!
Os comandos que seu BOT aceitará é você que cria conforme suas necessidades.
Arduino: 1.8.8 (Windows 10), Placa:”NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200″
O sketch usa 332839 bytes (31%) de espaço de armazenamento para programas. O máximo são 1044464 bytes.
Variáveis globais usam 36940 bytes (45%) de memória dinâmica, deixando 44980 bytes para variáveis locais. O máximo são 81920 bytes.
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
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”
Pressione o botão de boot/relacionados do nodemcu, ele serve pro esp iniciar no “modo download” quando não se consegue automaticamente.
Ola! Alguem pode me ajudar? Estou com problema na hora de compilar o exemplo led flash da bibilioteca universal telegram bot. As duas bibliotecas necessárias estão instaladas. O erro é o seguinte: Erro compilando para a placa NodeMCU 1.0 (ESP-12E Module. Se puderem me ajudar desde já agradeço.
Amigo, parabéns pelo site, conteúdo de altíssima qualidade. acabei de conhecer e já virei fã
boa noite estou com um problema difícil de se resolver estou usando um sensor de oximetria mais toda vez que o telegram se comunica com ele ele para de fazer leitura mais quando comento a função readtel ele volta a funcionar alguem poderia me ajudar
Boa tarde, meu código compila, conecta no wifi, mas nao recebe as mensagens, já verifiquei o token e ele está certo. Alguém poderia me ajudar?
o meu também esta assim, teve algum sucesso?
Boa noite, mu código carrega compila, mais não recebe mensagem do bot. ja testei outro código que tanto serve no esp32 quando no nodemcu, no esp 32 funcionou, porem no node não…
Resolvi o problema! Era a versão da placa instalada no programa arduino. Estava instalada a versão 2.5, desinstalei e instalei a 2.4.
Também resolvi assim! 2.4.0.
bom dia , gostaria de saber se o esp 8266 consegue mandar informações da porta serial para o telegram de um sensor de oximetria (max30100),
Claro!
Boa Tarde gostaria de saber se é possível realizar esse projeto tô a Ethernet Shield W5100 no lugar das ESP?
Caso a resposta seja não, porque?
Sim.
Obrigado
Primeiro gostaria de dar os parabéns à José Morais pelo ótimo tutorial
Aproveitando a oportunidade , alguém teria alguma idéia ou sugestão de como ler uma string e o valor na mesma linha no telefone.
Estou medindo temperatura , porém quando solicito , consigo receber somente o valor , desejaria receber a string e o valor , Ex. TEMPERATURA : VALOR.
tem como associar um aplicativo que gera boleto no bot do telegram, quero montar uma loja virtual me ajuda:::::::::::?????????????
:
Nunca testei, vai precisar aprender sozinho ou achar algo na net xD
teria como usar uma pagina web para controle vinculada ao telegram
Sim
Consegui resolver lendo um comntário, não utilizem a versão beta da ArduinoJson
ola julio, qual versao voce usou? estou tendo o mesmo problema
Bom dia Mano,
Eu não consigo usar a biblioteca Wifimanager e Telegram bot no mesmo projeto vc tem alguma solução?
Consegui, era apenas um erro na versão das bibliotecas.
O codigo carrega no esp mas não conecta no wifi, o que poderia ser? o login e senha estão corretos.
O codigo carrega no esp mas não conecta no wifi, o que poderia ser? o login e senha estão corretos.
Como faria a montagem de hardware do esp8266-01 com o arduino… alguma sugestão ?
Uma simples conexão serial, pode ser pela UART.
Primeiramente parabéns pelo site e pelo excelente trabalho. Tive problemas para compilar o código com a versão 6.5.0-beta da ArduinoJson. Instalei a última versão Final até o momento (5.13.3) e rodou. Se mais alguém tiver problemas, tentem fazer o mesmo. Funcionou pra mim! Até mais… Vlw
parabens pelo post, muito bom. Estou testando este código mas nao consigo comunicação entre o telegram e o esp. Tentei varias vezes, criei o bot varias vezes e nada, alguma dica ou sugestão? Obrigado
Estou tentando fazer o mesmo procedimento, mas com o ethernetshield, poderia me ajudar, não esta funcionando, parece que o mesmo não conecta. Já coferi roteador, tudo, qnd uso outra aplicação que fiz funciona, pode ser algo com o modo como o ethernet se conecta?
#include
#include
#include
#define BOTtoken “XXXXXXXXXXXXXXXXXXXX”
#define LED 13
EthernetServer server(80);
EthernetClient client;
UniversalTelegramBot bot(BOTtoken, client);
byte mac[] = {0x90, 0xA2, 0xDA, 0x10, 0x44, 0x1F};
byte ip[] = {192, 168, 0, 110};
byte gateway[] = {192, 168, 0, 1};
byte subnet[] = {255, 255, 255, 0};
String id, text;
void setup() {
Ethernet.begin(mac, ip);
Serial.begin(9600);
server.begin();
pinMode(LED, OUTPUT);
}
void loop() {
EthernetClient client = server.available();
if (client) {
if (client.connected()) {
Serial.println(“conectado”);
callTelegram();
}
}
}
void callTelegram() {
int newmsg = bot.getUpdates(bot.last_message_received + 1);
Serial.println(newmsg);
for (int i = 0; i -1) {
digitalWrite(LED, HIGH);
bot.sendMessage(id, “LED ON”, “”);
}
else if (text.indexOf(“OFF”) > -1) {
digitalWrite(LED, LOW);
bot.sendMessage(id, “LED OFF”, “”);
}
else if (text.indexOf(“START”) > -1) {
bot.sendSimpleMessage(id, id, “”);
}
else {
bot.sendSimpleMessage(id, “Comando Invalido”, “”);
}
}
}
Olá! Funciona muito bem esse programa, uso ele para acionar uma lâmpada via Telegram quando estamos fora de casa! Na verdade usei ele como base e aprimorei, monitorando com DHT 22 e enviando informações de temperatura e umidade se solicitado por comando (no caso “TH”). Também testei o envio de informações para uma planilha em excel que funcionou também! Mas no inicio deste mês o ESP está desligando a saída e não respondendo mais aos comandos após 15 minutos. Desconfiei das modificações que estava fazendo, com isso passei o programa do artigo novamente (original) e o problema persiste. A principio temperatura não é o caso, já que encosto no ESP e não está tão quente assim … se puderem ajudar agradeço!
As chances de ser algo da programação tendem a 100%, aconselho você sentar algum dia e olhar seu código linha-a-linha em procura do possível problema. É improvável que o problema esteja no MCU em si… Parabéns pelo projeto, esses 2 itens que citou são muito úteis em diversos projetos :)
Cara falar o que sempre com muita novidade nessa área que vem crescendo a cada dia mais e mais.
Muito sucesso blz
Muito bom artigo, parabéns!
Sugiro este kit de montagem para usar a funcionalidade: https://produto.mercadolivre.com.br/MLB-951598031-dimmer-4x-automaco-rs485-hc06-esp8266-arduino-wifi-telegram-_JM
Humildemente deixo minha contribuição com base no sketch deste Post, e meus agradecimentos a José Morais. Ótimo 2018 a todos.
/*Adaptado por Eng. Helio R. de Freitas Jr. a partir do sketch original
* de José Morais
* 02/01/2018
* Com Emotions na resposta da placa ESP8266
* Bloqueia o acesso acaso não tenha o ID de usuário autorizado no Sketch
*/
#include
#include
#include
#define BOTtoken “XXXXXXXXXXXXXXXX”//Define o Token do *seu* BOT
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
String id, text;//Váriaveis para armazenamento do ID e TEXTO gerado pelo Usuario
unsigned long tempo;
bool flag=0;
String autorizado= “xxxxxx”;// Define o ID de usuário autorizado no Sketch, copia aqui o seu ID no lugar de “xxxxx”
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);//LED conectado à saida, este led é o LED azul da placa ESP8266, para teste
digitalWrite(LED_BUILTIN, 1);// define estado inicial do LED desligado
WiFi.mode(WIFI_STA);//Define o WiFi como Estaçao
if (WiFi.status() != WL_CONNECTED)//Caso nao esteja conectado ao WiFi, Ira conectar-se
connect();//Funçao para Conectar ao WiFi
}
void loop()
{
if (millis() – tempo > 1000)//Faz a verificaçao das funçoes a cada 1 Segundos
{
if (WiFi.status() != WL_CONNECTED)//Caso nao esteja conectado ao WiFi, Ira conectarse
connect();//Funçao para verificar se ainda há conexao
readTel();//Funçao para ler o telegram
tempo = millis();//Reseta o tempo
}
}
void connect()//Funçao para Conectar ao wifi e verificar à conexao.
{
WiFi.begin(“SEU LOGIN”, “SUA SENHA”);//Insira suas informaçoes da rede
delay(2000);
}
void readTel()//Funçao que faz a leitura do Telegram.
{
int newmsg = bot.getUpdates(bot.last_message_received + 1);
for (int i = 0; i -1 & flag )//Caso o texto recebido contenha “ON” // só executa para usuario autorizado
{
digitalWrite(LED_BUILTIN, 0);//Liga o LED
bot.sendMessage(id, “\xF0\x9F\x92\xA1 LED aceso. Obrigado.”, “”);//Envia uma Mensagem para a pessoa que enviou o Comando.
bot.sendMessage(id, “\xE2\x98\x91 Deseja mais alguma coisa?”, “”);
}
else if (text.indexOf(“OFF”) > -1 & flag )//Caso o texto recebido contenha “OFF” só executa para usuario autorizado
{
digitalWrite(LED_BUILTIN, 1);//Desliga o LED
bot.sendMessage(id, ” \xF0\x9F\x92\xA1 LED apagado. Obrigado.”, “”);//Envia uma Mensagem para a pessoa que enviou o Comando.
bot.sendMessage(id, “\xE2\x98\x91 Deseja mais alguma coisa?”, “”);
}
else if (text.indexOf(“START”) > -1 )//Caso o texto recebido contenha “START”, tela de boas vindas para todos que acessarem
{
bot.sendMessage(id, “\xF0\x9F\x98\x8A Estou aqui, sou sua automação, tudo bem?”, “”);//Envia uma Mensagem para a pessoa que enviou o Comando.
bot.sendMessage(id, “\xF0\x9F\x98\x89 Seja educado e diga Ola para a máquina!”, “”);//Envia uma Mensagem para a pessoa que enviou o Comando.
}
else if (text.indexOf(“ENCERRAR”) > -1 )//Caso o texto recebido contenha “START”
{
bot.sendMessage(id, “\xF0\x9F\x8F\xA0 Obrigado por entrar em contato. Até mais!”, “”);//Envia uma Mensagem para a pessoa que enviou o Comando.
flag=0;
}
else if (text.indexOf(“OLA”) > -1 | text.indexOf(“OI”) > -1 | text.indexOf(“OLU00E1”) > -1 )//Caso o texto recebido contenha a saudação para a maquina.
{
String mensagem = “\xF0\x9F\x91\x8D Ola. Obrigado por se conectar. Seu numero de usuário é: ” ;
mensagem += id;// aqui é mostrado o numero ID do usuario, pode ser usado para determinar o valor da variavel ‘autorizado’ no sketch
if(flag)
mensagem += ” Você é um usuario autorizado. \xF0\x9F\x91\x8F Parabéns. O que você deseja?”;
else
mensagem += ” \xF0\x9F\x91\x8E Você não esta autorizado. Desculpe. Até mais \xF0\x9F\x94\x92!”;
bot.sendSimpleMessage(id, mensagem , “”);//Envia uma mensagem com seu ID.
// bot.sendSimpleMessage(id, id, “”);//Envia uma mensagem com seu ID.
//bot.sendSimpleMessage(id, “Seu Login:”, “”);
//bot.sendSimpleMessage(id, “Senha:”, “”);
// bot.sendSimpleMessage(id, “Comando Invalido”, “”);
// bot.sendSimpleMessage(id, “Comando Invalido”, “”);
// bot.sendSimpleMessage(id, “Comando Invalido”, “”);
}
else//Caso o texto recebido nao for nenhum dos acima, Envia uma mensagem de erro.
{
if(!flag)
bot.sendSimpleMessage(id, “\xE2\x98\x91 Você não esta autorizado. Seja educado e diga Ola para a máquina para saber porque! \xF0\x9F\x98\x89”, “”);
else
{
bot.sendSimpleMessage(id, “\xE2\x9D\x93 Não endendi. Não consigo executar. Tente novamente.”, “”);
bot.sendSimpleMessage(id, “\xE2\x98\x91 Se desejar, encerre a sessão digitando ENCERRAR!”,””);
}
}
}
}
Obrigado pela contribuição Helio!
Eu é que agradeço a oportunidade e volto a enaltecer o seu brilhante trabalho. Um abraço.
Boa tarde Prof. Helio R Freitas Jr. , existe alguma tabela que mostre codigo de cada emoji?
https://apps.timwhitlock.info/emoji/tables/unicode
Só testei com UTF-8.
Arduino: 1.8.5 (Windows 7), Placa:”NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200″
C:\Users\Novo User\Documents\Arduino\VIDA_SILICIO_TELEGRAM\VIDA_SILICIO_TELEGRAM.ino: In function ‘void readTel()’:
VIDA_SILICIO_TELEGRAM:46: error: expected ‘;’ before ‘)’ token
for (int i = 0;i -1 & flag )”ON”{
^
VIDA_SILICIO_TELEGRAM:46: error: expected ‘;’ before ‘{‘ token
for (int i = 0;i -1 & flag )”ON”{
^
VIDA_SILICIO_TELEGRAM:52: error: ‘else’ without a previous ‘if’
else if (text.indexOf(“OFF”) > -1 & flag )//Caso o texto recebido contenha “OFFâ€? só executa para usuario autorizado
^
exit status 1
expected ‘;’ before ‘)’ token
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”
Boa tarde tenho esses 2 problemas na linha 46 e 52 caso alguem possa jaudar
Primeiramente man gostaria de parabenizar pelo código. Gostaria de saber se, além de modificar os parâmetros eu consigo mostrar as variáveis no telegram, temperatura, resistência essas coisas. Pergunto porque já economizo em não comprar uma telinha lcd. O Bom DEUS te abençõe, sucesso man.
Sim, uma das imagens nesse post mostra o Telegram respondendo algumas variáveis como temperatura e etc.
O meu código esta dando o seguinte erro:
C:\Users\luis\AppData\Local\Temp\arduino_1d7b5fae3f333a2c021fa2999dfa1618\sketch_nov06c.ino: In function ‘void setup()’:
sketch_nov06c:16: error: ‘connect’ was not declared in this scope
connect();//Funçao para Conectar ao WiFi
^
C:\Users\luis\AppData\Local\Temp\arduino_1d7b5fae3f333a2c021fa2999dfa1618\sketch_nov06c.ino: In function ‘void loop()’:
sketch_nov06c:23: error: ‘connect’ was not declared in this scope
connect();//Funçao para verificar se ainda há conexao
^
sketch_nov06c:24: error: ‘readTel’ was not declared in this scope
readTel();//Funçao para ler o telegram
^
exit status 1
‘connect’ was not declared in this scope
Poderia me ajudar?
Parece que as funções não foram definidas por padrão. Você deve defini-las como uma variável global. Vá emcima do void setup() e declare as funções.
Olá!
Gostei imenso do projecto. Parabéns.
Sou novo nestas coisas de IOT e estou com um problema ao carregar o programa no NodeMCU. Dá sempre erro!
Você pode dizer o que poderá estar acontecer para que não consiga?
Obrigado.
Você precisa me enviar informações sobre o erro. Pegue o LOG do erro e mande.
Prezado, parabéns pelo post, excelente. Contudo eu não estou conseguindo rodar o código. Sempre dá erro. Já coloquei a biblioteca UniversalTelegramBot. Contudo continua com erro. O que poderia ser?
Segue os erros que achei
Foram encontradas múltiplas bibliotecas para “UniversalTelegramBot.h”
Usado: C:\Users\Izaias Cabral\Documents\Arduino\libraries\UniversalTelegramBot
Não usado: C:\Users\Izaias Cabral\Documents\Arduino\libraries\Universal-Arduino-Telegram-Bot-master
Usando a biblioteca ESP8266WiFi na versão 1.0 na pasta: C:\Users\Izaias Cabral\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\ESP8266WiFi
Usando a biblioteca UniversalTelegramBot na versão 1.0 na pasta: C:\Users\Izaias Cabral\Documents\Arduino\libraries\UniversalTelegramBot
exit status 1
Erro compilando para a placa NodeMCU 1.0 (ESP-12E Module)
Me parece que o erro esta além desta mensagem. Há mais algum LOG?
Todos os comentários que aparecem após a compilação
C:\Users\Izaias Cabral\Documents\Arduino\libraries\UniversalTelegramBot\src/UniversalTelegramBot.h:27:25: fatal error: ArduinoJson.h: No such file or directory
#include
^
compilation terminated.
mais uma vez obrigado pela atenção
Resumi seu comentário e deixei apenas o que creio ser o problema. Aparentemente a biblioteca ArduinoJson não esta instalada. Vá no “Gerenciador de bibliotecas”, procure por “ArduinoJson”, instale e reinicie a Arduino IDE.
Prezado José Morais.
Muitíssimo obrigado. Funcionou perfeitamente.
Parabéns pelo trabalho e muito sucesso no futuro.
abraço
Como faço para entrar em contato contigo ? tem whats ? Precisamos testar nossos hardwares que utilizam ESP8266 e ESP32 WROOM, acesse https://www.instagram.com/engebot.technology/ e de uma olhada nos que já fizemos.
Olá Cirineu! Pode me chamar no Facebook, há um ícone embaixo da minha foto, clique lá.
Excelente, parabéns!
Como é o código-fonte para retornar um ícone junto com as mensagens?
Obrigado.
Você precisa dos Bytes (UTF-8) de cada icone (emoji/emoticon). Procure no google ou entre nesse ( https://apps.timwhitlock.info/emoji/tables/unicode ). Ao enviar por exemplo “\xF0\x9F\x98\x81”, irá aparecer o emoticon na conversa!
Olá tudo bem? essa aplicação funciona se o celular estiver em uma rede móvel?
Sim!
Muito bom seu post, parabéns.
como faria para funcionar com um arduino uno/mega com um mudulo esp8266 comunicando com o arduino pela serial?
Se quer enviar o texto recebido do telegram para o Arduino ou outro MCU, você deve enviar a váriavel TEXT pela Serial. O melhor a se fazer, é continuar com toda a verificação pelo ESP, e não enviar o texto ao Arduino, mas sim comandos simples, por exemplo: A1 ou A0, que podem ser usados para desligar ou ligar algum atuador. É semalhante ao que você faz para ler dados do Serial Monitor, quando digitado.