Notificações IoT Push: Arduino – Firebase – Android. Guia prático passo a passo

Tempo de leitura: 4 minutes

Este tutorial descreve como implementar notificações IoT Push usando Arduino e Firebase. Usando notificações push da IoT, podemos enviar notificações para outros dispositivos. Neste caso, queremos enviar notificações push de IoT de um objeto inteligente (como Arduino MKR1000) para um smartphone móvel (ou seja, smartphone Android). Este projeto integra diferentes ecossistemas: IoT e Android. Este projeto pode ter várias implementações: por exemplo, podemos enviar uma notificação push para o nosso smartphone quando ocorre um alerta:

  • Vazamento de gás
  • Detector de movimento
  • Temperatura mais alta ou mais baixa
  • Sistemas de falha geral

Como um exemplo real para mostrar como usar notificações IoT, usaremos um sensor de detecção de movimento. Em outras palavras, existe um Arduino MKR1000 conectado a um sensor (sensor PIR). Quando o sensor dispara um evento, o MKR1000 faz uma chamada para o servidor Firebase usando a API Firebase. Por meio da API Firebase, o objeto inteligente envia notificações push de IoT para um smartphone Android. Podemos usar da mesma forma, para enviar notificações para outros dispositivos como iOS e assim por diante.

Como você pode ver, este projeto usa a API Firebase de uma maneira diferente, misturando mundos diferentes!

Além disso, já vimos no último post, como criar um aplicativo Android que lida com notificações push e como configurá-lo no console do Firebase. Se você é novo no Firebase, sugiro que leia o post anterior para ter uma ideia clara de como as coisas funcionam.

Como aplicativo Android, este projeto usa o aplicativo que desenvolvemos no post anterior. Você pode baixá-lo se quiser testar o projeto.

Eventos de disparo para enviar notificação ao Firebase

A primeira etapa é conectar o Arduino MKR1000 a um sensor PIR. A imagem abaixo mostra como conectar o sensor ao MKR1000.

Mkr1000

O esquema é muito simples. Para saber se o sensor PIR detectou um movimento, temos que verificar se o sinal é 1 no PIN correspondente. O sketch é muito simples:

int inputPin = 2;
int pirState = LOW;

void setup() {
  pinMode(inputPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  int val = digitalRead(inputPin);
  if (val == HIGH) {
    if (pirState == LOW) {
      Serial.println("Movimento detectado!");
      pirState = HIGH;
      // Movimento detectado
    }
  }
  else {
    if (pirState == HIGH) {
     Serial.println("Movimento finalizado!");
     pirState = LOW;
     // Movimento finalizado
  }  
 }
 delay(5000);
}

Como você pode notar, o sketch é muito simples. Temos que ler o sinal no pino de entrada e verificar se é 1. Se for 1, então detectamos movimento e podemos enviar a notificação.

Conexão WiFi MKR1000

Antes de enviar uma notificação, temos que conectar o Arduino MKR1000 à internet usando wi-fi. Podemos modificar ligeiramente o código acima e adicionar a conexão WiFi:

#include <SPI.h>
#include <WiFi101.h>

int inputPin = 2;
int pirState = LOW;
char ssid[] = "zzzzz-xxxxx"; // seu SSID de rede (nome)
char pass[] = "yyyyyyyy"; // sua senha de rede

int status = WL_IDLE_STATUS;
WiFiClient client;

void setup() {
Serial.begin(9600);
pinMode(inputPin, INPUT);

// tentativa de conexão com a rede Wifi:

 while ( status != WL_CONNECTED) {
   Serial.print("Tentando se conectar ao WPA SSID: ");
   Serial.println(ssid);

   // Conecte-se à rede WPA / WPA2:
   status = WiFi.begin(ssid, pass);

   // aguarde 10 segundos pela conexão:
   delay(10000);
 }

  // você está conectado agora, então imprima os dados:
  Serial.println("Você está conectado à rede");
}

Tudo feito! Agora tudo está pronto e podemos focar nossa atenção na parte mais interessante: como enviar notificações push de IoT para um smartphone. Existem outras maneiras de enviar notificações para um smartphone.

 

Como enviar notificações push IoT usando Arduino e Firebase

Para enviar uma notificação push, usamos a API Firebase. Presumimos que você já tenha criado um projeto no console do Firebase, se não, volte ao artigo anterior e leia como configurar um projeto do Firebase.

Para enviar uma notificação push usando Firebase, é necessário:

  • Autentique nosso cliente
  • Crie o corpo da mensagem em JSON
  • Envie a mensagem para um smartphone

Para isso, é necessário enviar alguns parâmetros HTTP do cabeçalho e uma mensagem JSON. A primeira coisa é definir o host Firebase:

Host: fcm.googleapis.com

Então, para autenticar nosso cliente, usamos uma chave secreta, que você obtém no console do Firebase:

Authorization: key=AIzaSyC1mHfa_G89CDoNoq2zWhh1iL9---------

Então temos que definir o tipo de conteúdo:

Content-Type: application/json

e, finalmente, especificamos o método HTTP e o serviço que queremos invocar:

POST /fcm/send HTTP/1.1

O corpo da notificação push IoT está no formato JSON e é muito simples:

{
 "to":"numero do seu telefone",
 "notification": {
   "body": "mensagem de teste",
   "title" : "Titulo"
  }
}

Isso é tudo!! Faremos essa solicitação usando a biblioteca Arduino HTTP:

void sendDataToFirebase() {

  String data = "{" ;
  data = data + "\"to\": \"seu numero do celular\"," ;
  data = data + "\"notification\": {" ; data = data + "\"body\":" +
                 \"Movimento detectado\"," ;
  data = data + "\"title\" : \"Alarme\" " ; data = data + "} }" ;
  Serial.println("Enviar dados ...");

  if (client.connect(fcmServer, 80))  {
   Serial.println("Conectado ao servidor ..");
   client.println("POST /fcm/send HTTP/1.1");
   client.println("Authorization: key=auth_key");
   client.println("Content-Type: application/json");
   client.println("Host: fcm.googleapis.com");
   client.print("Content-Length: ");
   client.println(data.length());
   client.print("\n");
   client.print(data);
  }

  Serial.println("Dados enviados ... Resposta de leitura..");
  while (client.available())  {
   char c = client.read();
   Serial.print(c);
  }

  Serial.println("Acabado!");
  client.flush();
  client.stop();
}

Empacotando…

Portanto, é muito simples enviar notificações push de IoT e integramos dois ecossistemas diferentes. O que você criará usando notificações push? Comente abaixo e conte-me sua experiência.

No final desta postagem, felizmente, você ganhou um novo conhecimento sobre o envio de notificações push de IoT.