Цель этого проекта — предоставить аккуратный и стандартный способ предоставления данных о сборе мусорных баков в формате JSON от советов Великобритании, у которых нет API для этого.
Зачем это делать? Возможно, вы захотите использовать это в домашней автоматизации — например, скажем, у вас есть светодиодная полоса, которая загоралась в день сбора мусорного ведра и соответствовала цвету мусорного бака, который вы хотите вывезти, тогда этот репозиторий предоставляет для этого данные.
ПОЖАЛУЙСТА, соблюдайте политику муниципалитета в отношении инфраструктуры и использования и собирайте данные только для личного использования с частотой, соответствующей вашему графику сбора.
Большинство скриптов используют Beautiful Soup 4 для очистки данных, хотя другие используют другие подходы, такие как эмуляция поведения веб-браузера или чтение данных из файлов CSV.
️ Пожалуйста, убедитесь, что запрос на ваш совет еще не был сделан. Это можно сделать, выполнив поиск на странице «Проблемы».
Если проблема уже существует, прокомментируйте ее, чтобы выразить свой интерес. Пожалуйста, не открывайте новую задачу, так как она будет закрыта как дубликат.
Если проблема еще не существует, заполните новую форму запроса в Совет, указав как можно больше информации, в том числе:
Имейте в виду, что этим проектом управляют волонтеры, и его завершение зависит от множества факторов - даже при наличии запроса мы не можем гарантировать, будет ли/когда ваш совет добавлен.
Эту интеграцию можно установить непосредственно через HACS. Чтобы установить:
Download
HACS
> Integrations
> ⋮
> Custom repositories
.https://github.com/robbrad/UKBinCollectionData
в поле Repository
.Integration
в качестве категории и нажмите ADD
.+ Add Integration
, найдите и выберите UK Bin Collection Data
затем нажмите « Download
.Settings
> Devices & Services
нажмите + Add Integration
и найдите UK Bin Collection Data
.configuration.yaml
).custom_components
, вам нужно ее создать.custom_components/uk_bin_collection
в папку custom_components
, которую вы нашли/создали на предыдущем шаге.Settings
> Devices & Services
нажмите + Add Integration
и найдите UK Bin Collection Data
.Мы понимаем, что сложно установить цвет из текста советов для типа ячейки, и чтобы сохранить интеграцию общей, мы не фиксируем цвет из совета (не все советы предоставляют это как поле), а только тип ячейки и дату следующего сбора.
При настройке компонента на первом экране вы можете установить строку JSON для сопоставления типа контейнера с цветом и значком.
Ниже приведен пример установки цвета и значка для типа Empty Standard General Waste
. Этот тип является типом, возвращаемым из совета для корзины. Вы можете сделать это для нескольких контейнеров.
Если вы пропустили это при первой настройке, вы можете перенастроить его.
{
"Empty Standard General Waste":
{
"icon": "mdi:trash-can",
"color": "blue"
}
}
---
## Standalone Usage
```commandline
PS G:ProjectsPythonUKBinCollectionDatauk_bin_collectioncollect_data.py
usage: collect_data.py [-h] [-p POSTCODE] [-n NUMBER] [-u UPRN] module URL
positional arguments:
module Name of council module to use (required)
URL URL to parse (required)
options:
-h, --help show this help message (optional)
-p POSTCODE, --postcode POSTCODE Postcode to parse - should include (optional)
a space and be wrapped in double
quotes
-n NUMBER, --number NUMBER House number to parse (optional)
-u UPRN, --uprn UPRN UPRN to parse (optional)
Основная команда для выполнения скрипта:
python collect_data.py <council_name> "<collection_url>"
где council_name
— это имя скрипта .py совета (без .py), а collection_url
— URL-адрес для очистки. В справочной документации они называются «модуль» и «URL» соответственно. Поддерживаемые сценарии советов можно найти в папке uk_bin_collection/uk_bin_collection/councils
.
Некоторым сценариям требуются дополнительные параметры, например, когда UPRN не передается в URL-адресе или когда сценарий не очищает веб-страницу. Например, сценарию городского совета Лидса требуются два дополнительных параметра — почтовый индекс и номер дома. Это делается так:
python collect_data.py LeedsCityCouncil https://www.leeds.gov.uk/residents/bins-and-recycling/check-your-bin-day -p "LS1 2JG" -n 41
-p "postcode"
или --postcode "postcode"
. Почтовый индекс всегда должен содержать пробел посередине и заключаться в двойные кавычки (из-за того, как обрабатываются аргументы командной строки).-n number
или --number number
.-u uprn
или --uprn uprn
.Чтобы проверить параметры, необходимые для сценария вашего совета, посетите вики проекта для получения дополнительной информации.
Функционирование некоторых сценариев зависит от внешних пакетов. Список необходимых сценариев для разработки и выполнения можно найти в PROJECT_TOML проекта. Установка может быть выполнена через poetry install
из корня репозитория.
Некоторые советы используют UPRN (уникальный идентификационный номер собственности) для идентификации вашей собственности. Вы можете найти свой здесь или здесь.
Некоторым советам нужен Selenium для очистки данных от имени Home Assistant. Самый простой способ сделать это — запустить Selenium как в Docker-контейнере. Как бы вы это ни сделали, сервер Home Assistant должен иметь возможность доступа к серверу Selenium.
Загрузите Docker Desktop для Windows:
Запустите Docker Desktop:
Установите Докер:
Откройте терминал и выполните следующие команды:
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo
" deb [arch= $( dpkg --print-architecture ) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu
$( lsb_release -cs ) stable " | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Запустите Докер:
Выполните следующую команду, чтобы запустить Docker:
sudo systemctl start docker
Включите Docker для запуска при загрузке:
бить
Скопировать код
sudo systemctl enable docker
Загрузите Docker Desktop для Mac:
Запустите Docker Desktop:
Откройте терминал или командную строку:
Извлеките автономный образ Selenium Chrome:
docker pull selenium/standalone-chrome
Запустите автономный контейнер Selenium Chrome:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
Найдите проект UKBinCollectionData
:
Укажите URL-адрес сервера Selenium:
http://localhost:4444/wd/hub
Windows/Linux/Mac:
docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
URL-адрес сервера Selenium:
http://localhost:4444/wd/hub
Мы создали для этого API, расположенный в разделе uk_bin_collection_api_server.
docker build -t ukbc_api_server .
docker run -p 8080:8080 ukbc_api_server
После запуска контейнера Docker вы можете получить доступ к конечным точкам API:
API Base URL: http://localhost:8080/api
Swagger UI: http://localhost:8080/api/ui/
Доступ к документации API можно получить через пользовательский интерфейс Swagger. Используйте пользовательский интерфейс Swagger для изучения доступных конечных точек, тестирования различных запросов и понимания функций API.
GET /bin_collection/{council}
Описание: Извлекает информацию о сборе корзин для указанного совета.
Параметры:
council (required): Name of the council.
Other optional parameters: [Specify optional parameters if any]
Пример запроса:
curl -X GET " http://localhost:8080/api/bin_collection/{council} " -H " accept: application/json "
Сюда входит автономный Chrome Selenium для советов на основе Selenium.
version: '3'
services:
ukbc_api_server:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080" # Adjust the ports as needed
depends_on:
- selenium
selenium:
image: selenium/standalone-chrome:latest
ports:
- "4444:4444"
sudo apt-get update
sudo apt-get install docker-compose
docker-compose up
Пожалуйста, опубликуйте сообщение в теме HomeAssistant или поднимите новую проблему (не по запросу совета).
Вклады всегда приветствуются! Чтобы начать, посетите CONTRIBUTING.md
. Пожалуйста, соблюдайте правила поведения проекта.
councilclasstemplate.py
).