Introduction
I work in mining and we do not work the typical 5 Day week.
There is a few other industries that use rotating/recurring rosters, i.e factories and medical services.
There is no easy way to place a shift pattern into the calendar and have it repeat.
Configuration
To add the Local calendar integration to your Home Assistant instance, use this My button:
Creating Calendar
- Open the Home Assist Calendar from you Side Bar.
- Select + Create calendar bottom left of your screen
- Select Create an empty calendar
- Name the Local Calendar as "8:6 Roster or something familiar.
- Click SUBMIT
- Click FINISH when the Sucess! dialogue pops up.
Create an 8:6 Roster:
Shift Pattern (8 Days ON, 6 Days OFF, 8 Nights ON, 6 Days OFF)
Starts on a Tuesday
ON | OFF | ON | OFF | Start | End | Duration | All Day Event |
---|---|---|---|---|---|---|---|
8 Days | - | - | - | 06:00 | 18:00 | 12hr | - |
- | 6 Days | - | 6 Days | - | - | 24hr | Yes |
- | - | 8 Nights | - | 18:00 | 06:00 | 12hr | - |
A. Day Shift Roster Events
- Follow Creating a Calendar Link Above
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “8:6 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 1/4/2025) and Start: Time (06:00)
- Input End: Date (Tue 8/4/2025) and End: Time (18:00)
- Select Repeat Daily
- Input Repeat interval 28 Days
NOTE: Type this statement into your AI to work out the repeat interval
- Select End: Never
- Click ADD EVENT
B. Day OFF Roster Events
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “8:6 Roster”
NOTE This Defaults do a different Calendar in most cases. - Select All day
- Input Start: Date (Wed 9/4/2025) and End: Date (Mon 14/4/2025)
- Input Repeat interval 14 Days NOTE: See AI note above, Days OFF happen twice as often as Day and Night Shifts so halve the repeat interval
- Select End: Never
- Click ADD EVENT
C. Night Shift Roster Events
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “8:6 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 15/4/2025) and Start: Time (06:00)
- Input End: Date (Tue 22/4/2025) and End: Time (18:00)
- Input Repeat interval 28 Days
NOTE: See AI note above - Select End: Never
- Click ADD EVENT
D. Completed 8:6 Roster
Create a 5:2 / 4:3 Roster:
Shift Pattern (5 Days ON, 2 Days OFF, 4 Days ON, 3 Days OFF)
Starts on a Monday Every with Second Friday Off
ON | OFF | ON | OFF | Start | End | Duration | All Day Event |
---|---|---|---|---|---|---|---|
5 Days | - | - | - | 06:00 | 16:00 | 10hr | - |
- | 2 Days | - | 3 Days | - | - | 24hr | Yes |
- | - | 4 Days | - | 06:00 | 16:00 | 10hr | - |
A. (5 Day) Day Shift Roster Events
- Follow Creating a Calendar Link Above
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “5:2 / 4:3 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 7/4/2025) and Start: Time (06:00)
- Input End: Date (Tue 11/4/2025) and End: Time (16:00)
- Select Repeat Daily
- Input Repeat interval 14 Days
NOTE: Type this statement into your AI to work out the repeat interval
- Select End: Never
- Click ADD EVENT
B. (4 Day) Day Shift Roster Events
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “5:2 / 4:3 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 14/4/2025) and Start: Time (06:00)
- Input End: Date (Tue 17/4/2025) and End: Time (16:00)
- Input Repeat interval 28 Days
NOTE: See AI note above - Select End: Never
- Click ADD EVENT
C. Day Off Roster Events
- Left Blank in this example, but could be added if you want to.
D. Completed 5:2 / 4:3 Roster
Create an 15:13 Roster:
Shift Pattern 15:13 (15 Days ON, 13 Days OFF, With Fly In and Out Days)**
Starts on a Tuesday
FLY | ON | FLY | OFF | Start | End | Duration | All Day Event |
---|---|---|---|---|---|---|---|
IN | - | - | - | 06:00 | 10:00 | 6.5hr | - |
- | 15 Days | - | - | 05:30 | 17:30 | 12hr | - |
- | - | OUT | - | 14:00 | 16:10 | 9hr | |
- | - | - | 13 Days | - | - | 24hr | Yes |
A. Day Shift Roster Events
- Follow Creating a Calendar Link Above
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “15:13 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 7/4/2025) and Start: Time (05:30)
- Input End: Date (Tue 11/4/2025) and End: Time (17:30)
- Select Repeat Daily
- Input Repeat interval 28 Days
NOTE: Type this statement into your AI to work out the repeat interval
- Select End: Never
- Click ADD EVENT
B. FLY-IN Day Roster Events
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “15:13 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 22/4/2025) and Start: Time (06:00)
- Input End: Date (Tue 22/4/2025) and End: Time (10:00)
- Input Repeat interval 28 Days
NOTE: See AI note above - Select End: Never
- Click ADD EVENT
C. FLY-OUT Day Roster Events
- Click on + ADD EVENT bottom right of your screen
- Ensure you Select the right calendar in the Calendar “15:13 Roster”
NOTE This Defaults do a different Calendar in most cases. - Input Start: Date (Tue 06/4/2025) and Start: Time (14:00)
- Input End: Date (Tue 06/4/2025) and End: Time (16:10)
- Input Repeat interval 28 Days
NOTE: See AI note above - Select End: Never
- Click ADD EVENT
D. Day Off Roster Events
- Left Blank in this example, but could be added if you want to.
E. Completed 15:13 Roster
Example Usage on Dashboard
Automation Triggers
Week-Planner-Card
Make the calendar visible to all in the household, ideal for planning dates.
CARD FOR 1080p Width
- Starts On Sunday
- Past days are faded
- Current Day Highlighted
- Navigation to move through the months
- Is at 1080p width on my vertical 21" Touch Screen
FULL CARD CODE HERE
- type: custom:week-planner-card
calendars:
- entity: calendar.australia_tas
color: purple
name: Public Holidays
- entity: calendar.calendar
color: grey
name: Maverick
- entity: calendar.recycle_pickup_3
color: yellow
name: Recycling
- entity: calendar.rubbish_pickup_3
color: green
name: Rubbish & FOGO
- entity: calendar.birthdays
color: crimson
name: Birthdays
- entity: calendar.hunter
color: slateblue
name: Hunter
weather:
entity: weather.devonport
showCondition: true
showTemperature: true
noCardBackground: true
eventBackground: var(--ha-card-background)
showLegend: true
days: 28
startingDay: sunday
startingDayOffset: 0
compact: true
showNavigation: true
card_mod:
style: |
.day.past {
opacity: .3;
}
.today .number {
color: crimson;
border: solid 2px crimson;
border-radius: 4px;
background-color: white !important;
}
.event[data-entity="calendar.recycle_pickup_3"] {
background-color: rgba(255,215,0,0.2) !important;
}
.event[data-entity="calendar.rubbish_pickup_3"] {
background-color: rgba(34,139,34,0.2) !important;
}
.event[data-entity="calendar.australia_tas"] {
background-color: rgba(148,0,211,0.2) !important;
}
.event[data-summary="Hunter Home"] {
background-color: rgba(106,90,205,0.2) !important;
}
.event[data-summary="Hunter Fly-Home"] {
background-color: rgba(106,90,205,0.5) !important;
}
.event[data-summary="Hunter Fly-Work"] {
background-color: rgba(106,90,205,0.5) !important;
}
```
CARD FOR Smaller Area (Google Nest Hub)
- Starts Today
- Current Day Highlighted
- Navigation to move through the months
- Cast to a Google Nest Hub
FULL CARD CODE HERE
type: custom:week-planner-card
title: null
calendars:
- entity: calendar.australia_tas
color: purple
name: Public Holidays
- entity: calendar.calendar
color: grey
name: Maverick
- entity: calendar.recycle_pickup_3
color: gold
name: Recycling
- entity: calendar.rubbish_pickup_3
color: green
name: Rubbish & FOGO
- entity: calendar.birthdays
color: crimson
name: Birthdays
- entity: calendar.hunter
color: slateblue
name: Hunter
days: 9
compact: true
weather:
entity: weather.devonport
showCondition: true
showTemperature: true
noCardBackground: true
eventBackground: rgba(100, 100, 100, 0.15)
showLegend: false
showNavigation: true
columns:
extraSmall: 3
card_mod:
style: |
.day.past {
opacity: .3;
}
.today .number {
color: crimson;
border: solid 2px crimson;
border-radius: 4px;
background-color: white !important;
}
.event[data-entity="calendar.recycle_pickup_3"] {
background-color: rgba(255,215,0,0.2) !important;
}
.event[data-entity="calendar.rubbish_pickup_3"] {
background-color: rgba(34,139,34,0.2) !important;
}
.event[data-entity="calendar.australia_tas"] {
background-color: rgba(148,0,211,0.2) !important;
}
.event[data-summary="Hunter Home"] {
background-color: rgba(106,90,205,0.2) !important;
}
.event[data-summary="Hunter Fly-Home"] {
background-color: rgba(106,90,205,0.5) !important;
}
.event[data-summary="Hunter Fly-Work"] {
background-color: rgba(106,90,205,0.5) !important;
}