Agregar una barra de navegación en HA

Agregar una barra de navegación en HA

Aprende a agregar una barra de navegación en HA, para conseguir un panel de control propio de la aplicación más elegante!

¿Qué es una barra de navegación y qué nos aporta?

Si ya has jugado un poco con el panel de control (o «Lovelace») de Home Assistant, ya te habrás dado cuenta que dentro de un mismo panel puedes incluir distintas «vistas». Esto es muy práctico para no sobrecargar paneles o dividir la información por concepto («Iluminación», «Seguridad», «Consumo»…), por estancias, por usuario…

Cuando creamos varias vistas dentro de un mismo panel, por defecto se agrega el icono o nombre correspondiente en la barra superior de la interfaz. Esta nos permite movernos entre vistas de una forma sencilla.

También puedes moverte asignando la «función de navegación» a cualquier elemento (por ejemplo, un botón o un icono). Para ello sólo tienes que asignarle el siguiente ‘tap_action’ con la ruta a la vista correspondiente.

tap_action:
  action: navigate
  navigation_path: /lovelace/aguacatec

No obstante, si eres de los que disfrutan personalizando al máximo tu panel de control, también puedes agregar una barra de navegación en HA totalmente personalizada. La función es exactamente la misma, pero anulando la barra superior para conseguir un aspecto más estetico y uniforme con el resto de tu panel.

Además, podrás asignar otras funciones a los iconos de la barra, como la apertura de un pop-up con información ampliada.

Navbar Card

La forma más sencilla de agregar una barra de navegación en HA es utilizando Navbar Card de esta forma:

  1. Desde Home Assistant, entra en HACS y busca «Navbar Card».
  2. Haz clic en «Descargar» y recarga la caché del navegador.
  3. Vuelve a tu panel de control y agrega una nueva tarjeta del tipo «Navbar Card».
  4. Por defecto, viene un ejemplo preconfigurado, por lo que es muy fácil de editar desde la interfaz. Por ejemplo, puedes configurar hacia dónde «apunta» cada icono desde el apartado «routes», o personalizar la posición de la barra en el apartado «Desktop options» (abajo, a la izquierda…). Puedes consultar todas las opciones disponibles en la documentación de la tarjeta.
  1. Una vez que hayas terminado de configurar tu barra de navegación, ya puedes ocultar el menú superior. Para ello vuelve a HACS, busca Kiosk Mode, descárgalo y reinicia Home Assistant.
  2. Cuando termine, accede desde el menú lateral al panel correspondiente y pulsa sobre el icono del lápiz de la esquina superior derecha. Ahora pulsa sobre el icono de los 3 puntos que ha aparecido en su lugar, y selecciona la opción «Editor de configuración en bruto». Esto te mostrará el código yaml del panel, para que añadas las siguientes líneas al principio del código.
kiosk_mode:
  hide_header: true
  1. Haz clic en «Guardar» y pulsa sobre la «x» a la derecha del panel para cerrar el modo edición. Observa que el menú superior ha desaparecido del panel, dándole el protagonismo a tu barra de navegación. No obstante, no sufrás, puedes recuperar el acceso al modo edición añadiendo ‘?disable_km’ al final de la URL. Por ejemplo:

Barra de navegación personalizada

Navbar card es muy sencilla de utilizar, pero si quieres ir un paso más allá, también puedes agregar una barra de navegación en HA 100% personalizada.

Para reproducir este ejemplo necesitas instalar desde HACS las tarjetas de Card Mod, Button Card y, si quieres usar pop-ups, Bubble Card. Una vez instaladas, utiliza el siguiente código para obtener un resultado similar al de la imagen, dependiendo de tu tema (el del ejemplo es «Frosted Glass Theme«).

type: custom:mod-card
card_mod:
  style: |

    @media (min-width:180px) {
      ha-card {
        z-index:6;
        position: fixed;
        background: var(--gray800);
        bottom: 10px;
        left: 10px;
        padding: 10px;
        border-radius: 100px;
        width: calc(100% - 20px);
      }
    }

    @media (min-width:801px)  {
      ha-card {
        left: calc(20% + 43px);
        width: calc(60% - 30px);
      }
    }    
card:
  type: grid
  square: false
  columns: 5
  cards:
    - type: custom:button-card
      icon: mdi:home-variant-outline
      show_label: false
      show_state: false
      show_name: false
      tap_action:
        action: navigate
        navigation_path: HOME
      styles:
        icon:
          - width: 24px
          - color: var(--gray000)
        img_cell:
          - width: 50px
          - height: 50px
        card:
          - background: none
          - padding: 0
    - type: custom:button-card
      icon: mdi:speaker
      show_label: false
      show_state: false
      show_name: false
      tap_action:
        action: navigate
        navigation_path: "#sonos"
      styles:
        icon:
          - width: 24px
          - color: var(--gray000)
        img_cell:
          - width: 50px
          - height: 50px
        card:
          - background: none
          - padding: 0
    - type: custom:button-card
      icon: mdi:home-lightning-bolt-outline
      show_label: false
      show_state: false
      show_name: false
      tap_action:
        action: navigate
        navigation_path: "#energia"
      styles:
        icon:
          - width: 24px
          - color: var(--gray000)
        img_cell:
          - width: 50px
          - height: 50px
        card:
          - background: none
          - padding: 0
    - type: custom:button-card
      icon: mdi:cctv
      show_label: false
      show_state: false
      show_name: false
      tap_action:
        action: navigate
        navigation_path: "#camaras"
      styles:
        icon:
          - width: 24px
          - color: var(--gray000)
        img_cell:
          - width: 50px
          - height: 50px
        card:
          - background: none
          - padding: 0
    - type: custom:button-card
      icon: mdi:nas
      show_label: false
      show_state: false
      show_name: false
      tap_action:
        action: navigate
        navigation_path: "#server"
      styles:
        icon:
          - width: 24px
          - color: var(--gray000)
        img_cell:
          - width: 50px
          - height: 50px
        card:
          - background: none
          - padding: 0

Observa que puedes modificar el código libremente. Por ejemplo, si ajustas los valores que se encuentran dentro de ‘@media (min-width:180px)’ estos afectarán a cómo se vé la barra en pantallas pequeñas, como tu dispositivo móvil.

Además, aunque en principio está diseñada para ser una barra fija, si eliminas las siguientes líneas del código, podrás usarla como un elegante menú en cualquier lugar de tu panel.

        z-index:6;
        position: fixed;