0Raccogli raccolte in Home Assistant

Sto sviluppando la mia configurazione smarthome basata su Home Assistant da circa un anno (da quando hai lasciato SmartThings) e dopo una curva di apprendimento iniziale ripida sono stato molto contento dell'assistente domestico, quindi ho iniziato a lavorare per espandere le cose che fa poiché sono convinto che offre una base a lungo termine per la mia casa intelligente. Una cosa che volevo aggiungere erano i dati di raccolta del cestino per ricordarmi quale cestino è dovuto e quando. Dato che vivo a Sheffield, avevo bisogno di estrarre questi dati dal fornitore di fonti esterne delle autorità locali (veolia). I seguenti dettagli su come l'ho fatto, basandosi molto sul lavoro di altri che l'hanno già fatto per altre regioni

Ho usato uno script che ho modificato da vari esempi su a Thread di supporto HA di RobBrad. Per eseguire questo script avevo bisogno di installare il modulo beautifulsoup su home-assistant.

Installa il modulo python BeautifulSoup

  • Installa il componente aggiuntivo Supervisore 'SSH e Terminale Web'
  • Apri il terminale dal menu principale a sinistra
  • Usa il comando pip3 installa beautifulsoup4

Aggiungi uno script

  • Uso l'addon del supervisore "Samba Share" per accedere ai file dell'assistente domestico direttamente dal mio PC Windows - a meno che tu non abbia già un metodo di accesso preferito, ti consiglio di fare lo stesso
  • passare a \\ha-ip-address config
  • creare un script python cartella
  • Crea un nuovo script Python in questa cartella: ho chiamato il mio bin_collection.py
  • Inserisci il seguente script
    da bs4 import BeautifulSoup
    data e ora di importazione
    dal parser di importazione dateutil
    richieste di importazione
    import json
    
    url = 'https://wasteservices.sheffield.gov.uk/property/############'
    pagina = request.get(url)
    
    se page.status_code != 200:
        Uscita(1)
    
    soup = BeautifulSoup(page.text, "html.parser")
    
    fuori = {}
    bh3s = soup.find_all("td", class_ ="Nome di Servizio")
    bpds = soup.find_all("td", class_ ="prossimo servizio")
    
    per i nel raggio d'azione(solo(bpds)):
        bin_colour = str(bh3s[io].Contenuti[3]).inferiore().Diviso('>')[1].Diviso('')[0]
        su[bin_colour] = parser.parse(bpds[io].Contenuti[2].lstrip().Diviso(',')[0]).strftime('% Y-% m-% d')
    
    Stampa(json.dumps(su))
    
  • Dovrai sostituire il file ############ con il numero univoco della tua proprietà che ti spiegherò come ottenere nel passaggio successivo

Ottieni il tuo indirizzo univoco

  • Individuare https://wasteservices.sheffield.gov.uk/property/
  • Inserisci il tuo codice postale e seleziona il tuo indirizzo dall'elenco
  • Prendi nota del nuovo URL. Usalo nella riga dell'URL nello script sopra: l'unica parte che dovrai modificare è il 12 cifra numero alla fine

Chiama il tuo script da configuration.yaml

  • Una semplice voce in configuration.yaml è tutto ciò che è necessario per eseguire lo script
  • Potresti voler regolare la frequenza della corsa. Il mio funziona una volta al giorno.
    sensore:
     - piattaforma: riga di comando
       nome: "Raccolte bin"
       comando: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #necessario in quanto il sito web è lento a rispondere e spesso va in timeout se lasciato per impostazione predefinita
    

Crea entità per ogni tipo di contenitore utilizzando configuration.yaml

  • Immediatamente sotto la sezione sopra (quindi ancora sotto il sensore: se-zione) aggiungere il seguente
     - piattaforma: modello
       sensori:
         black_bin:
           device_class: marca temporale
           valore_modello: '{{ (stati("sensor.bin_collections")|from_json())["nero"] }}'
           ID_univoco: "black_bin"
         brown_bin:
           device_class: marca temporale
           valore_modello: '{{ (stati("sensor.bin_collections")|from_json())["Marrone"] }}'
           ID_univoco: "brown_bin"
         blue_bin:
           device_class: marca temporale
           valore_modello: '{{ (stati("sensor.bin_collections")|from_json())["blu"] }}'
           ID_univoco: "blue_bin"
    

Visualizza i risultati sul front-end

  • Per mostrare i risultati sul front-end è sufficiente aggiungere una carta con il 3 sensori su di esso (nello specifico sensor.black_bin, sensor.blue_bin, e sensor.brown_bin)
  • Nota che potrebbe essere necessario riavviare l'assistente domestico per caricare i nuovi sensori aggiunti a configuration.yaml

Ho trovato questo utile? Per favore fateci sapere facendo cadere un commento qui sotto. Se si desidera iscriversi si prega di utilizzare il link iscriviti sul menu in alto a destra. È inoltre possibile condividere con i tuoi amici usando i link sottostanti sociali. Saluti.

lascia un commento