simple-thermostat v2.5.0
Lovelace simple thermostat card
A different take on the thermostat card for Home Assistant Lovelace UI. The aim is to provide a card with simpler interactions that are easier to use and take up less space, as well as provide more modularity to tweak the card. For example the abiltity to embed sensor values that are relevant to your thermostat (like humidity, energy usage, hours on +++).

Compact mode

Hide everything but sensors and temperature control:
type: custom:simple-thermostat
entity: climate.hvac
layout:
step: row
header: false
control: falseNote about 2.0 release
The 2.0 release is most likely a breaking change for the majority of users. Make sure you read the release notes and inspect the new configuration format. It offers more flexibility and features as well as a number of bug fixes.
Requirements
Home Assistant 0.84 or higher
Installation
- Install via HACS.
- Add to resources:
url: /hacsfiles/simple-thermostat/simple-thermostat.js type: module
resources:
- url: /local/simple-thermostat.js?v=1
type: moduleAvailable configuration options:
entitystring: The thermostat entity id requiredheaderfalse|Header object: See section about header configsetpointsfalse|Setpoints object: See section about setpoints configlayoutLayout object:steprow|column: Where to render the setpoint up/down buttonsmodeobject: Disable elements for all modesnamesbooleaniconsbooleanheadingsboolean
sensors: objecttype: list|table: How to render the sensorslabels: boolean: Whether to show labels/headings or not. Hiding here overrides hiding under root levelsensorsconfig
serviceobject: Must specify both domain+service if overridingdomainstring: Override the service call domainservicestring: Override the service call namedataobject: Send extra data with the service call
unitstring|bool: Override the unit to display. Set to false to hide unitdecimalsnumber: Specify number of decimals to use: 1 or 0fallbackstring: Specify a text to display if a valid set point can't be determined. Defaults toN/Astep_sizenumber: Override the default 0.5 step size for increasing/decreasing the temperaturelabelobject: Override untranslated labelstemperature: string Override Temperature labelstate: string Override State label
hideobject: Control specifically information fields to show. Defaults to showing everythingtemperature: bool (Default tofalse)state: bool (Default tofalse)
controlobject|array (From 0.27)hvac|fan|preset|swingobject|bool: The key of the mode type (hvac, preset, fan, swing)_namestring: Override the name of the mode type_hide_when_offbool: Hides the mode type selection row when the entity is off. Defaults to false shown{mode}string: Name of mode type to controlnamestring|bool: Specify a custom name or set tofalseto show only the iconiconstring|bool: Specify a custom icon or set tofalseto not show icon
sensorsarray|falseentitystring: A sensor value entity idnamestring: Specify a sensor name to use instead of the default friendly_nameiconstring: Specify an icon to use instead of a nameattributestring: The key for an attribute to use instead of state. If this sensor has no entity it will use the main entity's attributesunitstring: When specifying an attribute you can manually set the unit to displaydecimalsnumber: If you know your sensors has a numeric value you can round it to a number of decimals.typerelativetime: Special data types that result in special handling.
Header config
New in 2.0. Old ways of defining toggle_entity, faults, name and icon are no longer supported
Hiding the entire header is done with header: false
If you pass an object you can pass any of the following keys.
Example:
header:
name: Overriden name
icon: mdi:sofa
toggle:
entity: switch.light
name: Light
faults:
- entity: switch.lightFull header config spec:
namestring: Override the card name. Default is to use the friendly_name of the thermostat providedtoggleobject: An entity id to create a toggle in the header for. This gives the option to control a separate entity which can be related to the thermostat entity (like a switch, or input_boolean)entitystring: The entity id to create the header fornamestring|bool: Set the label to be shown to the left of the toggle. Set to true to show the friendly name of the toggle_entity
faultsarray|false: Show fault conditions as active/inactive icons in the headerentitystring: A binary sensor entity idiconstring: Override the entity iconhide_inactivebool: Hide the fault icon when inactive (Default tofalse)
iconstring|object: Show an icon next to the card name. You can also pass an object to specify specific icons. Current value is taken from attributes.hvac_action when available, or state as fallback.auto: string Use this icon for hvac_action auto. Default mdi:radiatorcooling: string Use this icon for hvac_action cooling. Default mdi:snowflakefan: string Use this icon for hvac_action fan. Default mdi:fanheating: string Use this icon for hvac_action heating. Default mdi:radiatoridle: string: Use this icon for hvac_action idle. Default mdi:radiator-disabled"off": string Use this icon for hvac_action off. Default mdi:radiator-offauto: string Use this icon for state auto. Default hass:autorenewcool: string Use this icon for state cooling. Default hass:snowflakedry: string: Use this icon for state dry. Default hass:water-percentfan_only: string Use this icon for state fan. Default hass:fanheat: string Use this icon for state heat. Default hass:autorenewheat_cool: string: Use this icon for state heat_cool. Default hass:fire"off": string Use this icon for state off. Default hass:power
Setpoints config
New in 2.0. Old ways of hiding setpoints is deprecated
If you specify setpoints manually you must include all setpoints you want included.
Normally there are only two possibilities here; temperature or target_temp_high + target_temp_low. Single or dual thermostats. But, theoretically there could be multiple setpoints and this aims to support any permutation.
The new feature in 2.0 is the ability to hide one of the two setpoints for dual thermostats.
To manually specify to use the temperature attribute as a setpoint you do:
setpoints:
temperature:For dual thermostats:
setpoints:
target_temp_low:
target_temp_high:To hide one of the dual setpoints:
setpoints:
target_temp_low:
hide: true
target_temp_high:For climate devices supporting more setpoints you can include as many as you like. Automatic detection of set points only work for the single/dual cases.
Usage of the control config
In 0.27, in order to both support changes in the climate domain and to support controlling all modes like hvac, preset, fan and swing modes the old modes configuration have been removed and replaced with a control config.
The control config is most easily explained using a few examples as it supports both a simplified definition using just an array to list the types of modes to control. By default, with no config, it will show hvac and preset (if the entity supports it). You can replicate the default manually like this:
control:
- hvac
- presetThis will list all modes for both types. You can get more fine grained control by switching to an object format and taking control of specific modes:
control:
preset:
away: true
none:
name: Not setWhat is worth noticing is that there is no merging of the default any more, so with this config you will not get hvac_mode displayed. If you still want it to display like default you need to set:
control:
preset:
away: true
none:
name: Not set
hvac: truePlease note that you need to quote off/on mode keys to not have them interprented as true/false.
control:
hvac:
off: will not work
"off": worksExample usage:
cards:
- type: 'custom:simple-thermostat'
entity: climate.my_room
step_size: 1
sensors:
- entity: sensor.fibaro_system_fgwpef_wall_plug_gen5_energy
- entity: sensor.fibaro_system_fgwpef_wall_plug_gen5_power
name: Energy today
- attribute: min_temp
name: Min temp
header:
faults:
- entity: binary_sensor.my_room_communications_fault
- entity: binary_sensor.my_room_low_battery_fault
icon: mdi:battery-low
toggle:
entity: switch.pump_relay
control:
hvac:
some_mode: false
another_mode: false
'off':
name: Make it cold
icon: false
'on':
name: false
icon: mdi:whitewalkercards:
- type: 'custom:simple-thermostat'
entity: climate.my_room
step_size: 1
sensors:
- entity: sensor.fibaro_system_fgwpef_wall_plug_gen5_energy
header:
toggle:
entity: switch.pump_relay
name: Control the pumpCSS vars for theming
The card uses the following CSS variables:
| Var name | Default value | Usage |
|---|---|---|
| --st-font-size-xl | var(--paper-font-display3_-_font-size) | Used for target temperature |
| --st-font-size-l | var(--paper-font-display2_-_font-size) | Unused at the moment |
| --st-font-size-m | var(--paper-font-title_-_font-size) | Used for target temperature unit |
| --st-font-size-title | var(--ha-card-header-font-size, 24 | Font size for card heading |
| --st-font-size-sensors | var(--paper-font-subhead_-_font-size) | Font size for sensors |
| --st-spacing | 4px | Base unit for spacing. Used in multiples many places |
| --st-mode-active-background | var(--primary-color) | Background color for active mode button |
| --st-mode-active-color | var(--text-primary-color, #fff) | Text color for active mode button |
| --st-mode-background | #dff4fd | Background color for inactive mode button |
| --st-toggle-label-color | var(--text-primary-color) | Text color for toggle label |
| --st-font-size-toggle-label | var(--paper-font-subhead_-_font-size) | Font size for toggle label |
| --st-fault-inactive-color | var(--secondary-background-color) | Icon color for inactive faults |
| --st-fault-active-color | var(--accent-color) | Icon color for active faults |
These variables can be changed globally in the current theme or on each card via card-mod.
Example using custom theme
Example that makes everything smaller and more compact except sensors that gets blown up completely.
example-theme:
st-font-size-xl: 24px
st-font-size-m: 20px
st-font-size-title: 20px
st-font-size-sensors: 30px
st-spacing: 2pxExample using card-mod
Same example as above, but will only apply to a single card.
type: 'custom:simple-thermostat'
style: |
ha-card {
--st-font-size-xl: 24px;
--st-font-size-m: 20px;
--st-font-size-title: 20px;
--st-font-size-sensors: 30px;
--st-spacing: 2px;
}
...3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago