0ہوم اسسٹنٹ میں بن مجموعہ

I’ve been devel­op­ing my Home Assist­ant based smarthome setup for around a year now (since leav­ing SmartTh­ings) and after an ini­tial steep learn­ing curve I’ve been veyr happy with home assist­ant so I have star­ted work­ing to expand the things it does as I am con­if­dent it offers a long term basis for my smarthome. One thing I wanted to add was bin col­lec­tion data to remind me which bin is due when. As I live in Shef­field I needed to pull this data from the loc­al author­it­ies out-sources pro­vider (veolia). The fol­low­ing details how I did this, build­ing very much on the work of oth­ers who have done it already for oth­er regions

Update 10-Aug-2022

I’ve tweaked the script to make it com­pat­ible with home assist­ant after the switch to Python 3

اپ ڈیٹ 20-دسمبر-2021

I’ve made a change to both ths bash script AND the tem­plate — the first to make sure required pack­ages are avail­able and the second to fix a break­ing change made by recent releases of home assistant

I used a script which i mod­i­fied from vari­ous examples on a HA sup­port thread by Rob­Brad. For this script to run I needed to install the beau­ti­ful­soup mod­ule on home-assistant.

اسکرپٹ شامل کریں

  • I use the ‘Samba Share’ super­visor addon to access my home assist­ant files dir­ectly from my win­dows PC — unless you already have a pre­ferred access meth­od I recom­mend doing the same
  • براؤز کریں \\ha-ip-पता تشکیل
  • cre­ate a ازگر - اسکرپٹس فولڈر
  • Cre­ate a new python script in this folder — I called mine bin_collection.py
  • Insert the fol­low­ing script
    import sys
    import subprocess
    import pkg_resources
    
    required = {'خوبصورت سوپ4', 'python-dateutil', 'requests'}
    انسٹال = {pkg_resources.working_set میں pkg کے لیے pkg.key}
    لاپتہ = مطلوبہ - installed
    
    if missing:
        python = sys.executable
        subprocess.check_call([ازگر, '-m', 'pip', 'انسٹال کریں', *لاپتہ], stdout=subprocess.DEVNULL)
    
    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('ٹی ڈی', کلاس_ ="سروس کا نام")
    bpds = soup.find_all('ٹی ڈی', کلاس_ ="اگلی خدمت")
    
    میرے لئے حد میں(لین(بی پی ڈی ایس)):
        بن_کالور = str(bh3s[میں].مشمولات[3]).کم().تقسیم('>')[1].تقسیم('')[0]
        باہر[بن_کالور] = parser.parse(بی پی ڈی ایس[میں].مشمولات[2].lstrip().تقسیم(',')[0]).strftime('٪ Y-٪ m-٪ d')
    
    پرنٹ کریں(json.dumps(باہر))
    
  • آپ کو تبدیل کرنے کی ضرورت ہوگی ############ with the unique num­ber for your prop­erty which I will explain how to get in the next step

اپنا انوکھا پتہ حاصل کریں

  • کو براؤز کریں https://wasteservices.sheffield.gov.uk/property/
  • اپنا پوسٹ کوڈ درج کریں اور فہرست میں سے اپنا پتہ منتخب کریں
  • نئے یو آر ایل کا نوٹ بنائیں. Use it in the url line in the script above — the only part you will need to change is the 12 digit num­ber at the end

تشکیل سے اپنے اسکرپٹ کو کال کریں

  • کنفیگریشن میں ایک سادہ اندراج ۔امیل اسکرپٹ کو چلانے کے لئے درکار ہے
  • You may want to adjust the fre­quency of the run. Mine runs once per day.
    سینسر:
     - پلیٹ فارم: command_line
       name: "بن جمع"
       کمانڈ: "python3 /config/python-scriptts/bin_collection.py"
       اسکین_انٹرول: 86400
       کمانڈ_ٹائم آؤٹ: 60 #کیونکہ ویب سائٹ جواب دینے میں سست ہے اور اگر پہلے سے طے شدہ وقت میں رہ جاتی ہوں تو اکثر ختم ہوجاتی ہے
    

ہر طرح کے ڈبوں کے لئے تشکیل تشکیل دیں

  • Imme­di­ately under the above sec­tion (تو اب بھی سینسر کے تحت: سیکنڈ کہ tion) مندرجہ ذیل شامل کریں
     - پلیٹ فارم: template
       sensors:
         بلیک_بن:
           آلہ_کلاس: timestamp
           value_template: '{{ strptime((ریاستوں("سینسر.بن_کالیکشنس")|منجانب_جن())["سیاہ"], "%Y-%m-%d") | بطور_مقامی }}'
           unique_id: "بلیک_بن"
         بھوری_بن:
           آلہ_کلاس: timestamp
           value_template: '{{ strptime((ریاستوں("سینسر.بن_کالیکشنس")|منجانب_جن())["براؤن"], "%Y-%m-%d") | بطور_مقامی }}'
           unique_id: "بھوری_بن"
         بلیو_بن:
           آلہ_کلاس: timestamp
           value_template: '{{ strptime((ریاستوں("سینسر.بن_کالیکشنس")|منجانب_جن())["نیلے"], "%Y-%m-%d") | بطور_مقامی }}'
           unique_id: "بلیو_بن"
    

سامنے کے آخر میں نتائج دکھائیں

  • To show the res­ults on the front end simply add a card with the 3 اس پر سینسر (spe­cific­ally sensor.black_bin, سینسر.بلیو_بن, اور سینسر.براؤن_بن)
  • Note you may need to restart home assist­ant to load the new sensors you added to configuration.yaml

جواب چھوڑیں