Manual

do

Maker

.

com

Blynk, IoT e MQTT

Blynk, IoT e MQTT

Blynk, IoT e MQTT

A "Internet das Coisas", ou "IoT" (Internet of Things) é uma certeza iminente de um novo mundo, que não chegou antes do IPv6 mas certamente se popularizará muito antes dele, por isso decidi repentinamente falar do Blynk, IoT e MQTT. Claro, não serão "entendidos no assunto" todos os leitores que chegarem a essa leitura e para uma abordagem completa, vou entrar em detalhes por tópicos, pule para onde se sentir à vontade ou leia todo o texto se desejar.

  O que é IoT

Se não estivessemos tão conectados e se as empresas não pensassem em investir fortemente nesse mercado iminente, certamente o nome mais usual seria "automação residencial". O termo "Internet das coisas" tem um acrônimo dúbio, uma vez que não é fundamental que se tenha Internet para ter essa automação. Porém como dito, as empresas tem a intenção de vender o gerenciamento desse serviço e esse gerenciamento tem um novo conceito, que explicarei mais adiante.

Ainda falando do acrônimo - e quanto a ser dúbio - me referí desse modo porque por ser acrônimo, normalmente recebe a inicial maiúscula, mas veja; Internet com "I" (maiúscula) trata-se da rede pública mundial advinda da ARPANET, enquanto internet com "i" (minúscula) trata-se do enlace de uma ou mais redes (públicas ou não) e, convenhamos, uma rede é fundamental para a comunicação inteligente, ainda que cabeada.

Logo, quando falar de automação residencial com gerenciamento inteligente, pode tratar com segurança do assunto como sendo IoT.

Protocolo MQTT

Primeiramente, um protocolo é um conjunto de regras para qualquer tipo de comunicação. Por exemplo, falamos português, temos uma gramática, fonética etc. Esse conjunto de regras para a fala é um protocolo. Do mesmo modo para comunicação em redes, existem diversos protocolos para diferentes serviços e em diversos níveis, mas não vou tratar disso tecnicamente, vou apenas exclarecer o protocolo de comunicação da Internet das coisas.

O MQTT é acrônimo de "Message Queue Telemetry Transport", um protocolo desenvolvido pela IBM, mais especificamente pelo Dr Andy Stanford (esse sim, da IBM) e Arlen Nipper, da Eurotech, em 1999(!). Claro que com o passar do tempo, o protocolo teve que evoluir, mas não aumentou em complexidade nem em tamanho e é o menor protocolo de gerenciamento remoto da atualidade por implementar uma estrutura muito simples. Se eu não esquecer, falarei sobre TR069, um protocolo de gerenciamento remoto mas que não foi criado para IoT, assim como o DOCSIS também não.

Estrutura necessária para utilização do protocolo MQTT

Ao contrário da maioria dos serviços web, o MQTT é um protocolo M2M (ou, Machine-to-Machine) de forma que a comunicação não tem interação humana (quando em operação). E também não se trata de comunicação dispositivo-a-dispositivo; no meio há um serviço que não é exatamente um "servidor" como um "servidor web" ou um "proxy", mas se trata do enlace da comunicação em um nível de aplicação. Para descomplicar, esse serviço de enlace se chama Broker, e é o broker que as empresas oferecerão como serviço de gerenciamento remoto, enquanto elas mesmas (ou outras terceiras) oferecerão o serviço de automação e interconexão. O fato é que em determinado momento os dispositivos sairão das lojas prontos para conectar-se à IoT de forma transparente e o usuário só precisará um login a uma interface de observação, seja ela web ou aplicativo local em desktop/notebook, tablet ou smartphone.

Resumindo o tópico, um enlace, um dispositivo de informe e um dispositivo de consulta são necessários para a efetividade da implementação.

Publish/Subscribe

O broker tem uma tarefa simples, que é manter os dados em flutuação, sem interagir com nenhuma das pontas; não há uma inteligência nesse serviço.

O dispositivo da IoT deverá enviar constantemente (dentro de um intervalo predefinido) as informações ao broker. O ato de enviar dados é chamado de "Publish", onde ele publica seus status no broker.

Seu smartphone (que será utilizado para a consulta desses status) conecta-se ao broker para obter as informações de um determinado dispositivo. Esse dispositivo deverá ter suas informações publicadas em um "tópico". Para obter as informações desse tópico, você deverá configurar o aplicativo do seu smartphone para subescrever-se ao mesmo tópico que o dispositivo, logo "subscribe".

Em contrapartida, seu dispositivo da IoT poderá agir, por exemplo, para acender uma lâmpada. Nesse caso, ele também poderá se subescrever a um tópico e quando ele receber determinado status, reagir. Passando essa visão, espero que tenha entendido que nenhum dispositivo é autoritativo sobre o outro, nem as pontas, nem o broker. Perceba que cada um simplesmente publica e consulta valores em um ou mais tópicos e cabe à sua programação agir ou reagir.

Utilizar um broker público

Se você quiser iniciar testes imediatamente, pode utilizar um broker público para entender o conceito. Não utilize para produção, pois não há confiabilidade nenhuma em brokers públicos como serviço.

Eu recomendo o Mosquitto porque é também o que eu utilizo em minha IoT doméstica.

Configurar seu próprio broker

Para fazer isso, algumas coisas você deverá ter em mente. Primeiro, se deseja acessar informações de sua casa a partir de qualquer lugar do mundo, utilize um protocolo SSL na comunicação entre os pontos.

Se deseja ter seu próprio broker, você também precisa considerar que o endereço IP para acessar o broker precisa ser conhecido. Logo, você deverá utilizar algum serviço como o DynDNS ou realmente ter um IP fixo. Minha rede não está acessível ao mundo, mas conecto-me à minha rede wireless ao chegar na porta do meu apartamento, então consigo abrir minha porta para entrar em casa, acender as luzes etc.

Já sabendo de todos esses detalhes, refira-se ao meu tutorial de como configurar seu próprio broker.

Conectar um dispositivo ao broker

Eu fiz o broker em um Raspberry Pi 2 e gerencio ele próprio por MQTT (não é recomendado que o broker seja também um dispositivo reativo, faça o que eu digo, não faça o que eu faço) e além disso, coloquei alguns ESP8266. Não fiz com Arduino porque teria que utilizar ethernet e, se for pra usar WiFi, o ESP8266 é muito, mas muito mais poderoso e flexível que Arduino, além de ser consideravelmente menor e mais econômico, além de bonito e barato.  E bom. Sendo assim, caso deseje experimentar o processo de conexão a um broker, referencio meu tutorial para conectar um ESP8266 (NodeMCU) ao broker utilizando Lua.

Se quiser programar pela interface do Arduino, escrevi "diversos" tutoriais sobre os meios de atualização OTA (Over-The-Air), mas caso você não queira procurar pela lupa do site, deixo essa referência, a qual acho bastante agradável.

Blynk

Nesse ponto você já tem em mente do que se trata esse artigo e sabe para quê serve o aplicativo. Se você não tem nada configurado ainda, separe algo para os próximos posts, onde deixarei tutoriais de interação.

O Blynk é atualmente o que particularmente tenho ouvido falar (não que eu sirva de referência para apontar a popularidade de um aplicativo, apenas me eximo da obrigação de conhecer muitos aplicativos para dita tarefa). Ele pode ser baixado gratuitamente no Google Play para Android e sei que tem versão para pelo menos mais 1 plataforma, porém como só trato de Linux, obviamente o tutorial é sobre Android.

A grande vantagem de usar o Blynk é que você não terá nenhum trabalho com o aplicativo, podendo modelar o gerenciamento com o arrastar de widgets sobre a tela do smartphone. Assim, você dedica todo o trabalho aos dois pontos críticos da configuração; a automação e o Broker. Pra finalizar a idéia, há uma vantagem extra, que é o aplicativo ser genérico, não importa o que você deseja gerenciar, mas ter o broker configurado e ambas as pontas "conversando" através de seu protocolo, cujo protocolo eu sequer analisei, podendo ser (ou não) MQTT.

Configurar o Blynk server no Raspberry Pi

Do mesmo modo que o Mosquitto, você também pode ter um Blynk server instalado em sua Raspberry Pi. O procedimento é bastante simples e, como sempre, inicia-se por uma série de downloads. Comecemos pelo server, propriamente dito. Clique nesse link e faça download do zip ou clone o git em seu RPi. Eu prefiro clonar o git:

git clone https://github.com/blynkkk/blynk-server.git

A instalação de alguns pacotes no RPi também serão necessárias, mas tudo bastante simples. Se já não estiver instalado, proceda com o seguinte comando:

sudo apt-get install oracle-java8-jdk

A orientação dos desenvolvedores é pelo seguinte download:

wget "https://github.com/blynkkk/blynk-server/releases/download/v0.15.3/server-0.15.3.jar"

Crie um diretório de dados e aponte-o na execução do server:

java -jar server-0.15.3.jar -dataFolder /home/pi/Blynk

As portas padrão são a 8442 e a 8443 (SSL) para a aplicação.

Ao iniciar o server, você deverá ver algo do tipo:

"Blynk Server successfully started.
All server output is stored in current folder in 'logs/blynk.log' file."

Para iniciá-lo junto ao sistema, você pode incluí-lo em /etc/rc.local desse modo:

java -jar /home/pi/server-0.15.3.jar -dataFolder /home/pi/Blynk &

Ou através do cron. Use:

crontab -e

E na tela que se abre, adicione a seguinte linha:

@reboot java -jar /home/pi/server-0.15.3.jar -dataFolder /home/pi/Blynk &

Eu fiz um start em foreground mesmo e tirei um shot pra mostrar; o start é um pouco lento, mas convenhamos, onde java é rápido?

01b-blynk-server-starting-300x45.webp

No sketch, mude a linha Blynk.begin adicionando o host. É semelhante para WiFi e ethernet, vou colocar o exemplo ethernet porque o teste farei com um ESP8266 também e talvez ele seja o primeiro. Supondo que o gateway (seu roteador) tenha o endereço IP 192.168.10.1:

Blynk.begin(auth, "suaRede", "senhaSecreta", IPAddress(192,168,10,1));

Conectar o Blynk app ao server local

Após instalar o aplicativo, você precisará criar uma conta. Se você criar a conta padrão, estará conectado à nuvem do Blynk, mas para acessar o seu próprio servidor será necessário criar essa conta apontando para o servidor local. Para isso, clique em 'Login' e então no semáforo:

02b-Screenshot_20160508-051152.webp

Onde está o dinheiro?

E onde que os desenvolvedores ganham dinheiro com um projeto desse tamanho, todo de graça? - Simples; eles fazem a venda de 'energia' para componentes.
Inicialmente você tem 2000 de energia, que é o suficiente para inserir widgets para uma bela diversão, mas se quiser algo mais complexo, obviamente é porque se trata de uma aplicação comercial, então, nada mais justo do que contribuir com o projeto, certo? E pra isso, você clica no "mercadinho" e compra energia a partir de 99 centavos de dolar, o que já é o suficiente para 50% a mais de capacidade para inserir widgets na tela.

03b-Screenshot_20160508-124236.webp

Pra finalizar essa introdução sobre o aplicativo, tudo é configurável selecionando as condições nos próprios widgets do construtor, tudo ali mesmo na tela do smartphone. Estou disponibilizando uma imagem de exemplo, vou deixar o teste real para o próximo post, com tutorial para diversas plataformas.

04b-blynk-widgets-203x300.webp

Espero que o post tenha lhe despertado interesse em mais essa plataforma para IoT e que parece a menos trabalhosa para uma rápida implementação.

Assine nosso canal no youtube (o link está logo mais abaixo) e assista um video de demonstração tão logo esteja editado!

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.