This is a HomeAssistant sensor for showing data about swedish holidays. It uses the api at sholiday.faboul.se to generate statistics as sensors. The sensors are checked once per day (at midnight).
HomeAssistant 2022.5.1 or later
- Go to integrations
- Press the dotted menu in the top right corner
- Choose custom repositories
- Add the URL to this repository
- Choose category
Integration
- Click add
- In your homeassistant config directory, create a new directory. The path should look like this: my-ha-config-dir/custom_components/swedish_calendar
- Download the contents (the raw files, NOT as HTML) of the files from custom_components/swedish_calendar to the new directory
Name | Required | Default | Description |
---|---|---|---|
exclude | no | empty list | All sensor types are tracked by default, this config lets you specify which sensor types that you don't want to track. For full list of options, see Supported sensor types. |
special_themes | no | empty object | The special themes config, see Special themes config. |
calendar_config | no | empty object | The calendar config, if you want sensors to be shown in the HomeAssistant Calendar. See Calendar configuration. |
cache | no | empty object | The cache config, if you to store data locally for instance when running on a slow connection. See Cache configuration. |
# Example configuration.yaml entry
swedish_calendar:
⚠ IMPORTANT NOTE ⚠
If you are migrating from v1.0.0 to v2.x.x, note that you have to change from sensor:
to swedish_calendar:
in your configuration.yaml. This change was necessary to be able to add more features and an even more extensive config. The platform
-key is also no longer required.
Sensor type | Swedish description | Example value |
---|---|---|
date | Datum | 2022-12-24 |
weekday | Veckodag | Lördag |
workfree_day | Arbetsfri dag | Ja |
red_day | Röd dag | Nej |
week | Vecka | 51 |
day_of_week | Dag i vecka | 6 |
eve | Helgdagsafton | Julafton |
holiday | Helgdag | unknown |
day_before_workfree_holiday | Dag före arbetsfri helgdag | Nej |
name_day | Namnsdag | Eva |
flag_day | Flaggdag | unknown |
theme_day | Temadag | Julafton |
# Example configuration.yaml entry with exclusion
swedish_calendar:
exclude:
- date
- day_before_workfree_holiday
Special themes include data about common celebrations in Sweden, like 🍪 Kanelbullens dag or 🦢 Mårtensafton.
Name | Required | Default | Description |
---|---|---|---|
dir | no | current installation directory | The directory where you have stored specialThemes.json. Only needed if you have moved your specialThemes.json file out of the default directory! |
auto_update | no | False | If you want to enable automatic download of the latest themes every night. |
⚠ IMPORTANT NOTE ⚠
If you are migrating to v2.2.0+ from an earlier version, note that you have to change from the single config line special_themes_dir: /...
to the special_themes:
-object.
# Example configuration.yaml entry with special themes, updated every night
swedish_calendar:
special_themes:
auto_update: True
Name | Required | Default | Description |
---|---|---|---|
include | no | empty list | All sensor types that you want to track. For full list of options, see Supported sensor types. |
days_before_today | no | 0 | Number of days prior to today that you want to show in calendar |
days_after_today | no | 0 | Number of days after today that you want to show in calendar |
# Example configuration.yaml entry with calendar enabled
swedish_calendar:
calendar_config:
days_before_today: 7
days_after_today: 31
include:
- eve
- holiday
Result in calendar with above configuration for Dec 2022:
Name | Required | Default | Description |
---|---|---|---|
enabled | no | False | Enable/disable the cache |
dir | no | installation_dir/.cache | Full path to directory where cached data should be stored |
retention | no | 7 days | Time until cache is renewed, must be set as “hh:mm:ss” or it must contain at least one of the following entries: days:, hours:, minutes:, seconds: or milliseconds: |
# Example configuration.yaml entry caching data for 1 month
swedish_calendar:
cache:
enabled: True
retention:
days: 31
I currently use the sensors in a grid spanning 5 rows, top 2 rows are 3 columns and bottom 2 rows are 2 columns. The bottom columns are conditional cards for showing holidays, which are only displayed if there is a value.
- type: vertical-stack
title: 'Swedish calendar'
cards:
- type: glance
show_name: false
entities:
- sensor.swedish_calendar_date
- sensor.swedish_calendar_weekday
- sensor.swedish_calendar_week
- type: glance
entities:
- sensor.swedish_calendar_red_day
- sensor.swedish_calendar_workfree_day
- sensor.swedish_calendar_day_before_workfree_holiday
- type: horizontal-stack
cards:
- type: conditional
conditions:
- entity: sensor.swedish_calendar_eve
state_not: "unknown"
card:
type: glance
entities:
- sensor.swedish_calendar_eve
- type: conditional
conditions:
- entity: sensor.swedish_calendar_holiday
state_not: "unknown"
card:
type: glance
entities:
- sensor.swedish_calendar_holiday
- type: horizontal-stack
cards:
- type: glance
entities:
- sensor.swedish_calendar_name_day
- type: conditional
conditions:
- entity: sensor.swedish_calendar_flag_day
state_not: "unknown"
card:
type: glance
entities:
- sensor.swedish_calendar_flag_day
- type: horizontal-stack
cards:
- type: conditional
card:
entities:
- sensor.swedish_calendar_theme_day
type: glance
conditions:
- entity: sensor.swedish_calendar_theme_day
state_not: unknown
Result in UI during holiday:
Result in UI with special themes included:
To send a push when someone you know celebrates their name, you can use the following automation
- alias: 'Send push on important namnsdag'
initial_state: 'on'
trigger:
- platform: state
entity_id: sensor.swedish_calendar_name_day
condition:
- condition: template
value_template: >-
{% set names_of_today = states('sensor.swedish_calendar_name_day').split(",") %}
{% set wanted_names = ['Lisa', 'Kalle', 'Johan', 'Anna'] %}
{% for name in names_of_today %}
{% if (name in wanted_names) %}
true
{% endif %}
{% endfor %}
action:
service: notify.pushbullet
data_template:
title: 'Namnsdag!'
message: "Idag firas {{ states('sensor.swedish_calendar_name_day') }} "