В этом руководстве описывается, как реализовать 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 | intinputPin = 2;intpirState = LOW;voidsetup() {  pinMode(inputPin, INPUT);  Serial.begin(9600);}voidloop() {   intval = 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>intinputPin = 2;intpirState = LOW;charssid[] = "Vodafone-xxxxx"; // your network SSID (name)charpass[] = "yyyyyyyy"; // your network passwordintstatus = WL_IDLE_STATUS;WiFiClient client;voidsetup() {  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 | voidsendDataToFirebase() {  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()) {   charc = 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 . | 

