0家庭助理中的Bin集合

我已经开发基于家庭助手的智能家居设置大约一年了 (自从离开SmartThings) 在经历了最初的陡峭学习曲线之后,我一直对家庭助理感到非常满意,因此我开始扩大它的功能,因为我确信它为我的智能家居提供了长期基础. 我想添加的一件事是垃圾箱收集数据,以提醒我什么时候该垃圾箱到期. 当我住在谢菲尔德时,我需要从地方当局外包提供商处获取此数据 (威立雅). 以下详细说明了我如何做到这一点, 在其他地区已经取得成功的其他人的工作基础上

Update 10-Aug-2022

I’ve tweaked the script to make it com­pat­ible with home assist­ant after the switch to Python 3

2021 年 12 月 20 日更新

I’ve made a change to both ths bash script AND the tem­plate — the first to make sure required pack­ages are avail­able and the second to fix a break­ing 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(出去))
    
  • 您将需要更换 ############ 带有您财产的唯一编号,我将解释如何在下一步中获得

获取您的唯一地址

从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 的新传感器

发表评论