Voice-Control Your Meal Planning with Home Assistant

Connect MealHuddle to Home Assistant and manage your grocery list and meal plan with natural voice commands — no phone needed.

“Add chicken to the grocery list”“Plan tacos for dinner”“We need milk”

What You Can Do

"Add chicken to the grocery list"

Adds Chicken Breast to your current grocery list, matched from your ingredient library.

"Add Spaghetti and Meatballs to the meal plan"

Finds your Spaghetti and Meatballs recipe and adds it to the current cycle.

"I need milk"

Adds Milk to your grocery list. Natural phrasing works — no rigid syntax required.

What You Need

  • Home Assistant (Green, Yellow, or any installation)
  • MealHuddle account with a household
  • Voice assistant (optional — works with automations too)

Setup Guide

1

Get Your API Key

  1. Open MealHuddle and go to Settings
  2. Find the Home Assistant Integration section (admin-only)
  3. Click Generate API Key
  4. Copy the key immediately — it won't be shown again

The key starts with mh_ and is 35 characters long.

2

Add REST Commands

Add the following to your Home Assistant configuration.yaml:

rest_command:
  mealhuddle_add_grocery:
    url: "https://app.mealhuddle.com/api/ha/grocery/add"
    method: POST
    headers:
      Authorization: "Bearer YOUR_API_KEY"
      Content-Type: "application/json"
    payload: '{"items": ["{{ item }}"]}'

  mealhuddle_add_meal:
    url: "https://app.mealhuddle.com/api/ha/meals/add"
    method: POST
    headers:
      Authorization: "Bearer YOUR_API_KEY"
      Content-Type: "application/json"
    payload: '{"items": ["{{ item }}"]}'

Replace YOUR_API_KEY with the key you copied in Step 1.

3

Create Custom Voice Sentences

Create the file custom_sentences/en/mealhuddle.yaml in your HA config directory:

language: "en"
intents:
  AddToGroceryList:
    data:
      - sentences:
          - "add {item} to the grocery list"
          - "add {item} to my grocery list"
          - "put {item} on the grocery list"
          - "I need {item}"
          - "we need {item}"
  AddToMealPlan:
    data:
      - sentences:
          - "add {item} to the meal plan"
          - "add {item} to this week's meals"
          - "plan {item} for dinner"

You can add more sentence patterns to match how you naturally speak.

4

Wire Up Intent Scripts

Add this to your configuration.yaml (same file as Step 2):

intent_script:
  AddToGroceryList:
    action:
      - service: rest_command.mealhuddle_add_grocery
        data:
          item: "{{ item }}"
    speech:
      text: "Added {{ item }} to your grocery list."

  AddToMealPlan:
    action:
      - service: rest_command.mealhuddle_add_meal
        data:
          item: "{{ item }}"
    speech:
      text: "Added {{ item }} to your meal plan."
5

Restart and Test

Restart Home Assistant to load the new configuration. Then try a command like “Add milk to the grocery list” — you should hear a confirmation and see the item appear in MealHuddle.

How Matching Works

When you say an item name, MealHuddle matches it against your household's ingredient and recipe library:

  1. Exact match — case-insensitive lookup in your library
  2. Fuzzy match — word overlap (Jaccard similarity) if no exact match, requiring at least 50% overlap
  3. Grocery fallback — unmatched grocery items are still added by name
  4. Meal plan — tries recipes first, then ingredients. Unmatched items are skipped.

For best results, add your common ingredients to your library first. The more items in your library, the better voice matching works.

Troubleshooting

“Invalid API key” (401)

  • Verify the key in your HA config matches exactly (no extra spaces)
  • Check if the key was regenerated or revoked in Settings
  • Make sure the Authorization header uses Bearer prefix (with a space)

Items not matching

  • Add ingredients to your MealHuddle library first — voice commands match against it
  • Fuzzy matching requires at least 50% word overlap
  • Grocery items that don't match are still added by name; meal plan items must match

Home Assistant not responding to voice commands

  • Check that custom_sentences/en/mealhuddle.yaml is in the correct directory
  • Verify intent_script is at the top level of configuration.yaml (not nested under another key)
  • Restart Home Assistant after any config changes
  • Check HA logs for REST command errors

Free for everyone

The Home Assistant integration is free for all MealHuddle users — no subscription required. There are no AI costs; the API uses simple text matching against your existing library.

Ready to get started?