这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【NUCLEO-WBA55CG】蓝牙MQTT连接HomeAssistant

共3条 1/1 1 跳转至

【NUCLEO-WBA55CG】蓝牙MQTT连接HomeAssistant

菜鸟
2024-12-29 17:06:10     打赏

【NUCLEO-WBA55CG】蓝牙 MQTT 连接 Home Assistant

本文在前面关于开发板工程编译环境搭建及测试的基础上,进一步深入探讨该硬件与网络平台 Home Assistant 的连接,目标是实现开发板数据的网络访问,以及远程控制等功能的实现,以期拓展其物联网功能,为智能家居和智能工业的应用提供参考。

·项目简介

本项目基于 NUCLEO-WBA55CG 开发板官方例程进行二次开发。搭建 MQTT 协议传输平台,将开发板蓝牙传输信息发送至云端,并通过EMQX 平台发送至客户终端 Home Assistant,实现远程网络数据传输和访问。

·项目方法

1.开发板 NUCLEO-WBA55CG 烧录官方例程;

2.搭建 MQTT 协议传输平台,包括 EMQX 和 Home Assistant;

3.使用 MQTTX 软件测试连接状态

4.测试通过后,将数据发送至 Home Assistant 平台。

1 硬件准备

开发板、智能手机、Type-C 转 USB 数据线、Home Assistant 平台(树莓派 4 或 Docker)

2 工程上传

下载 示例工程压缩包,打开目标示例工程 BLE_HealthRate

工程路径为

Nucleo-WBA55CG\DocOfficial\STM32CubeWBA\Projects\NUCLEO-WBA55CG\Applications\BLE\BLE_HealthThermometer

工程主函数代码

#include "main.h"

ADC_HandleTypeDef hadc4;
CRC_HandleTypeDef hcrc;
RAMCFG_HandleTypeDef hramcfg_SRAM1;
RNG_HandleTypeDef hrng;
RTC_HandleTypeDef hrtc;
UART_HandleTypeDef huart1;
DMA_HandleTypeDef handle_GPDMA1_Channel1;
DMA_HandleTypeDef handle_GPDMA1_Channel0;

void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
static void SystemPower_Config(void);
int main(void)
{
  HAL_Init();
  MX_APPE_Config();
  SystemClock_Config();
  PeriphCommonClock_Config();
  SystemPower_Config();
  MX_GPIO_Init();
  MX_GPDMA1_Init();
  MX_RAMCFG_Init();
  MX_RTC_Init();
  MX_RNG_Init();
  MX_ICACHE_Init();
  ConfigureStandbyWakeupPins();
  MX_APPE_Init(NULL);
  while (1)
  {
    MX_APPE_Process();
  }
}

加载工程至开发板,短按 RESET 键重置并运行程序;

完整工程见附件。

3 终端连接

(1)智能手机应用终端需下载并安装开发板对应的无线蓝牙应用,以识别蓝牙设备,获取发送的传感器数据。

安装 通过 Docker 运行 EMQX 相关资料;

(2)命令行终端 CMD 运行如下指令

docker pull emqx/emqx:5.8.4
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.4

自动拉取、下载、部署至 Docker 并运行 EMQX 平台;

在任意目录创建 docker-compose.yml 文件

version: '3'

services:
  emqx1:
    image: emqx:5.8.4
    container_name: emqx1
    environment:
    - "EMQX_NODE_NAME=emqx@node1.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node1.emqx.io
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083 
    # volumes:
    #   - $PWD/emqx1_data:/opt/emqx/data

  emqx2:
    image: emqx:5.8.4
    container_name: emqx2
    environment:
    - "EMQX_NODE_NAME=emqx@node2.emqx.io"
    - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
    - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5
    networks:
      emqx-bridge:
        aliases:
        - node2.emqx.io
    # volumes:
    #   - $PWD/emqx2_data:/opt/emqx/data

networks:
  emqx-bridge:
    driver: bridge

通过命令行切换 docker-compose.yml 文件所在目录,并启动 EMQX 集群

cd C:/EMQX
docker-compose up -d

此时可在 Docker Desktop - Images 中找到 emqx/emqx5.8.4 镜像文件,通过指令

docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.4

即可装载运行 EMQX 平台。

(3)点击 Docker 容器 EMQX 设备链接,进入 EMQX 平台,

Docker_emqx.png

初始登录账户名和密码为 adminpublic

(4)建立和配置客户端信息

  • 依次打开 `访问控制` - `客户端认证` - `创建` - `Password-Based` - `内置数据库` - (默认配置)- `创建` ;

  • `用户管理` - `新建用户` - 自定义用户名和密码;

    回到平台主界面,可观察节点和连接数目等信息

    EMQX_pointEMQX_point.png

    观察信息流和连接状态以及数据传输情况,实现后台数据流监控

    EMQX_Group.png

3.部署Home Assistant 智能家居平台

这里我们介绍树莓派部署 Home Assistant 的主要流程

(1)下载 Home Assistant 镜像文件

https://github.com/home-assistant/operating-system/releases/download/14.1/haos_rpi4-64-14.1.img.xz

(2)使用 BalenaEther 软件加载镜像,并烧录至 SD 卡

Balena.png

提示烧录成功后,装载 SD 卡

Balena_overBalena_over.png

(3)浏览器输入 http://homeassistant:8123/ 即可进入 Home Assistant 系统界面

HA_Home.png

(4)添加 MQTT 集成

依次点击设置 - 设备与服务 - 添加集成 - 搜索 MQTT - 填写代理信息,

代理栏输入计算机 IP 地址,端口 1883,用户名和密码为 EMQX 中创建的用户信息;

创建成功后,可在 设备与服务 选项下看到 MQTT 应用图标;

(5)根据开发板蓝牙发送的信息格式,配置 YAML 参数

打开 Home Assistant 安装根目录下的 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_topicvalue_template 的定义。

开发者工具 界面 重新加载 YAML 所有配置 并刷新浏览器界面,即可看到 Heart Rate 传感器选项。

HA_HR70.png

5 连接测试

这里展示使用 MQTTX 软件进行连接测试的方案

(1)下载并安装 MQTTX 软件

(2)点击连接右侧的加号 - 新建连接,配置参数信息,服务器地址、端口、用户名、密码信息与 EMQX 中的客户端对应即可;

MQTTX_Group_ConnectorMQTTX_Group_Connector.png

点击 添加订阅 按钮,输入手机客户端配置的 Topic 信息,

MQTTX.png

点击连接按钮即可接收信息。

6 连接 Home Assistant

从接收到的信息条可知,每条消息包含三组数据,分别是心跳速率、能量扩散、测试间隔。

这里我们仅展示心跳速率的数据。

由于前面我们已经配置了 MQTT 集成参数,以及 configuration.yaml 文件,在 概况 界面即显示心跳速率信息。

HA_HR70.png



·项目成果

点击 Home Assistant 网页链接 http://homeassistant:8123/ ,进入传感器面板,即可观察到心跳速率的动态变化,更新时间间隔为 1 秒(可通过 ST BLE Sensor 应用调整采样速率)

HA_HR_70HA_HR_70.png

历史曲线,描述数据演化过程

HA_curve.png

动态效果展示

HA_HR_70HA_HR_70.gif

手机端安装 Home Assistant 应用也可获取相同信息。

HA_APP_HR_70.jpg

·总结

本文介绍了 NUCLEO-WBA55CG 开发板通过 MQTT 协议与 Home Assistant 智能家居平台的连接,关键在于 EMQX 平台、Home Assistant 的系统搭建。

在可预见的实际应用项目中,需要考虑成本及稳定性等指标,因此该项目还拥有较大的提升和改进空间。

此外,对于多传感器数据传输、低功耗传输等需求,还有待进一步开发和研究。


附件:

BLE_HeartRate.zip





关键词: NUCLEO-WBA55CG     蓝牙     Home As    

院士
2024-12-30 15:02:34     打赏
2楼

NUCLEO-WBA52CG 开发板通过 MQTT 协议与 Home Assistant 智能家居平台的连接,谢谢分享,学习了


专家
2024-12-30 21:48:07     打赏
3楼

感谢分享


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]