WLED 怎么把 Temperature usermod 加进固件?在 platformio_override.ini 里配置 custom_usermods

发布时间:2026/9/14 6:39:59
WLED 怎么把 Temperature usermod 加进固件?在 platformio_override.ini 里配置 custom_usermods WLED 怎么把 Temperature usermod 加进固件在 platformio_override.ini 里配置 custom_usermods【免费下载链接】WLEDControl WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!项目地址: https://gitcode.com/GitHub_Trending/wl/WLEDWLED 的源码仓库自带一个 Temperature usermod它读取外接的 DS18B20 温度传感器把温度显示在 Web UI 的 Info 区域并在启用时发布到/temperatureMQTT 主题。但它没有包含在现成的 OTA 固件里必须自己从源码编译。本文以 ESP32 的esp32dev环境为例说明如何在platformio_override.ini里通过custom_usermods把 Temperature usermod 编译进固件以及怎么确认它真的链接进去了。前提条件已克隆 WLED 源码仓库后续所有路径都相对仓库根目录。安装好 PlatformIOpio命令可用和 Node.jsWeb UI 构建需要。硬件上有一个接线好的 DS18B20 传感器。注意 usermods/Temperature/readme.md 中的说明如果启动时检测不到传感器这个 usermod 会自动禁用固件仍然正常编译运行。Temperature usermod 的库名和依赖定义在 usermods/Temperature/library.json 中name字段为Temperature并依赖paulstoffregen/OneWire ~2.3.8。这个name就是后面写进custom_usermods的值两者必须一致。关键机制custom_usermods 是 env 级别的键不是 build_flagplatformio.ini通过extra_configs加载platformio_override.ini该文件仓库默认不带需要用样例文件复制生成extra_configs platformio_override.ini platformio_release.iniplatformio_override.sample.ini 中的注释明确了配置规则custom_usermods是 env 小节里的一个独立键不能写进build_flags多个 usermod 之间用空格分隔名称来自各 usermod 的library.json的name字段。编译时 pio-scripts/load_usermods.py 会解析custom_usermods的每一项纯名称会在usermods/目录下查找对应文件夹_v2后缀和usermod_v2_前缀可以省略找不到就报Couldnt locate module 名称 in usermods directory!使构建失败然后把该目录以symlink://形式注入lib_deps参与编译。Temperature 的目录实际叫usermods/Temperature写Temperature即可。配置 platformio_override.ini在仓库根目录把样例文件复制为实际生效的文件cp platformio_override.sample.ini platformio_override.ini然后在platformio_override.ini里新增一个 env 小节。Temperature 文档给出的示例是继承esp32dev环境、保留其原有 usermods 并追加Temperature[env:usermod_temperature_esp32dev] extends env:esp32dev custom_usermods ${env:esp32dev.custom_usermods} Temperature写法说明extends env:esp32dev继承 platformio.ini 中esp32dev环境的平台、分区表、库依赖等只定义差异项。esp32dev环境自身的custom_usermods是audioreactive所以用${env:esp32dev.custom_usermods}先把它带上再追加Temperature。如果你不需要 audioreactive把这一项去掉、只保留Temperature即可。custom_usermods的值可以写在同一行也可以像上面那样换行续写每行一个名称空行和;/#开头的注释行会被跳过。如果你构建的是其他目标环境例如 platformio_override.sample.ini 里自带的esp32dev_dio80或 ESP8266 的esp01_1m_full把extends和变量引用换成对应环境即可写法不变。样例文件注释中还有为 DS18B20 指定 GPIO 的示例可选在build_flags中加-D TEMPERATURE_PIN13数字换成你实际接线的 GPIO。不配置时引脚在运行时设置页指定。platformio_override.sample.ini 中还有现成的完整参考如wemos_shield_esp32环境custom_usermods ${env:esp32dev.custom_usermods} Temperature four_line_display_ALT ... -D TEMPERATURE_PIN23想同时加多个 usermod在同一行继续用空格追加名称即可例如Temperature four_line_display_ALT。构建固件AGENTS.md 规定构建固件前必须先构建 Web UI因为它会生成固件编译所需的 C 头文件npm ci npm run build pio run -e usermod_temperature_esp32dev如果你把自定义环境名写进了文件顶部的[platformio]段default_envs也可以直接pio run而不带-e用-e指定环境名更明确避免误编译默认环境。构建耗时以分钟计AGENTS.md 中标注pio run约 5 分钟超时。清理构建产物的命令是pio run --target clean。验证 usermod 已编入固件构建链里有两个内置检查构建日志中都能直接看到pio-scripts/load_usermods.py 会强制检查 usermod 的library.json含build: {libArchive: false}否则直接终止构建并报ERROR: libArchivefalse is missing on usermod(s) ...。Temperature 的 library.json 已包含该字段正常构建不会触发。pio-scripts/validate_modules.py 在链接完成后校验每个 usermod 的符号确实出现在最终 ELF 和 map 文件中构建日志会出现如下形式的输出INFO: N libraries included as WLED optional/user modules INFO: N usermod object entries found INFO: Code from usermod libraries found in binary: Temperature如果某 usermod 的符号没进链接结果脚本会报ERROR: No symbols from [...] found in linked output!并使构建失败。构建成功且日志中出现 Temperature即说明该 usermod 已正确链接进固件构建成功本身也说明usermods/目录下找到了对应文件夹且名称拼写正确。把固件烧录到开发板并联网后Temperature 的运行时效果是温度出现在 Web UI 的 Info 区域如果启用了 MQTT则发布到/temperature主题。传感器未接入时不会报错usermod 自身禁用Info 页会显示距离首次读取还有多少秒而非传感器错误。常见问题排查现象原因与处理构建报Couldnt locate module Temperature in usermods directory!custom_usermods里的名称在usermods/下找不到对应目录。检查拼写是否与 usermods/Temperature/library.json 的name一致_v2后缀可省略但Temperature本就没有后缀。加了配置但固件里没有 usermod 生效确认custom_usermods写在 env 小节的独立键中而不是混进build_flags确认它属于你实际用-e编译的那个环境。构建报ERROR: libArchivefalse is missing on usermod(s) ...该 usermod 的library.json缺少build: {libArchive: false}模块无法正确链接。用仓库内 usermod 时一般已具备外部自写的 usermod 需自行补上。板上 Info 页没有温度、MQTT 无/temperature优先检查 DS18B20 是否接好并上电文档明确传感器启动时未检测到则 usermod 自动禁用。引脚可用-D TEMPERATURE_PINGPIO在构建时固定或在运行时 Usermods 设置页配置。运行时配置与限制编译期可选宏USERMOD_DALLASTEMPERATURE_MEASUREMENT_INTERVAL单位为毫秒默认 60000 ms60 秒即两次测量之间的间隔。引脚、摄氏/华氏、测量间隔等参数都可以在运行时的 Usermods 设置页修改不必每次改 ini 重新编译。usermods/readme.md 提醒WLED 版本更新后 usermods 可能失效且仓库内 usermod 由各自作者维护升级固件后如遇 Temperature 编译失败需要以新版本为准调整该 usermod。配置完成后的结果很明确pio run成功且 validate_modules 日志列出 Temperature固件烧录后 Info 页出现温度读数——这两点满足即代表 Temperature usermod 已成功加入你的 WLED 固件。【免费下载链接】WLEDControl WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!项目地址: https://gitcode.com/GitHub_Trending/wl/WLED创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考