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 contento 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 inteligente.. 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, Construyendo mucho sobre el trabajo de otros que ya lo han hecho para otras regiones.

Actualización 20-dic-2021

Hice un cambio tanto en el script bash como en la plantilla – el primero para asegurarse de que los paquetes requeridos estén disponibles y el segundo para corregir un cambio importante realizado por versiones recientes de Home Assistant

Usé un script que modifiqué a partir de varios ejemplos en un Hilo de soporte HA por RobBrad. Para que este script se ejecute, necesitaba instalar el módulo beautifulsoup en Home-Assistant.

Agregar una secuencia de comandos

  • Yo uso "Samba Share"’ complemento supervisor para acceder a los archivos de mi asistente doméstico directamente desde mi PC con Windows – a menos que ya tenga un método de acceso preferido, le recomiendo hacer lo mismo
  • navegar a \\ha-dirección-ip config
  • crear un scripts de Python carpeta
  • Cree una nueva secuencia de comandos de Python en esta carpeta – Llamé mía bin_collection.py
  • Inserte la siguiente secuencia de comandos
    import sys
    import subprocess
    import pkg_resources
    
    required = {'beautifulsoup4', 'python-dateutil'}
    instalado = {pkg.key para pkg en pkg_resources.working_set}
    faltante = requerido - installed
    
    if missing:
        python = sys.executable
        subprocess.check_call([python3, '-metro', 'pip3', 'Instalar en pc', *desaparecido], stdout = subproceso.DEVNULL)
    
    desde bs4 importar BeautifulSoup
    importar fecha y hora
    desde el analizador de importación dateutil
    solicitudes de importación
    importar json
    
    url = 'https://wasteservices.sheffield.gov.uk/property/############ '
    página = solicitudes.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 ############ con el número único de su propiedad que le explicaré cómo llegar en el siguiente paso

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. Úselo en la línea de la URL en la secuencia de comandos anterior – la única parte que tendrá que cambiar es la 12 número de dígito al final

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.
  • Es posible que desee ajustar la frecuencia de la carrera.. El mío se ejecuta una vez al día.
    sensor:
     - plataforma: línea de comando
       nombre: "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

  • Inmediatamente debajo de la sección anterior (tan quieto bajo el sensor: sección) agregue lo siguiente
     - plataforma: plantilla
       sensores:
         black_bin:
           device_class: marca de tiempo
           value_template: '{{ strptime((estados("sensor.bin_collections")|from_json())["negro"], "%Y-% m-% d") | as_local }}'
           Identificación única: "black_bin"
         brown_bin:
           device_class: marca de tiempo
           value_template: '{{ strptime((estados("sensor.bin_collections")|from_json())["marrón"], "%Y-% m-% d") | as_local }}'
           Identificación única: "brown_bin"
         blue_bin:
           device_class: marca de tiempo
           value_template: '{{ strptime((estados("sensor.bin_collections")|from_json())["azul"], "%Y-% m-% d") | as_local }}'
           Identificación única: "blue_bin"
    

Mostrar los resultados en la interfaz

  • Para mostrar los resultados en la parte frontal, simplemente agregue una tarjeta con el 3 sensores en él (específicamente sensor.black_bin, sensor.blue_bin, y sensor.brown_bin)
  • Tenga en cuenta que es posible que deba reiniciar el asistente doméstico para cargar los nuevos sensores que agregó a configuration.yaml

Tienes algunos pensamientos de su propio? Sumérjase a continuación comentando! 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