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

Update 20.12.2021

Ich habe sowohl an diesem Bash-Skript als auch an der Vorlage eine Änderung vorgenommen – die erste, um sicherzustellen, dass die erforderlichen Pakete verfügbar sind, und die zweite, um eine grundlegende Änderung zu beheben, die durch die neuesten Versionen von Home Assistant vorgenommen wurde

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

Fügen Sie ein Skript hinzu

  • Ich benutze die Samba-Freigabe’ Supervisor-Addon für den direkten Zugriff auf meine Home Assistant-Dateien von meinem Windows-PC aus – Sofern Sie nicht bereits eine bevorzugte Zugriffsmethode haben, empfehle ich, dasselbe zu tun
  • navigieren zu \\ha-ip-adresse config
  • ein ... kreieren Python-Skripte Mappe
  • Erstellen Sie in diesem Ordner ein neues Python-Skript – Ich habe meine angerufen bin_collection.py
  • Fügen Sie das folgende Skript ein
    System importieren
    Unterprozess importieren
    pkg_resources importieren
    
    erforderlich = {'schöne Suppe4', 'python-dateutil'}
    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 =([python3, '-m', 'pip3', '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 erläutern 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 der 12 Ziffernnummer 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. Meins läuft einmal pro Tag.
    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

  • Sofort unter dem obigen Abschnitt (also noch unter dem sensor: Sektion) 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 am Frontend anzuzeigen, fügen Sie einfach eine Karte mit dem 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 zu configuration.yaml hinzugefügt haben

Bitte senden Sie uns Ihre Gedanken durch Kommentierung unten! 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