Skip to content

Release-v1.2.5.

Latest

Choose a tag to compare

@Piotras1 Piotras1 released this 05 Jul 16:45
8a932aa

Release v1.2.5

What's New

custom_states_on — Universal Priority

custom_states_on now has the highest priority across all domains. It overrides built-in logic for battery, climate, alarm_control_panel, vacuum, and all other domains. If defined, it always wins — no exceptions.

custom_states_labels — Major Upgrade

Numeric matching with operators and ranges
Labels can now be matched using comparison operators and ranges, not just exact text:

custom_states_labels:
  "<10": Cold
  "10-25": Comfortable
  ">25": Hot

Supported: >, <, >=, <= and min-max ranges (including wrap-around ranges like 22-0 for overnight hours).

Highest priority
custom_states_labels is now checked before any domain-specific labels (media_player, light, climate, fan, cover). If a match is found, it wins — name_on/name_off act as fallback.

Percentage-based matching
For domains where the state is always on/off but the "level" is in an attribute:

  • light — matches against brightness converted to % (0–100)
  • fan — matches against percentage
  • cover — matches against current_position
# Light brightness labels
custom_states_labels:
  off: "Off"
  "<10": Dim
  "10-40": Low
  "40-80": Bright
  ">80": Max

Second value line (value2) for climate
When custom_states_labels is defined for a climate entity, a second smaller label appears below the current temperature. Matching priority: hvac_actionstate (hvac_mode) → preset_mode.

custom_states_labels:
  off: "Off"
  heating: Heating
  idle: Idle
  eco: Eco
  comfort: Comfort

Font size defaults to state_size - 5px. Override with value2_size.

Second value line (value2) for weather
Same mechanism for weather entities — matches against the temperature attribute.

custom_states_labels:
  "<5": "Cold: heavy coat"
  "5-15": "Cool: jacket"
  "15-25": "Comfortable: light layer"
  ">25": "Hot: light clothes"

Greeting label for clock mode (entity: on.clock)
When custom_states_labels is defined for the built-in clock, a greeting label appears above the clock digits and updates live every second — no page reload needed.

entity: on.clock
custom_states_labels:
  "0-5": "Night... 🌙"
  "5-9": "Good morning! ☕"
  "9-17": "Have a great day! 👋"
  "17-22": "Good evening! 🌆"
  "22-0": "Good night! ✨"

Wrap-around ranges (e.g. 22-0)
Ranges where the lower bound is greater than the upper bound now work correctly — interpreted as "value ≥ lower OR value ≤ upper". Useful for overnight hour ranges.

Auto line-wrapping
Long labels now wrap automatically within the card boundaries — no need for manual <br> tags. Manual <br> still works if you want to force a break at a specific point.


max_watts — Accepts Entity ID

max_watts now accepts either a number or an entity ID (e.g. a sensor). The value is read live from the sensor state.

max_watts: sensor.socket_max_power
# or as before:
max_watts: 2000

If the entity is unavailable or the state is not a valid number, falls back to 2000W.


Editor

  • New Greeting section in the Text tab — visible only when entity: on.clock is selected.
  • Fields: Greeting font size (px) and Greeting color.

Bug Fixes

  • 22-0 range returned null for hours 23:00–23:59 — fixed. Wrap-around ranges now work correctly for all values.
  • Negative number ranges (e.g. "-5 - 5") — now parsed correctly.
  • custom_states_on ignored for battery/climate/alarm/vacuum — fixed. Custom list now always takes priority.
  • custom_states_labels ignored for media_player — fixed. Domain-specific labels no longer override custom ones.

Notes

  • All changes are fully backward compatible — existing configurations work without any modifications.
  • custom_states_labels keys using > or < must be quoted in YAML (e.g. ">25", "<10"), otherwise YAML will fail to parse.
  • For operator-based keys (>, >=), list them highest to lowest — first match wins.
  • For </<= keys, list them lowest to highest — same reason.