GitPedia

Lovelace thermostat dark card

🌑 Thermostat card with a round and black feel to it

From ciotlosmΒ·Updated June 29, 2026Β·View on GitHubΒ·

[English](README.md) | 🌐 Supports: English, δΈ­ζ–‡ (Chinese Simplified), Slovenčina (Slovak) The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2018. Key topics include: custom-cards, hacs, home-assistant, lovelace, thermostat.

Latest release: v2.6.0

Thermostat Dark Card

English | 🌐 Supports: English, δΈ­ζ–‡ (Chinese Simplified), Slovenčina (Slovak)

HACS Default
GitHub Release
Build
License
Downloads

A Nest-style thermostat card for Home Assistant with a round dial interface. Supports single and dual (heat/cool) setpoints, preset modes, and multiple themes.

<!-- Add screenshot: place your preview image at docs/preview.png -->

Thermostat Dark Card

Key features:

  • Pure SVG rendering β€” lightweight, no images, optimized for low bandwidth
  • Single and dual (heat/cool) temperature modes
  • Ring drag interaction for setting temperature
  • Predictive state feedback while editing
  • Dark, light, and transparent themes
  • Preset mode indicators (eco, away, home, sleep, boost)
  • Responsive β€” scales to any card size

Installation

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

Or manually:

  1. Open HACS in Home Assistant
  2. Search for "Thermostat Dark Card"
  3. Install and restart Home Assistant

Manual

  1. Download thermostat-dark-card.js from the latest release
  2. Place it in config/www/
  3. Add the resource in Settings β†’ Dashboards β†’ Resources:
    • URL: /local/thermostat-dark-card.js
    • Type: JavaScript Module

Usage

yaml
type: custom:thermostat-dark-card entity: climate.living_room

Configuration

UI Options

These are available in the visual card editor:

OptionTypeDefaultDescription
entitystringrequiredClimate entity ID
namestring / falseentity nameCard title. Set to false to hide
hide_namebooleanfalseHide the card title
themestringdarkdark, light, transparent, or glassy
stepnumberfrom entityTemperature step override (celsius only)
readonlybooleanfalseDisable all interaction (display only)
ambient_temperaturestringβ€”External temperature sensor entity ID
status_entitystringβ€”Entity whose state is shown as text above temperature
show_power_togglebooleantrueShow power on/off button
show_preset_indicatorbooleantrueShow preset mode icon
pendingnumber3Seconds before committing temperature change

Advanced Options (YAML only)

For fine-tuning behavior β€” not exposed in UI:

OptionTypeDefaultDescription
idle_zonenumber0Minimum gap between low/high targets in dual mode
range_minnumberfrom entityOverride minimum temperature
range_maxnumberfrom entityOverride maximum temperature
colorsobjectβ€”Custom color overrides (see below)
preset_iconsobjectβ€”Map preset names to icons (see below)

Expert Options (use at your own risk)

Internal rendering parameters β€” changing these may break the dial appearance:

OptionTypeDefaultDescription
diameternumber400SVG viewBox size (all proportions are relative to this)
num_ticksnumber150Number of tick marks on the ring
tick_degreesnumber300Arc span of tick marks (degrees)
show_ticksbooleantrueShow tick marks

Themes

  • dark β€” Black/dark grey background (default)
  • light β€” Light grey background with dark text
  • transparent β€” No disc background, use with card-mod for custom backgrounds

Transparent theme example with a room photo:

yaml
type: custom:thermostat-dark-card entity: climate.bedroom theme: transparent card_mod: style: | ha-card { background: url("/local/bedroom.jpg") center/cover no-repeat; }

Color Overrides

Override disc colors via YAML (not available in visual editor):

yaml
type: custom:thermostat-dark-card entity: climate.living_room colors: heating: "#ff5500" cooling: "#0088ff" idle: "#1a1a1a" off: "#444444"

Preset Icons

Map custom preset mode names to built-in icons:

yaml
type: custom:thermostat-dark-card entity: climate.ecobee preset_icons: vacation: eco night: sleep party: boost

Available icon names: eco, away, home, sleep, boost, comfort, activity

Built-in mappings (no config needed):

  • eco, away β†’ leaf
  • home β†’ house
  • sleep β†’ moon
  • boost β†’ flame
  • comfort β†’ sun
  • activity β†’ person

Unknown presets show no icon unless mapped via preset_icons.

External Temperature Sensor

Use a separate sensor for the ambient temperature display instead of the climate entity's built-in sensor:

yaml
type: custom:thermostat-dark-card entity: climate.living_room ambient_temperature: sensor.living_room_external_temp

Features

  • Single and dual mode β€” Automatically adapts based on entity attributes
  • Ring interaction β€” Drag on the tick ring to set temperature
  • Chevron controls β€” Tap up/down arrows for precise adjustments
  • Predictive feedback β€” Disc color fades to show predicted heating/cooling state while editing
  • Preset indicators β€” Shows eco leaf, home, sleep, and other icons
  • More-info dialog β€” Long-press (mobile) or right-click (desktop) opens the HA entity dialog
  • Responsive β€” Scales to fit any card size

License

MIT

Support

If you find this card useful, consider buying me a coffee:

<a href="https://www.buymeacoffee.com/gUEVWJc" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="40"></a>

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub β†’

This article is auto-generated from ciotlosm/lovelace-thermostat-dark-card via the GitHub API.Last fetched: 6/29/2026