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

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

0गृह सहायक में बिन संग्रह

अब मैं लगभग एक साल से अपने होम असिस्टेंट पर आधारित स्मारथोम सेटअप विकसित कर रहा हूं (SmartThings छोड़ने के बाद से) और एक प्रारंभिक खड़ी सीखने की अवस्था के बाद, मैं होम असिस्टेंट के साथ खुश हूं, इसलिए मैंने उन चीजों को विस्तारित करने के लिए काम करना शुरू कर दिया है जो मैं करता हूं कि यह मेरे स्मार्तोम के लिए दीर्घकालिक आधार प्रदान करता है।. एक चीज जो मैं जोड़ना चाहता था वह थी बिन कलेक्शन डेटा मुझे याद दिलाने के लिए कि बिन कब है. जैसा कि मैं शेफ़ील्ड में रहता हूं मुझे स्थानीय अधिकारियों के आउट-सोर्स प्रदाता से इस डेटा को खींचने की आवश्यकता थी (वेओलिया). निम्नलिखित विवरण मैंने यह कैसे किया, दूसरों के काम पर बहुत अधिक निर्माण करना, जिन्होंने इसे पहले से ही अन्य क्षेत्रों के लिए किया है

अपडेट 20-दिसंबर-2021

मैंने बैश स्क्रिप्ट और टेम्प्लेट दोनों में बदलाव किया है – पहला यह सुनिश्चित करने के लिए कि आवश्यक पैकेज उपलब्ध हैं और दूसरा गृह सहायक के हालिया रिलीज द्वारा किए गए एक ब्रेकिंग परिवर्तन को ठीक करने के लिए

मैंने एक स्क्रिप्ट का उपयोग किया जिसे मैंने विभिन्न उदाहरणों से संशोधित किया HABBrad द्वारा समर्थन धागा. इस स्क्रिप्ट को चलाने के लिए मुझे घर-सहायक पर beautifulsoup मॉड्यूल को स्थापित करने की आवश्यकता थी.

एक स्क्रिप्ट जोड़ें

  • मैं। सांबा शेयर का उपयोग करता हूं’ पर्यवेक्षक addon मेरे घर सहायक फ़ाइलों को सीधे मेरे विंडोज़ पीसी से एक्सेस करने के लिए – जब तक आपके पास पहले से ही एक पसंदीदा तरीका नहीं है, मैं यही करने की सलाह देता हूं
  • के लिए ब्राउज़ करें \\ha-ip-address config
  • बनाओ अजगर-लिपियाँ फोल्डर
  • इस फ़ोल्डर में एक नया अजगर स्क्रिप्ट बनाएँ – मैंने अपना फोन किया bin_collection.py
  • निम्नलिखित स्क्रिप्ट डालें
    import sys
    import subprocess
    import pkg_resources
    
    required = {'सुंदर सूप4', 'पायथन-डेटुटिल'}
    स्थापित = {pkg_resources.working_set में pkg के लिए pkg.key}
    लापता = आवश्यक - installed
    
    if missing:
        python = sys.executable
        subprocess.check_call([अजगर3, '-एम', 'पाइप3', 'इंस्टॉल', *लापता], स्टडआउट = सबप्रोसेस। 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(बाहर))
    
  • आपको प्रतिस्थापित करने की आवश्यकता होगी ############ अपनी संपत्ति के लिए अद्वितीय संख्या के साथ जो मैं बताऊंगा कि अगले चरण में कैसे प्राप्त करें

अपना अद्वितीय पता प्राप्त करें

  • के लिए ब्राउज़ करें https://wasteservices.sheffield.gov.uk/property/
  • अपना पोस्ट कोड डालें और सूची से अपना पता चुनें
  • नए url पर ध्यान दें. इसे ऊपर की स्क्रिप्ट में url लाइन में उपयोग करें – एकमात्र भाग जिसे आपको बदलना होगा वह है 12 अंत में अंक संख्या

अपने स्क्रिप्ट को configuration.yaml से कॉल करें

  • कॉन्फ़िगरेशन में एक साधारण प्रविष्टि। ऑयल वह सब है जो स्क्रिप्ट को चलाने के लिए आवश्यक है
  • आप रन की आवृत्ति को समायोजित करना चाह सकते हैं. मेरा प्रति दिन एक बार चलता है.
    सेंसर:
     - मंच: command_line
       name: "बिन संग्रह"
       आदेश: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       कमांड_ टाइमआउट: 60 #जरूरत के रूप में वेबसाइट की प्रतिक्रिया धीमी है और अक्सर डिफ़ॉल्ट पर छोड़ दिया जाएगा समय समाप्त हो जाएगा
    

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

  • उपरोक्त अनुभाग के तहत तुरंत (तो अभी भी सेंसर के तहत: अनुभाग) निम्नलिखित जोड़ें
     - मंच: 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: "नीला_बिन"
    

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

  • सामने के छोर पर परिणाम दिखाने के लिए बस के साथ एक कार्ड जोड़ें 3 इस पर सेंसर (विशेष रूप से सेंसर, Sens.blue_bin, और सेंसर। brown_bin)
  • नोट आपके द्वारा कॉन्फ़िगरेशन में जोड़े गए नए सेंसर को लोड करने के लिए आपको होम असिस्टेंट को पुनरारंभ करना पड़ सकता है

कृपया नीचे टिप्पणी करके अपने विचार हमें भेजने! आप सदस्यता के लिए चाहते हैं, तो ऊपर दाईं ओर मेनू पर लिंक का उपयोग करें सदस्यता लें. आप नीचे दिए गए सामाजिक लिंक का उपयोग करके अपने दोस्तों के साथ इस साझा कर सकते हैं. चियर्स.

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