0HomeAssistantのビンコレクション

私はホームアシスタントベースのスマートホームセットアップを約1年前から開発しています (SmartThingsを離れてから) 最初の急な学習曲線の後、私はホームアシスタントに非常に満足していたので、スマートホームの長期的な基盤を提供すると確信しているので、ホームアシスタントの機能を拡張する作業を開始しました。. 追加したかったことの1つは、ビン収集データで、どのビンがいつ期限になるかを思い出させることでした。. 私はシェフィールドに住んでいるので、地方自治体のアウトソースプロバイダーからこのデータを取得する必要がありました (ヴェオリア). 以下は私がこれをどのようにしたかを詳しく説明します, 他の地域のためにすでにそれを行った他の人の仕事に非常に基づいて構築する

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

2021年12月20日更新

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

さまざまな例から変更したスクリプトを使用しました RobBradによるHAサポートスレッド. このスクリプトを実行するには、Beautifulsoupモジュールをホームアシスタントにインストールする必要がありました.

スクリプトを追加する

  • 「SambaShare」スーパーバイザーアドオンを使用して、Windows PCから直接ホームアシスタントファイルにアクセスします。優先するアクセス方法が既にない場合は、同じようにすることをお勧めします。
  • 参照する \\ha-ip-address config
  • 作成する python-scripts フォルダ
  • このフォルダに新しいPythonスクリプトを作成します—私は私のと呼びました bin_collection.py
  • 次のスクリプトを挿入します
    sysをインポート
    サブプロセスのインポート
    pkg_resourcesをインポートします
    
    必須= {「beautifulsoup4」, 'python-dateutil', 'requests'}
    インストール済み= {pkg_resources.working_setのpkgのpkg.key}
    行方不明=必須 - sysをインポート
    サブプロセスのインポート
    pkg_resourcesをインポートします
    
    必須=:
        sysをインポート
    サブプロセスのインポート
    pkg_resourcesをインポートします
    
    必須=([パイソン, '-m', 'pip', 'インストール', *行方不明], stdout = subprocess.DEVNULL)
    
    bs4からインポートBeautifulSoup
    インポート日時
    dateutilインポートパーサーから
    インポートリクエスト
    jsonをインポートする
    
    url = 'https://Wasteservices.sheffield.gov.uk/property/############ '
    ページ= requests.get(URL)
    
    page.status_codeの場合 != 200:
        出口(1)
    
    スープ= BeautifulSoup(page.text, 'html.parser')
    
    アウト= {}
    bh3s = soup.find_all('td', class_ ="サービス名")
    bpds = soup.find_all('td', class_ ="次のサービス")
    
    範囲内の私のために(のみ(bpds)):
        bin_colour = str(bh3s[私].内容[3]).下().スプリット('>')[1].スプリット('' ')[0]
        アウト[bin_colour] = parser.parse(bpds[私].内容[2].lstrip().スプリット(',')[0]).strftime('%Y-%m-%d')
    
    印刷(json.dumps(アウト))
    
  • 交換する必要があります ############ 次のステップで取得する方法を説明するあなたの財産の一意の番号で

一意のアドレスを取得する

  • を参照 https://wasteservices.sheffield.gov.uk/property/
  • 郵便番号を入力し、リストから住所を選択します
  • 新しいURLをメモします. 上記のスクリプトのURL行で使用してください—変更する必要があるのは 12 最後の桁番号

configuration.yamlからスクリプトを呼び出します

  • スクリプトを実行するために必要なのは、configuration.yamlの単純なエントリだけです。
  • 実行の頻度を調整することをお勧めします. 鉱山は1日1回実行されます。
    センサー:
     - プラットホーム: コマンドライン
       名前: "ビンコレクション"
       コマンド: "python3 / config / python-scripts / bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #ウェブサイトの応答が遅く、デフォルトのままにするとタイムアウトになることが多いため、必要です
    

configuration.yamlを使用して、ビンのタイプごとにエンティティを作成します

  • 上記のセクションのすぐ下 (まだセンサーの下にあります: セクション) 以下を追加します。
     - プラットホーム: テンプレート
       センサー:
         black_bin:
           device_class: タイムスタンプ
           value_template: '{{ strptime((州("sensor.bin_collections")|from_json())["黒"], "%Y-%m-%d") | as_local }}'
           一意のID: "black_bin"
         brown_bin:
           device_class: タイムスタンプ
           value_template: '{{ strptime((州("sensor.bin_collections")|from_json())["褐色"], "%Y-%m-%d") | as_local }}'
           一意のID: "brown_bin"
         blue_bin:
           device_class: タイムスタンプ
           value_template: '{{ strptime((州("sensor.bin_collections")|from_json())["青い"], "%Y-%m-%d") | as_local }}'
           一意のID: "blue_bin"
    

フロントエンドに結果を表示する

  • フロントエンドに結果を表示するには、カードを追加するだけです。 3 その上のセンサー (具体的にはsensor.black_bin, sensor.blue_bin, およびsensor.brown_bin)
  • configuration.yamlに追加した新しいセンサーをロードするには、HomeAssistantを再起動する必要がある場合があることに注意してください

Leave a Reply