0Colecciones de contenedores en Home Assistant

He estado desarrollando mi configuración de smarthome basada en Home Assistant durante aproximadamente un año (desde que salí de SmartThings) y después de una curva de aprendizaje inicial empinada, he estado muy feliz con el asistente del hogar, así que comencé a trabajar para expandir las cosas que hace, ya que estoy seguro de que ofrece una base a largo plazo para mi hogar. Una cosa que quería agregar eran los datos de la colección de contenedores para recordarme qué contenedor vence cuando. Como vivo en Sheffield, necesitaba obtener estos datos del proveedor externo de las autoridades locales. (veolia). Los siguientes detalles de cómo hice esto, basarse en gran medida en el trabajo de otros que ya lo han hecho para otras regiones

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: plantilla
       sensores:
         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

Encontrado esto útil? Por favor, háganos saber dejando caer 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