A Home Assistant custom Integration for getting Brewfather batch information in Home Assistant for all homebrewers!
The integration produces a sensor for recipe name, current temperature, upcoming temperature and upcoming temperature change date for the most recently started batch. This can be displayed in Home Assistant by creating a new dashboard and copying the contents of the dashboard/dashboard.yaml file into it.
You can track multiple batches by either using the Multiple batch support (preview) option, see below or by using custom template and sensors:
In order to use the Brewfather API data the option All batches data sensor (experimental) must be enabled.
Multiple batch support is available through the use of custom templates and a custom dashboard. All the data for all currently fermenting batches is stored in the fermenting_batches sensor. The fermenting_batches sensor as a data attribute that contains a list of all fermenting batches. The data attribute is a list of dictionaries. You can follow the below steps to add the custom templates and dashboard to display all fermenting batch information in your Home Assistant.
Copy the custom_templates contents into your Home Assistant's custom_templates folder, this should be in the config directory next to custom_components. If the custom_templates folder does not exist, create it.
Copy the contents of the template_sensors/template_sensors.yaml file and paste it on to the end of the config/configuration.yaml file. If you already have a template and sensor section, just copy the contents of the template_sensors.yaml file excluding the first 2 lines and paste it into your existing template / sensor section.
A dashboard/dashboard-multi-batch.png file has been included in this repository. To use it, create a new dashboard amd copy the contents of the dashboard-multi-batch.png file into it. The dashboard shows up to 4 batches, if you have more than 4 batches you will need to add more cards to the dashboard and template_sensors.yaml.
Setup a markdown card with the following content to get the batch information in Home Assistant:
type: markdown
content: |-
# Batch status
---
{% for batch in state_attr('sensor.brewfather_all_batches_data', 'data') %}
## Batch \#{{ batch.batchNo }}, recipe: {{ batch.name }}
**Start Date**: {{ batch.fermentingStart.strftime('%a, %d %b %Y') }}
**End Date:** {{ batch.fermentingEnd.strftime('%a, %d %b %Y') }}
**Days Left:** {{ batch.fermentingLeft | round(1) }}
**Temperature:** {% if batch.current_temperature is not none %}
{% if batch.current_temperature == batch.target_temperature %}
<ha-alert alert-type="success">
{%else%}
<ha-alert alert-type="error">
{% endif %}Current: {{ batch.current_temperature }}°C / Target: {{ batch.target_temperature }}°C
{%else%}<ha-alert alert-type="warning">Unknown / Target: {{ batch.target_temperature }}°C
{% endif %}</ha-alert>
{% endfor %}
The following sensors will be added after setup:
- Integration Status 🆕
Shows the current status of the Brewfather integration with detailed attributes
sensor.brewfather_integration_status- States:
connected,monitoring(with custom stream),disconnected - Attributes: API connection status, last update time, custom stream info, temperature entity details
- States:
- Recipe name
Name of the beer you are fermenting.
sensor.brewfather_recipe_name - Fermentation start date
Date and time when the fermentation has started
sensor.brewfather_fermentation_start - Current temperature
Temperature the fermentation should have following the recipe
sensor.brewfather_target_temperature - Upcoming temperature
The temperature of the next step in the fermentation profile from the recipe
sensor.brewfather_upcoming_target_temperature - Upcoming temperature change
The date and time when the upcoming temperature will be activated
sensor.brewfather_upcoming_target_temperature_change - Latest reading
Latest reading (if available in Brewfather) in points sg. The history of this sensor will be kept in Home Assistant allowing you to render a graph.sensor.brewfather_last_reading - Fermenting batches
To use this sensor you have to enable "All batches data sensor (experimental)", see below
A list of all batches that are fermenting. This sensor contains the following attributes:
sensor.brewfather_all_batches_data- batchNo
The batch number of the batch - name
The name of the recipe - fermentingStart
The date and time when the fermentation started - fermentingEnd
The date and time when the fermentation should be finished - fermentingLeft
The number of days left until the fermentation is finished - target_temperature
The temperature the fermentation should have following the recipe - current_temperature
The current temperature of the fermentation based on readings entered into the app or through a connected device
- batchNo
When enabled and used with temperature ramping in Brewfather the target temperature will slowly increase towards the next temperature during the ramping period. For example: current fermenting step temperature is 20c and the next step is 24°C with a ramp of 2 days it will increase the temperature 1c every (2 * 24) / (24-20) = 12 hours. This will result in the following temperature schedule:
| Date | Target temp | Hours into ramp | Step status |
|---|---|---|---|
| 11/02/2024 13:00 | 20°C | 0 | |
| 11/03/2024 01:00 | 21°C | 12 | Ramping |
| 11/03/2024 13:00 | 22°C | 24 | Ramping |
| 11/04/2024 01:00 | 23°C | 36 | Ramping |
| 11/04/2024 13:00 | 24°C | 0 | Ramping stopped, target temperature set |
This integration supports posting temperature data to Brewfather's Custom Stream endpoint, allowing you to integrate external sensors with your Brewfather batch monitoring.
-
Brewfather Custom Stream Logging ID: You need to get a logging ID from the Brewfather app:
- Open Brewfather app
- Go to settings
- Navigate to "Power-ups"
- Enable "Custom Stream"
- Copy the logging ID from the URL (format:
http://log.brewfather.net/stream?id=YOUR_LOGGING_ID)
-
Temperature Entity: You need a Home Assistant entity that provides temperature readings:
- The entity must report temperature in Celsius (°C), Fahrenheit (°F), or Kelvin (K)
- The sensor's main state value will be used (entity attributes are no longer supported for simplicity)
- The integration automatically converts units to the proper format for Brewfather
- Go to the Brewfather integration configuration
- Enable "Custom Stream for temperature monitoring" option
- Fill in the required fields:
- Brewfather Logging ID or Stream URL: Enter the ID or paste the complete URL
- Temperature Sensor: Select from available temperature entities
- Smart URL Parsing: Paste the complete Brewfather stream URL - the integration will extract the logging ID automatically
- Temperature Unit Validation: Automatically validates and converts Celsius, Fahrenheit, and Kelvin
- Entity Validation: Real-time validation ensures your selected sensor provides valid temperature data
- Connection Testing: Tests the logging ID with Brewfather during setup
- Logging ID:
abc123def456or paste complete URLhttp://log.brewfather.net/stream?id=abc123def456 - Temperature Sensor: Select from dropdown of available temperature entities
- "Invalid logging ID format": Check that you've copied the correct ID or URL from Brewfather
- "Entity not found or unavailable": Verify the entity exists and provides numeric temperature values
- "Unsupported temperature unit": Ensure your sensor reports temperature in °C, °F, or K
- "Connection test failed": Verify your Brewfather Custom Stream is enabled and the logging ID is correct
The integration will automatically post temperature updates to Brewfather during its regular update cycle (every 15 minutes by default).
This is a work in progress (that's why it's in preview) but it's the first easy out of the box multi batch support. Each sensor will get an additional attribute "other_batches" which will contain the same category data as the sensor but for all other active batches. For example brewfather_recipe_name will have the following extra attribute data:
other_batches:
- batch_id: sVFLpIADPYj612oIwnTaNX2sFgUtna
state: Hoppy weizen
Enabling this will give you a extra sensor brewfather_all_batches_data containing all the Brewfather API data just like in v1. Take a look at the custom templates of Multiple Batch Support how to use this data. This setting is experimental because it might be dropped in the future if better multi batch support is implemented.
You can only enable this option by going to the Brewfather integration and clicking configure.

In v1 this used to be enabled by default but to limit the amount of data it is now configurable and disabled by default.
The integration now supports multiple languages with complete translations for:
- English 🇺🇸 (Default)
- French 🇫🇷 (Français)
- Spanish 🇪🇸 (Español)
- Dutch 🇳🇱 (Nederlands)
- German 🇩🇪 (Deutsch)
- Italian 🇮🇹 (Italiano)
- Portuguese 🇵🇹 (Português)
- Brazilian Portuguese 🇧🇷 (Português Brasileiro)
The interface will automatically use your Home Assistant's configured language.
- Integration Status Sensor: Monitor connection health and custom stream status
- Smart Configuration: Wizard-style setup with validation and testing
- Improved Error Handling: Better error messages and troubleshooting guidance
- Field Descriptions: Helpful descriptions for all configuration options
- URL Parsing: Paste complete Brewfather URLs - automatic ID extraction
- Temperature Validation: Real-time validation of temperature units and values
- Removed entity attribute selection for simpler configuration
- Direct entity state usage only
- Enhanced validation and error reporting
- Automatic unit conversion and validation
Installing using HACS is recommended. It is the easiest way to install and keep your integration up to date.
- First make sure you have HACS installed and running.
- Go to the HACS dashboard, search for "Brewfather" and click "DOWNLOAD"
- After downloading you might have to restart Home Assistant (HACS will tell you if so). After Home Assistant has restarted install the Brewfather integration by clicking here or go to integrations ans search for Brewfather

The integration now features a comprehensive setup wizard:
A dialog will popup containing the following fields:
- Connection name: A unique name for your Brewfather connection in Home Assistant
- User ID: Your Brewfather UserId (not email address)
- API-Key: Your API key with correct scopes from Settings → API → Generate API-Key

Select which Brewfather features to enable:
- Enable temperature ramping: Adjust target temperatures during ramped fermentation steps
- Enable custom stream: Automatically send temperature readings to Brewfather
- Multiple batch support: Monitor multiple fermenting batches simultaneously
- All batches data sensor: Create sensor with detailed information about all batches
Configure automatic temperature streaming:
- Brewfather Logging ID or Stream URL: Enter ID or paste complete URL from Brewfather
- Temperature Sensor: Select from available temperature entities
- Real-time validation ensures your configuration works correctly
- The integration will test your connection and if everything succeeded, Brewfather is now connected to your Home Assistant instance!

Copy the custom_components/brewfather folder and all of its contents into your Home Assistant's custom_components folder. This folder is usually inside your /config folder. If you are running Hass.io, use SAMBA to copy the folder over. If you are running Home Assistant Supervised, the custom_components folder might be located at /usr/share/hassio/homeassistant. You may need to create the custom_components folder and then copy the brewfather folder and all of its contents into it.
To create a Brewfather API-key follow the documentation on Brewfather - docs. Make sure to give the API-key at least the "Read Batches" scope.
All sensors are renamed so there are some breaking changes. Please take a look at the upgrade docs.

