0Bin-Sammlungen in Home Assistant

Ich entwickle seit ungefähr einem Jahr mein Home Assistant-basiertes Smarthome-Setup (seit dem Verlassen von SmartThings) und nach einer anfänglichen steilen Lernkurve war ich sehr zufrieden mit dem Heimassistenten, also habe ich begonnen, daran zu arbeiten, die Dinge zu erweitern, die es tut, da ich überzeugt bin, dass es eine langfristige Basis für mein Smarthome bietet. Eine Sache, die ich hinzufügen wollte, waren Bin-Sammlungsdaten, um mich daran zu erinnern, welcher Bin wann fällig ist. Da ich in Sheffield lebe, musste ich diese Daten vom Outsourcing-Anbieter der lokalen Behörden abrufen (veolia). Die folgenden Details, wie ich das gemacht habe, Aufbauend auf der Arbeit anderer, die dies bereits für andere Regionen getan haben

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.

Installieren Sie das Python-Modul BeautifulSoup

  • Install the Super­visor add-on ‘SSH and Web Terminal’
  • Open the ter­min­al from the main left-hand menu
  • Use the com­mand pip3 installiere beautifulsoup4

Fügen Sie ein Skript hinzu

  • 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
  • navigieren zu \\ha-ip-adresse config
  • cre­ate a Python-Skripte Mappe
  • Cre­ate a new python script in this folder — I called mine bin_collection.py
  • Insert the fol­low­ing script
    from bs4 import BeautifulSoup
    import datetime
    from dateutil import parser
    import requests
    import json
    
    url = 'https://wasteservices.sheffield.gov.uk/property/############'
    page = requests.get(url)
    
    if page.status_code != 200:
        Ausfahrt(1)
    
    Suppe = Schöne Suppe(page.text, 'html.parser')
    
    out = {}
    bh3s =oup.find_all('td', class_ ="Dienstname")
    bpds =oup.find_all('td', class_ ="nächster Service")
    
    für ich in Reichweite(len(bpds)):
        bin_colour = str(bh3s[ich].Inhalt[3]).niedriger().Teilt('>')[1].Teilt('')[0]
        aus[bin_colour] = parser.parse(bpds[ich].Inhalt[2].lstrip().Teilt(',')[0]).strftime('% Y-% m-% d')
    
    drucken(json.dumps(aus))
    
  • Sie müssen die ersetzen ############ with the unique num­ber for your prop­erty which I will explain how to get in the next step

Holen Sie sich Ihre eindeutige Adresse

  • Wechseln Sie zu https://wasteservices.sheffield.gov.uk/property/
  • Geben Sie Ihre Postleitzahl ein und wählen Sie Ihre Adresse aus der Liste aus
  • Notieren Sie sich die neue 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

Rufen Sie Ihr Skript über configuration.yaml auf

  • Ein einfacher Eintrag in configuration.yaml ist alles, was zum Ausführen des Skripts erforderlich ist
  • You may want to adjust the fre­quency of the run. Mine runs once per day.
    Sensor:
     - Plattform: command_line
       name: "Bin Sammlungen"
       Befehl: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #Wird benötigt, da die Website nur langsam reagiert und häufig eine Zeitüberschreitung aufweist, wenn die Standardeinstellung beibehalten wird
    

Erstellen Sie Entitäten für jeden Bin-Typ mit configuration.yaml

  • Imme­di­ately under the above sec­tion (also noch unter dem sensor: Sek-tion) Fügen Sie den folgenden
     - Plattform: Vorlage
       Sensoren:
         black_bin:
           Geräteklasse: timestamp
           value_template: '{{ (Zustände("sensor.bin_collections")|from_json())["schwarz"] }}'
           unique_id: "black_bin"
         brown_bin:
           Geräteklasse: timestamp
           value_template: '{{ (Zustände("sensor.bin_collections")|from_json())["braun"] }}'
           unique_id: "brown_bin"
         blue_bin:
           Geräteklasse: timestamp
           value_template: '{{ (Zustände("sensor.bin_collections")|from_json())["blau"] }}'
           unique_id: "blue_bin"
    

Zeigen Sie die Ergebnisse am Frontend an

  • To show the res­ults on the front end simply add a card with the 3 Sensoren darauf (spe­cific­ally sensor.black_bin, sensor.blue_bin, und sensor.brown_bin)
  • Note you may need to restart home assist­ant to load the new sensors you added to configuration.yaml

Denken wir etwas verpasst haben? Lassen Sie uns wissen, von unten zu kommentieren. Wenn Sie bitte abonnieren möchten den Link oben rechts auf dem Menü abonnieren verwenden. Sie können auch unten unter Verwendung der sozialen Bindungen diese mit Ihren Freunden teilen. Prost.

Hinterlasse eine Antwort