手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(下)

本文详细阐述了如何通过MQTTX客户端模拟硬件设备并与ESP32、手机APP配合,实现PC端Node-red的物联网可视化。从MQTTX客户端连接broker、设备心跳检测,到Node-red订阅ESP32消息,一步步教你搭建跨端通信平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(下)

前言:

接上篇,我们已经完成了手机APP和ESP32硬件设备同时接入点灯科技的broker(MQTT服务器),通过手机来控制和接收ESP32的外设。这篇,我们将讲解如何通过MQTTX客户端模拟另一个硬件设备以同样的方式接入点灯科技的broker,然后订阅ESP32的消息来测试PC端是否能够成功接收来自硬件设备ESP32的消息。然后再通过启动本地的Node-red,使用MQTT组件以同样的方式模拟硬件设备接入点灯科技的broker同时也订阅来自ESP32的的消息,若PC端的Node-red能够成功订阅到指定消息,便能够通过其他组件或者代码逻辑进行JSON报文的解析,以此来处理和获取我们想要的数据,搭建PC端的物联网可视化平台。

此篇中仍有不够细致的地方,若在此篇中遇到问题可参考问题解决篇进行排查处理。
手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信(问题处理)

MQTTX客户端部分

①首先按照上篇的步骤同样添加一个新设备,用于模拟另一个硬件设备接入点灯科技的broker(服务器)同时记录该模拟设备的密钥
在这里插入图片描述
②可以登陆网址查看点灯科技提供文档,来查看点灯科技的MQTT接口的文档

网址:https://diandeng.tech/doc

在这里插入图片描述

③打开一个新的网页,按照文档的意思在地址栏输入该URL,我们选择的请求连接的协议为mqtt协议。

但是要把authKey={authKey}替换成自己的设备密钥,protocol={protocol}替换为希望连接的协议方式,由于是博主的设备密钥是:81d3521795ac而且请求连接的协议方式为mqtt(若不指定protocol的方式,则会默认以mqtts的方式接入,mqtt协议的接入方式所占用的端口是1883,mqtts协议的接入方式所占用的端口是1884,这里博主推荐使用1883端口接入也就是mqtt协议接入,因为后期接入Node-red的时候,使用1884端口会有连接不上MQTT服务器的BUG,暂时博主也未找到解决办法,有思路的可以留言一起探讨一下)
因此博主在地址栏输入的IP为:

https://iot.diandeng.tech/api/v1/user/device/diy/auth?authKey=81d3521795ac&protocol=mqtt

④此时请求完毕后,界面会返回一串JSON报文
在这里插入图片描述
⑤此时我们打开MQTTX客户端,新建连接,将对应的键值填入,连接至点灯科技的broker服务器
在这里插入图片描述
⑥成功连接至点灯科技的broker服务器
在这里插入图片描述
⑦通过参考点灯科技的MQTT订阅发布文档
在这里插入图片描述
我们需要可以测试下MQTTX客户端能否成功通过点灯科技的broker服务器发布和订阅主题。
博主订阅的手机端的MQTTX发布的主题如下:

在这里插入图片描述
⑧通过手机APP触发按键检测MQTTX客户端是否能够成功接收到消息

MQTTX客户端:
在这里插入图片描述
手机APPblinker的状态:
设备显示离线的原因,是因为手机客户端发布{“get”:state}消息后,并没有接收到来自硬件设备的心跳回应,因此认为设备离线,若每当手机客户端发送一遍{“get”:state}消息后,立马用PC的MQTTX客户端按照一定格式回应该消息,手机客户端接收到回应就会认为设备在线。
在这里插入图片描述
⑨通过指定的发布消息格式给手机端的MQTTX客户端持续发送心跳消息的JSON报文
在这里插入图片描述
具体报文格式:

Topic   /device/3FD603DFNVFD5HSTQSL3HHDZ/s
{
  "toDevice": "be340655834d11ecaa0d5254",
  "data":
        {
        "state":"online",
        "timer":"000",
        "version":"0.1.0"
        }
}

⑩手机端APPMQTTX客户端设备接收到心跳消息后立马就会显示设备在线,即使并没有硬件设施烧录该程序
在这里插入图片描述

第二部分

接下来我们使用PC的MQTTX客户端订阅上一篇文章中烧录完毕的ESP32的消息,用于测试当手机端的点灯blinkerAPP向ESP32发送开关灯指令的时候,ESP32能否成功执行指令,同时PC上的MQTTX客户端能否成功接收到ESP32发布的消息

①使用PC端的MQTTX客户端订阅ESP32发布的消息主题
在这里插入图片描述
②在手机点灯科技上点击开关灯按钮界面显示
在这里插入图片描述
③与此同时,PC机上的MQTTX接收到来自ESP32的消息显示
在这里插入图片描述
④与此同时,ESP32硬件设备的状态
在这里插入图片描述

结论

可以看到此时手机端仍然能够控制ESP32硬件设备,同时PC端的MQTTX客户端也能够同时订阅接收到点灯科技broker服务器转发来自ESP32的消息。完成了PC机-手机端APP-硬件设备ESP32三者之间的通信~

最后步骤Node-red订阅接收来自ESP32的消息

我们仍然按照之前的步骤创建第三个设备,用于Node-red连接至点灯科技的broker服务器,用于接收订阅来自ESP32的消息,若能成功接收到消息则对后续信息的处理和可视化界面的显示编程,提供了只管重要的一步。

在这里插入图片描述
①我们再之前的教程中已经完成了Node-red环境的部署,可以点击链接查看博主的另一篇保姆级教学
Node-red环境搭建
然后安装成功后,在命令窗口启动node-red
在这里插入图片描述
②启动成功后,在界面找到MQTT组件,搭建一个简易的测试环境,用于测试能否成功连接至点灯科技的broker服务器,然后订阅来自ESP32发布的主题。
在这里插入图片描述
③我们需要对MQTT组件进行一些配置。
首先我们需要用之前新添加的设备密钥去通过mqtt协议去请求该URL,和之前的步骤一样,我们获取到一串JSON报文。
在这里插入图片描述
④我们再通过配置node-red上的MQTT来成功接入服务器
首先我们订阅来自ESP32的消息,将QoS等级设置为0:节省带宽,可靠性不高。其实设不设置这个级别对于我们这个小型项目的测试来说没有什么区别,而且消息在传递和转发的过程中遵循消息降级规则。
在这里插入图片描述
⑤然后我们按照之前返回的JSON报文设置一下服务器等参数
在这里插入图片描述
⑥再根据JSON报文设置一下,登录时用的用户名和密码
在这里插入图片描述
⑦对于遗嘱消息,连接时发送的消息,断开时发送的消息这些进阶内容,本次测试暂时不需要,这部分内容意义不是特别大对于小型项目,这能够提高通信的健壮性,所以我们这边都不填,然后点击更新。
在这里插入图片描述
⑧设置完成后再点击完成
在这里插入图片描述
⑨最后配置一下debug组件,完成后点击右上角部署按钮,完成配置和环境的搭建
在这里插入图片描述

在这里插入图片描述
⑩最后查看效果,可以看到node-red界面上的MQTT组件以及成功连接上了。
在这里插入图片描述

在点灯blinker手机APP端点击开关灯的按钮,同时观测手机APP的串口打印,MQTTX客户端的输出,Node-red的debug显示以及ESP32实际的制动效果。

Node-red端
在这里插入图片描述
PC机的MQTTX客户端所接收到的消息
在这里插入图片描述

点灯科技blinker手机APP端的串口打印
在这里插入图片描述
实际上硬件设施的在线状态
在这里插入图片描述

写在最后的话

写到这终于完成了手机端(APP点灯blinker)-PC端(Node-red)-设备端(ESP32)-客户端(MQTTX客户端)四者之间的通信——通过MQTT通信,经过博主潜心研究3天,水了各大群和官方群,请教了无数水友,系统的学习了一下MQTT,最终实现了PC端-移动端-设备端之间的通信,又爆肝近10小时写了这2篇保姆级教学,还有不懂得或者不明白的欢迎留言或者私信博主一起探讨!
对于热爱物联网的同学们,推荐几个学习物联网的平台,
①B站搜太极创客,讲的MQTT和物联网挺不错
②点灯科技,提供了很多组件和平台,开发者论坛也有大量学习资料
③然也物联网平台,不过该平台注册申请的时候需要回答3个基础问题并需要管理员审核,建议注册前先系统学习一下MQTT相关知识。

对于喜爱物联网,嵌入式开发的志同道合的同学们,有不懂的问题,或者对于博主写的不对的地方欢迎在评论区或者私信提问或者批评指正,人的成长都是在曲折的道路上磨砺出来的,愿你我未来可期!~

<think>好的,我现在需要帮助用户了解如何通过Blinker点灯科技实现向微信推送通知的功能。用户提到了微信推送通知、实现方式、文档和示例,我需要根据提供的引用资料来整理答案。 首先,查看用户提供的三个引用。引用[1]提到使用Blinker.wechat函数发送微信消息,并给出了示例代码。引用[2]和[3]主要涉及Blinker的初始化和APP通信,可能与微信推送相关,但需要确认。引用[3]中的示例可能对初始化部分有帮助。 接下来,我需要确定实现微信推送的具体步骤。根据引用[1],关键步骤是调用Blinker.wechat函数,并传递标题、状态和信息参数。然后,可能需要配置微信通知权限,确保用户绑定微信账号。此外,设备端需要正确初始化和连接Blinker服务,这部分可能需要参考引用[2]中的初始化步骤,比如设置Blinker.begin,绑定回调函数等。 需要注意的是,文档和示例的链接在引用[3]中提供了GitHub的示例代码链接,用户可能需要访问该链接查看完整示例。同时,引用[1]中的代码片段可以直接用于发送消息,但需要结合初始化部分才能正常工作。 可能的问题包括如何获取微信通知权限,Blinker.wechat的参数具体含义,以及如何处理发送后的反馈。此外,用户可能需要了解是否需要额外的硬件或软件配置,比如ESP8266的联网设置。 最后,生成相关问题,帮助用户深入理解,比如如何调试微信推送失败、如何发送更复杂的内容,以及如何确保消息的实时性等。</think>### 通过Blinker实现微信推送通知的步骤 #### 1. **功能实现核心方法** Blinker通过`Blinker.wechat()`函数直接向微信发送通知,需在代码中调用该函数并填入参数。格式为: ```cpp Blinker.wechat("标题", "状态", "消息内容"); //示例:Blinker.wechat("温度警报", "紧急", "当前温度超过30℃"); ``` 参数对应微信通知的三部分:标题(粗体显示)、状态(辅助描述)、消息内容(详细文本)[^1]。 #### 2. **设备端配置要求** - **硬件准备**:需支持WiFi的物联网设备(如ESP8266/ESP32- **初始化代码**: ```cpp #include <Blinker.h> void setup() { Blinker.begin(auth, ssid, password); // 填入设备密钥、WiFi名称和密码 Blinker.attachData(dataRead); // 绑定数据接收回调(可选) } void loop() { Blinker.run(); } ``` 需在Blinker APP中完成设备绑定并开启微信通知权限[^2][^3]。 #### 3. **微信服务绑定流程** 1. 在Blinker APP中进入设备控制页面 2. 点击右上角设置图标 → **通知设置** → 绑定微信账号 3. 扫描二维码完成授权绑定 4. 开启**微信通知**开关 #### 4. **完整示例代码** ```cpp #include <Blinker.h> char auth[] = "设备密钥"; // 从Blinker APP获取 char ssid[] = "WiFi名称"; char pass[] = "WiFi密码"; void setup() { Serial.begin(115200); Blinker.begin(auth, ssid, pass); Blinker.wechat("系统启动", "设备在线", "ESP8266已连接云"); // 上电通知 } void loop() { Blinker.run(); // 示例:温度超过阈值时发送警报 if (readTemperature() > 30) { Blinker.wechat("温度警报", "紧急", "当前温度:" + String(temp) + "℃"); delay(60000); // 限制发送频率 } } ```
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值