物联网推送通知:Arduino – Firebase – Android

本教程描述了如何实现IoT推送通知。 使用物联网推送通知,我们可以将通知发送到其他设备。 在这种情况下,我们希望将IoT推送通知从智能对象(例如Arduino MKR1000)发送到移动智能手机(即Android智能手机)。 该项目集成了不同的生态系统:IoT和Android。 该项目可以有多种实现方式:例如,当发生警报时,我们可以向我们的智能手机发送推送通知:

  • 气体泄漏
  • 运动检测
  • 更高或更低的温度
  • 一般故障系统

例如,为了展示如何使用物联网通知,我们将使用运动检测传感器。 换句话说,有一个Arduino MKR1000连接到传感器(PIR传感器)。 当传感器触发事件​​时,MKR1000使用Firebase API调用Firebase服务器。 借助API,智能对象将IoT推送通知发送到Android智能手机。 我们可以使用相同的方式将通知发送到其他设备,例如iOS等。

该项目背后的想法如下所示:

如您所见,该项目以不同的方式使用Firebase API来混合不同的世界!

在上一篇文章中,我们描述了如何使用Firebase API创建推送通知 ,在本文中,我们希望对其进行扩展并与Arduino集成。

iot_notification

此外,我们已经在上一篇文章中看到了如何创建一个处理推送通知的Android应用程序以及如何在Firebase控制台中对其进行配置。 如果您不熟悉Firebase,建议您阅读上一篇文章,以便您清楚了解工作原理。

作为Android应用程序,该项目使用了我们在上一篇文章中开发的应用程序。 如果要测试项目,可以下载它。

Arduino MKR1000 PIR项目

第一步是将Arduino MKR1000连接到PIR传感器。 下图显示了如何将传感器连接到MKR1000。

arduino_notification_firebase-1024x576

该模式非常简单。 要知道PIR传感器是否检测到运动,我们必须检查信号是否为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,则表明已检测到运动,可以发送通知。

如何发送#IoT推送通知? 遵循本教程可了解如何集成#arduino… 单击鸣叫

MKR1000 WiFi连接

发送通知之前,我们必须使用WiFi将Arduino MKR1000连接到互联网。 我们可以稍微修改上面的代码并添加WiFi连接:

#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");
}

全做完了! 现在一切就绪,我们可以将注意力集中在最有趣的部分上:将物联网推送通知发送到智能手机。

发送物联网推送通知

要发送推送通知,我们使用Firebase API。 我们假设您已经在Firebase控制台中创建了一个项目,否则请返回上一篇文章并阅读如何配置Firebase项目
要使用Firebase发送推送通知,有必要:

  1. 验证我们的客户
  2. 在JSON中创建消息正文
  3. 发送信息到智能手机

为此,必须发送一些头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"
  }
}

就这样!! 我们必须使用Arduino HTTP库发出此请求:

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();
}

因此,发送物联网推送通知非常简单,并且我们已经集成了两个不同的生态系统。 您将使用推送通知来构建什么? 在下面发表评论,让我知道您的经验。希望在这篇文章的结尾,您获得了有关发送IoT推送通知的新知识。

在这篇文章的结尾,希望您获得了有关发送物联网推送通知的新知识。

翻译自: https://www.javacodegeeks.com/2016/09/iot-push-notifications-arduino-firebase-android.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值