Mealie

Mealie is an open source, self-hosted recipe manager, meal planner, and shopping list. The Mealie integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] will fetch and allow you to create and update data held in your Mealie instance.

Prerequisites

You create your API token on your Mealie installation:

  1. Sign in to Mealie.
  2. Go to your user (profile).
  3. Go to Manage Your API Tokens under (/user/profile/api-tokens).
  4. Enter a meaningful token name, such as ‘Home Assistant’.
  5. Select Generate.
  6. Copy the token that now appears so that you can later paste it into Home Assistant.

Configuration

To add the Mealie service to your Home Assistant instance, use this My button:

Manual configuration steps

If the above My button doesn’t work, you can also perform the following steps manually:

URL

The URL of your Mealie installation.

API token

The API token for your Mealie installation you generated in the prerequisites.

Verify SSL certificate

Enable this unless you are using a self-signed certificate on your Mealie installation.

Available calendars

The integration will create a calendar for every type of meal plan, which are updated once an hour:

  • Breakfast
  • Lunch
  • Dinner
  • Side

Shopping Lists

The integration will create a to-do list for every Mealie shopping list, which are updated every 5 minutes.

Sensors

The integration provides the following sensors for the statistics, which are updated every 15 minutes:

  • number of recipes
  • categories (such as beverage, dessert, Italian, seafood)
  • tags (such as alcohol)
  • tools (such as instant pot, air fryer, or BBQ)
  • users

Actions

The Mealie integration has the following actions:

  • mealie.get_mealplan
  • mealie.get_recipe
  • mealie.import_recipe
  • mealie.set_mealplan
  • mealie.set_random_mealplan

Action mealie.get_mealplan

Get the meal plan for a specified range.

Data attribute Optional Description
config_entry_id No The ID of the Mealie config entry to get data from.
start_date Yes The start date of the meal plan. (today if not supplied)
end_date Yes The end date of the meal plan. (today if not supplied)

Action mealie.get_recipe

Get the recipe for a specified recipe ID or slug.

Data attribute Optional Description
config_entry_id No The ID of the Mealie config entry to get data from.
recipe_id No The ID or the slug of the recipe to get.

Action mealie.import_recipe

Import the recipe into Mealie from a URL.

Data attribute Optional Description
config_entry_id No The ID of the Mealie config entry to get data from.
url No The URL of the recipe.
include_tags Yes Include tags from the website to the recipe. (false by default)

Action mealie.set_mealplan

Set a mealplan on a specific date.

Data attribute Optional Description
config_entry_id No The ID of the Mealie config entry to get data from.
date No The date that should be filled.
entry_type No One of “breakfast”, “lunch”, “dinner”, or “side”.
recipe_id Yes The recipe to plan.
note_title Yes The title of the meal note.
note_text Yes The description of the meal note.

Action mealie.set_random_mealplan

Set a random mealplan on a specific date.

Data attribute Optional Description
config_entry_id No The ID of the Mealie config entry to get data from.
date No The date that should be filled.
entry_type No One of “breakfast”, “lunch”, “dinner” or “side”.

Tip

You can get your config_entry_id by using actions within Developer Tools, using one of the above actions and viewing the YAML.

Examples

Example template sensor using get_mealplan

Example template sensor that contains today’s dinner meal plan entries:

template:
  - triggers:
      - trigger: time_pattern
        hours: /1
    actions:
      - action: mealie.get_mealplan
        data:
          config_entry_id: YOUR_MEALIE_CONFIG_ENTITY_ID
        response_variable: result
    sensor:
      - name: "Dinner today"
        unique_id: mealie_dinner_today
        state: >
          {% for meal in result.mealplan if meal.entry_type == "dinner" -%}
          {{ meal.recipe['name'] if meal.recipe is not none else meal.title -}}
          {{ ", " if not loop.last }}
          {%- endfor %}

Removing the integration

This integration follows standard integration removal, once the integration is removed you can remove the API token (assuming it was only used by this integration) by going to your Account in the Mealie web interface, then to Manage Your API Tokens and deleting the token you created for Home Assistant.

To remove an integration instance from Home Assistant

  1. Go to Settings > Devices & services and select the integration card.
  2. From the list of devices, select the integration instance you want to remove.
  3. Next to the entry, select the three-dot menu. Then, select Delete.