百宝箱 IoT 如何控制智能灯具

简介: 本文介绍基于ESP32S3实现蚂蚁公仔与博联智能灯的BGM灯效联动方案,涵盖蓝牙配对、音频波幅控制指令发送等关键技术,结合服务端PCM流处理,打造沉浸式IoT互动体验。

ESP32-S3 作为主流的 IoT 主控 MCU(微控制器),集成了完整的 Bluetooth5.0 和 4.2 技术栈,可基于蓝牙协议与其他 IoT 设备构建多样化的交互场景。本文将介绍如何实现通过蚂蚁公仔实现智能灯具的控制。

效果展示

下方视频为蚂蚁公仔与博联智能灯具间的交互效果。

此处为语雀视频卡片,点击链接查看:音乐播放_BGM氛围灯.mp4

实现流程

当用户对蚂蚁公仔说出“播放音乐”时:

  • 蚂蚁公仔接收语言并发送至百宝箱开放平台;
  • 平台进行意图识别,确认为“播放音乐”请求;
  • 触发音频串联,同时提取音频波幅信息;
  • 将 TTS 语音数据返回给蚂蚁公仔,用于语音反馈;
  • 向博联灯具发送蓝牙音控指令,实现灯光随音乐节奏变化。

配置服务端

背景音乐(BGM)由服务端负责播放,并通过 TTS 音频通道进行串流传输。在此过程中,系统实时提取 PCM 流的波幅数据,并将其量化至 0-127 的整数范围。相关实现代码暂未开源,可通过接入百宝箱开放平台的 IoT 板块调用该能力。

配置 ESP32 设备端

源码中各文件的能力如下图所示。

开启配对

在 WiFi 连接的情况下,通过下述代码实现蓝牙的配对。

wifi_station.OnConnected([this](const std::string& ssid) {
    ...
    if (Board::GetInstance().GetIBeacon() != nullptr) {
        Board::GetInstance().GetIBeacon()->StartPairing();
    }
});

⚠️ 注意:

StartPairing() 不仅用于设备配对(将新设备归属到当前家庭),也是发送 BGM 音控指令的前提。该函数会初始化蓝牙协议栈并完成与设备的专有协议协商,每次操作前必须调用

发起音控

当收到服务端下发的、与 TTS 音频流同步的音乐波幅值(实际为串流音乐的幅度数据)时,向已配对的博联设备发送蓝牙幅度控制指令。实现代码如下所示。

protocol_->OnIncomingJson([this, display, &board](const cJSON* root) {
    auto type = cJSON_GetObjectItem(root, "type");
    if (strcmp(type->valuestring, "music") == 0) { // music 类型为伴随服务端音乐串流的波幅值
        auto amplitude = cJSON_GetObjectItem(root, "amplitude");
        if (cJSON_IsNumber(amplitude)) {
            if (board.GetIBeacon() != nullptr) {
                board.GetIBeacon()->ControlPeerDevice(amplitude->valueint % 128, 1, 1);
            }
        } else {
            ESP_LOGW(TAG, "amplitude type is not a number");
        }
    }
相关文章
|
5月前
|
传感器 运维 监控
中小容量电力设备选型指南:计量型免维护呼吸器的核心价值
针对35kV-500kV中小容量变压器等设备,计量型免维护呼吸器集成高效吸湿、实时监测与智能预警功能,标配工业显示屏与RS485通讯,支持远程监控与系统接入,实现防潮运维从“被动处置”到“主动防控”升级,适配多种环境与协议,降低运维成本,提升供电可靠性。(239字)
259 0
|
6月前
|
存储 JavaScript API
百宝箱开放平台 ✖️ Node.js SDK
开发者可以通过安装 Node.js SDK 的方式将百宝箱的 OpenAPI 集成到自有系统中,从而在外部系统中发起智能体对话。
377 0
百宝箱开放平台 ✖️ Node.js SDK
|
SQL 运维 监控
【巡检问题分析与最佳实践】MongoDB 磁盘IO高问题
阿里云数据库MongoDB的IOPS使用率是一个非常重要的监控指标,IOPS使用率达到或接近100%后容易引起业务响应缓慢,甚至导致业务不可用的情形。一般云数据库厂商为了避免宿主机出现IO争抢,会使用Cgroup等技术进行实例间的IO隔离和IOPS限制,即不同规格的实例配置对应不同的IOPS使用上限。
【巡检问题分析与最佳实践】MongoDB 磁盘IO高问题
|
6月前
|
搜索推荐 API 开发工具
百宝箱开放平台 ✖️ Python SDK
百宝箱提供Python SDK,支持开发者集成其开放能力。需先发布应用,安装Python 3.6+环境后,通过pip安装tboxsdk,即可调用对话型、生成型智能体及文件上传等功能。
909 87
百宝箱开放平台 ✖️  Python SDK
|
5月前
|
存储 Kubernetes 数据库
K3S ——轻量化K8S 入门指南
本文介绍轻量级Kubernetes发行版K3s,适用于边缘计算、IoT等场景。涵盖其架构、安装部署(单节点/高可用/离线)、核心组件、网络存储配置及生产建议,助力快速构建轻量化容器平台。
1189 5
|
6月前
|
自然语言处理 开发工具 Android开发
百宝箱开放平台 ✖️ 友盟+ SDK 接入准备
开发者可通过集成SDK,将百宝箱智能体接入友盟App,实现智能答疑与数据分析。本文详述在友盟创建App、获取Appkey,及在百宝箱创建智能体、获取TboxAgentID的完整流程,并提供iOS与Android平台集成指引,助力提升应用智能化服务能力。(239字)
287 0
百宝箱开放平台 ✖️ 友盟+ SDK 接入准备
|
6月前
|
API 开发工具 开发者
百宝箱开放平台 ✖️ Web SDK
本服务支持开发者将智能体以网页悬浮窗形式集成至Web页面,通过引入SDK并配置agentId等参数实现交互,需先完成应用发布。
332 0
|
canal 缓存 NoSQL
面试官,如何保证缓存与数据库的数据一致性
面试官,如何保证缓存与数据库的数据一致性
|
4月前
|
存储 人工智能 Java
面试回答示例篇(重点)
结合黑马《天机AI》项目,详解SpringAI、LangChain4J、RAG、Tool Calling、MCP等核心技术。涵盖智能体设计、大模型选型、私有化部署、流式输出、上下文管理及大模型幻觉解决方案,助力Java开发者快速掌握企业级AI应用开发要点。(238字)
426 0
|
5月前
|
缓存 Rust 前端开发
深入理解 Webpack 与 Vite 的构建差异与性能边界
本文深入对比 Webpack 与 Vite 的构建原理与性能差异。Webpack 采用“打包优先”策略,功能强大但启动慢;Vite 基于原生 ESM 实现“按需编译”,显著提升开发效率,冷启动和 HMR 速度远超 Webpack。生产环境下 Vite 凭借 esbuild 和 Rollup 生成更小体积、更快构建。二者在生态、配置、资源消耗等方面各有优劣,适用于不同场景。新项目推荐优先考虑 Vite,追求极致开发体验;大型复杂项目仍可选用 Webpack。理解其核心差异是优化构建流程的关键。
987 1