В этом руководстве описывается, как реализовать 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 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 на смартфон.
Отправка 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 . |