我已经开发基于家庭助手的智能家居设置大约一年了 (自从离开SmartThings) 在经历了最初的陡峭学习曲线之后,我一直对家庭助理感到非常满意,因此我开始扩大它的功能,因为我确信它为我的智能家居提供了长期基础. 我想添加的一件事是垃圾箱收集数据,以提醒我什么时候该垃圾箱到期. 当我住在谢菲尔德时,我需要从地方当局外包提供商处获取此数据 (威立雅). 以下详细说明了我如何做到这一点, 在其他地区已经取得成功的其他人的工作基础上
Update 10-Aug-2022
I’ve tweaked the script to make it compatible with home assistant after the switch to Python 3
2021 年 12 月 20 日更新
I’ve made a change to both ths bash script AND the template — the first to make sure required packages are available and the second to fix a breaking change made by recent releases of home assistant
我使用了一个脚本,该脚本是从各种示例中修改的 RobBrad 的 HA 支持线程. 为了运行这个脚本,我需要在 home-assistant 上安装 beautifulsoup 模块.
添加脚本
- 我使用“Samba Share”主管插件直接从我的 Windows PC 访问我的家庭助理文件——除非你已经有了首选的访问方法,我建议你也这样做
- 浏览到 \\ha-ip-address config
- 创建一个 python脚本 夹
- 在这个文件夹中创建一个新的 python 脚本——我叫我的 bin_collection.py
- 插入以下脚本
import sys import subprocess import pkg_resources required = {'美丽汤4', 'python-dateutil', 'requests'} 安装 = {pkg_resources.working_set 中 pkg 的 pkg.key} 缺少 = 需要 - installed if missing: python = sys.executable subprocess.check_call([蟒蛇, '-m', 'pip', '安装', *失踪], 标准输出=子进程.DEVNULL) 从 bs4 导入 BeautifulSoup 导入日期时间 从 dateutil 导入解析器 进口请求 导入json url = 'https://wasteservices.sheffield.gov.uk/property/############' 页面 = requests.get(网址) 如果page.status_code != 200: 出口(1) 汤= BeautifulSoup(page.text, 'html.parser') 出= {} bh3s = soup.find_all('td', class_ ="服务名称") bpds = soup.find_all('td', class_ ="下一服务") 对于我在范围内(只(bpds)): bin_colour = str(bh3s[一世].内容[3]).降低().分裂(“>“)[1].分裂('')[0] 出去[bin_colour] = parser.parse(bpds[一世].内容[2].剥离().分裂(“,“)[0]).strftime('%Y-%m-%d') 打印(json.dumps(出去))
- 您将需要更换 ############ 带有您财产的唯一编号,我将解释如何在下一步中获得
获取您的唯一地址
- 浏览 https://wasteservices.sheffield.gov.uk/property/
- 输入您的邮政编码,然后从列表中选择您的地址
- 记下新网址. 在上面脚本的 url 行中使用它 - 您需要更改的唯一部分是 12 最后的数字
从configuration.yaml调用脚本
- 使脚本运行所需的只是configuration.yaml中的一个简单条目
- 您可能需要调整运行频率. 我的每天运行一次。
传感器: - 平台: 命令行 姓名: "垃圾箱集合" 命令: "python3 /config/python-scripts/bin_collection.py" scan_interval: 86400 command_timeout: 60 #由于网站反应缓慢,如果默认设置,通常会超时,因此需要
使用configuration.yaml为每种类型的bin创建实体
- 紧接上述部分 (所以仍然在传感器下: 仲tion) 添加如下
- 平台: 模板 传感器: black_bin: device_class: 时间戳 值模板: “{{ 时间((状态("sensor.bin_collections")|from_json())["黑色的"], "%Y-%m-%d") | as_local }}' 唯一身份: "black_bin" brown_bin: device_class: 时间戳 值模板: “{{ 时间((状态("sensor.bin_collections")|from_json())["棕色的"], "%Y-%m-%d") | as_local }}' 唯一身份: "brown_bin" blue_bin: device_class: 时间戳 值模板: “{{ 时间((状态("sensor.bin_collections")|from_json())["蓝色"], "%Y-%m-%d") | as_local }}' 唯一身份: "blue_bin"
在前端显示结果
- 要在前端显示结果,只需添加一张带有 3 传感器就可以了 (特别是sensor.black_bin, sensor.blue_bin, 和sensor.brown_bin)
- 请注意,您可能需要重新启动家庭助理才能加载您添加到 configuration.yaml 的新传感器
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”