Este projeto tem como objetivo fornecer uma maneira simples e padrão de fornecer dados de coleta de lixo em formato JSON de conselhos do Reino Unido que não possuem API para fazer isso.
Por que fazer isso? Você pode querer usar isso em uma automação residencial - por exemplo, digamos que você tenha uma barra de LED acesa no dia da coleta da lixeira na cor da lixeira que deseja retirar, então este repositório fornece os dados para isso.
POR FAVOR, respeite a política de infraestrutura/utilização do município e apenas recolha dados para seu uso pessoal numa frequência adequada ao seu calendário de recolha.
A maioria dos scripts usa o Beautiful Soup 4 para extrair dados, embora outros usem abordagens diferentes, como emular o comportamento do navegador da web ou ler dados de arquivos CSV.
️ Por favor verifique se um pedido para o seu conselho ainda não foi feito. Você pode fazer isso pesquisando na página Problemas.
Se já existir um problema, comente sobre ele para expressar seu interesse. Não abra um novo fascículo, pois ele será fechado como duplicado.
Se ainda não existir um problema, preencha um novo formulário de solicitação do Conselho, incluindo o máximo de informações possível, incluindo:
Esteja ciente de que este projeto é executado por colaboradores voluntários e a conclusão depende de vários fatores - mesmo com uma solicitação, não podemos garantir se/quando o seu conselho será adicionado.
Esta integração pode ser instalada diretamente via HACS. Para instalar:
Download
HACS
> Integrations
> ⋮
> Custom repositories
.https://github.com/robbrad/UKBinCollectionData
no campo Repository
.Integration
como categoria e clique em ADD
.+ Add Integration
, pesquise e selecione UK Bin Collection Data
e clique em Download
.Settings
> Devices & Services
clique em + Add Integration
e pesquise UK Bin Collection Data
.configuration.yaml
).custom_components
lá, será necessário criá-la.custom_components/uk_bin_collection
para a pasta custom_components
que você encontrou/criou na etapa anterior.Settings
> Devices & Services
clique em + Add Integration
e pesquise UK Bin Collection Data
.Percebemos que é difícil definir uma cor do texto dos conselhos para o Tipo de Bin e para manter a integração genérica não capturamos a cor de um conselho (nem todos os conselhos fornecem isso como um campo), apenas o tipo de bin e a próxima data de coleta.
Ao configurar o componente na primeira tela, você pode definir uma string JSON para mapear o tipo de bin para a cor e o ícone
Aqui está um exemplo para definir a cor e o ícone para o tipo Empty Standard General Waste
. Este tipo é o tipo retornado do conselho para a lixeira. Você pode fazer isso para vários compartimentos.
Se você perder isso na primeira configuração, poderá reconfigurá-lo.
{
"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)
O comando básico para executar um script é:
python collect_data.py <council_name> "<collection_url>"
onde council_name
é o nome do script .py do conselho (sem o .py) e collection_url
é o URL a ser extraído. A documentação de ajuda refere-se a eles como "módulo" e "URL", respectivamente. Os scripts do conselho suportados podem ser encontrados na pasta uk_bin_collection/uk_bin_collection/councils
.
Alguns scripts exigem parâmetros adicionais, por exemplo, quando um UPRN não é passado em uma URL ou quando o script não está copiando uma página da web. Por exemplo, o script do Conselho Municipal de Leeds precisa de dois parâmetros adicionais - um código postal e um número de casa. Isso é feito assim:
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"
ou --postcode "postcode"
. O código postal deve sempre incluir um espaço no meio e estar entre aspas duplas (devido à forma como os argumentos da linha de comando são tratados).-n number
ou --number number
.-u uprn
ou --uprn uprn
.Para verificar os parâmetros necessários ao roteiro do seu conselho, consulte a wiki do projeto para mais informações.
Alguns scripts dependem de pacotes externos para funcionar. Uma lista de scripts necessários para desenvolvimento e execução pode ser encontrada no PROJECT_TOML do projeto. A instalação pode ser feita por meio de poetry install
a partir da raiz do repositório.
Alguns municípios utilizam o UPRN (Número Único de Referência de Propriedade) para identificar o seu imóvel. Você pode encontrar o seu aqui ou aqui.
Alguns conselhos precisam do Selenium para administrar a situação em nome do Home Assistant. A maneira mais fácil de fazer isso é executar o Selenium como em um contêiner Docker. Seja como for, o servidor Home Assistant deve ser capaz de acessar o servidor Selenium
Baixe o Docker Desktop para Windows:
Execute o Docker Desktop:
Instale o Docker:
Abra um terminal e execute os seguintes comandos:
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
Inicie o Docker:
Execute o seguinte comando para iniciar o Docker:
sudo systemctl start docker
Habilite o Docker para iniciar na inicialização:
festa
Copiar código
sudo systemctl enable docker
Baixe o Docker Desktop para Mac:
Execute o Docker Desktop:
Abra um terminal ou prompt de comando:
Extraia a imagem Selenium Standalone do Chrome:
docker pull selenium/standalone-chrome
Execute o contêiner Selenium Standalone do Chrome:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
Encontre o projeto UKBinCollectionData
:
Forneça o URL do servidor 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 do servidor Selênio:
http://localhost:4444/wd/hub
Criamos uma API para isso localizada em uk_bin_collection_api_server
docker build -t ukbc_api_server .
docker run -p 8080:8080 ukbc_api_server
Assim que o contêiner Docker estiver em execução, você poderá acessar os endpoints da API:
API Base URL: http://localhost:8080/api
Swagger UI: http://localhost:8080/api/ui/
A documentação da API pode ser acessada através da UI do Swagger. Use a UI do Swagger para explorar endpoints disponíveis, testar diferentes solicitações e entender as funcionalidades da API.
GET /bin_collection/{council}
Descrição: Recupera informações sobre coleta de lixo para o município especificado.
Parâmetros:
council (required): Name of the council.
Other optional parameters: [Specify optional parameters if any]
Solicitação de exemplo:
curl -X GET " http://localhost:8080/api/bin_collection/{council} " -H " accept: application/json "
Isso inclui o Selenium standalone-chrome para conselhos baseados em 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
Por favor, poste no tópico do HomeAssistant ou levante um novo problema (não solicitado pelo conselho).
Contribuições são sempre bem-vindas! Consulte CONTRIBUTING.md
para começar. Por favor, siga o código de conduta do projeto.
councilclasstemplate.py
).