Dispositivos homebrewer MQTT para Home Assistant


En el anterior artículo ya vimos que es Home Assistant, su instalación y que es lo que podemos conseguir con Home Assistant que nos interese como cerveceros caseros [link!].

En este artículo vamos a ver los primeros dispositivos homebrewers que podemos vincular con Home Assistant.

 Listado:

´-iSpindel. Artículo de montaje del iSpindel [link!]

- BrewPiLess. Artículo de montaje de BrewPiLess [link!]

- Control de Barriles DIY.  Artículo de montaje del Control de Barriles DIY [link!]


iSpindel en Home Assistant mediante MQTT

Con el iSpindel en Home Assistant, podremos ver los datos de nuestro iSpindel como con cualquier aplicación BrewSpy, Brewfather, Ubidots... pero a la vez nos serviría para crear reglas con los datos del iSpindel, recibir determinadas alertas y mensajes en una densidad o temperatura determinada, que nos encienda alguna fuente de calor o frio con los datos del iSpindel....

Entraremos en la configuración del iSpindel y añadiremos los datos hacia nuestro Home Assistant (Homebrew Assistant):

Tipo de Conexión: MQTT.

Servidor: La IP de nuestro Home Assistant.

Puerto de nuestro servidor MQTT de Home Assistant.

Y usuario y contraseña le servidor MQTT de nuestro Home Assistant.

 


Si reiniciamos y revisamos el log (ver artículo de soluciones [link!]), podemos ver que mensajes envía nuestro iSpindel hacia Home Assistant:

MQTT publish: ispindel/iSpindel001/tilt/41.63589
MQTT publish: ispindel/iSpindel001/temperature/25.875
MQTT publish: ispindel/iSpindel001/temp_units/C
MQTT publish: ispindel/iSpindel001/battery/4.045881
MQTT publish: ispindel/iSpindel001/gravity/1025.785
MQTT publish: ispindel/iSpindel001/interval/900
MQTT publish: ispindel/iSpindel001/RSSI/-47

Como veis sigue una estructura: ispindel/NOMBREDELISPINDEL/DATO/DATO_ENVIADO

Con esto simplemente tendremos que añadir a nuestro archivo configuration.yaml el nuevo sensor iSpindel:

Donde podremos el nombre que queramos añadir para cada valor:

sensor:
  - platform: mqtt
    name: "iSpindel1Gravedad"
    state_topic: "ispindel/iSpindel001/gravity"
    unit_of_measurement: '°'

  - platform: mqtt
    name: "iSpindel1Temperatura"
    state_topic: "ispindel/iSpindel001/temperature"
    unit_of_measurement: 'C'

  - platform: mqtt
    name: "iSpindel1inclinacion"
    state_topic: "ispindel/iSpindel001/tilt"
    unit_of_measurement: '°'

  - platform: mqtt
    name: "iSpindel1RSSI"
    state_topic: "ispindel/iSpindel001/RSSI"
    unit_of_measurement: '°' 

Accederemos al archivo configuration.yaml:


 Añadiremos nuestro script:

Otra forma más ordenada es crear un nuevo archivo para los sensores llamado "sensor.yaml" en el mismo directorio que el "configurator.yaml" y añadir aquí los parametros del iSpindel. para que el nuevo archivo funcione "sensor.yaml" tenemos que añadir el directorio en el "configurator.yaml"


Reiniciaremos el Home Assistant (necesario cada vez que modificamos archivos .yaml):

Tras reiniciarlo ya tendremos disponible los valores de nuestro iSpindel y podremos aditar como queremos verlos visualmente:


Podemos añadir una tarjeta nueva, para ver los datos en una gráfica del iSpindel:

Dos ejemplos de tarjetas:

Basica: mini-graph-card

Mas completa: apexcharts-card

Vemos el ejemplo con la mas completa:

 Nos descargaríamos la custom card de su GitHub y la subiríamos a la carpeta /www/ (si no existe nos la creamos en la misma raíz que el configurator.yaml)


y la añadiríamos como un nuevo recurso, desde Paneles de Control Lovelace > Recursos:


Con la ruta: /local/apexcharts-card.js


Añadiríamos la nueva tarjeta con el siguiente codigo

 Donde podremos definir los parámetros que queremos mostrar, como dirección, tamaño, color...

type: vertical-stack
cards:
  - type: 'custom:apexcharts-card'
    graph_span: 6d
    apex_config:
      yaxis:
        - title:
            text: Densidad
          min: 1000
          max: 1100
          decimalsInFloat: 0
          tickAmount: 10
        - show: false
          min: 1000
          max: 1100
        - title:
            text: 'Temperatura [°C]'
          opposite: true
          min: 5
          max: 40
          decimalsInFloat: 0
          tickAmount: 7
        - show: false
          min: 5
          max: 40         
      chart:
        height: 280px
    header:
      show: true
      title: 'Fermentador1 - Densidad/Temperatura [7d]'
      show_states: true
      colorize_states: true
    y_axis_precision: 0
    all_series_config:
      stroke_width: 3
      opacity: 0.9
      type: line
      show:
        extremas: true
      group_by:
        func: avg
        duration: 60min
    series:
      - entity: sensor.densidad
        name: iSpindel 1
        color: orange
        float_precision: 0
      - entity: sensor.ispindel1temperatura
        name: iSpindel 1
        color: lightblue
        float_precision: 0

 


Enlace código grafica con iSpindel: [link!]


BrewPiLess en Home Asisstant mediante MQTT

Con BrewPiLess podemos enviar los datos de nuestro BrewPiLess hacia HomeAssistant, como controlar desde nuestro Home Assistant nuestro BrewPiLess. (Ojo desde BPL recomiendan tener habilitado solo en un sentido).

- Recibir datos desde BrewPiLess por MQTT:

 Accederemos al apartado de logs de nuestro BrewPiLess:


Y configuraremos nuestra conexión MQTT:


MQTT Broker: IP de nuestro Home Assistant.

MQTT Port: Puerto de nuestro Home Assistant.

Username: Usuario de conexión MQTT hacia nuestro Home Assistant.

Password: Contraseña Hacia nuestro Home Assistant.

Publish Period: Tiempo de envío de datos

Base Path: Nombre del Dispositivo


El fomato de publicacion es el siguiente:

MQTT publish: Base_Path/Etiquetas/DATO

Donde las etiquetas que envia son:

-beerTemp: Lectura de temperatura de la cerveza    
beerSet: Temperatura de ajuste de la cerveza   
fridgeTemp: Lectura de temperatura de la nevera   
fridgeSet:Temperatura fijada de la nevera
roomTemp: Temperatura ambiente.   
gravity: Gravedad en SG    
plato: Plato    
auxTemp: temperatura auxTemp de iSpindel   
voltage: Voltaje of iSpindel    
tilt: Inclinación de iSpindel    
pressure: Presión en PSI    
mode: Modo de funcionamiento actual,    Valores enteros para "Todo como JSON", valores de caracteres para "Tema individual"
State: Estados(definidos por un número): 0 inactivo, 1 estado apagado, 2 puerta abierta, 3 calefacción, 4 refrigeración, 5 esperando para enfriar, 6 esperando para calentar, 7 esperando detección de picos, 8 tiempo mínimo de enfriamiento, 9 tiempo mínimo de calefacción

 

Enviar datos de Home Assistant a BrewPiLess por MQTT:

Los valores pueden ser:
0,1,2,3
o Off
f Fridge Constant.

b Beer Constant

p Perfil de cerveza: Se utilizará el perfil actual y la hora de inicio del perfil se establecerá en la hora actual. Es decir, debe editar el perfil de antemano y esperar que el perfil se ejecute a partir del momento en que se configura.  

beerSet: temperatura de ajuste de la cerveza. Se utiliza cuando el modo está configurado en "Beer Constant".

fridgeSet: temperatura de ajuste del frigorífico. Se utiliza si el modo está configurado en "Fridge Constant".
Limitación / spunding, si está habilitado.
Temperatura PTC, si está habilitada: Para establecer la temperatura objetivo de PTC, la 'temperatura de activación' se establecerá en 3 grados más alta.

 

A la anterior configuración del MQTT desde Brewpiless le añadimos los datos de los Path de los modos de los diferentes modos y activamos el control remoto por MQTT:


Ejemplo de configuración de modo de la Nevera desde Home Assistant:

En el archivo "input_select:"

fridge_mode:
    name: Fridge mode
    options:
      - 'Off'
      - 'Fridge constant'
      - 'Beer constant'
      - 'Beer profile'
    icon: mdi:fridge

En el archivo "automations.yaml"

## BPL enviar ##

  - alias: Set fridge mode
    trigger:
      platform: state
      entity_id: input_select.fridge_mode
    action:
      - service: mqtt.publish
        data_template:
          topic: "/BPL/modeSet"
          payload_template: >-
            {% if states('input_select.fridge_mode', 'off') %}
              o      
            {% elif states('input_select.fridge_mode', 'Fridge constant') %}
              f
            {% elif states('input_select.fridge_mode', 'Beer constant') %}
              b
            {% elif states('input_select.fridge_mode', 'Beer profile') %}
              p
            {% else %}
              b
            {% endif %}

Y crearemos la tarjeta con nuestros valores:

-donde añadimos la configuración del input_select, si queremos algún sensor, por ejemplo yo añadí la ip de brewpiles para crear un acceso directo:

entities:
  - entity: input_select.fridge_mode
  - entity: sensor.modo_bpl
  - icon: 'mdi:web'
    name: WEB BPL
    type: weblink
    url: 'http://192.168.1.155/'
show_header_toggle: false
title: Estado BPL
type: entities


Enlace BrewPiLess MQTT: [link!]

 

 

Control de Barriles DIY en Home Assistant mediante MQTT:

Si integramos el control de Barriles DIY para Home Assistant, podremos ver desde fuera de casa la presión y los litros nuestros barriles, además de esto nos podremos crear alertas que recibamos por telegram por ejemplo si la presión es demasiado alta o baja o se nos esta acabando un barril.

Utilizaremos el firmware del Control de Barriles específico para MQTT [link!].

La calibración y tara se tiene que hacer igual que en el resto de firmwares, tendemos que añadir donde se nos indique los datos de conexión con MQTT.

const char* ssid = "MI SSID";
const char* password =  "MI CONTRASEÑA";
const char* mqttServer = "MI_Ip_DEL_SERVIDOR_MQTT_(HA)";
const int mqttPort = 1883; //PUERTO
const char* mqttUser = "USUARIOMQTT";
const char* mqttPassword = "CONTRASEÑA MQTT"; 


En el "configurator.yaml" o el "sensor.yaml" añadiremos nuestro Control de Barriles DIY.

#CONTROLDEBARRILESDIY-KEG1
  - platform: mqtt
    name: "PresionKeg1"
    state_topic: "KEG1/PRESION"
    icon: mdi:gauge
    
  - platform: mqtt
    name: "LitrosKeg1"
    state_topic: "KEG1/PESO"
    unit_of_measurement: 'L'
    icon: mdi:keg

  - platform: mqtt
    name: "TemperaturaKeg1"
    state_topic: "KEG1/TEMPERATURA"
    unit_of_measurement: 'C'
    icon: mdi:thermometer        
    
  - platform: mqtt
    name: "HumedadKeg1"
    state_topic: "KEG1/HUMEDAD"
    unit_of_measurement: 'C'
    icon: mdi:smoke-detector 

 

La estructura que recibimos la podemos editar:

MQTT publish: KEG1/TEMPERATURA/DATO_ENVIADO
MQTT publish: KEG1/HUMEDAD/DATO_ENVIADO
MQTT publish: KEG1/PRESION/DATO_ENVIADO
MQTT publish: KEG1/PESO/DATO_ENVIADO

 

Como veis sigue una estructura: KEG1/DATO/DATO_ENVIADO, aunque podéis editarla a vuestro gusto, en me caso la cree así para añadir nuevos barriles editando: KEG1, KEG2...

Una vez reiniciado el Home Assistant, ya podremos añadir las tarjetas con los datos de nuestros Barriles:



Si añadimos una Custom Card podemos cambiar el aspecto visual para ver los datos de nuestro Control de Barriles:

bar-card [link!]

Nos descargaríamos la custom card de su GitHub y la subiríamos a la carpeta /www/ (si no existe nos la creamos en la misma raiz que el configurator.yaml)


y la añadiríamos como un nuevo recurso, desde Paneles de Control Lovelace > Recursos:


Con la ruta: /local/bar-card.js

Añadiríamos la nueva tarjeta con el siguiente código

 Donde podremos definir los parámetros, como dirección, tamaño, color...

direction: up
stack: horizontal
height: 300px
width: 150px
state: 'on'
speed: 4
max: 20
min: 0
ow_value: false
severity:
  - color: Red
    from: 0
    to: 1
  - color: Orange
    from: 1
    to: 20
title: Keg1 - Red Ale
type: 'custom:bar-card'
entities:
  - entity: sensor.litroskeg1






Publicar un comentario

9 Comentarios

  1. Hola,
    Muy buen articulo!
    Lo usé para monitorear mi iSpindel en HomeAssistant.
    Por otro lado, me muestra la densidad en ° P, ¿una idea de dónde puede venir esto?

    Además, no veo las líneas azul y naranja en el gráfico en mi HomeAssistant.

    Hay un error en el código: y_axis_precision: 0
    Esto ya no se usa.

    Gracias

    ResponderEliminar
  2. Buenos días.

    En el vídeo del canal de Youtube de la integración del control de barriles muestro como ver lo que envía por mqtt con el MQTT-Explorer, puedes ver con este programa también lo que envía el iSpindel. La gráfica será de algún valor de la tarjeta casi seguro.

    Si no das con la tecla, si quieres envíame alguna captura o la parte del iSpindel del configuration.yaml/sensor.yaml y la tarjeta.

    Saludos!

    ResponderEliminar
    Respuestas
    1. Buenas noches.
      Muchas gracias. Logré mostrar los datos usando el explorador MQTT.
      Pero para la densidad, se muestra en grados Plato y no en gravedad específica (SG).
      ¿Existe una fórmula para convertir estos datos?

      Eliminar
    2. Cambié la fórmula de configuración a la correspondiente a SG, pero en MQTT Explorer la densidad aún está en grados Plato

      Eliminar
    3. Si en el mqttexplorer te apar ce en plato es por qué el densímetro lo envía en plato, ¿Como realizaste el calibrado del ispindel? Lo ideal sería realizar la ecuación de calibrado con sg, seguramente puedes hacerlo mediante fórmula de conversión de plato a sg en la configuración del home assistant pero no lo recomiendo

      Eliminar
    4. Cuando hice la calibración, grabé las dos fórmulas, la de grados Platón y la de SG.
      Reinicio mi iSpindel poniendo la fórmula en grados SG, pero la información transmitida permanece en grados Platón mientras la fórmula se guarda en la configuración del iSpindel.
      Creo que es mejor tener la densidad en SG dentro del iSpindel.

      Eliminar
    5. Y dentro de iSpindel en info la ves en SG o en otras plataformas como brewSpy?

      Eliminar
    6. Gracias por las respuestas.
      Creo que tengo un problema con mi Ispindel.
      Compraré otro.
      Feliz Navidad

      Eliminar
    7. Gracias a ti, cualquier otra cuestión no dudes en preguntar. Un saludo y feliz Navidad

      Eliminar