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

Aktualisierung 10. August 2022

Ich habe das Skript optimiert, um es nach der Umstellung auf Python mit dem Heimassistenten kompatibel zu machen 3

Update 20.12.2021

Ich habe sowohl das Bash-Skript als auch die Vorlage geändert – die erste, um sicherzustellen, dass die erforderlichen Pakete verfügbar sind, und die zweite, um eine bahnbrechende Änderung zu beheben, die in den letzten Versionen von Home Assistant vorgenommen wurde

Ich habe ein Skript verwendet, das ich aus verschiedenen Beispielen auf a modifiziert habe HA-Support-Thread von RobBrad. Damit dieses Skript ausgeführt werden kann, musste ich das Beautifulsoup-Modul auf Home-Assistant installieren.

Fügen Sie ein Skript hinzu

  • Ich verwende das Supervisor-Addon „Samba Share“, um direkt von meinem Windows-PC aus auf meine Home Assistant-Dateien zuzugreifen – sofern Sie nicht bereits eine bevorzugte Zugriffsmethode haben, empfehle ich, dasselbe zu tun
  • navigieren zu \\ha-ip-adresse config
  • erstelle ein Python-Skripte Mappe
  • Erstellen Sie ein neues Python-Skript in diesem Ordner – ich habe meins genannt bin_collection.py
  • Fügen Sie das folgende Skript ein
    System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich = {'schöne Suppe4', 'python-dateutil', 'requests'}
    installiert = {pkg.key für pkg in pkg_resources.working_set}
    fehlt = erforderlich - System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =:
        System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =([Python, '-m', 'pip', 'Installieren', *fehlt], stdout=subprocess.DEVNULL)
    
    System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =://System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =(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 ############ mit der eindeutigen Nummer für Ihre Immobilie, die ich im nächsten Schritt erklären werde

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. Verwenden Sie es in der URL-Zeile im obigen Skript – der einzige Teil, den Sie ändern müssen, ist die 12 Ziffer am Ende

Rufen Sie Ihr Skript über configuration.yaml auf

  • Ein einfacher Eintrag in configuration.yaml ist alles, was zum Ausführen des Skripts erforderlich ist
  • Möglicherweise möchten Sie die Häufigkeit des Laufs anpassen. Mine runs once per day.
    Sensor:
     - Plattform: System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: "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

  • Unmittelbar unter dem obigen Abschnitt (also noch unter dem sensor: Sek-tion) Fügen Sie den folgenden
     - Plattform: Vorlage
       Sensoren:
         black_bin:
           Geräteklasse: System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: '{{ strptime((Zustände("sensor.bin_collections")|from_json())["schwarz"], "%Y-%m-%d") | as_local }}System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: "black_bin"
         brown_bin:
           Geräteklasse: System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: '{{ strptime((Zustände("sensor.bin_collections")|from_json())["braun"], "%Y-%m-%d") | as_local }}System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: "brown_bin"
         blue_bin:
           Geräteklasse: System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: '{{ strptime((Zustände("sensor.bin_collections")|from_json())["blau"], "%Y-%m-%d") | as_local }}System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich =: "blue_bin"
    

Zeigen Sie die Ergebnisse am Frontend an

  • Um die Ergebnisse im Frontend anzuzeigen, fügen Sie einfach eine Karte mit hinzu 3 Sensoren darauf (speziell sensor.black_bin, sensor.blue_bin, und sensor.brown_bin)
  • Beachten Sie, dass Sie möglicherweise den Home Assistant neu starten müssen, um die neuen Sensoren zu laden, die Sie der configuration.yaml hinzugefügt haben

Hinterlasse eine Antwort