smoke free

Tarjeta para dejar de fumar 2.0

En esta entrada vamos a construir una tarjeta para dejar de fumar en Home Assistant. Te va ayudar en tu proceso llevando la cuenta y mostrándote los logros conseguidos.

Esta tarjeta es una nueva versión de la tarjeta para dejar de fumar, en la que principalmente se han introducido mejoras estéticas. Si ya la estabas utilizando, te recomiendo que borres la tarjeta y el sensor antiguo para que todo funcione correctamente 😊

Para poder visualizar la tarjeta correctamente antes tienes que instalar a través de HACS las tarjetas de Stack in Card, Card Mod, Mushroom Cards, Bubble Card y Auto Entities.

Descripción de la tarjeta

La tarjeta para dejar de fumar se compone de dos partes diferenciadas. La primera, este pequeño ‘widget’ que te recuerda el tiempo que llevas sin fumar y tu último logro de salud (y un icono relacionado con este).

smoke free

Si pulsas sobre este ‘widget’ se despliega un pop-up con la siguiente información detallada:

  • Fecha en la que dejaste de fumar. Si pulsas sobre ella podrás reconfigurarla.
  • Listado de logros de salud, que se va actualizando a medida que los consigues.
  • Próxima meta de salud, indicando el tiempo que queda y lo que vas a lograr.
detalle tarjeta

Construcción de la tarjeta

Para construir la tarjeta para dejar de fumar sigue estos pasos:

  1. En primer lugar vamos a crear un ayudante para poder establecer la fecha en la que vas a dejar de fumar. Para ello ve hacia Ajustes > Dispositivos y servicios > Ayudantes. Crea un nuevo ayudante del tipo ‘fecha’, y dale un nombre con la estructura ‘smoke_free_NOMBRE’ (por ejemplo, smoke_free_tito). Esto creará la entidad ‘input_datetime.smoke_free_tito’.
  2. Ahora ve a tu fichero ‘sensors.yaml’ y pega el siguiente código, indicando tu nombre en el mismo:
- platform: template
  sensors:
    smoke_free_NOMBRE:
      friendly_name: "NOMBRE Smoke Free"
      value_template: >
        {% set diastotal = (((states.input_datetime.smoke_free_NOMBRE.attributes.timestamp)-as_timestamp(now()))
        | int /60/1440) | round(0,'ceil') * -1 %}
        {% if diastotal == 0 %} Primer día
        {% elif 0 < diastotal < 30 %} {{ diastotal }} día{% if diastotal > 1 %}s{% endif %}
        {% elif 30 <= diastotal < 365 %} 
          {% set meses = (diastotal / 30) | round(0,'floor') %}
          {% set dias = diastotal - (meses * 30)  %}
          {{ meses }} mes{% if meses > 1 %}es{% endif %}{% if dias > 0 %} y {{ dias }} día{% if dias > 1 %}s{% endif %}{% endif %}
        {% elif 365 <= diastotal %} 
          {% set anos = (diastotal / 365) | round(0,'floor') %}
          {% set meses = ((diastotal - (anos * 365)) / 30 ) | round(0,'floor') %}
          {% set dias = ((diastotal - (anos * 365) - (meses * 30)) ) | round(0,'floor') %}
          {{ anos }} año{% if anos > 1 %}s{% endif %}{% if meses > 0 %}, {{ meses }} mes{% if meses > 1 %}es{% endif %} {% endif %}{% if dias > 0 %} y {{ dias }} día{% if dias > 1 %}s{% endif %}{% endif %}
        {% endif %} sin fumar!
      attribute_templates:
        logro: >
          {% set dias = (((states.input_datetime.smoke_free_NOMBRE.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0,'ceil') * -1 %}
          {% if dias < 1 %} Acabas de dar una gran paso!
          {% elif dias == 1 %} El CO de fumar se ha eliminado
          {% elif dias == 2 %} Has expulsado la nicotina de tu cuerpo
          {% elif dias == 3 %} Tu respiración ha vuelto a la normalidad
          {% elif 3 < dias < 7 %} Tu energía ha vuelto a la normalidad
          {% elif 7 <= dias < 14 %} El mal aliento por fumar ha desparecido
          {% elif 14 <= dias < 71 %} Se han reducido las manchas dentales
          {% elif 71 <= dias < 90 %} Tu circulación ha mejorado mucho
          {% elif 90 <= dias < 138 %} Tus encías han vuelto a la normalidad
          {% elif 138 <= dias < 365 %} Ha mejorado tu función pulmonar
          {% elif 365 <= dias < 3650 %} Se ha reducido tu riesgo de cardiopatías
          {% elif 3650 <= dias < 5475 %} Hay menor riesgo de cáncer de pulmón
          {% else %} Riesgo de infarto de un "no fumador"
          {% endif %}
        logros: >
          {% set dias = (((states.input_datetime.smoke_free_NOMBRE.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0,'ceil') * -1 %}
          Acabas de dar una gran paso!,
          {% if dias > 0 %}El CO de fumar se ha eliminado,{% endif %}
          {% if dias > 1 %}Has expulsado la nicotina de tu cuerpo,{% endif %}
          {% if dias > 2 %}Tu respiración ha vuelto a la normalidad,{% endif %}
          {% if dias > 3 %}Tu energía ha vuelto a la normalidad,{% endif %}
          {% if dias > 7 %}El mal aliento por fumar ha desparecido,{% endif %}
          {% if dias > 14 %}Se han reducido las manchas dentales,{% endif %}
          {% if dias > 71 %}Tu circulación ha mejorado mucho,{% endif %}
          {% if dias > 90 %}Tus encías han vuelto a la normalidad,{% endif %}
          {% if dias > 138 %}Ha mejorado tu función pulmonar,{% endif %}
          {% if dias > 365 %}Se ha reducido tu riesgo de cardiopatías,{% endif %}
          {% if dias > 3650 %}Hay menor riesgo de cáncer de pulmón,{% endif %}
          {% if dias > 5475 %}Riesgo de infarto de un "no fumador",{% endif %}
        proximo_logro: >
          {% set dias = (((states.input_datetime.smoke_free_NOMBRE.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0,'ceil') * -1 %}
          {% if dias < 1 %}{% set meta_logro = 'A las 8 horas de dejar de fumar tus niveles\nde oxígeno volverán a la normalidad' %}
          {% elif dias == 1 %}{% set meta_logro = 'En 24 horas habrás expulsado la nicotina de tu\ncuerpo, y el gusto y el olfato volverá a la normalidad' %}
          {% elif dias == 2 %}{% set meta_logro = 'En 24 horas tu respiración volverá a la normalidad' %}
          {% elif dias == 3 %}{% set meta_logro = 'En 24 horas tu energía volverá a la normalidad' %}
          {% elif 3 < dias < 7 %}{% set meta = 7 %}{% set meta_logro = 'el mal aliento del tabaco desaparecerá' %}
          {% elif 7 <= dias < 14 %}{% set meta = 14 %}{% set meta_logro = 'se reducirán las manchas dentales\ny el sarro del tabaco en tus dientes' %}
          {% elif 14 <= dias < 71 %}{% set meta = 71 %}{% set meta_logro = 'tu circulación mejorará mucho' %}
          {% elif 71 <= dias < 90 %}{% set meta = 90 %}{% set meta_logro = 'la textura y el color de tus\nencías volverán a la normalidad' %}
          {% elif 90 <= dias < 138 %}{% set meta = 138 %}{% set meta_logro = 'mejorará la\ninmunidad y la función pulmonar' %}
          {% elif 138 <= dias < 365 %}{% set meta = 365 %}{% set meta_logro = 'el riesgo de enfermedad del\ncorazón será la mitad que para un fumador' %}
          {% elif 365 <= dias < 3650 %}{% set meta = 3650 %}{% set meta_logro = 'el riesgo de cáncer de\npulmón será la mitad que para alguien que fuma' %}
          {% elif 3650 <= dias < 5475 %}{% set meta = 5475 %}{% set meta_logro = 'el riesgo de infarto será el mismo que para alguien que nunca ha fumado' %}
          {% else %}{% set meta_logro = 'Sigue así! Lo estas haciendo fenomenal :)' %}
          {% endif %}
          {% if 3 < dias < 5475 %}
            {% set restante = meta - dias %}
            {% if restante < 30 %}En {{ restante }} día{% if restante > 1 %}s{% endif %} {% elif 30 <= restante < 365 %}{% set meses = (restante / 30) | round(0,'floor') %}{% set dias = restante - (meses * 30)  %}En {{ meses }} mes{% if meses > 1 %}es{% endif %}{% if dias > 0 %} y {{ dias }} día{% if dias > 1 %}s{% endif %}{% endif %} {% elif 365 <= restante %}{% set anos = (restante / 365) | round(0,'floor') %}{% set meses = ((restante - (anos * 365)) / 30 ) | round(0,'floor') %}{% set dias = ((restante - (anos * 365) - (meses * 30)) ) | round(0,'floor') %}En {{ anos }} año{% if ano > 1 %}s{% endif %}{% if meses > 0 %}, {{ meses }} mes{% if meses > 1 %}es{% endif %} {% endif %}{% if dias > 0 %} y {{ dias }} día{% if dias > 1 %}s{% endif %}{% endif %} {% endif %}{{ meta_logro }}
          {% else %}{{ meta_logro }}
          {% endif %}
      icon_template: >
        {% set dias = (((states.input_datetime.smoke_free_NOMBRE.attributes.timestamp)-as_timestamp(now())) | int /60/1440) | round(0,'ceil') * -1 %}
        {% if dias < 1 %} mdi:arm-flex
        {% elif dias == 1 %} mdi:molecule-co
        {% elif dias == 2 %} mdi:smoking-off
        {% elif dias == 3 %} mdi:lungs
        {% elif 3 < dias < 7 %} mdi:battery-90
        {% elif 7 <= dias < 14 %} mdi:flower
        {% elif 14 <= dias < 71 %} mdi:tooth
        {% elif 71 <= dias < 90 %} mdi:heart-settings
        {% elif 90 <= dias < 138 %} mdi:emoticon-outline
        {% elif 138 <= dias < 365 %} mdi:lungs
        {% elif 365 <= dias < 3650 %} mdi:heart-flash
        {% elif 3650 <= dias < 5475 %} mdi:lungs
        {% else %} mdi:heart-flash
        {% endif %}
  1. Crea una nueva tarjeta en tu panel de control y pega el siguiente código. De nuevo, no olvides reemplazar el nombre de las entidades por las que hayas creado en los pasos anteriores. También tendrás que ajustar la ruta de la imagen de fondo (que puedes cambiar o descargar la mía desde mi colección de «Personal Trainer»).
type: vertical-stack
cards:
  - type: custom:stack-in-card
    card_mod:
      style: |
        ha-card {
          background: linear-gradient(to right, rgba(117, 153, 64, 0.8), rgba(130, 179, 58, 0.8) ), url('/local/clima/ideal.jpg');
          background-position: center;
          background-size: cover;          
         --primary-text-color: white;
         --secondary-text-color: #e6fbc9;
        }
    cards:
      - type: custom:mushroom-template-card
        primary: '{{ states(''sensor.smoke_free_NOMBRE'')}}'
        secondary: '{{ states.sensor.smoke_free_NOMBRE.attributes.logro }}'
        icon: '{{ states.sensor.smoke_free_NOMBRE.attributes.icon }}'
        icon_color: white
        entity: input_datetime.smoke_free_NOMBRE
        tap_action:
          action: navigate
          navigation_path: '#smoke_free_NOMBRE'
        badge_icon: ''
        multiline_secondary: true
        card_mod:
          style: |
            ha-card {
              border: 0px;
              --card-primary-font-size: 16px;
              text-shadow: 1px 1px #0005;
            }
  - type: vertical-stack
    cards:
      - type: custom:bubble-card
        card_type: pop-up
        hash: '#smoke_free_NOMBRE'
        name: Enhorabuena!
        icon: mdi:heart-plus
      - type: custom:mushroom-template-card
        primary: >-
          El {{ state_attr('input_datetime.smoke_free_NOMBRE', 'timestamp') |
          timestamp_custom('%-d de %B de %Y') | replace('January','Enero') |
          replace('February','Febrero') | replace('March','Marzo') |
          replace('April','Abril') | replace('May','Mayo') |
          replace('June','Junio') | replace('July','Julio') |
          replace('August','Agosto') | replace('September','Septiembre') |
          replace('October','Octubre') | replace('November','Noviembre') |
          replace('December','Diciembre') }}
        secondary: decidiste dejar de fumar
        icon: mdi:cake-variant
        icon_color: lime
        entity: input_datetime.smoke_free_NOMBRE
        tap_action:
          action: more-info
        card_mod:
          style: |
            ha-card {
              box-shadow: none;
              background: transparent;
              margin-left: -8px;
              border: 0px;
            }  
      - type: custom:bubble-card
        card_type: separator
        icon: mdi:check-decagram
        name: Logros
        card_mod:
          style: |
            ha-card {
              margin-top: -20px;
              margin-left: 4px;
            }  
      - type: custom:auto-entities
        show_empty: false
        card:
          type: vertical-stack
        card_param: cards
        filter:
          template: >-
            {% set logros =
            (state_attr('sensor.smoke_free_NOMBRE','logros'))[:-1].split(', ') %}

            {% for logro in logros -%}

            {{
              {
                'type': 'custom:mushroom-template-card',
                'primary': logro,
                'icon': 'mdi:check-all',
                'icon_color': 'green',
                'multiline_secondary': 'true',
                'tap_action': {
                  'action': 'none'
                 },
                'card_mod': {
                  'style': 'ha-card { border: 0px; height: 12px!important; background: transparent; --icon-size: 25px; --card-primary-font-size: 12px; box-shadow: none};',
                 },
              }
            }},

            {%- endfor %}
      - type: custom:bubble-card
        card_type: separator
        icon: mdi:target
        name: Próxima meta
        card_mod:
          style: |
            ha-card {
              margin-top: -10px;
              margin-left: 4px;
            }  
      - type: custom:mushroom-template-card
        primary: ''
        secondary: '{{ state_attr(''sensor.smoke_free_NOMBRE'',''proximo_logro'') }}'
        icon: ''
        multiline_secondary: true
        tap_action:
          action: none
        card_mod:
          style: |
            ha-card {
              box-shadow: none;
              background: transparent;
              border: 0px;
              margin-top: -20px;
              margin-left: 4px;
            }  

Logros de salud

La gracia de la tarjeta, además de contar los días que llevas sin fumar, es que te va indicando los logros que has conseguido respecto a tu salud, así como el tiempo que queda para conseguir el siguiente logro. Esta información se ha extraido de la aplicación Smoke Free App. La he usado muchas veces y creo que proporciona un buen apoyo a la hora de dejar de fumar.

En todo caso, siempre puedes modificar los mensajes que muestra la tarjeta (para personalizarlos, o incluirlos en tu idioma). Por defecto son los siguientes.

- A las 8 horas de dejar de fumar tus niveles de oxigeno vuelven a la normalidad
- A las 24 horas el monoxido de carbono (CO) de fumar se elimina de tu cuerpo
- A los 2 días habrás expulsado la nicotina de tu cuerpo, y el gusto y el olfato volverá a la normalidad
- A los 3 días tu respiración volverá a la normalidad
- A los 4 días tu energía volverá a la normalidad
- A la semana (7 días) el mal aliento del tabaco desaparecerá
- A las 2 semanas (14 días) se reducirán las manchas dentales y el sarro del tabaco en tus dientes
- A los 2 meses, 1 semana y 4 días (71 días) tu circulación mejorará mucho
- A los 3 meses (90 días) la textura y el color de tus encías volverán a la normalidad
- A los 4 meses, 2 semanas y 4 días (138 días) mejorará la inmunidad y la función pulmonar
- Al año (365 días) el riesgo de enfermedad del corazón será la mitad que para un fumador
- A los 10 años (3650 días) el riesgo de cáncer de pulmón será la mitad que para alguien que fuma
- A los 15 años (5475 días) el riesgo de infarto será el mismo que para alguien que nunca ha fumado

Ideas de automatizaciones

A continuación te dejo unas ideas que se me ocurren para crear automatizaciones con la tarjeta para dejar de fumar en Home Assistant:

  • Notificaciones motivadoras. La primera y mejor automatización que se me ocurre es el envío de notificaciones personalizadas a través de Telegram cada vez que alcancemos un nuevo logro, ya que la motivación va a ser un elemento clave en el proceso.
  • Notificaciones de control. También puedes crear notificaciones con comandos, haciendo que te pregunte de vez en cuando si te estás manteniendo a raya, o por lo contrario debería reiniciar la cuenta.
  • Detector de humo. Puedes crear una automatización con un detector de humo en tu zona habitual de fumar, para que reinicie la cuenta si detecta el humo del tabaco. También puedes utilizarlo como contador de cigarros que te has fumado, para ser consciente de ello.
  • Deja otra cosa. Como has visto la tarjeta es 100% personalizable y puedes cambiar los mensajes y los plazos de los logros, para aplicarla en tu proceso de dejar cualquier otro mal hábito.

¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Contenido exclusivo de Aguacatec
Send this to a friend