Hatch Card - The all-in-one card for your Hatch sound machine

Hey everyone, especially the parents out there!

I’m excited to share a card I’ve been working on to make controlling our Hatch Rest much easier in Home Assistant: the Hatch Card.

This card was born out of a desire to have a single, clean interface that combines the Hatch’s light and media player controls. It’s designed to be sleek, modern, and highly customizable to fit your dashboard perfectly.

Here’s a look at what you can do with it:

A full-featured control center with one-touch scenes for your bedtime routine:

Or a compact, minimalist version for your mobile dashboard:


:sparkles: Key Features

  • All-in-One Control: Manage your Hatch light and sound from a single, unified card.
  • Powerful Scene Control: Create one-touch presets to set the perfect mood. Activate a Home Assistant scene or define custom light and sound settings directly in the card—even turn devices off.
  • Two Layouts: Choose between a compact vertical or a detailed horizontal layout.
  • Dynamic Backgrounds: Set the card background to reflect the light’s color or visually represent the volume level.
  • Powerful Sleep Timer: Create timers with custom presets and define actions upon expiration (like an “OK-to-Wake” clock!).
  • Highly Customizable: Toggle visibility for every control to create your perfect interface.
  • Easy Configuration: Fully configurable through the Lovelace visual UI editor.

:rocket: Installation (HACS)

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

:bulb: Example Configuration

While you can configure everything in the UI editor, here’s the YAML for the “Bedtime Routine” example shown above to give you some inspiration.

Click to expand YAML
type: custom:hatch-card
light_entity: light.nursery_hatch
media_player_entity: media_player.nursery_hatch
name: Nursery Nightstand
show_expand_button: true
show_scenes: true
show_brightness_control: true
show_sound_control: true
scenes_per_row: 3
scenes:
  - name: Reading
    icon: mdi:book-open-page-variant
    color: warm white
    brightness: 40
    turn_off_media: true
  - name: Sleep
    icon: mdi:weather-night
    color: red
    brightness: 5
    sound_mode: WhiteNoise
    volume: 35
  - name: Off
    icon: mdi:power-off
    turn_off_light: true
    turn_off_media: true
4 Likes

Just wanted to give a quick shoutout to @eyalgal and share my experience using the custom hatch-card for Home Assistant.

This card has been a fantastic addition to my dashboard — it elegantly integrates light, sound, scenes, and now even toddler lock, clock brightness, and battery status. The layout is clean, the controls are intuitive, and it’s one of the few cards that really nails the Hatch Rest integration.

I’ve been testing the newer features and ran into a couple quirks (like volume presets only showing when the expand button is active, and brightness sliders only appearing when the light is on). I flagged these, and within days, @eyalgal had already addressed them in the v1.1.2 release. That kind of responsiveness is rare and really appreciated.

Even more recently, I requested support for battery indicators and charging status, and those were added in v1.2.0 — again, with quick turnaround and thoughtful implementation.

Here’s a snapshot of my current setup:

type: custom:hatch-card
light_entity: light.name_light
media_player_entity: media_player.name_media_player
name: name Hatch
show_sound_control: true
show_brightness_control: true
show_timer: false
show_scenes: true
scenes:
  - entity_id: scene.wakeup_w_green_2
    name: Wakeup w/green
  - name: Bedtime w/red
    entity_id: scene.bedtime_w_red_2
  - name: Bedtime w/o light
    entity_id: scene.bedtime_w_o_light_2
  - name: "Off"
    turn_off_light: true
    turn_off_media: true
timer_action_turn_off_media: false
timer_action_turn_off_light: false
secondary_info: "sound: {sound}, brightness {brightness}%"
volume_presets:
  - 0
  - 0.25
  - 0.5
  - 0.75
  - 1
show_brightness_when_off: true
show_toddler_lock: true
show_clock_brightness: true
show_battery_indicator: true
toddler_lock_entity: switch.name_toddler_lock
clock_brightness_entity: light.name_clock
battery_level_entity: sensor.name_battery
charging_status_entity: sensor.my_rest_2nd_gen_battery

If you’re using a Hatch Rest and want full control in Home Assistant, this card is absolutely worth checking out. Big thanks to @eyalgal for the continued improvements and support — it’s been great collaborating and seeing the card evolve so quickly.

1 Like

Thank you @Johnpaulfranklin92 for your kind words and for sharing your experience with the community, your card looks awesome!

The new version makes the card even more flexible by decoupling it from Hatch—it now works with any media player and light entities. I’ve also made the timer feature more robust.

You can find the full release notes here.

Really appreciate you being a design partner throughout—glad you’re happy with the card!

Also here for a shoutout for making this card beautiful and so clean. It is simple, yet feature filled. Well made!

Nice work @eyalgal!

1 Like

@eyalgal - fantastic card! Super impressed by everything you’ve built and how you’ve built it.

Three quick questions/feature requests:

  1. tap_action is listed as default: toggle. This isn’t my experience - tapping does nothing (though holding does bring up more info as documented). I tried adding tap_action to the YAML and it still does nothing. I’m new to YAML so I may have something wrong - my config is below. Bonus - can we limit the tap to only the icon?
  2. I’m using horizontal layout below some un-modded tile cards. I love the expand functionality, but when it is collapsed your card defaults to a slightly taller height than the tiles. If I reduce the height in the layout tab, I lose the expand functionality and the text is slightly cut off. Any way I can satisfy my OCD and change the default height?
  3. The Sound dropdown works great for my hatch plus, but my hatch mini does not have a scroll bar, and I can only see a few sounds near my currently selected sound. I tried moving it below the timer, and I can see 1-2 more sounds, but still cannot scroll.

Hatch Plus YAML:

type: custom:hatch-card
media_player_entity: media_player.my_rest_media_player
light_entity: light.my_rest_light
name: Blake's Hatch Plus +
show_volume_buttons: false
show_brightness_control: true
icon: ""
show_clock_brightness: true
clock_brightness_entity: light.my_rest_clock
show_battery_indicator: true
battery_level_entity: sensor.my_rest_battery
charging_status_entity: sensor.my_rest_battery
show_volume_slider: true
show_sound_control: true
show_timer: true
show_toddler_lock: true
toddler_lock_entity: switch.my_rest_toddler_lock
timer_presets:
  - 30
  - 60
  - 120
  - 180
  - 240
show_expand_button: true
secondary_info: Volume {volume}% | {sound}
tap_action:
  action: call-service
  service: media_player.toggle
  target:
    entity_id: media_player.my_rest_media_player

Hatch Mini YAML:

type: custom:hatch-card
media_player_entity: media_player.mini_rest_media_player
name: Hatch Mini
secondary_info: "V: {volume}% | {sound}"
show_volume_slider: true
show_sound_control: true
show_timer: true
timer_presets:
  - 30
  - 60
  - 120
show_expand_button: true
controls_order:
  - brightness
  - clock_brightness
  - volume_slider
  - timer
  - volume_presets
  - sound
  - scenes
  - toddler_lock

Hi @talnus! Thanks a lot for the kind words and for the super detailed write-up, really appreciate it :pray:

I just released v1.3.1, which directly addresses all three things you called out:

  • Tap action: tap is now limited to the icon only (to avoid accidental triggers), and the default toggle behavior was fixed for Hatch devices that don’t support media_player.toggle. Hold still opens more-info as before.
  • Height / tile alignment: the collapsed horizontal layout was reworked to align cleanly with standard tile cards (no more being a few pixels taller or breaking expand behavior).
  • Sound dropdown on Hatch Mini: the sound selector was reimplemented so it properly scrolls and behaves consistently across Rest+, Mini, and Restore.

If you update to v1.3.1, your existing configs should just work. No YAML changes needed on your side for these fixes.

Would love it if you gave it a try and let me know if your OCD is now satisfied :smile: