0Colecciones de contenedores en Home Assistant

I’ve been devel­op­ing my Home Assist­ant based smarthome setup for around a year now (since leav­ing SmartTh­ings) and after an ini­tial steep learn­ing curve I’ve been veyr happy with home assist­ant so I have star­ted work­ing to expand the things it does as I am con­if­dent it offers a long term basis for my smarthome. One thing I wanted to add was bin col­lec­tion data to remind me which bin is due when. As I live in Shef­field I needed to pull this data from the loc­al author­it­ies out-sources pro­vider (veolia). The fol­low­ing details how I did this, build­ing very much on the work of oth­ers who have done it already for oth­er regions

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.

Instalar el módulo Python de 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 instalar beautifulsoup4

Agregar una secuencia de comandos

  • 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
  • navegar a \\ha-dirección-ip config
  • cre­ate a scripts de Python carpeta
  • 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:
        salida(1)
    
    soup = BeautifulSoup(texto de la página, 'html.parser')
    
    fuera = {}
    bh3s = soup.find_all('td', class_ ="Nombre del Servicio")
    bpds = soup.find_all('td', class_ ="siguiente servicio")
    
    porque yo en el rango(solamente(bpds)):
        bin_colour = str(bh3s[yo].contenido[3]).más bajo().división('>')[1].división('')[0]
        fuera[bin_colour] = parser.parse(bpds[yo].contenido[2].lstrip().división(',')[0]).strftime('% Y-% m-% d')
    
    imprimir(json.dumps(fuera))
    
  • Deberá reemplazar el ############ with the unique num­ber for your prop­erty which I will explain how to get in the next step

Obtenga su dirección única

  • Vaya a https://wasteservices.sheffield.gov.uk/property/
  • Ingrese su código postal y seleccione su dirección de la lista
  • Anote la nueva 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

Llame a su secuencia de comandos desde configuration.yaml

  • Una simple entrada en configuration.yaml es todo lo que se necesita para ejecutar el script.
  • You may want to adjust the fre­quency of the run. Mine runs once per day.
    sensor:
     - plataforma: command_line
       name: "Colecciones de contenedores"
       mando: "python3 /config/python-scripts/bin_collection.py"
       scan_interval: 86400
       command_timeout: 60 #necesario ya que el sitio web tarda en responder y, a menudo, se agota el tiempo de espera si se deja en el valor predeterminado
    

Cree entidades para cada tipo de contenedor usando configuration.yaml

  • Imme­di­ately under the above sec­tion (tan quieto bajo el sensor: sec-ción) agregue lo siguiente
     - plataforma: template
       sensors:
         black_bin:
           device_class: timestamp
           value_template: '{{ (estados("sensor.bin_collections")|from_json())["negro"] }}'
           unique_id: "black_bin"
         brown_bin:
           device_class: timestamp
           value_template: '{{ (estados("sensor.bin_collections")|from_json())["marrón"] }}'
           unique_id: "brown_bin"
         blue_bin:
           device_class: timestamp
           value_template: '{{ (estados("sensor.bin_collections")|from_json())["azul"] }}'
           unique_id: "blue_bin"
    

Mostrar los resultados en la interfaz

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

Qué piensas? envíanos un comentario más abajo! Si desea suscribirse por favor utilice el enlace de suscripción en el menú en la parte superior derecha. También puede compartir esto con tus amigos mediante el uso de los enlaces sociales inferiores. Aclamaciones.

Deja una respuesta