百宝箱 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");
        }
    }
相关文章
|
3月前
|
传感器 运维 监控
中小容量电力设备选型指南:计量型免维护呼吸器的核心价值
针对35kV-500kV中小容量变压器等设备,计量型免维护呼吸器集成高效吸湿、实时监测与智能预警功能,标配工业显示屏与RS485通讯,支持远程监控与系统接入,实现防潮运维从“被动处置”到“主动防控”升级,适配多种环境与协议,降低运维成本,提升供电可靠性。(239字)
178 0
|
4月前
|
搜索推荐 API 开发工具
百宝箱开放平台 ✖️ Python SDK
百宝箱提供Python SDK,支持开发者集成其开放能力。需先发布应用,安装Python 3.6+环境后,通过pip安装tboxsdk,即可调用对话型、生成型智能体及文件上传等功能。
831 87
百宝箱开放平台 ✖️  Python SDK
|
4月前
|
自然语言处理 开发工具 Android开发
百宝箱开放平台 ✖️ 友盟+ SDK 接入准备
开发者可通过集成SDK,将百宝箱智能体接入友盟App,实现智能答疑与数据分析。本文详述在友盟创建App、获取Appkey,及在百宝箱创建智能体、获取TboxAgentID的完整流程,并提供iOS与Android平台集成指引,助力提升应用智能化服务能力。(239字)
186 0
百宝箱开放平台 ✖️ 友盟+ SDK 接入准备
|
4月前
|
存储 JavaScript API
百宝箱开放平台 ✖️ Node.js SDK
开发者可以通过安装 Node.js SDK 的方式将百宝箱的 OpenAPI 集成到自有系统中,从而在外部系统中发起智能体对话。
262 0
百宝箱开放平台 ✖️ Node.js SDK
|
4月前
|
API 开发工具 开发者
百宝箱开放平台 ✖️ Web SDK
本服务支持开发者将智能体以网页悬浮窗形式集成至Web页面,通过引入SDK并配置agentId等参数实现交互,需先完成应用发布。
237 0
|
3月前
|
传感器 算法 物联网
基于UWB和蓝牙信标的医院人员精准定位技术从原理到应用详解
本文介绍基于UWB与蓝牙Beacon的医院人员精准定位技术,融合物联网低功耗、智能感知优势,实现高精度实时定位。通过部署信标与基站,采集信号并结合自研算法解算位置,支持实时监测、智能预警、数据分析及视频联动,提升智慧医疗与疫情防控能力,助力医院智能化管理。
基于UWB和蓝牙信标的医院人员精准定位技术从原理到应用详解
|
3月前
|
缓存 Rust 前端开发
深入理解 Webpack 与 Vite 的构建差异与性能边界
本文深入对比 Webpack 与 Vite 的构建原理与性能差异。Webpack 采用“打包优先”策略,功能强大但启动慢;Vite 基于原生 ESM 实现“按需编译”,显著提升开发效率,冷启动和 HMR 速度远超 Webpack。生产环境下 Vite 凭借 esbuild 和 Rollup 生成更小体积、更快构建。二者在生态、配置、资源消耗等方面各有优劣,适用于不同场景。新项目推荐优先考虑 Vite,追求极致开发体验;大型复杂项目仍可选用 Webpack。理解其核心差异是优化构建流程的关键。
501 1
|
3月前
|
JSON 数据挖掘 API
闲鱼商品列表API秘籍!轻松获取列表数据
闲鱼商品列表API(Goodfish.item_list)基于RESTful架构,支持GET请求,返回JSON格式数据,可获取商品标题、价格、图片、卖家信息等,适用于电商比价与数据分析,助力开发者高效集成闲鱼商品数据。
|
编解码 物联网 iOS开发
百宝箱 IoT 如何定制设备 UI
本文介绍圆屏设备UI适配实践,基于xiaozhi框架定制Display模块,结合LVGL实现GIF动画背景与布局优化,并通过工具链压缩资源、提升性能,适用于嵌入式场景的圆形屏幕显示方案。
404 0
|
3月前
|
编解码 人工智能 安全
百宝箱 IoT 如何定制动画
本文档指导开发者定制动画及主题,涵盖动画文件命名、使用场景、分辨率适配(如160x160px)、尺寸压缩脚本(gifsicle/ImageMagick)及字体背景配置,助力高效开发。
244 0