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

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
- Um UartSBee para poder programar o SONOFF usando seu computador.
- Um SONOFF Dual
- A biblioteca Ubidots ESPMQTT
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
- 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.
- Abra o Gerenciador de Placas no menu **Ferramentas -> Placa** e instale a plataforma ESP8266.
- Após a instalação, acesse o Ferramentas > Placa e selecione a placa: Módulo ESP8266 genérico.
- Faça o download da Ubidots ESPMQTT como um arquivo ZIP em nossa conta do GitHub .
- De volta ao seu ambiente de desenvolvimento Arduino (IDE), clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP.
- Selecione o arquivo .ZIP do Ubidots ESPMQTT e clique em “Aceitar” ou “Escolher”.
- 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!