لقد عملت على تطوير إعداد smarthome المستند إلى Home Assistant لمدة عام تقريبًا الآن (منذ مغادرة SmartThings) وبعد منحنى تعليمي أولي شديد الانحدار ، كنت سعيدًا جدًا بالمساعد المنزلي ، لذلك بدأت في العمل على توسيع نطاق الأشياء التي يقوم بها حيث إنني أعمل على توفير أساس طويل الأجل لمنزل ذكي. أحد الأشياء التي أردت إضافتها هو بيانات جمع bin لتذكيرني بالحاوية المستحقة ومتى. نظرًا لأنني أعيش في شيفيلد ، كنت بحاجة إلى سحب هذه البيانات من مزود المصادر الخارجية للسلطات المحلية (فيوليا). التفاصيل التالية كيف فعلت هذا, البناء كثيرًا على عمل الآخرين الذين فعلوا ذلك بالفعل في مناطق أخرى
Update 10-Aug-2022
I’ve tweaked the script to make it compatible with home assistant after the switch to Python 3
التحديث 20 ديسمبر 2021
I’ve made a change to both ths bash script AND the template — the first to make sure required packages are available and the second to fix a breaking change made by recent releases of home assistant
I used a script which i modified from various examples on a HA support thread by RobBrad. For this script to run I needed to install the beautifulsoup module on home-assistant.
أضف نصًا
- I use the ‘Samba Share’ supervisor addon to access my home assistant files directly from my windows PC — unless you already have a preferred access method I recommend doing the same
- اذهب الى \\ha-ip-address config
- create a مخطوطات بيثون ملف
- Create a new python script in this folder — I called mine bin_collection.py
- Insert the following script
import sys import subprocess import pkg_resources required = {"beautifulsoup4", "بيثون داتوتيل", 'requests'} مثبتة = {pkg.key لـ pkg في pkg_resources.working_set} مفقود = مطلوب - installed if missing: python = sys.executable subprocess.check_call([الثعبان, "-m", 'pip', 'تثبيت', *مفقود], stdout = عملية فرعية) from bs4 import BeautifulSoup import datetime from dateutil import parser import requests import json url = 'https://wasteservices.sheffield.gov.uk/property/############' page = requests.get(رابط) إذا page.status_code != 200: خروج(1) حساء = شوربة جميلة(page.text, "html.parser") خارج = {} bh3s = soup.find_all('td', فئة_ ="اسم الخدمة") bpds = soup.find_all('td', فئة_ ="الخدمة التالية") لأني في النطاق(فقط(بي بي دي إس)): bin_colour = str(bh3s[أنا].محتويات[3]).أدنى().انشق، مزق('>')[1].انشق، مزق(")[0] خارج[بن_اللون] = محلل(بي بي دي إس[أنا].محتويات[2].lstrip().انشق، مزق(',')[0]).strftime('٪ Y-٪ m-٪ d') مطبعة(json.dumps(خارج))
- سوف تحتاج إلى استبدال ############ with the unique number for your property which I will explain how to get in the next step
احصل على عنوانك الفريد
- اذهب الى https://wasteservices.sheffield.gov.uk/property/
- أدخل رمزك البريدي وحدد عنوانك من القائمة
- قم بتدوين عنوان url الجديد. Use it in the url line in the script above — the only part you will need to change is the 12 digit number at the end
اتصل بالبرنامج النصي الخاص بك من config.yaml
- إدخال بسيط في config.yaml هو كل ما هو مطلوب لتشغيل البرنامج النصي
- You may want to adjust the frequency of the run. Mine runs once per day.
المستشعر: - منصة: command_line name: "مجموعات بن" يأمر: "python3 /config/python-scripts/bin_collection.py" scan_interval: 86400 مهلة_القيادة: 60 #مطلوب لأن موقع الويب بطيء في الاستجابة وغالبًا ما تنتهي مهلته إذا تم تركه افتراضيًا
أنشئ كيانات لكل نوع من أنواع الحاوية باستخدام config.yaml
- Immediately under the above section (لذلك لا يزال تحت جهاز الاستشعار: نشوئها ثانية) أضف ما يلي
- منصة: template sensors: black_bin: device_class: timestamp value_template: '{{ strptime((تنص على("أجهزة الاستشعار")|from_json())["أسود"], "%ص-٪ م-٪ d") | as_local }}' unique_id: "black_bin" بني_بن: device_class: timestamp value_template: '{{ strptime((تنص على("أجهزة الاستشعار")|from_json())["بني"], "%ص-٪ م-٪ d") | as_local }}' unique_id: "بني_بن" blue_bin: device_class: timestamp value_template: '{{ strptime((تنص على("أجهزة الاستشعار")|from_json())["أزرق"], "%ص-٪ م-٪ d") | as_local }}' unique_id: "blue_bin"
اعرض النتائج على الواجهة الأمامية
- To show the results on the front end simply add a card with the 3 أجهزة استشعار عليه (specifically sensor.black_bin, جهاز الاستشعار, والمستشعر)
- Note you may need to restart home assistant to load the new sensors you added to configuration.yaml
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”