O MQTT Dash é um dos melhores aplicativos para interface gráfica no smartphone. Recentemente ministrei um treinamento sobre IoT, no Samsung Ocean, onde usei esse app para auxiliar no ensino de MQTT. Possui uma interface agradável, de fácil customização e configuração, sendo um dos melhores aplicativos que já utilizei para esse fim. A seguir apresento como utilizar esse app em conjunto com o ESP8266 e um broker MQTT configurado no CloudMQTT, para comandar uma lâmpada remotamente. Veja como é fácil!
Materiais necessários
- Placa com ESP8266 (nodeMCU, Wemos D1 ou mini, etc);
- Módulo RELE;
- Lâmpada;
- Cabos e Jumpers;
- Smartphone Android.
Se você ainda tem dúvida em como acionar uma lâmpada com Arduino, confira os artigos:
Você também pode testar o exemplo apresentado aqui, sem o uso de rele e lâmpada, apenas usando uma placa com ESP8266 e LEDs em uma protoboard, por exemplo.
TOME CUIDADO QUANDO FOR TRABALHAR COM ACIONAMENTO DE CARGAS AC.
Programação
Para o funcionamento dessa aplicação precisamos configurar um broker MQTT. Existem diversas opções de Brokers MQTT disponíveis, e para nosso teste vou utilizar o CloudMQTT.
O CloudMQTT gerencia um servidor Mosquitto na nuvem. Para mais informações sobre o Mosquitto e MQTT, acesse o artigo do Marcelo Barros: MQTT – Protocolos para IoT.
O CloudMQTT possui um plano gratuito que permite 10 conexões com velocidade de 10 Kbit/s.
Criando uma instância no CloudMQTT
Acesse o site do CloudMQTT e faça o seu registro. Após o login, clique no botão “+Create New Instance”. Será aberta a seguinte página:
Preencha o nome, escolha o plano Free (Cute Cat) e clique em Create a New Instance.
Abra a instância criada:
Aqui estão as informações necessárias para conexão com o Broker: Server, User, Password e Port. Vamos usar essas informações no código do ESP8266 e no aplicativo MQTT Dash, mais a frente.
Código para placa ESP8266 no Arduino
Como subscriber vamos utilizar uma placa Wemos D1 que irá acionar uma lâmpada. A placa Wemos D1 R2 é similar ao nodeMCU e compatível ao pinout Arduino R3.
A programação foi realizada na IDE do Arduino. Se ainda tem dúvidas para programar o ESP8266 usando a IDE Arduino, confira os artigos:
Substitua as informações da rede WIFI (ssid, password) e do Broker MQTT (mqttServer, mqttUser, mqttPassword, mqttPort), indicados com x no código a seguir. Compile e carregue para a sua placa com ESP8266.
//Acionamento de lampada com MQTT Dash
//Por: Fábio Souza
//Data: 12/02/18
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define DEBUG
#define L1 13 //pino de saida para acionamento da Lampada L1
//informações da rede WIFI
const char* ssid = "xxxxx"; //SSID da rede WIFI
const char* password = "xxxxxxx"; //senha da rede wifi
//informações do broker MQTT - Verifique as informações geradas pelo CloudMQTT
const char* mqttServer = "xxxxxxxxxxxxxxxxx"; //server
const char* mqttUser = "xxxxxxxx"; //user
const char* mqttPassword = "xxxxxxxxxxxx"; //password
const int mqttPort = xxxxx; //port
const char* mqttTopicSub ="casa/L1"; //tópico que sera assinado
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
pinMode(L1, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
#ifdef DEBUG
Serial.println("Conectando ao WiFi..");
#endif
}
#ifdef DEBUG
Serial.println("Conectado na rede WiFi");
#endif
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
#ifdef DEBUG
Serial.println("Conectando ao Broker MQTT...");
#endif
if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {
#ifdef DEBUG
Serial.println("Conectado");
#endif
} else {
#ifdef DEBUG
Serial.print("falha estado ");
Serial.print(client.state());
#endif
delay(2000);
}
}
//subscreve no tópico
client.subscribe(mqttTopicSub);
}
void callback(char* topic, byte* payload, unsigned int length) {
//armazena msg recebida em uma sring
payload[length] = '\0';
String strMSG = String((char*)payload);
#ifdef DEBUG
Serial.print("Mensagem chegou do tópico: ");
Serial.println(topic);
Serial.print("Mensagem:");
Serial.print(strMSG);
Serial.println();
Serial.println("-----------------------");
#endif
//aciona saída conforme msg recebida
if (strMSG == "1"){ //se msg "1"
digitalWrite(L1, LOW); //coloca saída em LOW para ligar a Lampada - > o módulo RELE usado tem acionamento invertido. Se necessário ajuste para o seu modulo
}else if (strMSG == "0"){ //se msg "0"
digitalWrite(L1, HIGH); //coloca saída em HIGH para desligar a Lampada - > o módulo RELE usado tem acionamento invertido. Se necessário ajuste para o seu modulo
}
}
//função pra reconectar ao servido MQTT
void reconect() {
//Enquanto estiver desconectado
while (!client.connected()) {
#ifdef DEBUG
Serial.print("Tentando conectar ao servidor MQTT");
#endif
bool conectado = strlen(mqttUser) > 0 ?
client.connect("ESP8266Client", mqttUser, mqttPassword) :
client.connect("ESP8266Client");
if(conectado) {
#ifdef DEBUG
Serial.println("Conectado!");
#endif
//subscreve no tópico
client.subscribe(mqttTopicSub, 1); //nivel de qualidade: QoS 1
} else {
#ifdef DEBUG
Serial.println("Falha durante a conexão.Code: ");
Serial.println( String(client.state()).c_str());
Serial.println("Tentando novamente em 10 s");
#endif
//Aguarda 10 segundos
delay(10000);
}
}
}
void loop() {
if (!client.connected()) {
reconect();
}
client.loop();
}
Configurando a aplicação no MQTT Dash
O MQTT Dash é um dos melhores aplicativos gratuitos para uso do MQTT no smartphone. Possui uma interface muito bacana, com diversos recursos gráficos e é bem simples de usar. Você pode baixá-lo na Google Play.
Após instalado, clique no sinal “+” na sua tela inicial:
Será aberta a configuração de uma nova conexão. Insira as seguinte informações:
- Name
- Adress
- Port
- User Name
- User Password
E, por fim, salve tocando no disquete na parte superior direita.
Abra a conexão criada. Caso as configurações estejam corretas não será exibida nenhuma mensagem. Caso contrário será exibida a mensagem de falha de conexão. Se isso acontecer, refaça as configurações.
Com a conexão configurada corretamente, clique no sinal de “+” dentro do dashboard criado:
Insira um Switch/button:
O botão será usado para acionamento da lâmpada. Você pode dar o nome L1 para ele, ou outro que achar melhor. Para o tópico, configure para “casa/L1”:
Para a parte visual desse botão, configure para exibir ícones de uma lâmpada acesa e outra apagada. Para On, enviaremos o valor “1” e para Off, o valor “0”:
Por fim, selecione o nível de qualidade para QoS(1).
Pronto, a aplicativo está conectado e configurado:
Teste do MQTT Dash em conjunto do CloudMQTT
Abra a guia Websocket UI no CloudMQTT:
Pressione o botão L1 no MQTT Dash e veja se a mensagem chegou no Websocket UI:
Você também pode enviar uma mensagem pelo Websocket UI:
Verifique se o estado do botão no aplicativo mudou.
Ligue a lâmpada com MQTT Dash
Agora faça a ligação da placa no ESP8266, verifique se a mesma conseguiu conectar à rede WIFI e ao Broker MQTT, através das mensagens no terminal serial:
Pressione o botão no aplicativo e veja se a placa recebeu a mensagem do tópico “casa/L1”:
Se recebeu, o estado do pino configurado irá inverter.
Conclusão
O MQTT Dash é um excelente app para aplicações MQTT no smartphone. Apresenta uma interface agradável, customizável e de fácil configuração. Junto com um broker MQTT e placas como nodeMCU, Wemos, etc, é possível fazer diversas aplicações para comando e monitoramento.
O que achou do aplicativo? Conhece outro aplicativo com essas características? Deixe seus comentários abaixo.

























Se puder me ajudar com o problema agradeço
Sr, Fábio, por favor gostei muito desse post
Preciso de sua ajuda, então quando carrego o código para o node até aí certo, wi Fi conectado, mas não se conecta no broker, no monitor serial da o seguinte erro, FALHA DE ESTADO -4
Boa Noite, eu gostaria de portar esse projeto para um arduino nano com uma shield ENC28J60, é possível?
Boa tarde, gostaria de fazer esse projeto com o Arduino nano e uma shield enc28j60 e já tenho um web server rodando localmente que aciona 4 relés. É possível incrementar com o MQTT DASH?
Parabéns pelo post de excelente qualidade!
Com esse MQTT só consigo acessar o dash por app mobile? Teria alguma opção web pra conseguir acessar via computador tbm?
Olá Fábio, sabe se posso utilizar o mqtt dash para criar uma aplicação comercial ? Preciso distribuir para clientes um app que rode em Android e iOs. Achei o mqtt dash muito legal. Parabéns pelo artigo.
Olá André, Não há restrição par uso comercial. Porém vale você avaliar se o APP vai dar suporte ao tempo de vida do seu produto. Como não tem custo ou qualquer contrato com o desenvolvedor, não há garantia que se der algum problema ele irá arrumar a tempo de não impactar no seu negócio. O MQTT Dash só tem suporte para Android atualmente. Para uma aplicação comercial eu iria com um app próprio ou alguma solução comercial com suporte. Sucesso!
Parabéns pelo tuturial, finalmente consegui compreender o interface com o broker!! Obrigado
Olá bom dia.
Então cara, eu sou estudante de sistemas de informação da UFRRJ e gostaria de saber se tem como a gente pegar esses dados e enviar para um servidor web para serem salvos.
Lucas, acho que é isso que precisa fazer: https://www.instructables.com/id/Store-Messages-From-Mosquitto-MQTT-Broker-Into-SQL/
Como faço para transformar esse sketch com um botão para portão de garagem. Apenas pulso de 1 segundo.
boa tarde, tentei usar o seu artigo nodemcu , mas nao conseguir que aluz ligasse , td a configuraçao de broker funcionou , mas acho q nodemcu nao esta recebmdo minha menssagem