В этом руководстве описывается, как реализовать push-уведомления IoT. Используя push-уведомления IoT, мы можем отправлять уведомления на другие устройства. В этом случае мы хотим отправить push-уведомления IoT со смарт-объекта (например, Arduino MKR1000) на мобильный смартфон (например, смартфон Android). Этот проект объединяет различные экосистемы: IoT и Android. Этот проект может иметь несколько реализаций: например, мы можем отправить push-уведомление на наш смартфон при появлении предупреждения:
- утечка газа
- определение движения
- выше или ниже температура
- системы общего отказа
Например, чтобы показать, как использовать уведомления IoT, мы будем использовать датчик обнаружения движения. Другими словами, есть Arduino MKR1000, подключенный к датчику (ИК-датчик). Когда датчик запускает событие, MKR1000 выполняет вызов к серверу Firebase, используя Firebase API. С помощью API смарт-объект отправляет push-уведомления IoT на смартфон Android. Таким же образом мы можем отправлять уведомления на другие устройства, такие как iOS и так далее.
Идея, стоящая за этим проектом, показана ниже:
Как видите, этот проект по-разному использует Firebase API, смешивая разные миры!
В прошлой статье мы описали, как использовать Firebase API для создания push-уведомлений , в этой статье мы хотим расширить его и интегрировать с Arduino.
Более того, мы уже видели в последнем посте, как создать приложение для Android, которое обрабатывает push-уведомления, и как настроить его в консоли Firebase. Если вы новичок в Firebase, я предлагаю вам прочитать предыдущий пост, чтобы у вас было четкое представление о том, как все работает.
В качестве приложения для Android в этом проекте используется приложение, которое мы разработали в предыдущем посте. Вы можете скачать его, если хотите протестировать проект.
Проект Arduino MKR1000 PIR
Первым шагом является подключение Arduino MKR1000 к ИК-датчику. На рисунке ниже показано, как подключить датчик к MKR1000.
Схема очень простая. Чтобы узнать, обнаружил ли ИК-датчик движение, нужно проверить, равен ли сигнал 1. Эскиз очень прост:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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, то мы обнаружили движение и можем отправить уведомление.
Как отправить #IoT Push-уведомления? Следуйте этому руководству, чтобы узнать, как интегрировать # arduino …
MKR1000 WiFi соединение
Перед отправкой уведомления мы должны подключить Arduino MKR1000 к интернету через WiFi. Мы можем немного изменить приведенный выше код и добавить соединение WiFi:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#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 passwordint 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 на смартфон.
Отправка push-уведомлений IoT
Чтобы отправить push-уведомление, мы используем Firebase API. Мы предполагаем, что вы уже создали проект в консоли Firebase, если нет, вернитесь к предыдущей статье и прочитайте, как настроить проект Firebase .
Чтобы отправить push-уведомление с помощью Firebase, необходимо:
- Аутентифицировать нашего клиента
- Создайте тело сообщения в JSON
- Отправить сообщение на смартфон
Для этого необходимо отправить несколько HTTP-параметров заголовка и JSON-сообщение. Первым делом устанавливается хост Firebase:
|
1
|
Host: fcm.googleapis.com |
затем для аутентификации нашего клиента мы используем секретный ключ, который вы получаете из консоли Firebase:
|
1
|
Authorization: key=AIzaSyC1mHfa_G89CDoNoq2zWhh1iL9--------- |
тогда мы должны установить тип контента:
|
1
|
Content-Type: application/json |
и, наконец, мы указываем метод HTTP и сервис, который мы хотим вызвать:
|
1
|
POST /fcm/send HTTP/1.1 |
Тело в формате JSON и очень простое:
|
1
2
3
4
5
6
7
|
{ "to":"your_phone_key", "notification": { "body": "test message", "title" : "Title" }} |
Вот и все!! Мы должны сделать этот запрос, используя HTTP-библиотеку Arduino:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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.
В конце этого поста, надеюсь, вы получили новые знания об отправке push-уведомлений IoT.
| Ссылка: | IoT Push-уведомления: Arduino — Firebase — Android от нашего партнера по JCG Франческо Аццолы в блоге Surviving с Android . |

