3步把垃圾收运日程搬进 Home Assistant:Waste Collection Schedule 完整上手指南
【免费下载链接】hacs_waste_collection_scheduleHome Assistant integration framework for (garbage collection) schedules项目地址: https://gitcode.com/GitHub_Trending/ha/hacs_waste_collection_schedule
你有没有过这种经历:忘了哪天收垃圾,桶被扣上一张罚单,或者大清早被收运车按喇叭提醒?Home Assistant 集成框架 Waste Collection Schedule 专门解决这个问题:它按天自动抓取你所在地区的垃圾收运日程,直接填进 HA 内置日历,还能生成"下次收运日期""还剩几天"这类传感器,让你一开门就能在仪表盘上看见答案。全文按"找数据源 → 装组件 → 配实体"三步走,配完重启一次 HA 即可生效。
它是怎么工作的:先搞懂 source 和 sensor 两个概念
Waste Collection Schedule 内部由两类配置组成,理解这两个词,后面的配置就不会迷糊:
- source(数据源):负责从服务商的网页或 ICS 文件(一种通用的日历文件格式)里把日程抓出来。它需要你的地址、街道、地区等参数,相当于"告诉系统去哪查、查谁的"。
- sensor(传感器):负责把抓到的数据变成 HA 里的实体,比如显示垃圾类别、下次收运日期、距今天数。你可以在卡片或弹窗里自由定制它的展示方式。
集成会在每天固定时间(默认凌晨 1 点,见 doc/installation.md)向服务商轮询一次数据,所以不需要你手动刷新。
第一步:找到你的垃圾收运服务商
目的:确认你的地区在支持列表里,拿到 source 的名字和参数说明。
操作:打开仓库的 README.md 翻到 "Supported Service Providers" 一节,按国家找到你所在地区的条目,点进对应文档页查看该 source 需要哪些args参数。仓库里目前有 1000 多个 source 文档(custom_components/waste_collection_schedule/waste_collection_schedule/),覆盖德国、英国、奥地利、澳大利亚、法国、加拿大等地区。找不到完全对口的条目也别急,下面这张表列了几条通用退路:
| 你的情况 | 可用的 source | 说明文档 |
|---|---|---|
| 服务商提供 ICS/日历订阅链接 | ics | doc/source/ics.md |
| 收运日期固定、无电子来源 | static | doc/source/static.md |
| 想同时抓多个服务商合到一个日历 | multiple | doc/source/multiple.md |
预期结果:你手上有确定的 source 名称(如muellmax_de)、该 source 的参数清单,以及你自己的地区/街道取值。
第二步:安装组件
目的:把集成装进 Home Assistant。
操作:推荐走 HACS(HA 的社区插件商店)。安装好 HACS 后,在 HACS 的 Integrations 面板点 Explore & Download Repositories,搜索Waste Collection Schedule,下载即可,文件会自动落到config/custom_components/目录。没有 HACS 也可以手动安装:把仓库里的custom_components/waste_collection_schedule文件夹整个复制到你的 HAconfig/custom_components/目录下,参考 doc/installation.md 的 Manual Installation 一节。
预期结果:重启 HA 后,在 设置 → 设备与服务 → 添加集成 里能搜到Waste Collection Schedule。
第三步:配置数据源和传感器
目的:让 HA 知道去哪抓日程、以什么形式展示。2.0 版本起推荐直接在图形界面里配置:添加集成后依次选择国家、服务商、填写地址参数、挑选要显示的垃圾类型,一路点下去即可。偏好 YAML 的用户则把下面这段写进configuration.yaml,其中args换成你的 source 文档要求的参数:
waste_collection_schedule: sources: - name: muellmax_de args: service: His mm_frm_str_sel: 你的街道名 sensors: - name: next_collection多服务商场景可以在sources下加多个条目,也可以用 multiple 包装源 把它们合并进同一个日历实体。
预期结果:重启 HA 后,日历里出现一个名为 Waste Collection 的日历,实体列表里多出一个 Waste Collection Schedule 日历实体。
验证效果:日历、实体与弹窗
目的:确认数据真的抓到了,而不只是配置没报错。
操作:按下面三处检查:
- 打开日历视图,确认本月各日期上标出了 Garbage、Recycle 等收运事件;
- 进入 设置 → 实体,按 Waste Collection Schedule 过滤,看日历实体状态是否为可用;
- 点开传感器实体的 more info 弹窗,查看 upcoming 列表。如果当天没数据,在开发者工具里手动调用
waste_collection_schedule.fetch_data服务强制刷新一次。
预期结果:日历上有未来几周的收运点,传感器状态显示出最近一次的垃圾类别和日期。实体列表里集成一栏应显示 Waste Collection Schedule,效果类似下图:
常见问题排查
source 实体状态为 unknown 或没有数据
先确认 source 名称拼写与文档一致(不带.py),再核对args取值——很多 source 要求街道名与服务商下拉框里的写法逐字一致。仍然抓不到时,用开发者工具里的waste_collection_schedule.fetch_data手动触发一次,然后看 HA 日志里该次请求的报错。
时间参数报Invalid time specified之类的错
这是 YAML 1.1 的经典坑:不引号的fetch_time: 10:00会被解析成数字 600。给所有时间值加上引号即可:
fetch_time: "10:00" day_switch_time: "18:30"装了 source 但没有日历/传感器实体
GUI 配置里如果你跳过了传感器步骤(选了 Do not create sensor),或者 YAML 里漏写了sensors段,就只会有数据没有展示实体。补上至少一个传感器再重启。
服务商网站改版导致抓取失败
这属于上游变更,先看仓库 Issues 里是否已有同类反馈;确认是问题后可在 Issue 页面跟进修复进度。
进阶玩法:让仪表盘更好看
- 把"3 天后"变成"明天/今天":给传感器加一行
value_template,模板变量说明见 doc/faq.md:
value_template: '{% if value.daysTo == 0 %}今天{% elif value.daysTo == 1 %}明天{% else %}{{value.daysTo}} 天后{% endif %}'- 按类别拆分传感器:用
types参数为每种垃圾单独建一个传感器(如只盯 Garbage),再配合add_days_to: True生成daysTo属性,就能用 auto-entities 之类的卡片按"谁先收"排序展示。 - 定制垃圾类型的名称、图标、显隐:在 source 的
customize段里用alias改名、show: false隐藏不关心的桶,type支持通配符,可一条规则覆盖一类。 - 降低对服务商的压力:把
fetch_interval_days调到 2 或更大,配合random_fetch_time_offset随机错开抓取时间。
写在最后
回顾三个关键点:先在 README 的支持列表里锁定你的 source,再走 HACS 安装,最后配置 source 和 sensor 并重启。Waste Collection Schedule 是一个社区持续扩充的框架——数据源文档就放在仓库的 doc/source/ 里,缺哪个服务商就提一个 source request,也能照着贡献指南(CONTRIBUTING.md)自己动手加一个。下次收运哪天来,仪表盘会比你的记忆更可靠。
【免费下载链接】hacs_waste_collection_scheduleHome Assistant integration framework for (garbage collection) schedules项目地址: https://gitcode.com/GitHub_Trending/ha/hacs_waste_collection_schedule
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考