Manual
do
Maker
.
com
Já escrevi dois outros artigos, um deles falando sobre a biblioteca fauxmo e a outra utilizando o firmware Tasmota. Apesar da extrema simplicidade na implementação do firmware Tasmota, ele não é tão flexível, já que não podemos adicionar rotinas dentro das funções de callback. Mas há outra ótima opção, que vale inclusive referenciar uma placa ideal para a biblioteca ideal. Vamos ver como fazer home automation com AFSmartHome e Alexa, em um setup de 3 minutos!
O "melhor" é relativo, mas a resposta mais provável é que a melhor biblioteca é a que funciona. Mas decidir entre as que funcionam pode não ser uma tarefa tão rápida, por isso vou relatar minhas experiências com 3 principais**.**
A primeira vez que fiz um dispositivo rodar com Alexa não foi uma das tarefas mais simples. Rodei um emulador no Raspberry sem propósito algum; a placa não era encontrada pela Alexa e demorei um bocado para descobrir um procedimento que pudesse ser repetido. Mas como isso já faz um tempo, certamente a biblioteca fauxmo deve ter melhorado, apesar de que agora não me parece mais interessante, principalmente por causa das duas bibliotecas que cito a seguir.
A segunda vez que resolvi mexer com Alexa, queria algo que me fizesse sofrer menos. Daí encontrei em minhas pesquisas algo que eu não dava atenção - um firmware pronto pra uso. Nunca gostei disso por diversas razões, das quais segurança é uma delas, mas cada dia que passa me sinto mais preguiçoso e não custava nada experimentar algo que só precisava ser gravado. Daí o artigo do primeiro parágrafo, que foi uma grata surpresa, considerando que o firmware oferece inclusive a possibilidade de usar MQTT. Mas há vezes que queremos implementar alguma rotina; gravar um arquivo de log no sistema de arquivos ou algo do tipo. Bem, nesse caso a biblioteca mais adequada talvez seja a espalexa, que está disponível pelo repositório oficial do Arduino, mas também pode ser pega diretamente no github. E é dessa que trataremos nesse artigo.
Uma coisa é certa; você iniciará seu projeto de home automation em menos de 5 minutos. Abra a IDE do Arduino ou a aba do PlatformIO em sua IDE de preferência. Recomendo o VSCode. Procure por espalexa e instale-a.
Peguei um sketch dos exemplos e só adicionei as credenciais e uma cópia de um dos callbacks. No callback só tive que passar o pino digital a escrever. Não tem como ser mais fácil! Apenas remova o include do credentials.h ou crie um contendo o SSID e senha. O código que utilizei ficou assim:
#include <Arduino.h>
/*
* This is a basic example on how to use Espalexa and its device declaration methods.
*/
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <Espalexa.h>
#include "credentials.h"
// prototypes
boolean connectWifi();
//callback functions
void firstLightChanged(uint8_t brightness);
void secondLightChanged(uint8_t brightness);
void alarmOne(uint8_t brightness); //TX
void alarmTwo(uint8_t brightness); //RX
boolean wifiConnected = false;
Espalexa espalexa;
EspalexaDevice *device3; //this is optional
void setup()
{
for (uint8_t i=0;i<4;i++){
pinMode(i,OUTPUT);
}
//Serial.begin(115200);
// Initialise wifi connection
wifiConnected = connectWifi();
if (wifiConnected)
{
// Define your devices here.
espalexa.addDevice("computador", firstLightChanged); //simplest definition, default state off
espalexa.addDevice("monitor", secondLightChanged, 255); //third parameter is beginning state (here fully on)
device3 = new EspalexaDevice("alerta 1", alarmOne); //you can also create the Device objects yourself like here
espalexa.addDevice(device3); //and then add them
device3->setValue(0); //this allows you to e.g. update their state value at any time!
espalexa.addDevice("alerta 2", alarmTwo);
espalexa.begin();
}
else
{
while (1)
{
//Serial.println("Cannot connect to WiFi. Please check data and reset the ESP.");
delay(2500);
}
}
}
void loop()
{
espalexa.loop();
delay(1);
}
//our callback functions
void firstLightChanged(uint8_t brightness)
{
digitalWrite(0,brightness);
}
void secondLightChanged(uint8_t brightness)
{
digitalWrite(2,brightness);
}
void alarmOne(uint8_t brightness)
{
digitalWrite(1,brightness);
}
void alarmTwo(uint8_t brightness)
{
digitalWrite(3,brightness);
}
// connect to wifi – returns true if successful or false if not
boolean connectWifi()
{
boolean state = true;
int i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(SSID, PASSWD);
//Serial.println("");
//Serial.println("Connecting to WiFi");
// Wait for connection
//Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
//Serial.print(".");
if (i > 20)
{
state = false;
break;
}
i++;
}
return state;
}
É só gravar, subir o firmware e dizer: "Alexa, procurar dispositivos". Aqui os 4 dispositivos do sketch foram achados rapidamente.
Também fiz uso dos pinos TX e RX do ESP8266 de forma a ter mais duas saídas. No vídeo eu mostro tudo em detalhes, confira clicando aqui.
No vídeo mostrei a placa da AFEletronica, que você pode encontrar no site deles. Também usei o osciloscópio digital DSO138 da Autocore que é uma ótima ferramenta para, entre outros, esse tipo de análise. O Osciloscópio você encontra na loja virtual.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.