Я занимаюсь разработкой своего умного дома на основе 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.
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”