DIY وسائل الإعلام الرئيسية الشعار

الموقع النهائي لتصميم وإنشاء مسرح منزلي الخاص ومرحبا فاي الإعداد الخاصة.

0مجموعات Bin في Home Assistant

لقد عملت على تطوير إعداد smarthome المستند إلى Home Assistant لمدة عام تقريبًا الآن (منذ مغادرة SmartThings) وبعد منحنى تعليمي أولي شديد الانحدار ، كنت سعيدًا جدًا بالمساعد المنزلي ، لذلك بدأت في العمل على توسيع نطاق الأشياء التي يقوم بها حيث إنني أعمل على توفير أساس طويل الأجل لمنزل ذكي. أحد الأشياء التي أردت إضافتها هو بيانات جمع bin لتذكيرني بالحاوية المستحقة ومتى. نظرًا لأنني أعيش في شيفيلد ، كنت بحاجة إلى سحب هذه البيانات من مزود المصادر الخارجية للسلطات المحلية (فيوليا). التفاصيل التالية كيف فعلت هذا, البناء كثيرًا على عمل الآخرين الذين فعلوا ذلك بالفعل في مناطق أخرى

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-address config
  • 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 = {"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 num­ber for your prop­erty 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 num­ber at the end

اتصل بالبرنامج النصي الخاص بك من config.yaml

  • إدخال بسيط في config.yaml هو كل ما هو مطلوب لتشغيل البرنامج النصي
  • You may want to adjust the fre­quency of the run. Mine runs once per day.
    المستشعر:
     - منصة: command_line
       name: "مجموعات بن"
       يأمر: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       مهلة_القيادة: 60 #مطلوب لأن موقع الويب بطيء في الاستجابة وغالبًا ما تنتهي مهلته إذا تم تركه افتراضيًا
    

أنشئ كيانات لكل نوع من أنواع الحاوية باستخدام config.yaml

  • Imme­di­ately under the above sec­tion (لذلك لا يزال تحت جهاز الاستشعار: نشوئها ثانية) أضف ما يلي
     - منصة: 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 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

اترك رد