Hi,
I opened this post to collect example configurations with screen captures for the Lovelace Windrose Card. Sometimes people ask me example configurations. I added some examples to the docs, but now I can also point them to this topic.
The card is very customisable, so if you have something very different then the what’s already shared, please add.
Also if you use the card for other data, not wind data, like lightning data or solar flare data. Please share.
Don’t forget to remove privacy related info from the configuration. Sometimes entity names contain place names, for example.
This topic is not for asking question, only sharing usages.
Ask questions in this topic https://community.home-assistant.io/t/lovelace-windrose-card/523319
Share your configuration with the Preformatted text button and add yaml directly after the opening quotes.
Example:
type: custom:windrose-card
title: Wind direction
data_period:
xhours_to_show: 250
from_hours_ago: 10
Thank you.
1 Like
idk if it is special enough, but i wonder if even not so special configs would help you to see how the card is really used out in the wild…
type: custom:windrose-card
title: Historic Wind Direction - 24 hrs
center_calm_percentage: true
current_direction:
hide_direction_below_speed: 10
show_arrow: true
data_period:
hours_to_show: 24
direction_labels:
cardinal_direction_letters: NOSW
cardinal_directions_text_size: 60
custom_labels:
ene: ONO
ese: OSO
ne: "NO"
nne: NNO
se: SO
sse: SSO
intercardinal_directions_text_size: 45
secondary_intercardinal_directions_text_size: 30
show_cardinal_directions: true
show_intercardinal_directions: true
show_secondary_intercardinal_directions: true
matching_strategy: direction-first
max_width: 400
output_speed_unit: kph
refresh_interval: 60
speed_range_beaufort: false
wind_direction_entity:
direction_compensation: 0
direction_unit: degrees
entity: sensor.gw1100a_wind_direction
use_statistics: false
windrose_draw_north_offset: 0
windspeed_bar_full: true
windspeed_bar_location: bottom
windspeed_entities:
- entity: sensor.gw1100a_wind_speed
name: ""
speed_unit: kph
use_statistics: false
1 Like
Mine is for wind purely.
type: custom:windrose-card
title: Wind
hours_to_show: 24
refresh_interval: 60
windrose_draw_north_offset: 0
wind_direction_entity:
entity: sensor.bresser_7in1_31511_wind_direction
use_statistics: false
windspeed_entities:
- entity: sensor.bresser_7in1_31511_wind_average
name: Avg
use_statistics: false
windspeed_bar_full: false
speed_unit: kph
output_speed_unit: kph
speed_range_beaufort: false
- entity: sensor.bresser_7in1_31511_wind_max
name: Max
use_statistics: false
windspeed_bar_full: false
speed_unit: kph
output_speed_unit: kph
speed_range_beaufort: false
current_direction:
show_arrow: true
arrow_size: 30
center_circle_size: 10
corner_info:
top_left:
label: Currently
unit: " km/h"
entity: sensor.bresser_7in1_31511_wind_average
label_text_size: 60
value_text_size: 50
input_unit: kph
output_unit: kph
precision: 0
actions:
top_left:
tap_action:
entity: sensor.bresser_7in1_31511_wind_average
action: more-info
windspeed_bar_location: right
matching_strategy: direction-first
center_calm_percentage: false
TBH till today I’m not sure if the matching_strategy I’m using is correct.
If you’re looking for updating defaults for the card – that’d be really useful.
2 Likes
MrEMan
(Mr E Man)
November 28, 2025, 8:10pm
5
I think mine is the basic config but I’ll share it anyway
type: custom:windrose-card
title: ""
data_period:
hours_to_show: 24
refresh_interval: 300
windspeed_bar_location: right
windspeed_bar_full: true
colors:
bar_name: var(--primary-text-color)
bar_unit_values: var(--primary-text-color)
bar_unit_name: var(--primary-text-color)
wind_direction_entity:
entity: sensor.hp2553ca_pro_v1_9_3_wind_direction
use_statistics: false
direction_compensation: 0
hide_direction_below_speed: 3
windspeed_entities:
- entity: sensor.hp2553ca_pro_v1_9_3_wind_speed
name: Wind
speed_unit: auto
use_statistics: true
output_speed_unit: kph
speed_ranges:
- from_value: 0
color: rgb(102,203,255)
- from_value: 6
color: rgb(120,206,193)
- from_value: 12
color: rgb(0,227,0)
- from_value: 20
color: rgb(102,255,51)
- from_value: 29
color: rgb(203,254,50)
- from_value: 39
color: rgb(226,254,154)
- from_value: 50
color: rgb(254,255,153)
- from_value: 62
color: rgb(250,220,86)
- from_value: 75
color: rgb(255,192,0)
- from_value: 89
color: rgb(255,154,102)
speed_range_beaufort: false
windrose_draw_north_offset: 0
current_direction:
show_arrow: true
arrow_size: 50
center_circle_size: 30
compass_direction:
auto_rotate: false
entity: ""
cardinal_direction_letters: N,E,S,W
matching_strategy: direction-first
center_calm_percentage: true
corner_info:
top_left:
label: Current Windspeed
unit: " kph"
color: var(--primary-text-color)
entity: sensor.hp2553ca_pro_v1_9_3_wind_speed
top_right:
label: Wind Gusts
unit: " kph"
color: var(--primary-text-color)
entity: sensor.hp2553ca_pro_v1_9_3_wind_gust
bottom_left:
label: Direction
color: var(--primary-text-color)
input_unit: degrees
output_unit: letters
direction_letters: NOZWX
entity: sensor.hp2553ca_pro_v1_9_3_wind_direction
bottom_right:
label: Max Gust
unit: " kph"
color: var(--primary-text-color)
entity: sensor.hp2553ca_pro_v1_9_3_max_daily_gust
direction_labels:
cardinal_direction_letters: NESW
show_cardinal_directions: true
show_intercardinal_directions: true
show_secondary_intercardinal_directions: true
cardinal_directions_text_size: 60
intercardinal_directions_text_size: 45
secondary_intercardinal_directions_text_size: 30
1 Like
piersdd
November 28, 2025, 11:30pm
6
type: conditional
conditions:
- condition: or
conditions:
- condition: state
entity: binary_sensor.morning
state: "on"
- condition: state
entity: binary_sensor.afternoon
state: "on"
- condition: state
entity: binary_sensor.evening
state: "on"
card:
type: vertical-stack
cards:
- type: custom:windrose-card
title: Wind Direction
data_period:
hours_to_show: 4
refresh_interval: 300
windspeed_bar_location: bottom
wind_direction_entity:
entity: sensor.openweathermap_wind_bearing
use_statistics: false
direction_compensation: 0
windspeed_entities:
- entity: sensor.openweathermap_wind_speed
name: ""
speed_unit: auto
use_statistics: false
windspeed_bar_full: true
output_speed_unit: kph
speed_range_beaufort: true
direction_labels:
cardinal_direction_letters: NESW
windrose_draw_north_offset: -45
current_direction:
show_arrow: false
arrow_size: 50
center_circle_size: 30
compass_direction:
auto_rotate: false
entity: ""
cardinal_direction_letters: N,E,S,W
matching_strategy: direction-first
center_calm_percentage: true
- type: weather-forecast
entity: weather.openweathermap
show_current: true
show_forecast: true
forecast_type: hourly
- type: entity
entity: sensor.hobart_tides
1 Like
bernieq
(bq)
November 29, 2025, 5:21am
7
Just used for wind - hadn’t thought to usethe card for other data!
type: custom:windrose-card
title: Wind Direction
data_period:
period_selector:
location: bottom
active_color: blue
active_bg_color: yellow
color: lightblue
buttons:
- hours: 1
title: 1 hr
active: false
- hours: 8
title: 8 hrs
active: false
- hours: 24
title: 1 day
active: true
- hours: 120
title: 5 days
active: false
refresh_interval: 120
windspeed_bar_full: true
windspeed_bar_location: bottom
wind_direction_entity:
entity: sensor.hp2561ca_pro_v1_9_9_wind_direction
use_statistics: false
direction_compensation: 0
windspeed_entities:
- entity: sensor.hp2561ca_pro_v1_9_9_wind_speed
name: Speed
speed_unit: kph
use_statistics: true
windspeed_bar_full: false
current_speed_arrow: true
output_speed_unit: kph
speed_range_beaufort: false
speed_ranges:
- from_value: 0
color: rgb(50,0,255)
- from_value: 1
color: rgb(50,100,255)
- from_value: 5
color: rgb(0,200,255)
- from_value: 10
color: rgb(0,255,170)
- from_value: 20
color: rgb(150,255,0)
- from_value: 30
color: rgb(255,255,0)
- from_value: 40
color: rgb(255,128,0)
- from_value: 50
color: rgb(255,0,0)
- from_value: 70
color: rgb(255,0,255)
- entity: sensor.hp2561ca_pro_v1_9_9_wind_gust
name: Gust
speed_unit: auto
use_statistics: false
windspeed_bar_full: false
output_speed_unit: kph
speed_range_beaufort: false
current_speed_arrow: true
speed_ranges:
- from_value: 0
color: rgb(50,100,255)
- from_value: 5
color: rgb(0,200,255)
- from_value: 10
color: rgb(0,255,170)
- from_value: 20
color: rgb(150,255,0)
- from_value: 30
color: rgb(255,255,0)
- from_value: 40
color: rgb(255,128,0)
- from_value: 50
color: rgb(255,0,0)
- from_value: 70
color: rgb(255,0,255)
direction_labels:
cardinal_direction_letters: NESW
show_cardinal_directions: true
show_intercardinal_directions: true
show_secondary_intercardinal_directions: true
cardinal_directions_text_size: 60
intercardinal_directions_text_size: 45
secondary_intercardinal_directions_text_size: 30
windrose_draw_north_offset: 0
current_direction:
show_arrow: true
arrow_size: 80
center_circle_size: 10
compass_direction:
auto_rotate: false
entity: ""
cardinal_direction_letters: N,E,S,W
matching_strategy: time-frame
center_calm_percentage: false
corner_info:
top_left:
label: Current speed
unit: " km/h"
color: yellow
entity: sensor.hp2561ca_pro_v1_9_9_wind_speed
label_text_size: 50
value_text_size: 50
input_unit: kph
output_unit: kph
precision: 1
top_right:
label: Current Temp
unit: " °C"
color: yellow
label_text_size: 50
value_text_size: 50
precision: 1
entity: sensor.hp2561ca_pro_v1_9_9_outdoor_temperature
bottom_left:
label: Humidity
unit: " %"
color: yellow
entity: sensor.hp2561ca_pro_v1_9_9_humidity
label_text_size: 50
value_text_size: 50
precision: 1
bottom_right:
label: Rain today
unit: " mm"
entity: sensor.hp2561ca_pro_v1_9_9_daily_rain_rate
label_text_size: 50
value_text_size: 50
precision: 1
color: yellow
actions:
top_left:
tap_action:
entity: sensor.hp2561ca_pro_v1_9_9_wind_speed
action: more-info
top_right:
tap_action:
action: navigate
navigation_path: /dashboard-weather/temps
windrose:
tap_action:
action: navigate
navigation_path: /dashboard-weather/wind
bottom_right:
tap_action:
action: navigate
navigation_path: /dashboard-weather/rainfall
bottom_left:
tap_action:
action: navigate
navigation_path: /dashboard-weather/humidity
1 Like
Mine is a configuration that I got from an example weather dashboard on Reddit:
type: custom:windrose-card
title: Historic Wind Direction - 48 hrs
data_period:
hours_to_show: 48
max_width: 400
refresh_interval: 60
windspeed_bar_location: bottom
windspeed_bar_full: true
wind_direction_entity:
entity: sensor.ws2900_v2_02_04_wind_direction
direction_unit: degrees
use_statistics: false
direction_compensation: 0
windspeed_entities:
- entity: sensor.ws2900_v2_02_04_wind_speed
name: ""
speed_unit: kph
use_statistics: false
output_speed_unit: kph
speed_range_beaufort: false
windrose_draw_north_offset: 0
cardinal_direction_letters: NESW
matching_strategy: direction-first
center_calm_percentage: true
1 Like
Pretty basic, but with a bit more weather related data added
type: custom:windrose-card
data_period:
period_selector:
location: bottom
active_color: black
active_bg_color: yellow
buttons:
- hours: 1
title: 1 hour
- hours: 8
title: 8 hours
- hours: 24
title: 1 day
active: true
- hours: 240
title: 10 days
refresh_interval: 300
wind_direction_entity:
entity: sensor.wind_direction
windspeed_entities:
entity: sensor.wind_speed
name: Mean
speed_unit: mph
use_statistics: false
windspeed_bar_full: true
output_speed_unit: mph
speed_range_beaufort: false
speed_ranges:
from_value: 0
color: yellow
from_value: 5
color: rgb(0,255,0)
from_value: 10
color: hsl(200, 100%, 60%)
from_value: 15
color: orange
from_value: 20
color: red
current_direction:
show_arrow: true
arrow_size: 100
hide_direction_below_speed: null
direction_labels:
cardinal_direction_letters: NESW
show_cardinal_directions: true
show_intercardinal_directions: true
show_secondary_intercardinal_directions: true
cardinal_directions_text_size: 60
intercardinal_directions_text_size: 40
secondary_intercardinal_directions_text_size: 20
corner_info:
top_left:
label: Current Wind Speeds
unit: " mph"
entity: sensor.wind_speeds
label_text_size: 50
value_text_size: 50
input_unit: null
output_unit: null
precision: null
top_right:
label: Current Temp & Feels
entity: sensor.temperature_chill
unit: " °C"
label_text_size: 50
value_text_size: 50
input_unit: null
output_unit: null
precision: 1
actions:
top_left:
tap_action:
entity: sensor.wind_speeds
action: more-info
top_right:
tap_action:
entity: sensor.temperature_chill
action: more-info
3 Likes
mortonda
(David Morton)
November 30, 2025, 10:18pm
10
Now that the most recent changes have been released… I wanted to be able to see the relative shift in the wind over the day as a cold front came through.
type: vertical-stack
title: Wind History - Last 8 Hours
cards:
- type: grid
columns: 4
cards:
- type: custom:windrose-card
data_period:
from_hours_ago: 1
to_hours_ago: 0
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 2
to_hours_ago: 1
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 3
to_hours_ago: 2
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 4
to_hours_ago: 3
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 5
to_hours_ago: 4
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 6
to_hours_ago: 5
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 7
to_hours_ago: 6
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
- type: custom:windrose-card
data_period:
from_hours_ago: 8
to_hours_ago: 7
hide_windspeed_bar: true
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: Speed
- entity: sensor.gw2000b_wind_gust
name: Gust
text_blocks:
top:
text: ${iqr-range} mph
text_align: center
text_size: 10
bottom:
text: Gusts ${p90-speed}-${max-speed}
text_align: center
text_size: 10
text_color: "#FAA"
direction_labels:
show_cardinal_directions: false
show_intercardinal_directions: false
show_secondary_intercardinal_directions: false
2 Likes
rocket
December 2, 2025, 10:37am
11
I have never managed to get the red triangle for wind direction working (I really need to read the docs again) but here is mine:
type: custom:windrose-card
title: windy, isn't it?
data_period:
period_selector:
location: bottom
active_color: black
active_bg_color: yellow
buttons:
- hours: 1
title: 1 hour
- hours: 8
title: 8 hours
- hours: 24
title: 1 day
active: true
- hours: 240
title: 10 days
max_width: 400
refresh_interval: 300
windspeed_bar_location: bottom
windspeed_bar_full: false
wind_direction_entity:
entity: sensor.gw2000b_wind_direction
direction_unit: degrees
use_statistics: false
direction_compensation: 0
windspeed_entities:
- entity: sensor.gw2000b_wind_speed
name: speed
speed_unit: auto
use_statistics: false
- entity: sensor.gw2000b_wind_gust
name: Gust
speed_unit: auto
use_statistics: false
windspeed_bar_full: false
output_speed_unit: mph
speed_range_beaufort: false
speed_range_max: 40
speed_range_step: 2
windrose_draw_north_offset: -26
current_direction:
show_arrow: true
arrow_size: 50
center_circle_size: 30
hide_direction_below_speed: 1
corner_info:
top_left:
label: Current gusts
unit: " mph"
entity: sensor.gw2000b_wind_gust
label_text_size: 50
value_text_size: 50
precision: 1
top_right:
label: Wind direction
unit: °
entity: sensor.gw2000b_wind_direction
input_unit: degrees
output_unit: letters
bottom_left:
label: wind speed
unit: " mph"
entity: sensor.gw2000b_wind_speed
label_text_size: 50
value_text_size: 50
precision: 1
direction_labels:
cardinal_direction_letters: NESW
show_cardinal_directions: true
show_intercardinal_directions: true
show_secondary_intercardinal_directions: false
cardinal_directions_text_size: 60
intercardinal_directions_text_size: 45
secondary_intercardinal_directions_text_size: 30
matching_strategy: direction-first
center_calm_percentage: true
1 Like
HomeAssMan
(Homer Assad Mandaly)
December 4, 2025, 9:30pm
14
type: custom:windrose-card
cardinal_direction_letters: N,E,S,W
windrose_draw_north_offset: 7654320
current_direction:
show_arrow: true
arrow_size: 50
windspeed_bar_location: right
center_calm_percentage: true
matching_strategy: time-frame
refresh_interval: 180
data_period:
time_interval: 60
period_selector:
location: bottom
active_color: var(--material-primary-text-color)
active_bg_color: var(--secondary-background-color)
bg_color: var(--card-background-color)
color: var(--secondary-text-color)
buttons:
- hours: 3
title: 3 hours
active: false
- hours: 12
title: 12 hours
active: true
- hours: 24
title: 1 day
active: false
- hours: 240
title: 10 days
active: false
wind_direction_entity:
entity: sensor.weather_wind_direction
use_statistics: true
statistics_period: 5minute
windspeed_entities:
- name: Speed
entity: sensor.weather_wind_speed
use_statistics: true
statistics_period: 5minute
output_speed_unit: mph
bar_speed_text_size: 32
bar_label_text_size: 0
current_speed_arrow: true
speed_range_beaufort: false
windspeed_bar_full: 0
dynamic_speed_ranges:
- average_above: 0
step: 0.959
max: 9
- average_above: 1.225
step: 1.625
max: 12
- average_above: 2.64
step: 2.475
max: 15
- average_above: 4.29
step: 3.875
max: 20
- average_above: 6.97
step: 4
max: 24
corner_info:
top_left:
label: Winds
unit: " mph"
entity: sensor.weather_wind_speed
label_text_size: 42
input_unit: mph
output_unit: mph
precision: 1
top_right:
label: Gusts
unit: " mph "
entity: sensor.weather_wind_gust
label_text_size: 42
value_text_size: 60
input_unit: mph
output_unit: mph
precision: 1
bottom_right:
label: Max Gust
unit: " mph"
entity: sensor.weather_wind_gust_max
label_text_size: 42
value_text_size: 60
input_unit: mph
output_unit: mph
precision: 1
bottom_left:
label: Heading
unit: ""
entity: sensor.weather_wind_direction
label_text_size: 42
input_unit: degrees
output_unit: letters
direction_letters: NESW
actions:
windrose:
tap_action:
action: navigate
navigation_path: /config/devices/device/beepbopboopbeepbopding
top_left:
tap_action:
entity: sensor.weather_wind_speed
action: more-info
bottom_left:
tap_action:
entity: sensor.weather_wind_gust
action: more-info
top_right:
tap_action:
entity: sensor.weather_wind_direction
action: more-info
bottom_right:
tap_action:
entity: sensor.weather_wind_gust_max
action: more-info
text_blocks:
bottom:
text_size: 12
text: >-
<table border=0 cellpadding=0 cellspacing=0
style="width:70%;position:absolute;top:0.25em;left:10%;white-space:nowrap;">
<tr>
<td align=center style="overflow:hidden;max-width:15em;">
winds ${sensor.weather_wind_bearing_cardinal}
at ${q1-speed}-${q3-speed},
gusting ${p90-speed}-${max-speed}
</td>
</tr>
</table>
1 Like