Skip to content

v2.9.0 - Horizontal circle style and smart speaker timer discovery

Pre-release
Pre-release

Choose a tag to compare

@eyalgal eyalgal released this 31 Aug 05:03

This release adds a horizontal circle layout, optional discovery of Alexa and Google Home timers, and per-source icon and colour.

✨ Added

  • New circle_horizontal style. The row is laid out with the icon, title and subtitle on the leading edge and the progress ring on the trailing edge, so it lines up with the other horizontal styles and flips correctly in right-to-left languages. Layout inspired by the compact style in TimeFlow Card by @Rishi8078.

  • Alexa and Google Home auto-discovery. Both integrations expose one timer entity per speaker, which is tedious to list and needs editing every time a device is added. Two new options pick them up automatically:

    type: custom:simple-timer-card
    auto_discover_alexa: true
    auto_discover_google: true

    Both default to off. Discovered entities are added to anything already in entities:, are never duplicated, and stay read-only: a ringing timer can be dismissed, but timers cannot be started or paused from the card.

  • Per-source icon and colour. Discovered timers have no per-entity settings, so there was no way to tell Alexa, Google Home and Voice PE timers apart without listing every speaker by hand:

    source_styles:
      alexa:
        icon: mdi:amazon-alexa
        color: "#00d4ff"
      google:
        icon: mdi:google-assistant
        color: "#4285f4"

    Available for every source, and editable from the visual editor under Defaults. Per-entity config still takes precedence. Paused and finished timers keep their state icon and colour, matching how per-entity icons already behave.

🐛 Fixed

  • Google Home timers were being parsed as Alexa timers. Any entity exposing a timers attribute was routed down the Alexa path. That path does read timers, so it looked wired up, but Google Home uses lower case status values and expresses fire_time in seconds where Alexa uses milliseconds. The result was wrong remaining times rather than an obvious failure. Google Home now has its own parser, and the two are told apart by the timer_id that Google entries carry and Alexa entries never do.
  • Voice PE guide entity ids. The guides told you to use sensor.timer_1_state, but ESPHome prefixes entities with the device friendly name, so the real id is sensor.home_assistant_voice_timer_1_state. They also listed text_sensor.* entities, a domain that does not exist in Home Assistant. Following the mirror-only guide verbatim could not have worked, which is what the old "everything is unknown" troubleshooting entry was describing.

🔧 Behavior

  • style: circle is now circle_vertical. The old value keeps working and resolves to the same vertical tile, so no configuration changes are needed. Both appear in the visual editor.
  • Discovery is checked against entity id patterns before reading attributes and is cached briefly, so it does not walk every state on each render tick.
  • Nothing changes unless you opt in. With discovery off and no source_styles, the card behaves exactly as it did in v2.8.0.

🧪 Testing this

  • Horizontal circle: set style: circle_horizontal and confirm the ring sits opposite the icon and text, including on an RTL dashboard.
  • Discovery: turn on auto_discover_alexa and/or auto_discover_google with no entities: listed, then start a timer on a speaker and confirm it appears with the correct remaining time.
  • Source styles: set an icon and colour per source and confirm active timers pick them up.

Notes

  • Published as a pre-release. v2.8.0 remains the current stable release.

Full Changelog: v2.8.0...v2.9.0