Integrar tu pecera en Home Assistant

Integrar tu pecera en Home Assistant

Aprende a integrar tu pecera en Home Assistant, para automatizar el cuidado de tus peces y tener todo el control en tu panel.

¿Cómo puedes automatizar tu pecera?

Antes de nada, veamos qué puedes esperar tras integrar tu pecera en Home Assistant con estas ideas:

  • Control de la temperatura del agua. El control de este parámetro es básico para la superviviencia de tus peces, ya que cada especie tiene un rango óptimo de temperatura. Si el agua está demasiado fría, su metabolismo se ralentiza y pueden enfermar. Si está demasiado caliente, consumen más oxígeno, se estresan y su esperanza de vida se acorta.
  • Control del PH. Tan importante como la temperatura, porque influye directamente en la química del agua y la salud de los peces. Cada especie tiene un rango de pH en el que vive de forma natural (si está fuera de ese rango los peces son más propensos a enfermedades). Además, los cambios bruscos de pH son muy dañinos porque aunque un pez tolere un rango amplio, puede no soportar variaciones rápidas.
  • Dosificación automatizada de la comida, para identificar cuándo han comido y que los peces no se te mueran de hambre!
  • Control de la pecera desde una tarjeta personalizada, con todos los datos y controles anteriores.

Control de temperatura del agua

Para este fin vamos a utilizar el termómetro inteligente Sonoff SNZB-02DL con sonda y pantalla LCD, ideal para monitorear la temperatura en entornos exigentes gracias a su certificación IP65. Puesto que se trata de un sensor Zigbee, lo vamos podemos integrar fácilmente en HA con Zigbee2MQTT.

*Algún precio puede haber cambiado desde la ultima revision

Este sensor realiza una lectura bastante precisa, funciona a pilas, tiene un cable de 1,5 metros y, personalmente, encuentro que tiene un diseño limpio que encaja en cualquier espacio técnico. Por todo ello también es apto para otros usos (bañeras de bebés, piscinas, neveras, laboratorios…).

Control del PH

El pH de la pecera lo medimos para conocer la calidad del agua. Según la especie de peces que tengas, debe de estar comprendido en un valor entre 0-14 (lo que realmente estamos realizando es una medición de protones de hidrógenos). Este tipo de sensor es algo mas complejo, ya que utiliza escalas logarítmicas, con un electrodo en su interior y su propio liquido de referencia (en este caso hemos usado esta sonda de pH).

El controlador ha sido creado desde cero con una placa ESP32 y programado en Arduino (podéis ver un tutorial completo aquí). Con este podemos realizar las calibraciones oportunas (porque, como todo sensor, tiende a desviarse).

La integración en Home Assistant se realiza mediante MQTT, enviando el dato del pH por nuestro servidor. Adicionalmente tenemos que crear el siguiente sensor en HA:

sensor:
– name: "Temperature_ph"
  state_topic: "sensor/temp"
  suggested_display_precision: 1
  unit_of_measurement: "°C"
  value_template: "{{ value_json.temperature }}"

Dosificación automatizada de la comida

Para dosificar automáticamente la comida de nuestros peces vamos a utilizar un «tornillo sin fin», que puedes integrar en HA a través de Tuya. Este expone una entidad de tipo ‘switch’ (un interruptor) que podemos encender para alimentar a nuestros peces.

Con esta entidad he creado una automatización muy sencilla que a ciertas horas (que controlo desde dos ayudantes de tipo «Fecha/hora») enciende la iluminación del acuario (que también controlo con una tira LED y un enchufe inteligente) durante 2 minutos, y el tornillo dosificador de comida durante 1 segundo.

alias: Alimentación de los peces
description: ""
triggers:
  - trigger: time
    at: input_datetime.dardecomerpeces_1
    id: Comida de la mañana
  - trigger: time
    at: input_datetime.dardecomerpeces_2
    id: Comida de la tarde
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Comida de la mañana
              - Comida de la tarde
        sequence:
          - sequence:
              - action: switch.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: switch.acuario_iluminacion
              - action: switch.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: switch.acuario_alimentacion
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 1
                  milliseconds: 10
              - action: switch.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: switch.acuario_alimentacion
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 25
                  milliseconds: 0
              - action: switch.turn_off
                metadata: {}
                data: {}
                target:
                  entity_id: switch.acuario_iluminacion
              - data:
                  message: Los peces han *comido* 🐟​.
                  title: 🟢*INFORMACION*🟢
                action: notify.ha_y_yo
mode: single

Como curiosidad, puesto que he colocado la sonda de pH muy cerca del tornillo de alimentación y esta aumenta su valor cuando los peces están alrededor, puedo saber el momento preciso en el que están comiendo.

Tarjeta personalizada

Después de integrar tu pecera en Home Assistant, no puede faltar una tarjeta para presentar la información en el panel ‘lovelace’. En mi caso he creado una imagen al estilo Pixar y un diseño basado en las tarjetas de habitación.

A continuación te dejo el resultado y el código completo del ejemplo, para los que he utilizado las tarjetas de Stack in Card, Card Mod y Mushroom Cards.

type: grid
cards:
  - type: heading
    heading_style: title
  - type: custom:stack-in-card
    card_mod:
      style: |
        ha-card {
          background-position: center;
          background-size: cover;
          --primary-text-color: #ffffff;
          background: linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0.7)), url('/local/imagenes/aquario.jpg');
          background-position: center;
          background-size: cover;
          --primary-text-color:  white; 
          height: 150px;
          width: 100%;
          shadow-box: none;  
         
        }
    cards:
      - type: custom:mushroom-template-card
        primary: Aquario
        secondary: "{{ states('sensor.sensor_temperatura_aquario_temperature') }}%"
        icon: ""
        card_mod:
          style: |
            ha-card {
              border: 0px;
              --card-primary-font-size: 1.8rem;
              --card-secondary-font-size: 1.2rem;
               margin-bottom: px;
              shadow-box: none;
            }
        tap_action:
          action: none
      - type: custom:mushroom-template-card
        layout: horizontal
        primary: ""
        secondary: ""
        icon: mdi:fishbowl-outline
        icon_color: white
        tap_action:
          action: null
          navigation_path: null
        card_mod:
          style: |
            ha-card {
              border: 0px;
              --icon-size: 80px;
              margin-left: -25px;
              margin-bottom: 0px;
              margin-top: 0px;
            }
            mushroom-badge-icon {
              margin-right: 2px;
              margin-top: 10px;
              --badge-icon-size: 15px;
              --badge-size: 20px;
              box-shadow: none;
            }
        badge_icon: >
          {% if (states('sensor.higrometro_lab_mst_xiaomi_humedad') | int) >= 60
          %} mdi:water {% elif
          (states('sensor.higrometro_lab_mst_xiaomi_temperatura') | int) >= 26
          %} mdi:fire {% elif
          (states('sensor.higrometro_lab_mst_xiaomi_temperatura') | int) <= 18
          %} mdi:snowflake {% endif %}
        badge_color: >
          {% if (states('sensor.higrometro_lab_mst_xiaomi_humedad') | int) >= 60
          %} blue
          {% elif (states('sensor.higrometro_lab_mst_xiaomi_temperatura') | int)
          >= 26 %} red
          {% elif (states('sensor.higrometro_lab_mst_xiaomi_temperatura') | int)
          <= 18 %} blue
          {% endif %}
      - type: custom:stack-in-card
        card_mod:
          style: |
            ha-card {
              background: transparent!important;
              margin-top: -165px;
              margin-left: auto;
              margin-right: -43px;
              width: 65%;
              border: 0px;
              box-shadow: none;
            }
        cards:
          - type: grid
            square: false
            columns: 3
            card_mod:
              style: |
                ha-card {
                  border: 0px;
                  margin-left: 0px;
                  margin-bottom: 0px;
                  margin-top: 200px;
                  box-shadow: none;
                  }
            cards:
              - type: custom:mushroom-template-card
                primary: ""
                secondary: ""
                layout: vertical
                icon: mdi:lightbulb-on-10
                entity: switch.luz_aquario
                icon_color: >
                  {% if (states('switch.luz_aquario')) == 'on' %} yellow {%
                  endif %}
                card_mod:
                  style: |
                    ha-card {
                      border: 0px;
                      --icon-size: 40px;
                      margin: -10px!important;
                      
                    }          
  - graph: line
    type: sensor
    entity: sensor.ph
    detail: 2
    icon: mdi:ph
    theme: noctis
    hours_to_show: 1
  - show_name: true
    show_icon: true
    type: button
    entity: switch.comedero_peces_switch_1
    icon: mdi:fish
    theme: noctis
  - type: tile
    entity: input_datetime.dardecomerpeces_1
  - type: tile
    features_position: bottom
    vertical: false
    entity: input_datetime.dardecomerpeces_2

BONUS: Accesorios impresos en 3D

Si tienes una impresora 3D, puedes crear tus propios accesorios para decorar tu pecera o descárgarlos de internet. Yo he impreso este barril y un limpiador de algas 😊