Organización de cajas con HA

Organización de cajas con HA

Quizás nunca lo habías pensado, pero con este sistema de organización de cajas con HA siempre sabrás donde has guardado cada cosa.

¿Qué sentido tiene esto? Bueno, si como a mí te gusta el bricolaje, hacer las cosas tú mismo y tienes un poco de «síndrome de diógenes», estoy seguro de que en algún trastero o armario tienes guardado cables, pilas, herramientas, pinturas… y un sin fín de elementos.

El problema llega cuando estás buscando algo y es como encontrar una aguja en un pajar. Con este método vamos a utilizar a Home Assistant como sistema de organización para ir a tiro hecho en estos casos. Por cierto, la idea de base la he cogido de nuestro amigo BWHOUSE de la comunidad de Aguacatec!

Haz inventario

Para trasladar la información a nuestro sistema de organización de cajas con HA primero tenemos que registrar dónde tenemos cada cosa. Esto puede ser laborioso dependiendo de cuántas cosas tengas, pero puedes seguir estos consejos:

  • Divide los elementos en distintos contenedores identificables (por ejemplo, «caja negra» o «caja gris»).
  • Si tus contenedores son iguales, númeralos o identifícalos con una letra (por ejemplo, «caja gris A», «caja gris B»…).
  • Agrupa los elementos por categorías lógicas (por ejemplo, mete todos los cables o pinturas en la misma caja).
  • Aprovecha para hacer limpieza y tirar aquello que no usas.

Vuelca la información

Lo siguiente que vamos a hacer es realizar la organización de cajas con HA literalmente. Para ello sigue estos pasos:

  1. En Home Assistant, ve a Ajustes > Dispositivos y servicios > Ayudantes > Crear ayudante y selelecciona la opción «Desplegable».
  2. En nombre del ayudante, indica el nombre del contenedor correspondiente (por ejemplo, «Caja Negra»).
  3. Selecciona un icono que represente, de forma genérica, qué tipo de objetos hay en el contenedor.
  4. En la parte de opciones, añade una por cada objeto guardado (por ejemplo, «sprays», «brochas», «bridas», «silicona»…).
  5. Cuando termines con la lista, pulsa en «Crear». Esto habrá creado una entidad del tipo ‘input_select’ (por ejemplo, «input_select.box_caja_negra»).
  6. Repite el proceso por cada contenedor de almacenaje que tengas.

Creación de la tarjeta

Lo siguiente que vamos a hacer es crear la organización de cajas con HA de forma visual. Es decir, si por ejemplo tienes cajas apiladas en una estantería o un armario, vamos a replicar su posición en una tarjeta. Te sugiero que las coloques, en la medida posible, de la misma forma que tienes ordenados los contenedores. De esta forma te será mucho más fácil localizar cualquier objeto.

En mi caso he utilizado una tarjeta tipo «cuadrícula» y en cada uno de los apartados he metido una Mushroom Template Card de la siguiente forma:

  • El icono representa, de forma genérica, qué tipo de objetos hay en cada contenedor.
  • El nombre identifica al contenedor.
  • La entidad asociada a la tarjeta es el ayudante correspondiente, creado en el apartado anterior.
  • También he utilizado Card Mod, para darle a la tarjeta la apariencia del contenedor.
  • Por último, al pulsar en cada una de las tarjetas despliega un pop-up, tal y como describo en el siguiente apartado.

A continuación te dejo el código del ejemplo:

square: false
type: grid
cards:
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Negra G
    icon: mdi:palette
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_negra_grande
    card_mod:
      style: |
        ha-card {
          background-color: black;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_negra_grande"
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Negra P
    icon: mdi:hammer-wrench
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_negra_pequena
    card_mod:
      style: |
        ha-card {
          background-color: black;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_negra_pequena"
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Gris A
    icon: mdi:power-plug
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_gris_a
    card_mod:
      style: |
        ha-card {
          background-color: grey;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_gris_a"
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Azul A
    icon: mdi:sticker-circle-outline
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_azul_a
    card_mod:
      style: |
        ha-card {
          background-color: cornflowerblue;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_azul_a"
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Gris B
    icon: mdi:cable-data
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_gris_b
    card_mod:
      style: |
        ha-card {
          background-color: grey;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_gris_b"
  - type: custom:mushroom-template-card
    primary: ""
    secondary: Azul B
    icon: mdi:robot-vacuum
    icon_color: white
    layout: vertical
    multiline_secondary: true
    entity: input_select.caja_azul_b
    card_mod:
      style: |
        ha-card {
          background-color: cornflowerblue;
        }
    tap_action:
      action: navigate
      navigation_path: "#caja_azul_b"
columns: 2

Consulta del detalle

Ahora sería interesante que, al pulsar en cada uno de los contenedores, nos indique qué hay en cada uno de ellos. Como te decía, para ello voy a desplegar un pop-up con Bubble Card, que de forma automática va a crear una lista de todos los objetos que se encuentran en el contenedor correspondiente, usando Auto-Entites Card.

Para ello tienes que crear una tarjeta para cada uno de los contenedores, que tendrá este aspecto.

A continuación te dejo el código del ejemplo (observa que puedes cambiar el número de columnas si lo necesitas):

type: vertical-stack
cards:
  - type: custom:bubble-card
    card_type: pop-up
    hash: "#caja_negra_grande"
    name: Caja Negra Grande
    icon: mdi:palette
  - type: custom:auto-entities
    show_empty: false
    card:
      type: grid
      square: false
      columns: 2
    card_param: cards
    filter:
      template: >-
        {% set contenido =
        (state_attr('input_select.caja_negra_grande','options')) | sort %} {%
        set icon = (state_attr('input_select.caja_negra_grande','icon')) %}

        {% for item in contenido -%}

        {{
          {
            'type': 'custom:mushroom-template-card',
            'primary': item,
            'icon': icon,
            'icon_color': 'white',
            'multiline_secondary': 'true',
            'tap_action': {
              'action': 'none'
             },
            'card_mod': {
              'style': 'mushroom-shape-icon { --shape-color: black !important; } ha-card { margin-left: 4px;margin-top: 4px; border: 0px; height: 12px!important; background: transparent; --icon-size: 20px; --card-primary-font-size: 12px; box-shadow: none};',
             },
          }
        }},

        {%- endfor %}

Si te lo estás preguntando, la lista se ordena alfabéticamente y coge el icono asignado al contenedor de forma automática. También te recomiendo que en el atributo ‘–shape-color’ asignes el mismo color que le diste al contenedor en el apartado anterior, ya que como verás a continuación te será de utilidad.

Encuentra tus objetos

Supongamos ahora que no quieres saber qué hay en un contenedor, sino saber en qué contenedor está un objeto. Esto también vamos a poder hacerlo con nuestro sistema de organización de cajas con HA. Para ello crearemos otra tarjeta con el siguiente aspecto:

Como observarás, sigue la misma estructura que la tarjeta anterior, pero en este caso incluye los objetos de todos los contenedores ordenados alfabéticamente. No obstante, si te fijas en el icono de su izquierda podrás identificar en qué contenedor se encuentra.

A continuación te dejo el código de la tarjeta, sobre el que tienes que relalizar la siguiente modificación:

  • Fíjate en la línea con este fragmento de código ‘{% set cajas = [‘. A continuación hay una serie de líneas, cada una representa uno de tus contenedores. Por tanto, tienes que incluir esta línea tantas veces como contenedores tengas.
  • Sustituye la entidad de tu contenedor (por ejemplo, ‘input_select.caja_negra_grande’) en su línea correspondiente.
  • Personaliza el color del contenedor para que coincida con el que asignaste en el resto de tarjetas, reemplazándolo al final de la línea (por ejemplo, ‘color’: ‘black’).
type: custom:auto-entities
show_empty: false
card:
  type: grid
  square: false
  columns: 2
card_param: cards
filter:
  template: >-
    {% set cajas = [
      {'options': state_attr('input_select.caja_negra_grande', 'options'), 'icon': state_attr('input_select.caja_negra_grande', 'icon'), 'color': 'black'},
      {'options': state_attr('input_select.caja_negra_pequena', 'options'), 'icon': state_attr('input_select.caja_negra_pequena', 'icon'), 'color': 'black'},
      {'options': state_attr('input_select.caja_gris_a', 'options'), 'icon': state_attr('input_select.caja_gris_a', 'icon'), 'color': 'grey'},
      {'options': state_attr('input_select.caja_gris_b', 'options'), 'icon': state_attr('input_select.caja_gris_b', 'icon'), 'color': 'grey'},
      {'options': state_attr('input_select.caja_azul_a', 'options'), 'icon': state_attr('input_select.caja_azul_a', 'icon'), 'color': 'cornflowerblue'},
      {'options': state_attr('input_select.caja_azul_b', 'options'), 'icon': state_attr('input_select.caja_azul_b', 'icon'), 'color': 'cornflowerblue'}
    ] %}

    {% set contenido = cajas | map(attribute='options') | list | sum(start=[]) |
    sort %}

    {% for item in contenido -%}    {% set icon = (cajas |
    selectattr('options','contains', item) | map(attribute='icon') | list |
    first) %} {% set color = (cajas | selectattr('options','contains', item) |
    map(attribute='color') | list | first) %} {{
      {
        'type': 'custom:mushroom-template-card',
        'primary': item,
        'icon': icon,
        'icon_color': 'white',
        'multiline_secondary': 'true',
        'tap_action': {
          'action': 'none'
         },
        'card_mod': {
          'style': 'mushroom-shape-icon { --shape-color: ' ~ color ~ ' !important; } ha-card { margin-top: 4px; border: 0px; height: 12px!important; background: transparent; --icon-size: 20px; --card-primary-font-size: 12px; box-shadow: none};',
         },
      }
    }},

    {%- endfor %}

Pregunta a tu asistente

Y si buscar tus objetos en una lista ordenada te parece mucho esfuerzo, agárrate porque también vas a poder preguntarle a tu asistente.

Para explotar la organización de cajas con HA y tu asistente sigue estos pasos:

  1. Lógicamente, necesitas haber configurado tu asistente previamente. Si no sabes de qué te estoy hablando, echa un ojo a nuestro taller para aprender a configurarlo.
  1. También necesitas haber integrado alguna inteligencia artificial, como OpenAI o Google AI, y haberla configurado en el ‘pipeline’ de tu asistente.
  2. Ahora ve a Ajustes > Dispositivos y servicios > Ayudantes, y pulsar sobre uno de los ayudantes que has creado para tus contenedores. Pulsa en el icono del engranaje de la esquina superior derecha y baja hasta el apartado «Asistentes de voz». Entra en esta opción y activa la casilla de «Exponer». Vuelve atrás y baja hasta el final de la ventana para pulsar en «Actualizar».
  3. Repite el proceso para todos los ayudantes que hayas creado. De esta forma daremos acceso a nuestro asistente a los listados de objetos.
  4. Por último, ve a Ajustes > Asistentes de voz, y pulsa sobre tu asistente favorito. Pulsa en el icono del engranaje que aparece junto a tu «Agente de conversación» para abrir el ‘prompt’. Pega el siguiente texto, indicando tu listado de ayudantes correspondiente a tus contenedores.
If I ask you where an object is, I want you to check the options in this list of input_select helpers, find which entity contains the object among its options, and simply answer to me "En la " + the attribute 'friendly_name' of the helper that contains it. Do not look in any other entity. Ignore discrepancies in uppercase, lowercase, or special characters, and do not take into account the articles "el", "la", "los", or "las" when performing the search.

- input_select.caja_negra_grande
- input_select.caja_negra_pequena
- input_select.caja_gris_a
- input_select.caja_gris_b
- input_select.caja_azul_a
- input_select.caja_azul_b

Hecho! Ya puedes hacer la prueba!

Etiqueta los contenedores

Otra forma de sacarle provecho a la organización de cajas con HA es pegar etiquetas NFC en las cajas, cumpliendo un doble propósito. El primero es que nos va a permitir identificar por letras o nombres los contenedores que son idénticos, de forma que sepamos cuál es cuál (por ejemplo, «Caja Gris A» o «Caja Gris B»).

El segundo y más interesante, es mostrar automáticamente todos los elementos del contenedor (como hemos visto en el apartado anterior) al escanear la etiqueta NFC con nuestro dispositivo móvil. Esto es muy útil para saber rápidamente qué hay en una caja sin necesidad de abrirla, o ni si quiera sacarla del armario.

-70%
Etiquetas adhesivas NFC para automatización Personal, 213, 13,56 mhz, para Huawei Share Ios13, 10 unidades
Aliexpress
2,51€ 8,65€
Etiquetas adhesivas NFC para automatización Personal, 213, 13,56 mhz, para Huawei Share Ios13, 10 unidades
Etiquetas adhesivas NFC 213/215/216 genuinas, etiqueta adhesiva antimetal de 13,56 MHz, etiquetas adhesivas RFID disponibles para teléfono NFC, diámetro 25/30mm
Aliexpress
3,43€
Etiquetas adhesivas NFC 213/215/216 genuinas, etiqueta adhesiva antimetal de 13,56 MHz, etiquetas adhesivas RFID disponibles para teléfono NFC, diámetro 25/30mm
-70%
10/50/100 Uds RFID NFC Ntg215 etiquetas adhesivas negras 13,56 MHz NFC 215 etiquetas adhesivas 25MM 504 Bytes NFC automatización Personal NFC215
Aliexpress
3,48€ 11,99€
10/50/100 Uds RFID NFC Ntg215 etiquetas adhesivas negras 13,56 MHz NFC 215 etiquetas adhesivas 25MM 504 Bytes NFC automatización Personal NFC215
-47%
Etiquetas RFID NTAG213 13,56 MHz NFC Sticker 144 Bytes Natg 213 tarjetas NFC grabables
Aliexpress
12,17€ 23,40€
Etiquetas RFID NTAG213 13,56 MHz NFC Sticker 144 Bytes Natg 213 tarjetas NFC grabables
*Algún precio puede haber cambiado desde la última revisión

El proceso a seguir es el siguiente:

  1. Accede en tu dispositivo móvil a la aplicación de Home Assistant, y ve a Ajustes > Etiquetas > Añadir etiqueta.
  2. Asigna un nombre (por ejemplo, «Caja Gris A») y un identificador para la etiqueta (o deja este campo vacío para que se genere de forma automática).
  3. Pulsa en «Crear y escribir» y acerca tu teléfono a la etiqueta que quieres grabar.
  4. Ve a Ajustes > Automatizaciones y escenas > Crear automatización, y crea una automatización que se active al escanear la etiqueta anterior, y muestre en tu dispositivo el pop-up con el detalle del contenedor. Para facilitarte la vida, puedes copiar y pegar el siguiente código de ejemplo y adaptar tus entidades:
    • Indica el ‘id’ asignado a tu etiqueta en el campo ‘tag id’.
    • Selecciona la acción correspondiente al envío de notificaciones de tu dispositivo en el campo ‘action’.
    • Indica la ruta completa a tu pop-up en el campo ‘command’.
alias: 📦 Caja Gris A
description: ""
triggers:
  - trigger: tag
    tag_id: 238f23847-fe9b-4122-8c5e-1b1a1eaddjfcd
conditions: []
actions:
  - action: notify.mobile_app_pixel_6a
    data:
      message: "command_webview"
      data:
        command: "/lovelace/home#caja_gris_a"
mode: single
  1. Repite el proceso tantas veces como contenedores quieras etiquetar. O mejor aún, incluye todas las etiquetas en una sola automatización utilizando el ‘trigger id’.
🥑 Si te has quedado flipando con lo que acabamos de hacer, te recomiendo que veas este taller de la academia en la que te enseño a utilizar la tarjeta Auto-Entities.
Taller: Auto-Entities Card
🛟 ¿Dudas? Si necesitas ayuda entra aquí 👈 🎁 Y si te ha gustado y quieres más... 🥑
Contenido exclusivo de Aguacatec