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
0 comentarios