Tutorial duplo SONOFF: controle seus aparelhos elétricos remotamente usando MQTT e Ubidots

Maria Hernández
· 4 min de leitura
Enviar por e-mail

Neste guia, você aprenderá como controlar dois aparelhos de 110V via Wi-Fi por apenas $ 9, usando o SONOFF Dual da Itead .
Comparado com os plugues inteligentes Wi-Fi disponíveis no mercado para o consumidor final, o SONOFF é uma ótima alternativa para IoT , em larga escala. Além disso, ele é baseado no popular chip Wi-Fi ESP8266, o que o torna compatível com o ambiente Arduino e outros recursos, como nossas bibliotecas ESP na Ubidots .

Requisitos

Configuração de hardware

Desmonte o dispositivo SONOFF Dual para acessar a pinagem TTL, necessária para programar o ESP8266 integrado. O SONOFF não inclui dois dos seus pinos de conexão, portanto, será necessário soldá-los antes de programar a unidade.

Após a soldagem, conecte a placa ao UartSBee seguindo esta tabela:

UartSBee SONOFF Dual
CCV CCV
Texas RX
RX Texas
GND GND

Pinagem UartSBEE

Além disso, você precisará fazer uma conexão entre o pino GND do conector de pinos à esquerda (aquele que contém os pinos dos botões 1 e 0) e o pino EN_FW do ESP8266, conforme mostrado abaixo:

Diagrama de pinagem SONOFF (vista frontal)

Diagrama de pinagem SONOFF (face traseira)

Configuração do Arduino IDE

  1. Na IDE do Arduino, clique em Arquivo -> Preferências e insira este URL no "URLs adicionais do Gerenciador de Placas" para poder acessar as bibliotecas do ESP8266 para Arduino:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

Este campo aceita vários URLs. Separe-os com vírgulas caso já tenha digitado outros URLs.

  1. Abra o Gerenciador de Placas no menu **Ferramentas -> Placa** e instale a plataforma ESP8266.
  2. Após a instalação, acesse o Ferramentas > Placa e selecione a placa: Módulo ESP8266 genérico.
  3. Faça o download da Ubidots ESPMQTT como um arquivo ZIP em nossa conta do GitHub .
  4. De volta ao seu ambiente de desenvolvimento Arduino (IDE), clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP.
  5. Selecione o arquivo .ZIP do Ubidots ESPMQTT e clique em “Aceitar” ou “Escolher”.
  6. Feche o IDE do Arduino e abra-o novamente.

Programando seu SONOFF Dual

Este código de exemplo irá se inscrever em uma variável Ubidots que liga ou desliga ambos os relés ao mesmo tempo.

Antes de executar o código, acesse sua conta Ubidots , localize a aba “Dispositivos” e crie um dispositivo chamado “SONOFF Dual” e uma variável dentro dele chamada “Relés”. Deverá ficar assim:

Certifique-se de que o rótulo da API do dispositivo seja “sonoff-dual” e o rótulo da API da variável seja “relays”. Esses são os identificadores exclusivos usados ​​pelo SONOFF para saber a qual variável se inscrever no broker MQTT. Você pode editar os rótulos, se necessário.

Agora você está pronto para atualizar o firmware do seu dispositivo com o seguinte código:

/**************************************** * Incluir Bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" /**************************************** * Definir Constantes ****************************************/ #define TOKEN "p4uuxxxxxxxxncTVfoVqxxxxxRQW" // Seu TOKEN Ubidots #define WIFINAME "UBIWIFI" // Seu SSID #define WIFIPASS "clave123456789ubi" // Sua Senha do Wi-Fi #define MQTTCLIENTNAME "sonoff15345" // Seu Nome de Cliente MQTT, deve ser único, por isso recomendamos escolher um nome ASCII aleatório Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Funções Auxiliares ****************************************/ void relays_on() { Serial.write(0xA0); Serial.write(0x04); Serial.write(0x03); Serial.write(0xA1); Serial.flush(); } void relays_off(){ Serial.write(0xA0); Serial.write(0x04); Serial.write(0x00); Serial.write(0xA1); Serial.flush(); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensagem recebida ["); Serial.print(topic); Serial.print("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } if ((char)payload[0]=='1'){ relays_on(); } else{ relays_off(); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(19200); Serial.println("Connecting to WiFi..."); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); Serial.println("Connected!"); pinMode(16, OUTPUT); client.ubidotse da variável Serial.println("Inscrito!"); } void loop() { // coloque seu código principal aqui, para executar repetidamente: if(!client.connected()){ client.reconnect();ubidotsSubscribe("sonoff-dual","relays"); //Insira o dataSource e os rótulos da variável } client.loop(); }

Você pode realizar ações mais elaboradas alterando os comandos internos do SONOFF Dual. Aqui está uma breve referência que encontramos nos fóruns deles :

Número de série: 19230,8,N,1 Bytes a serem enviados para a unidade: 0xA0 0x04 0xxx 0xA1 onde 0xxx parece ser: 0x00 ambos desligados 0x01 relé um ligado 0x02 relé dois ligado 0x03 ambos os relés ligados

Após gravar o firmware nos seus dispositivos, abra o monitor serial da IDE do Arduino. Você deverá ver algo como isto, o que significa que a conexão Wi-Fi e a assinatura MQTT foram bem-sucedidas:

Resultados

Agora, acesse a guia “Dashboards” e adicione um novo widget do tipo “Controle” –> “Interruptor”:

Este interruptor enviará um "1" ou um "0" para a variável "Relays", que será lida na função de retorno de chamada do SONOFF para ligar ou desligar os relés. Agora você pode controlar seu SONOFF Dual remotamente a partir do dashboard!

Agora é hora de criar seus próprios aplicativos e dashboards para controlar e gerenciar seus ambientes. Para saber mais sobre Ubidots , confira estes tutoriais em vídeo e inscreva-se gratuitamente hoje mesmo!