Tutorial duplo SONOFF: controle seus aparelhos elétricos remotamente usando MQTT e Ubidots
Neste guia você aprenderá como controlar alguns aparelhos 110V via Wi-Fi por $ 9, usando o SONOFF Dual da Itead .
Comparado com os plugues inteligentes WiFi de consumo no mercado, o SONOFF é uma ótima alternativa para fazer projetos domésticos inteligentes e até mesmo industriais IoT em maior escala. Além disso, é baseado no popular chip Wi-Fi ESP8266, tornando-o compatível com o ambiente Arduino e outros recursos como nossas bibliotecas ESP em Ubidots .
Requisitos
- Um UartSBee para poder programar o SONOFF usando seu computador
- Um SONOFF duplo
- A Biblioteca Ubidots ESPMQTT
Configuração de hardware
Desmonte o dispositivo SONOFF Dual, para acessar a pinagem SONOFF TTL, que precisaremos para programar o ESP8266 integrado. O SONOFF vem sem dois conectores de pinos, então você precisará soldá-los antes de programar a unidade.
Após a soldagem, conecte a placa ao UartSBee seguindo esta tabela:
UartSBee | SONOFF Duplo |
---|---|
CCV | CCV |
Texas | RX |
RX | Texas |
GND | GND |
Pinagem UartSBEE
Além disso, você precisará fazer uma conexão entre o pino GND do cabeçalho do pino à esquerda (aquele que contém os pinos dos botões 1 e 0) e o pino EN_FW do ESP8266 mostrado abaixo:
Pinagem SONOFF (frente)
Pinagem SONOFF (face invertida)
Configuração do IDE do Arduino
- No IDE do Arduino, clique em Arquivos -> Preferências e insira esta 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 oferece suporte a vários URLs. Separe-os com vírgulas caso você já tenha digitado outras URLs.
- Abra o Boards Manager 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.
- Baixe a Ubidots ESPMQTT como um arquivo ZIP em nossa conta GitHub .
- De volta ao seu 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.
Codificando seu SONOFF Dual
Este código de exemplo assinará 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 nele chamada “Relés”. Deveria ficar assim:
Certifique-se de que o rótulo da API do dispositivo seja “sonoff-dual” e o rótulo da API variável seja “relays”. Estes são os identificadores exclusivos usados pelo SONOFF para saber qual variável assinar no corretor MQTT. Você pode editar os rótulos, se necessário.
Agora você está pronto para atualizar seu dispositivo com o seguinte código:
/**************************************** * Incluir bibliotecas ****** **********************************/ #include " Ubidots ESPMQTT.h" /****** ********************************** * Definir Constantes ************* *************************/ #define TOKEN "p4uuuxxxxxxxncTVfoVqxxxxxRQW" // Seu TOKEN Ubidots #define WIFINAME "UBIWIFI" //Seu SSID # defina WIFIPASS "clave123456789ubi" // Seu Wifi Pass #define MQTTCLIENTNAME "sonoff15345" // Seu nome de cliente MQTT, deve ser único, portanto recomendamos escolher um nome ASCCI aleatório Ubidots client(TOKEN, MQTTCLIENTNAME); /************************************** *Funções Auxiliares****** **********************************/ void relés_on() { Serial.write(0xA0); Serial.write(0x04); Serial.write(0x03); Serial.write(0xA1); Serial.flush(); } void relés_off(){ Serial.write(0xA0); Serial.write(0x04); Serial.write(0x00); Serial.write(0xA1); Serial.flush(); } void callback(char* tópico, byte* payload, unsigned int length) { Serial.print("A mensagem chegou ["); Serial.print(tópico); Serial.print("] "); para (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.ubidots e rótulos de API de variáveis Serial.println("Subscribed!"); } void loop() { // coloque seu código principal aqui, para executar repetidamente: if(!client.connected()){ client.reconnect(); cliente. ubidots Subscribe("sonoff-dual","relés"); //Inserir o dataSource e os rótulos da variável } client.loop(); }
Você pode realizar ações mais elaboradas mexendo nos comandos internos do SONOFF Dual. Aqui está uma referência rápida que encontramos em seus fóruns :
Serial: 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 relés ligados
Depois de atualizar seus dispositivos, abra o monitor serial do Arduino IDE, você deverá ver algo assim, significando que a conexão WiFi e a assinatura MQTT foram bem-sucedidas:
Resultados
Agora vá até a aba “ Dashboards ” e adicione um novo Widget do tipo “Control”–> “Switch”:
Esta chave enviará um “1” ou “0” para a variável “Relays”, que é então 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 seu 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!