DIY मीडिया होम लोगो

अपनी खुद की होम थिएटर और हाय-Fi सेटअप डिजाइन और बनाने के लिए परम साइट.

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 (वेओलिया). 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-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 = {'सुंदर सूप4', 'पायथन-डेटुटिल', 'requests'}
    स्थापित = {pkg_resources.working_set में pkg के लिए pkg.key}
    लापता = आवश्यक - installed
    
    if missing:
        python = sys.executable
        subprocess.check_call([अजगर, '-एम', 'pip', 'इंस्टॉल', *लापता], स्टडआउट = सबप्रोसेस। 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(यूआरएल)
    
    अगर पेज.स्टैटस_कोड != 200:
        बाहर जाएं(1)
    
    सूप = सुंदरसुपे(page.text, 'html.parser')
    
    बाहर = {}
    bh3s = soup.find_all('td', वर्ग_ ="सेवा का नाम")
    bpds = soup.find_all('td', वर्ग_ ="अगली सेवा")
    
    मैं के लिए सीमा में(लेन(bpds)):
        bin_colour = str(bh3s[मैं].अंतर्वस्तु[3]).कम().विभाजित करें('>')[1].विभाजित करें('')[0]
        बाहर[बिन_कलौर] = parser.parse(bpds[मैं].अंतर्वस्तु[2].लेस्ट्रिप().विभाजित करें(',')[0]).अकड़('% 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

अपने स्क्रिप्ट को configuration.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 #जरूरत के रूप में वेबसाइट की प्रतिक्रिया धीमी है और अक्सर डिफ़ॉल्ट पर छोड़ दिया जाएगा समय समाप्त हो जाएगा
    

कॉन्फ़िगरेशन का उपयोग करके प्रत्येक प्रकार के बिन के लिए इकाइयां बनाएँ

  • Imme­di­ately under the above sec­tion (तो अभी भी सेंसर के तहत: सेकंड मोर्चे) निम्नलिखित जोड़ें
     - मंच: template
       sensors:
         काला_बिन:
           device_class: timestamp
           value_template: '{{ स्ट्रिपटाइम((राज्यों("Sens.bin_collections")|from_json())["काली"], "%Y-%m-%d") | as_local }}'
           unique_id: "काला_बिन"
         ब्राउन_बिन:
           device_class: timestamp
           value_template: '{{ स्ट्रिपटाइम((राज्यों("Sens.bin_collections")|from_json())["भूरा"], "%Y-%m-%d") | as_local }}'
           unique_id: "ब्राउन_बिन"
         नीला_बिन:
           device_class: timestamp
           value_template: '{{ स्ट्रिपटाइम((राज्यों("Sens.bin_collections")|from_json())["नीला"], "%Y-%m-%d") | as_local }}'
           unique_id: "नीला_बिन"
    

सामने के छोर पर परिणाम प्रदर्शित करें

  • To show the res­ults on the front end simply add a card with the 3 इस पर सेंसर (spe­cific­ally sensor.black_bin, Sens.blue_bin, और सेंसर। brown_bin)
  • Note you may need to restart home assist­ant to load the new sensors you added to configuration.yaml

उत्तर छोड़ दें