#申请原创#
【STM32WB09KE测评】蓝牙通信与 MQTT 协议传输实现 Home Assistant 显示本文介绍了如何使用 Nucleo-WB09KE 开发板实现蓝牙数据传输,通过手机端 APP 和 MQTT 通信协议将数据转发至 EMQX 云平台并显示在 HomeAssistant 界面。 项目简介1.烧录程序至开发板; 2.使用手机 APP 连接蓝牙射频信号,并打开 Cloud MQTT 通信协议; 3.安装 Docker 容器、部署 EMQX 平台和 Home Assistant 智能家居平台; 4.建立 MQTT 通信协议并测试。 程序上传1.打开并加载例程 BLE_HeartRate ,重新构建工程,烧录至开发板; 2.Android 或 iOS 设备上打开蓝牙通信,安装并打开 ST BLE Sensor 应用程序, 3.点击下方的刷新按钮,识别出 Nucleo WB09KE 开发板 HR_0D,名称为 Heart Rate 心率缩写 HR, 4.点击连接该蓝牙选项,界面包含三个模块:心率、Textual Monitor 文本显示器、云 MQTT 协议 Cloud MQTT ,
其中 Heart Rate 选项包含皮肤接触、部位、射频间隔时间三项信息,下方分别为心跳速率曲线与能量消耗曲线,单位 blows per minute (bpm) 表示每分钟的击打次数,即心率。 注意到这里后面两项 文本显示器 和 Cloud MQTT 为灰色被锁状态,点击解锁,选择开发者模式即可。 Textual Monitor点击文本显示器,打开接收按钮,即可看到数据包以文字形式打印到窗口屏幕
在使用 Cloud MQTT 之前,首先介绍 MQTT 通信协议 MQTT 通信实现数据上传的大致思路为 手机 APP 通过蓝牙连接开发板,开发板传输数据至客户端,APP 通过 MQTT 协议将数据消息发送至 EMQX 服务器平台,即 MQTT Broker,之后分发至各接收端,Home Assistant 作为接收端显示数据。 简介包括 MQTT、EMQX、Home Assistant (HA)。 MQTTMQTT(Message Queuing Telemetry Transport)即消息队列遥测传输协议,是一种基于 publish/subscribe (发布/订阅) 模式的 轻量级 通讯协议,适用于资源受限的设备下使用,特别是嵌入式领域。该协议构建于 TCP/IP 协议上,由 IBM 在1999年发布。 MQTT 最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务 。
MQTT 工作流程 客户端建立连接 客户端发布消息,或订阅主题以接收消息 MQTT Broker 接收发布的信息
EMQXEMQX 是一款全球下载量超千万的大规模分布式物联网 MQTT 服务器,单集群支持 1 亿物联网设备连接,消息分发时延低于 1 毫秒。为高可靠、高性能的物联网实时数据移动、处理和集成提供动力,助力企业构建关键业务的 IoT 平台与应用。 Home AssistantHome Assistant 家庭助理,HA,是一款基于 Python 的智能家居开源系统,可以方便地连接各种外部设备,如智能设备、摄像头、邮件、短消息、云服务等,支持众多品牌的智能家居设备,按照自己的需求手动或自动化地联动这些外部设备,构建随心所欲的智慧空间。 安装部署1.Docker 容器下载和安装;(详见:MQTT 协议接入 Home Assistant , 注意需要 BIOS 开启 Intel VT 功能才能安装 WSL 2,进而为 Docker 提供 Linux 运行环境) 2.本地 EMQX 安装部署于 Docker; 3.Home Assistant 安装部署于 Docker 容器;
测试1.Docker 容器中启动 EMQX 和 HA; 2.打开 EMQX 主页链接, 依次打开 访问控制 - 客户端认证 - 创建 - Password-Based - 内置数据库 - (默认配置)- 创建 ; 3.用户管理 - 新建用户 - 自定义用户名和密码; 4.打开 HA 链接,依次点击设置 - 设备与服务 - 添加集成 - 搜索 MQTT - 填写代理信息,代理栏输入计算机 IP 地址,端口 1883,用户名和密码为 EMQX 中创建的用户信息; 5.使用 MQTTX 软件测试通信, 新建连接,输入服务器电脑 IP 地址,用户名和密码,其他自定义即可。点击 添加订阅 ,根据手机 APP 定义的设备名以及发送的数据包结构定义主题 Topic,如 phone_ljl/Heart Rate ,其他选项默认即可;
6.手机应用端设置 MQTT 协议参数并启动,在 MQTTX 对话界面每隔 1 秒接收到一条 JSON 消息。 Cloud MQTTAPP 扫描蓝牙设备并连接,点击进入 Cloud MQTT 选项,输入 IP 地址、端口 1883、自定义用户名、密码和设备ID,即通信主题,点击上传,此时设备尝试与服务器连接,
打开传输数据选项 Heart Rate 控制开关,此时 Publish Sensor 开始发送消息至 EMQX 服务器平台。 Home Assistant连接 HA 前需要对 YAML 配置文件进行修改,打开 configuration.yaml 并添加如下代码,
# Example configuration.yaml entry
mqtt:
sensor:
- name: "Heart Rate"
state_topic: "phone_ljl/Heart Rate"
suggested_display_precision: 1
unit_of_measurement: "bmp"
value_template: "{{ value_json.heart_rate_measurement }}"
需要注意主题 state_topic 和 value_template 的定义。 在 开发者工具 界面 重新加载 YAML 所有配置 并刷新浏览器界面,即可看到 Heart Rate 传感器选项。 HA 在浏览器中的界面显示效果
依次进入 概况 - 传感器 - Heart Rate 选项,即可获取当前心率以及历史记录曲线。 HA 在 Android/iOS 设备的界面显示效果
|