# Home Assistant Shabbat & Yom Tov Dashboards (Jan 2025)

For religiously observant Jews, home automation provides a great means of observing the Shabbat and its strictures around the use of electronics. I've covered some binary sensor configurations in another post.

In this one I wanted to share a slightly updated version of my Shabbat dashboard which I have running on an Android display. This version was updated in January 2025 with the help of Claude Sonnet 3.5 which added some nice stylistic elements to the sensor displays.

Shabbat Dashboard

This version of the dashboard leverages a few different add-ons in order to provide a unified display providing the red alert sensors, the Shabbat times and the weather forecast provided by the Israel Meteorological Service, IMS. The weekly Torah portion (parsha) and zmanim geolocated to your locality can be easily added as well.

Add-Ons & Integrations

I use the following add-ons and integrations in order to build my dashboards:

Many thanks to all of the authors for their hard work in making this technology available and accessible.

Security Disclaimer

As I'm based in Israel, it's important for me to keep on top of the Red Alert sensors. But given that these are hugely important, I feel obliged to make the recommendation that you shouldn't rely on these as your only source of information for this vital purpose. I use the official Pikud HaOref app as my primary notifier but these provide a nice additional display (hopefully they remain green!).#

Shabbat Display Setup

The beauty of Home Assistant is that just about anything is possible.

In order to display this dashboard over Shabbat, I picked up a budget Android tablet and installed Fully Kiosk Mode Browser. It's even possible to coordinate the tablet's turn-on and turn-off time in coordination with the Shabbat times provided by that sensor.

Although I began my Home Assistant journey before the AI era, large language models have made configuring Home Assistant configurations vastly easier. I use Claude's Sonnet 3.5 for writing a lot of widget elements that would be too time consuming to code manually (or, frankly, beyond my abilities!)

YAML Snippets For Widgets

If you like the approach and styling, feel free to customise these YAML snippets to create your own dashboards:

This snippet provides a two column styled button card showing the Hebrew date alongside the local time:

type: custom:button-card entity: sensor.hebcal_hebrew_date show_name: false show_state: true show_icon: false styles: card: - background: "linear-gradient(135deg, - border-radius: 15px - padding: 16px state: - color: white - font-weight: bold - font-size: 18px - text-align: center - justify-self: center

Next / Upcoming Shabbat Display Row

type: grid title: Next Shabbat titleColor: white columns: 2 square: false cards: - type: entity entity: sensor.hebcal_start_of_shabbat name: Shabbat In card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; } .card-content { color: white !important; } .primary { font-size: 1.8em; font-weight: bold; color: white !important; } .secondary { font-size: 1.2em; color: white !important; } :host { } - type: entity entity: sensor.hebcal_end_of_shabbat name: Shabbat Out card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; } .card-content { color: white !important; } .primary { font-size: 1.8em; font-weight: bold; color: white !important; } .secondary { font-size: 1.2em; color: white !important; } :host { }

Red Alert Display Row

Important note: you will need to refer to the add-on documentation to change the entities to your alerting area.;

square: false type: grid columns: 2 cards: - type: custom:button-card entity: binary_sensor.oref_alert_jerusalem_all_areas name: Jerusalem All Areas icon: mdi: check -circle styles: card: - padding: 12 px name : - font-weight: bold - color: white state: - color: white icon: - color: white - width: 24 px - height: 24 px state: - value : "on" name : Jerusalem All Areas ( UNSAFE ) icon: mdi:alert-octagram styles: card: - background-color: "#ea4335" icon: - animation: blink 1 s ease infinite - value : "off" name : Jerusalem All Areas ( Safe ) styles: card: - background-color: "#34a853" - value : unavailable styles: card: - background-color: "#ffa500" - type : custom:button-card entity: binary_sensor.oref_alert name : Jerusalem Center icon: mdi: check -circle styles: card: - padding: 12 px name : - font-weight: bold - color: white state: - color: white icon: - color: white - width: 24 px - height: 24 px state: - value : "on" name : Jerusalem Center ( UNSAFE ) icon: mdi:alert-octagram styles: card: - background-color: "#ea4335" icon: - animation: blink 1 s ease infinite - value : "off" name : Jerusalem Center ( Safe ) styles: card: - background-color: "#34a853" - value : unavailable styles: card: - background-color: "#ffa500" title: Red Alerts

IMS Weather Widget

And finally, a weather widget!

show_current: true show_forecast: false type: weather-forecast entity: weather.ims_weather forecast_type: daily name: Jerusalem, IL

Full Dashboard Configuration

Here's a full YAML configuration for my Shabbat dashboard with my personal sensors (like lighting displays) excluded:

views: - title: Home sections: - type: grid cards: - type: grid title: Shabbat Times titleColor: white columns: 1 square: false cards: - type: entity entity: sensor.hebcal_start_of_shabbat name: Shabbat In card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; } .card-content { color: white !important; } .primary { font-size: 1.8em; font-weight: bold; color: white !important; } .secondary { font-size: 1.2em; color: white !important; } :host { } - type: entity entity: sensor.hebcal_end_of_shabbat name: Shabbat Out card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; } .card-content { color: white !important; } .primary { font-size: 1.8em; font-weight: bold; color: white !important; } .secondary { font-size: 1.2em; color: white !important; } :host { } - type: entity entity: sensor.time name: Current Time (Jerusalem) card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; } .card-content { color: white !important; } .primary { font-size: 1.8em; font-weight: bold; color: white !important; } .secondary { font-size: 1.2em; color: white !important; } :host { } - square: false type: grid columns: 1 cards: - type: markdown content: | 🌅 ** Start of Shabbat** Shabbat Mode Active 🌙 ** 00 : 00 ** Bedtime Mode ☀️ ** 09 : 00 ** Morning Lights 🌤️ ** 14 : 30 ** Afternoon Lights style : | ha-card { padding: 16 px; background: var( border-radius: var( } h2 { color: var( border-bottom: 1px solid var( padding-bottom: 8px; margin-bottom: 8px; } - type: entity entity: sensor.hebcal_parsha name: Parsha card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; text-align: center; } .card-content { color: white !important; } .primary { font-size: 1.6em; font-weight: bold; color: white !important; line-height: 1.2; } .secondary { font-size: 1.4em; color: white !important; line-height: 1.2; } :host { } badges: - type: entity entity: sensor.hebcal_hebrew_date name: Hebrew Date attribute: '' state_header: 'Shabbat Dashboard For:' secondary_info: none card_mod: style: | ha-card { background: linear-gradient(120deg, border-radius: 15px; padding: 15px; text-align: center; width: 100%; margin: 0; box-sizing: border-box; } .card-content { color: white !important; width: 100%; } .primary { font-size: 1.6em; font-weight: bold; color: white !important; line-height: 1.2; width: 100%; } .secondary { font-size: 1.4em; color: white !important; line-height: 1.2; width: 100%; } :host { width: 100%; } .name { display: none; }

Yom Tov Version

I created a downstream binary sensor for Shabbat or Yom Tov because for the purpose of driving home automations, at least in my case it doesn't matter which of the conditions is true.

Here’s the configuration:

binary_sensor: - platform: template sensors: is_shabbat: friendly_name: "Is Shabbat" value_template: "{{ states('sensor.hebcal_is_it_shabbat') == 'True' }}" is_yom_tov: friendly_name: "Is Yom Tov" value_template: "{{ states('sensor.hebcal_is_it_yom_tov') != 'No Info' }}" is_shabbat_or_yom_tov: friendly_name: "Is Shabbat or Yom Tov" value_template: >- {{ states('sensor.hebcal_is_it_shabbat') == 'True' or states('sensor.hebcal_is_it_yom_tov') != 'No Info' }}

With this dual sensor, you can easily create styled status grids like these:

type: vertical-stack cards: - type: horizontal-stack cards: - type: custom:button-card entity: switch.plata name: Plata icon: mdi:lightbulb styles: card: - border-radius: 12px - transition: background-color 0.3s ease, box-shadow 0.3s ease - box-shadow: | [[[ if (entity.state === 'on') return '0 6px 10px rgba(0, 128, 0, 0.4)'; else return '0 4px 6px rgba(255, 0, 0, 0.2)'; ]]] - background-color: | [[[ if (entity.state === 'on') return 'rgba(0, 128, 0, 0.6)'; else return 'rgba(255, 0, 0, 0.6)'; ]]] icon: - color: white name: - font-weight: bold - color: white - type: custom:button-card entity: binary_sensor.is_shabbat name: Shabbat? icon: mdi:candle styles: card: - border-radius: 12px - transition: background-color 0.3s ease, box-shadow 0.3s ease - box-shadow: | [[[ if (entity.state === 'on') return '0 6px 10px rgba(0, 128, 0, 0.4)'; else return '0 4px 6px rgba(255, 0, 0, 0.2)'; ]]] - background-color: | [[[ if (entity.state === 'on') return 'rgba(0, 128, 0, 0.6)'; else return 'rgba(255, 0, 0, 0.6)'; ]]] icon: - color: white name: - font-weight: bold - color: white - type: horizontal-stack cards: - type: custom:button-card entity: binary_sensor.is_yom_tov name: Yom Tov? icon: mdi:star-david styles: card: - border-radius: 12px - transition: background-color 0.3s ease, box-shadow 0.3s ease - box-shadow: | [[[ if (entity.state === 'on') return '0 6px 10px rgba(0, 128, 0, 0.4)'; else return '0 4px 6px rgba(255, 0, 0, 0.2)'; ]]] - background-color: | [[[ if (entity.state === 'on') return 'rgba(0, 128, 0, 0.6)'; else return 'rgba(255, 0, 0, 0.6)'; ]]] icon: - color: white name: - font-weight: bold - color: white - type: custom:button-card entity: binary_sensor.is_shabbat_or_yom_tov name: Shabbat Or Yom T... icon: mdi:calendar-clock styles: card: - border-radius: 12px - transition: background-color 0.3s ease, box-shadow 0.3s ease - box-shadow: | [[[ if (entity.state === 'on') return '0 6px 10px rgba(0, 128, 0, 0.4)'; else return '0 4px 6px rgba(255, 0, 0, 0.2)'; ]]] - background-color: | [[[ if (entity.state === 'on') return 'rgba(0, 128, 0, 0.6)'; else return 'rgba(255, 0, 0, 0.6)'; ]]] icon: - color: white name: - font-weight: bold - color: white

An approach to creating a Yom Tov-specific dashboard would be to copy the Shabbat dashboard in its entirety and just swap out the sensors for the Yom Tov ones.

You could even integrate the display into the automation for your tablet (if it’s Shabbat, show the Shabbat dashboard; if it’s Yom Tov, show the Yom Tov dashboard, etc).

**Source:** [https://heyitworks.tech/home-assistant-shabbat-yom-tov-dashboards-jan-2025](https://heyitworks.tech/home-assistant-shabbat-yom-tov-dashboards-jan-2025)