โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้วิธีการที่เป็นระเบียบและเป็นมาตรฐานในการให้ข้อมูลการรวบรวมถังขยะในรูปแบบ JSON จากสภาสหราชอาณาจักรที่ไม่มี API ให้ดำเนินการ
ทำไมทำเช่นนี้? คุณอาจต้องการใช้สิ่งนี้ในระบบอัตโนมัติในบ้าน - ตัวอย่างเช่น สมมติว่าคุณมีแถบ LED ที่สว่างขึ้นในวันที่เก็บขยะเป็นสีของถังขยะที่คุณต้องการนำออก จากนั้น repo นี้จะให้ข้อมูลสำหรับสิ่งนั้น
โปรดเคารพโครงสร้างพื้นฐาน / นโยบายการใช้งานของสภา และรวบรวมข้อมูลเพื่อการใช้งานส่วนตัวของคุณเองในความถี่ที่เหมาะสมตามกำหนดเวลาการรวบรวมของคุณ
สคริปต์ส่วนใหญ่ใช้ 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
จากภายในรูทของ repo
สภาบางแห่งใช้ UPRN (หมายเลขอ้างอิงทรัพย์สินเฉพาะ) เพื่อระบุทรัพย์สินของคุณ คุณสามารถค้นหาของคุณได้ที่นี่หรือที่นี่
สภาบางแห่งต้องใช้ซีลีเนียมเพื่อดำเนินการขูดในนามของ 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:
เปิดเทอร์มินัลหรือพรอมต์คำสั่ง:
ดึงอิมเมจ Chrome แบบสแตนด์อโลนของซีลีเนียม:
docker pull selenium/standalone-chrome
เรียกใช้คอนเทนเนอร์ Chrome แบบสแตนด์อโลน Selenium:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
ค้นหาโครงการ UKBinCollectionData
:
ระบุ URL เซิร์ฟเวอร์ซีลีเนียม:
http://localhost:4444/wd/hub
Windows/ลินุกซ์/Mac:
docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
URL เซิร์ฟเวอร์ซีลีเนียม:
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 UI ใช้ Swagger UI เพื่อสำรวจตำแหน่งข้อมูลที่มีอยู่ ทดสอบคำขอต่างๆ และทำความเข้าใจฟังก์ชันการทำงานของ 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 "
ซึ่งรวมถึงซีลีเนียมสแตนด์อโลน-โครมสำหรับสภาที่ใช้ซีลีเนียม
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
)