В этом руководстве описывается, как реализовать push-уведомления IoT. Используя push-уведомления IoT, мы можем отправлять уведомления на другие устройства. В этом случае мы хотим отправлять push-уведомления IoT со смарт-объекта (например, Arduino MKR1000) на мобильный смартфон (например, смартфон Android). Этот проект объединяет различные экосистемы (IoT и Android) и может иметь несколько реализаций. Например, мы можем отправить push-уведомление на наш смартфон при появлении предупреждения:
- Утечка газа.
- Обнаружение движения.
- Более высокая или более низкая температура.
- Общий сбой систем.
В качестве примера, чтобы показать, как использовать уведомления IoT, мы будем использовать датчик обнаружения движения. Другими словами, есть Arduino MKR1000, подключенный к датчику (ИК-датчик). Когда датчик запускает событие, MKR1000 выполняет вызов к серверу Firebase с использованием API Firebase. Смарт-объект отправляет push-уведомление IoT на смартфон Android. Мы можем использовать то же самое для отправки уведомлений на другие устройства, такие как iOS и так далее.
Идея, стоящая за этим проектом, показана ниже:
Как видите, этот проект использует API Firebase по-другому, смешивая разные миры!
В прошлой статье мы описали, как использовать API Firebase для создания push-уведомлений , и в этой статье мы хотим расширить его и интегрировать с Arduino.
Более того, мы уже видели в последнем посте, как создать приложение для Android, которое обрабатывает push-уведомления, и как настроить его в консоли Firebase. Если вы новичок в Firebase, я предлагаю прочитать предыдущий пост, чтобы у вас было четкое представление о том, как все работает.
Этот проект использует приложение, которое мы разработали в предыдущем посте. Вы можете скачать его, если хотите протестировать проект.
Проект Arduino MKR1000 PIR
Первым шагом является подключение Arduino MKR1000 к ИК-датчику. На рисунке ниже показано, как подключить датчик к MKR1000.
Схема очень простая. Чтобы узнать, обнаружил ли ИК-датчик движение, нужно проверить, равен ли сигнал 1. Эскиз очень прост:
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("Motion detected");
pirState = HIGH;
// Motion detected
}
}
else {
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
// Motion ended
}
}
delay(5000);
}
Мы должны прочитать сигнал на входном контакте и проверить, равен ли он 1. Если он равен 1, то мы обнаружили движение и можем отправить уведомление.
MKR1000 Wi-Fi соединение
Перед отправкой уведомления мы должны подключить Arduino MKR1000 к Интернету через Wi-Fi. Мы можем немного изменить приведенный выше код и добавить соединение Wi-Fi:
#include <SPI.h>
#include <WiFi101.h>
int inputPin = 2;
int pirState = LOW;
char ssid[] = "Vodafone-xxxxx"; // your network SSID (name)
char pass[] = "yyyyyyyy"; // your network password
int status = WL_IDLE_STATUS;
WiFiClient client;
void setup() {
pinMode(inputPin, INPUT);
Serial.begin(9600);
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the data:
Serial.println("You're connected to the network");
}
Все сделано! Теперь все готово, и мы можем сосредоточить наше внимание на самой интересной части: отправка push-уведомлений IoT на смартфон.
Отправка IoT Push-уведомлений
Чтобы отправить push-уведомление, мы используем Firebase API. Мы предполагаем, что вы уже создали проект в консоли Firebase, если нет, вернитесь к предыдущей статье и прочитайте, как настроить проект Firebase .
Чтобы отправить push-уведомление с помощью Firebase, необходимо:
- Аутентифицировать нашего клиента.
- Создайте тело сообщения в формате JSON.
- Отправьте сообщение на смартфон.
Необходимо отправить некоторые параметры заголовка HTTP и сообщение JSON. Первым делом нужно установить хост Firebase:
Host: fcm.googleapis.com
затем для аутентификации нашего клиента мы используем секретный ключ, который вы получаете из консоли Firebase:
Authorization: key=AIzaSyC1mHfa_G89CDoNoq2zWhh1iL9---------
тогда мы должны установить тип контента:
Content-Type: application/json
и, наконец, мы указываем метод HTTP и сервис, который мы хотим вызвать:
POST /fcm/send HTTP/1.1
Тело в формате JSON и очень простое:
{
"to":"your_phone_key",
"notification": {
"body": "test message",
"title" : "Title"
}
}
Это все!! Мы должны сделать этот запрос, используя HTTP-библиотеку Arduino:
void sendDataToFirebase() {
String data = "{" ;
data = data + "\"to\": \"your_smartphone_id\"," ;
data = data + "\"notification\": {" ;
data = data + "\"body\": \"Motion detected\"," ;
data = data + "\"title\" : \"Alarm\" " ;
data = data + "} }" ;
Serial.println("Send data...");
if (client.connect(fcmServer, 80)) {
Serial.println("Connected to the server..");
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("Data sent...Reading response..");
while (client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println("Finished!");
client.flush();
client.stop();
}
Так что отправлять push-уведомления IoT очень просто, и мы интегрировали две разные экосистемы. Что вы будете строить, используя push-уведомления? Комментарий ниже и дайте мне знать ваш опыт. Надеемся, что в конце этого поста вы получили новые знания об отправке push-уведомлений IoT.