DIY Главная Медиа Logo

Конечная сайт для проектирования и создания вашей установке домашнего кинотеатра и Привет-Fi.

0Коллекции корзин в Home Assistant

I’ve been devel­op­ing my Home Assist­ant based smarthome setup for around a year now (since leav­ing SmartTh­ings) and after an ini­tial steep learn­ing curve I’ve been veyr happy with home assist­ant so I have star­ted work­ing to expand the things it does as I am con­if­dent it offers a long term basis for my smarthome. One thing I wanted to add was bin col­lec­tion data to remind me which bin is due when. As I live in Shef­field I needed to pull this data from the loc­al author­it­ies out-sources pro­vider (Veolia). The fol­low­ing details how I did this, build­ing very much on the work of oth­ers who have done it already for oth­er regions

I used a script which i mod­i­fied from vari­ous examples on a HA sup­port thread by Rob­Brad. For this script to run I needed to install the beau­ti­ful­soup mod­ule on home-assistant.

Установите модуль Python BeautifulSoup

  • Install the Super­visor add-on ‘SSH and Web Terminal’
  • Open the ter­min­al from the main left-hand menu
  • Use the com­mand pip3 установить beautifulsoup4

Добавить скрипт

  • I use the ‘Samba Share’ super­visor addon to access my home assist­ant files dir­ectly from my win­dows PC — unless you already have a pre­ferred access meth­od I recom­mend doing the same
  • перейти к \\ха-ip-адрес конфигурация
  • cre­ate a Python-скрипты папка
  • Cre­ate a new python script in this folder — I called mine bin_collection.py
  • Insert the fol­low­ing script
    from bs4 import BeautifulSoup
    import datetime
    from dateutil import parser
    import requests
    import json
    
    url = 'https://wasteservices.sheffield.gov.uk/property/############'
    page = requests.get(URL)
    
    если page.status_code != 200:
        Выход(1)
    
    soup = BeautifulSoup(page.text, 'html.parser')
    
    out = {}
    bh3s = soup.find_all('тд', class_ ="наименование услуги")
    bpds = soup.find_all('тд', class_ ="следующая услуга")
    
    для меня в пределах досягаемости(только(баррелей в сутки)):
        bin_colour = str(bh3s[я].содержание[3]).ниже().Трещина('>')[1].Трещина('')[0]
        из[bin_colour] = parser.parse(баррелей в сутки[я].содержание[2].lstrip().Трещина(',')[0]).strftime('% Y-% m-% d')
    
    Распечатать(json.dumps(из))
    
  • Вам нужно будет заменить ############ with the unique num­ber for your prop­erty which I will explain how to get in the next step

Получите свой уникальный адрес

  • Перейдите https://wasteservices.sheffield.gov.uk/property/
  • Введите свой почтовый индекс и выберите свой адрес из списка
  • Запишите новый URL. Use it in the url line in the script above — the only part you will need to change is the 12 digit num­ber at the end

Вызовите свой скрипт из configuration.yaml

  • Простая запись в файле configuration.yaml - это все, что нужно для запуска скрипта.
  • You may want to adjust the fre­quency of the run. Mine runs once per day.
    датчик:
     - Платформа: command_line
       name: "Коллекции корзин"
       команда: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #необходимо, поскольку веб-сайт медленно реагирует и часто отключается по таймауту, если оставить значение по умолчанию
    

Создавайте объекты для каждого типа корзины с помощью configuration.yaml.

  • Imme­di­ately under the above sec­tion (так что еще под датчиком: сек-ции) добавить следующее
     - Платформа: template
       sensors:
         black_bin:
           device_class: timestamp
           value_template: '{{ (состояния("sensor.bin_collections")|from_json())["чернить"] }}'
           unique_id: "black_bin"
         brown_bin:
           device_class: timestamp
           value_template: '{{ (состояния("sensor.bin_collections")|from_json())["коричневый"] }}'
           unique_id: "brown_bin"
         blue_bin:
           device_class: timestamp
           value_template: '{{ (состояния("sensor.bin_collections")|from_json())["синий"] }}'
           unique_id: "blue_bin"
    

Отображение результатов в интерфейсе пользователя

  • To show the res­ults on the front end simply add a card with the 3 датчики на нем (spe­cific­ally sensor.black_bin, sensor.blue_bin, и sensor.brown_bin)
  • Note you may need to restart home assist­ant to load the new sensors you added to configuration.yaml

Есть некоторые собственные мысли? Побалуйте себя ниже, комментируя! Если вы хотите подписаться, используйте ссылку подписки в меню в правом верхнем углу.. Вы также можете поделиться этим со своими друзьями, используя приведенные ниже социальные ссылки.. Ура.

оставьте ответ