Skip to content

Latest commit

ย 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Tovala Smart Oven for Home Assistant

hacs GitHub Release License

A Home Assistant custom integration that connects to Tovala Smart Ovens via their cloud API. Monitor cooking status, get meal details with images, track cooking history, and receive notifications when your food is ready!

Note: Tovala does not publish a public API. This integration reverse-engineers the mobile app's HTTPS endpoints.


โœจ Features

  • ๐Ÿ”ฅ Real-time cooking status - Monitor your oven's current state
  • โฑ๏ธ Timer tracking - See remaining cook time updated every 10 seconds
  • ๐Ÿฝ๏ธ Meal details - Get meal name, image, and ingredients for Tovala meals
  • ๐Ÿ“ธ Meal images - Display meal photos in notifications and dashboards
  • ๐Ÿ“œ Cooking history - View your last 10 cooking sessions
  • ๐Ÿ”” Automation ready - Fire events and use attributes in automations
  • ๐Ÿ” Automatic oven discovery - No manual oven ID configuration needed

๐Ÿ“ฆ Installation

HACS (Recommended)

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

  1. Open HACS โ†’ Integrations โ†’ โ‹ฎ โ†’ Custom repositories
  2. Add repository URL: https://github.com/WeaveHubHQ/ha-tovala
  3. Category: Integration
  4. Click Install
  5. Restart Home Assistant
  6. Go to Settings โ†’ Devices & Services โ†’ Add Integration
  7. Search for Tovala Smart Oven and sign in with your Tovala credentials

Manual Installation

  1. Copy the custom_components/tovala/ folder to your Home Assistant config/custom_components/ directory
  2. Restart Home Assistant
  3. Add the integration from Settings โ†’ Devices & Services

๐Ÿ“Š Entities

Sensors

sensor.tovala_time_remaining Remaining cook time in seconds.

Attributes:

  • cooking_state - "idle" or "cooking"
  • barcode - The scanned barcode
  • meal_id - Tovala meal ID (e.g., 463)
  • meal_title - Meal name (e.g., "2 Eggs Over Medium on Avocado Toast")
  • meal_subtitle - Additional meal description
  • meal_image - Full URL to meal photo
  • meal_ingredients - List of ingredients
  • estimated_end_time - ISO timestamp when cooking will finish

sensor.tovala_last_cook Shows your most recent cooking session.

Attributes:

  • last_cook_barcode - Barcode of last cook
  • last_cook_meal_id - Meal ID if it was a Tovala meal
  • last_cook_start_time - When cooking started
  • last_cook_end_time - When cooking ended
  • last_cook_status - "complete" or "canceled"
  • recent_history - Array of last 10 cooking sessions

Binary Sensors

binary_sensor.tovala_timer_running On when the oven is actively cooking (remaining time > 0).

Events

tovala_timer_finished Fired when the cooking timer reaches zero.

Payload:

{
  "oven_id": "b3d64c11-96db-4ed2-9589-b52fbd0a15b1",
  "data": { "state": "idle", "meal": {...}, ... }
}

๐Ÿค– Automation Examples

Send notification with meal name and image when cooking finishes

Telegram:

automation:
  - alias: "Tovala Cooking Done"
    trigger:
      - platform: numeric_state
        entity_id: sensor.tovala_time_remaining
        below: 1
        above: -0.3
    action:
      - service: telegram_bot.send_photo
        data:
          url: "{{ state_attr('sensor.tovala_time_remaining', 'meal_image') }}"
          caption: >-
            {% set meal = state_attr('sensor.tovala_time_remaining', 'meal_title') %}
            {{ meal if meal else 'Your oven' }} is done cooking!

iOS/Android Mobile App:

automation:
  - alias: "Tovala Cooking Done - Mobile"
    trigger:
      - platform: state
        entity_id: binary_sensor.tovala_timer_running
        from: "on"
        to: "off"
    action:
      - service: notify.mobile_app_YOUR_DEVICE
        data:
          title: "Tovala Oven"
          message: "{{ state_attr('sensor.tovala_time_remaining', 'meal_title') }} is ready!"
          data:
            image: "{{ state_attr('sensor.tovala_time_remaining', 'meal_image') }}"

Alert when 1 minute remaining

automation:
  - alias: "Tovala Almost Done"
    trigger:
      - platform: numeric_state
        entity_id: sensor.tovala_time_remaining
        below: 60
    action:
      - service: notify.notify
        data:
          message: "Your {{ state_attr('sensor.tovala_time_remaining', 'meal_title') }} has 1 minute left!"

๐ŸŽจ Dashboard Card Example

Using Mushroom Cards:

type: custom:mushroom-template-card
primary: Tovala Oven
secondary: >-
  {% if state_attr('sensor.tovala_time_remaining', 'meal_title') %}
    {{ state_attr('sensor.tovala_time_remaining', 'meal_title') }}
  {% elif states('sensor.tovala_time_remaining') | int > 0 %}
    {{ states('sensor.tovala_time_remaining') | int // 60 }}m {{ states('sensor.tovala_time_remaining') | int % 60 }}s remaining
  {% else %}
    Idle
  {% endif %}
entity: sensor.tovala_time_remaining
icon: mdi:toaster-oven
icon_color: >-
  {% if is_state('binary_sensor.tovala_timer_running', 'on') %}
    orange
  {% else %}
    grey
  {% endif %}
tap_action:
  action: more-info

๐Ÿ”ง Troubleshooting

Enable Debug Logging

Add to configuration.yaml:

logger:
  default: warning
  logs:
    custom_components.tovala: debug

Then restart Home Assistant and check logs in Developer Tools โ†’ Logs.

"cannot_connect" error

This means Home Assistant cannot reach Tovala's API:

  1. Check your internet connection
  2. Verify credentials - Make sure your email/password are correct
  3. Test API access:
    curl -i -X POST "https://api.beta.tovala.com/v0/getToken" \
      -H "Content-Type: application/json" \
      -H "X-Tovala-AppID: MAPP" \
      -d '{"email":"YOUR_EMAIL","password":"YOUR_PASSWORD","type":"user"}'
    • If you get HTTP 200, credentials are valid
    • If you get HTTP 401/403, check your email/password
    • If connection fails, check firewall/DNS

"auth" error

Your credentials are incorrect. Double-check your Tovala email and password.

No meal details showing

Meal details only appear when:

  1. You scan a Tovala meal barcode (not manual cooking modes)
  2. The meal is in Tovala's database
  3. You've reloaded the integration after updating

Manual cooking modes (like "manual-mini-toast-4" or "Bake at 400ยฐ") won't have meal details.


๐Ÿ›ฃ๏ธ Roadmap

  • WebSocket support for real-time updates (currently polls every 10s)
  • Multi-oven support with oven selection in UI
  • Control capabilities (start/stop cooking remotely)
  • Configurable poll interval
  • Device triggers for "Timer Started" and "Timer Finished"

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Come see our other apps and integrations at WeaveHub.


๐Ÿ“œ License

MIT ยฉ 2025 Jason Lazerus


โš ๏ธ Disclaimer

This integration is not affiliated with, endorsed by, or supported by Tovala. Use at your own risk. The integration may break if Tovala changes their API.

About

Home Assistant plugin for Tovala Ovens

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages