
智能家居物联网【免费下载链接】addons:heavy_plus_sign: Docker add-ons for Home Assistant项目地址https://gitcode.com/GitHub_Trending/add/addons点击查看免费下载CEC Scanner 是 Home Assistant 官方 add-ons 仓库中的一款轻量工具型应用在最新版本中已更名为 app即应用其唯一职责是扫描 HDMI 总线上的 CECConsumer Electronics Control消费电子控制设备并输出它们的物理地址与逻辑地址。本指南将基于 cec_scan/DOCS.md 展开完整覆盖安装、零配置使用、清单参数解读并结合仓库源码深入解析其底层实现libCEC 编译构建与cec-client扫描流程帮助你在几分钟内定位家中每一台 CEC 设备的地址为后续的 CEC 自动化与设备联动排查打好基础。一、CEC Scanner 是什么核心功能与适用场景HDMI 总线上的 CEC 协议允许设备之间通过一条低速通道互相控制例如电视遥控器直接控制功放音量、机顶盒开关等。要调试这类联动第一步往往是搞清楚总线上的设备都对应什么地址。CEC Scanner 正是为此设计的扫描并发现所有挂接在 HDMI 总线上的 CEC 设备输出每台设备的逻辑地址Logical Address与物理地址Physical Address帮助用户找到特定设备的 CEC 地址供 Home Assistant 中的hdmi_cec集成或脚本使用。从 README.md 的描述看它的定位非常纯粹Scan discover HDMI CEC devices and their addresses扫描并发现 HDMI CEC 设备及其地址并且对于查找设备的 CEC 地址非常有用。它不是一个常驻服务型插件而是一次性的诊断工具启动后执行一次扫描输出结果后即结束。二、安装 CEC Scanner在最新版的 Home Assistant 中此类组件已从 Add-ons插件更名为 Apps应用安装路径也随之调整。按照 cec_scan/DOCS.md 的官方步骤在 Home Assistant 前端进入设置Settings应用Apps安装应用Install app在应用列表中查找CEC Scanner并点击进入点击INSTALL安装按钮等待安装完成。安装前建议确认你的设备架构受支持。根据 cec_scan/config.yaml当前版本4.0仅支持aarch64与amd64两种架构在 4.0 版本中官方已移除对armhf、armv7、i386的支持详见 CHANGELOG.md。如果你的 Home Assistant 运行在 Raspberry Pi 4/564 位系统、x86_64 主机或等效架构上即可直接安装。三、使用零配置、开箱即用CEC Scanner 是仓库中极少数没有任何配置项的应用之一。cec_scan/DOCS.md 明确说明This app has no configuration and runs out of the box.本应用无任何配置开箱即用。使用流程同样简单启动应用Start the app查看应用日志输出Check the app log output to see the result扫描结果会直接打印在日志中。由于它的启动模式是运行一次即退出见下文清单解析你不需要保持它常驻运行也不需要配置任何端口、凭据或选项——安装完成后只需启动并读取日志即可得到完整的 CEC 设备清单。四、为什么没有配置应用清单config.yaml逐项解析无配置并非偷懒而是通过应用清单文件 cec_scan/config.yaml 的字段设计明确表达的。该文件是 add-on/app 清单Supervisor 读取的核心元数据全文如下version: 4.0 slug: cec_scan name: CEC Scanner url: https://github.com/home-assistant/addons/tree/master/cec_scan arch: - aarch64 - amd64 boot: manual description: Scan for HDMI CEC devices image: homeassistant/{arch}-addon-cec_scan options: {} schema: {} startup: once video: true init: false各字段的含义与影响字段值含义与影响version4.0应用版本号对应 CHANGELOG.md 中的 4.0 发布记录slugcec_scan唯一标识符用于 Supervisor 内部管理与文件命名archaarch64,amd64支持的 CPU 架构白名单其他架构无法安装bootmanual启动策略为手动不会随 Supervisor/系统自动拉起需用户显式启动options{}用户可配置选项为空即应用没有任何可调参数schema{}配置校验结构为空与空options呼应彻底免去配置环节startuponce启动类型为运行一次扫描完成后服务退出videotrue请求 Supervisor 授予视频设备/dev/video*访问权限这是 CEC 硬件访问的前提initfalse应用不提供 init 服务进一步印证其一次性工具属性其中video: true是关键HDMI CEC 硬件如树莓派的 CEC 内核驱动通常以视频类设备的形式暴露在系统中应用需要访问/dev/video*才能与 CEC 总线通信。这一点在 CHANGELOG.md 的 2.4 版本记录中也有印证Use newvideofeature of Supervisor 199即从 2.4 版本起开始使用 Supervisor 199 提供的 video 特性来申请设备权限。五、底层实现剖析从编译 libCEC 到一次scan5.1 镜像构建从源码编译 libCEC应用本身不含业务代码其扫描能力全部来自开源库libCECPulse-Eight/libcec。镜像构建过程在 Dockerfile 中清晰可见# Build libcec for HDMI-CEC ARG LIBCEC_VERSION WORKDIR /usr/src RUN \ apk add --no-cache \ eudev-libs \ p8-platform \ apk add --no-cache --virtual .build-dependencies \ build-base \ cmake \ eudev-dev \ git \ p8-platform-dev \ swig \ linux-headers \ git clone --depth 1 -b libcec-${LIBCEC_VERSION} \ https://github.com/Pulse-Eight/libcec libcec \ mkdir -p libcec/build \ cd libcec/build \ cmake \ -DCMAKE_INSTALL_PREFIX:PATH/usr/local \ -DHAVE_LINUX_API1 \ .. \ make -j$(nproc) \ make install \ apk del --no-cache .build-dependencies \ rm -rf /usr/src/*关键点基础镜像基于BUILD_FROM由 Home Assistant 构建系统注入的 Alpine Linux 基础镜像构建运行时只保留eudev-libs与p8-platform两个动态库依赖编译依赖通过build-base、cmake、eudev-dev、p8-platform-dev、swig、linux-headers等构建依赖完成编译编译结束后用apk del全部清理保证最终镜像体积精简C 语言适配cmake阶段显式指定-DHAVE_LINUX_API1强制启用 libCEC 的 Linux 原生 API 适配层。结合 CHANGELOG.md 3.0 版本记录 Using the Upstream Linux support only仅使用上游 Linux 支持可以推断当前版本不再依赖平台厂商的私有 CEC 库而统一走 Linux 内核原生 CEC 接口从而在 aarch64/amd64 上获得一致的扫描行为版本管理ARG LIBCEC_VERSION由构建系统传入当前 4.0 版本对应的 libCEC 版本为7.1.1见 CHANGELOG.md 4.0 记录 Update libCEC to 7.1.1。5.2 扫描执行run 脚本中的一行命令应用真正的扫描逻辑只有一行位于服务启动脚本 rootfs/etc/services.d/cec-scan/run#!/usr/bin/with-contenv bashio # Start CEC scan service bashio::log.info Starting CEC client scan... echo scan | cec-client -s -d 1解析这行命令echo scan |向cec-client的标准输入写入scan指令触发一次完整的 CEC 总线扫描cec-clientlibCEC 自带的命令行客户端工具负责与 CEC 适配器通信-s从命令语义看表示扫描完成后即退出静默模式与startup: once的运行一次设计完全吻合-d 1将调试日志级别设为 1减少无关输出让设备清单更容易从日志中辨认。扫描产生的设备地址列表逻辑地址、物理地址以及设备厂商与型号信息会全部输出到应用日志中这正是 DOCS.md 要求查看日志输出的原因——日志就是该应用唯一的输出界面。5.3 生命周期管理S6 监督树与自动收尾容器内采用 s6-overlay 监督体系3.0 版本起引入见 CHANGELOG.md 记录 Using s6-overlay style。当扫描命令执行完毕后rootfs/etc/services.d/cec-scan/finish 脚本会接管收尾工作#!/usr/bin/env bashio # Take down the S6 supervision tree when service is done /run/s6/basedir/bin/halt它显式调用 s6 的halt指令关闭整个监督树确保应用不会扫描完还空转从而配合startup: once实现启动 → 扫描 → 输出 → 退出的完整一次性生命周期。六、架构支持与版本演进通过 CHANGELOG.md 可以完整追溯 CEC Scanner 的能力演进也能帮助你判断当前版本的行为预期1.0首次支持 Raspberry Pi 64 位libCEC 升级到 4.0.32.0改用 Alpine 原生的树莓派 64 位库2.1补充 README精简 armhf/aarch64 镜像体积改善 armv7 支持2.2修复树莓派上偶发的 autodetect FAILED 问题由 2.1 引入升级到 Alpine 3.112.3新增对 Meson AOCEC、EXYNOS 以及 Linux 原生 CEC 的支持2.4使用 Supervisor 199 的video特性申请视频设备访问权限3.0只保留上游 Linux 支持全面切换为 s6-overlay 风格升级到 Alpine 3.144.0移除 armhf、armv7、i386 架构支持升级到 Alpine 3.23libCEC 升级到 7.1.1。从演进脉络可以推断当前版本聚焦于 aarch64/amd64 两类现代架构并通过 Linux 内核原生 CEC 接口获得跨平台一致的扫描行为如果你仍在使用 32 位设备则需要选择 3.0 及更早版本注意早期版本的 libCEC 与 Alpine 版本较旧。七、常见问题与支持渠道扫描不到任何设备首先确认 HDMI 线缆与设备之间的 CEC 已启用多数电视需在设置中开启 HDMI-CEC 功能并确认运行环境满足video: true对应的设备访问权限其次确认设备架构在支持列表内。如何再次扫描由于startup: once设计每次扫描都需要手动重新启动应用这是预期行为并非异常。获取帮助按照 cec_scan/DOCS.md 的说明你可以在 Home Assistant 官方的 Discord 聊天社区、Home Assistant 社区论坛以及 Reddit 的 r/homeassistant 子版块提问如果确认是应用本身的缺陷可以在项目仓库中提交 issue附上完整的应用日志与硬件信息便于维护者定位问题。结语CEC Scanner 用一个极简的零配置 运行一次 看日志模型把 HDMI CEC 设备发现这件事做到了极致简单安装、启动、读日志三步即可拿到完整的 CEC 设备地址清单。通过阅读 Dockerfile 与 run 脚本你可以清楚地看到它背后是 libCEC 7.1.1 的 Linux 原生支持与一行echo scan | cec-client -s -d 1的精简实现——这正是 Home Assistant 官方 add-ons 仓库小工具解决大问题风格的典型代表。赞分享智能家居物联网【免费下载链接】addons:heavy_plus_sign: Docker add-ons for Home Assistant项目地址https://gitcode.com/GitHub_Trending/add/addons点击查看免费下载相关推荐CEC Scanner 版本演进与实现解析用 Home Assistant App 扫描 HDMI CEC 设备地址CEC Scanner 版本演进与实现解析用 Home Assistant App 扫描 HDMI CEC 设备地址 CEC Scannerslug: ce智能家居物联网Home Assistant HDMI-CEC Update 动作详解刷新总线设备状态与自动化实战Home Assistant HDMI CEC Update 动作详解刷新总线设备状态与自动化实战 本篇技术指南围绕 Home Assistant 中 HDM文档教程智能家居物联网Arduino ESP32 开发环境 3 步装好Arduino ESP32 开发环境 3 步装好 板子到手开发板管理器转了两圈就弹出下载失败——先别急着反复点安装。Arduino ESP32 开发环境嵌入式物联网驱动开发上一篇claude-task-master 的 Kiro Hook 驱动工作流用自动化钩子替代手动任务管理下一篇LeRobot 中的 GR00T N1.7跨本体策略架构解析与 Original-vs-LeRobot 一致性验证创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考