三步实现物联网设备远程消息推送

在物联网(IoT)开发中,常常会遇到需要将设备信息远程传送的需求。比如当设备的状态发生变化时(例如开/关状态、电量低、异常状态等),我们希望推送通知给用户。当安防类设备检测到入侵警报、烟雾警报时,需要立即推送警报通知给用户。还有些设备需要定期推送设备的能耗和或者采集的数据给用户,帮助用户了解设备的节能情况和监测数据详情。一个具体的例子:环境监测仪设备检测到温度、湿度、氧气浓度等环境指标超出用户设定的范围时,我们希望可以提醒用户。

那么物联网设备远程消息提醒有哪些常见实现方式呢?

第一种方式是服务器+APP的方式。这种方式需要拥有自己的移动端APP,还要搭建自己的服务器作为后端。开发难度大,开发周期长,只适合成规模的产品。

第二种方式是调用接口服务商的短信通知api。这种方式的开发复杂度要比第一种低得多,而且不需要依赖网络。但短信通知接口一般是按条收费,价格偏高。通知内容长度有限,无法传递复杂信息。

第三种方式是使用微信公众号加api调用的方式。这种方式是一种常用的较低成本的实现方式。但api的调用需要处理复杂的消息加密逻辑,或需要依赖微信提供的sdk开发。还要遵守微信的各种限制。

以上几种方式如果需要可以查找相关的资料来实现。本文介绍一种免费、实现简单、可多人通知、可传送多种消息的方式,这可能是最简单的实现方式。

这是一种基于webhook的消息推送方式。很多平台都提供的webhook消息接收的功能。例如钉钉、企业微信、飞书等。下面以钉钉+ESP32作为例子实现ESP32开发板向用户发送消息通知。

  • 第一步:在你希望接收消息的钉钉群创建自定义机器人(需要在电脑端操作)

  • 第二步:编写ESP32端程序,向上一步保存的URL发送消息(注意消息中要包含自定义的关键词,除了文本以外还可以发送链接等多种消息,可以@群内成员)。贴上Arduino程序:

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>

void sendMessageToDingTalk(const char* message);

// 替换为你的 Wi-Fi 名称和密码
const char* ssid = "myssid";
const char* password = "mypassword";

// 替换为你的钉钉群机器人的 Webhook URL
const char* webhook_url = "https://oapi.dingtalk.com/robot/send?access_token";

void setup() {
  // 初始化串口通信
  Serial.begin(115200);

  // 连接 Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
}

void loop() {
  // 发送消息到钉钉群机器人
  sendMessageToDingTalk("123大家好,这是一条来自 ESP32 的测试消息。");

  // 每隔 60 秒发送一次消息
  delay(60000);
}

void sendMessageToDingTalk(const char* message) {
  // 创建 HTTPClient 对象
  HTTPClient http;

  // 设置请求头
  http.begin(webhook_url);
  http.addHeader("Content-Type", "application/json");

  // 构建 JSON 消息
  String jsonMessage = "{\"msgtype\": \"text\", \"text\": {\"content\": \"" + String(message) + "\"}}";

  // 发送 POST 请求
  int httpResponseCode = http.POST(jsonMessage);

  // 检查响应
  if (httpResponseCode > 0) {
    String response = http.getString();
    Serial.println("HTTP Response code: " + String(httpResponseCode));
    Serial.println("Response: " + response);
  } else {
    Serial.println("Error on sending POST: " + String(httpResponseCode));
  }

  // 关闭连接
  http.end();
}
  • 第三步:程序编译并烧录到ESP32。程序启动后可看到ESP32发来的消息

总结: 1、在钉钉群创建自定义机器人并获取webhookURL;

            2、编程实现ESP32连接网络并向URL发送消息;

            3、编译烧录和测试消息推送。

这种方式可以方便快捷实现物联网设备对用户的消息推送。这种方式在各种物联网产品测试阶段可以提高效率。实际使用中webhook地址需要设置为变量且需要通过一定的方式配置。由于群内添加机器人并获取webhook的过程对普通用户来说较为繁琐,以及依赖钉钉等工作协同软件,这种方式不适合面向个人用户的产品,仅适合面向企业用户的产品,尤其是与项目数据更新相关的产品或办公室用产品。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值