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

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

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

Я занимаюсь разработкой своего умного дома на основе Home Assistant около года. (с момента ухода из SmartThings) и после начального крутого обучения я был очень доволен домашним помощником, поэтому я начал работать над расширением его функций, поскольку я уверен, что он предлагает долгосрочную основу для моего умного дома. Одна вещь, которую я хотел добавить, - это данные сбора мусорных корзин, чтобы напомнить мне, какая корзина должна быть отправлена, когда. Поскольку я живу в Шеффилде, мне нужно было получить эти данные у местных властей. (Veolia). Следующие подробности, как я это сделал, во многом опираясь на работу других, которые уже сделали это для других регионов

Обновление от 10 августа 2022 г.

Я изменил скрипт, чтобы сделать его совместимым с домашним помощником после перехода на Python. 3

Обновление 20 декабря 2021 г.

Я внес изменения как в сценарий bash, так и в шаблон - первое, чтобы убедиться, что требуемые пакеты доступны, а второе, чтобы исправить критическое изменение, внесенное в последние выпуски домашнего помощника.

Я использовал сценарий, который я модифицировал из различных примеров на Тема поддержки HA от RobBrad. Для запуска этого скрипта мне нужно было установить модуль beautifulsoup на домашнем помощнике..

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

  • Я использую надстройку супервизора «Samba Share» для доступа к файлам моего домашнего помощника прямо с моего ПК с Windows - если у вас еще нет предпочтительного метода доступа, я рекомендую сделать то же самое
  • перейти к \\ха-ip-адрес конфигурация
  • создать Python-скрипты папка
  • Создайте в этой папке новый скрипт python - я назвал свой bin_collection.py
  • Вставьте следующий скрипт
    import sys
    подпроцесс импорта
    импортировать pkg_resources
    
    требуется = {'beautifulsoup4', 'python-dateutil', 'requests'}
    установлено = {pkg.key для pkg в pkg_resources.working_set}
    отсутствует = требуется - установлен
    
    если отсутствует:
        python = sys.executable
        subprocess.check_call([питон, '-м', 'pip', 'установить', *отсутствует], stdout = подпроцесс.DEVNULL)
    
    из bs4 импорт BeautifulSoup
    дата и время импорта
    from dateutil import parser
    запросы на импорт
    импортировать 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(из))
    
  • Вам нужно будет заменить ############ с уникальным номером вашей собственности, который я объясню на следующем шаге

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

  • Перейдите https://wasteservices.sheffield.gov.uk/property/
  • Введите свой почтовый индекс и выберите свой адрес из списка
  • Запишите новый URL. Используйте его в строке URL-адреса в приведенном выше скрипте - единственная часть, которую вам нужно будет изменить, это 12 цифра в конце

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

  • Простая запись в файле configuration.yaml - это все, что нужно для запуска скрипта.
  • Вы можете отрегулировать частоту бега. Мой запускается один раз в день.
    датчик:
     - Платформа: командная строка
       название: "Коллекции корзин"
       команда: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #необходимо, поскольку веб-сайт медленно реагирует и часто отключается по таймауту, если оставить значение по умолчанию
    

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

  • Сразу под вышеуказанным разделом (так что еще под датчиком: сек-ции) добавить следующее
     - Платформа: шаблон
       датчики:
         black_bin:
           device_class: отметка времени
           value_template: '{{ strptime((состояния("sensor.bin_collections")|from_json())["чернить"], "%Г-% m-% d") | as_local }}'
           уникальный идентификатор: "black_bin"
         brown_bin:
           device_class: отметка времени
           value_template: '{{ strptime((состояния("sensor.bin_collections")|from_json())["коричневый"], "%Г-% m-% d") | as_local }}'
           уникальный идентификатор: "brown_bin"
         blue_bin:
           device_class: отметка времени
           value_template: '{{ strptime((состояния("sensor.bin_collections")|from_json())["синий"], "%Г-% m-% d") | as_local }}'
           уникальный идентификатор: "blue_bin"
    

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

  • Чтобы отобразить результаты во внешнем интерфейсе, просто добавьте карточку с 3 датчики на нем (конкретно sensor.black_bin, sensor.blue_bin, и sensor.brown_bin)
  • Обратите внимание, что вам может потребоваться перезапустить домашний помощник, чтобы загрузить новые датчики, добавленные в файл configuration.yaml.

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