DIY Family Calendar (Skylight)

Hi see below full page yaml

"0":
  type: grid
  cards:
    - type: custom:better-moment-card
      parentStyle: |
        line-height:normal;
      moment:
        - parentStyle: |
            font-size:1em; text-align:center; margin-top:5px;
          templateRaw: |
            {{moment format=cccc}}
        - parentStyle: |
            font-size:1.5em; text-align:center; margin-top:5px;
          templateRaw: |
            {{moment format=LLLL dd, yyyy}}              
        - parentStyle: |
            font-size:4em;  text-align:center; font-weight:400;
          templateRaw: |
            {{moment format=HH:mm}} 
      card_mod:
        style: |
          ha-card {
            background: transparent !important;
            box-shadow: none !important;
            border: none !important;
          }
    - type: custom:weather-card
      entity: weather.[MY_WEATHER_ENTITY}
      current: true
      details: true
      forecast: false
    - type: weather-forecast
      show_current: false
      show_forecast: true
      entity: weather.[MY_WEATHER_ENTITY]
      forecast_type: daily
      name: Weather Forecast
      card_mod:
        style: |
          ha-card {
            background: transparent !important;
            box-shadow: none !important;
            border: none !important;
          }
cards:
  - type: vertical-stack
    cards:
      - type: markdown
        content: <font color="Black" size="6">The Skylight Calendar</font>
      - type: horizontal-stack
        cards:
          - type: custom:bubble-card
            card_type: button
            button_type: state
            entity: person.remy_warner
            scrolling_effect: false
            tap_action:
              action: navigate
              navigation_path: "\"#addcalendarevent\""
            button_action:
              tap_action:
                action: navigate
                navigation_path: "\"#addcalendarevent\""
            icon: mdi:calendar-plus
          - type: custom:bubble-card
            card_type: button
            button_type: name
            name: Add Event
            scrolling_effect: false
            icon: mdi:calendar-plus
            tap_action:
              action: navigate
              navigation_path: "\"#addcalendarevent\""
            button_action:
              tap_action:
                action: navigate
                navigation_path: "\"#addcalendarevent\""
            styles: |-
              font-size: 1.05em !important; 
               ha-card {
                          --bubble-main-background-color: #393745 !important;
                          width: 300px;
                        }    
                        .bubble-icon {
                          --mdc-icon-size: 30px !important;  
                          color: snow !important;
                          opacity: 1;
                        }
                        .bubble-icon-container {
                          background: #393745 !important;
                          display: flex;
                           }
                        .bubble-name {
                          color: snow !important;
                          opacity: 1;
                          display: flex;
                          line-height: 18px;
                          flex-direction: row;
                          justify-content: center;
                          flex-grow: 1;
                          margin: 0 40px 0 0;
                          pointer-events: none;
                          position: relative;
                          overflow: hidden;
                        }
      - type: custom:bubble-card
        card_type: select
        entity: input_select.calendar_view
        show_icon: false
        show_name: true
        show_state: true
        name: Select View
  - type: custom:config-template-card
    entities:
      - input_text.remy_calendar_filter_calendar_filter
      - input_select.calendar_view
    variables:
      PERSONCAL: states['input_text.remy_calendar_filter_calendar_filter']?.state
      VIEW: states['input_select.calendar_view']?.state
      DAYS: |
        (() => {
          const calendarView = states['input_select.calendar_view']?.state;
          
          if (calendarView === 'Today') return 1;
          if (calendarView === 'Tomorrow') return 2;
          
          // Check for Month, Biweek, or Week based on screen width
          if (calendarView === 'Week') return 7;
          if (calendarView === 'Biweek') return 14;
          if (calendarView === 'Month') return 28;
          if (calendarView === 'Bimonth') return 56;
          
          // Default fallback to 7 if no condition matches
          return 7;
         })()
    card:
      type: custom:week-planner-card
      calendars:
        - entity: calendar.remythfc_googlemail_com
          name: remy
          color: "#ffff"
          filter: ${ PERSONCAL }
      days: ${ DAYS }
      startingDayOffset: 0
      hideWeekend: false
      noCardBackground: false
      compact: false
      weather:
        showCondition: true
        showTemperature: true
        showLowTemperature: true
        useTwiceDaily: false
        entity: weather.forecast_home
      locale: en
      showLocation: true
      hidePastEvents: false
      hideDaysWithoutEvents: false
      hideTodayWithoutEvents: false
      combineSimilarEvents: true
      showLegend: false
      legendToggle: false
      texts:
        monday: Mon
        tuesday: Tue
        wednesday: Wed
        thursday: Thu
        friday: Fri
        saturday: Sat
        sunday: Sun
        yesterday: ""
        today: ""
        tomorrow: ""
      card_mod:
        style: |
          ha-card {
            .event.past {
              opacity: .2;
              background-color: gray !important;
            }
            .time {
              color: #333333 !important;
              font-size: 0.8em !important;
            }
            .event {
              color: #333333 !important;
              line-height: 16px !important;
              background-color: var(--border-color) !important;
              border-radius: 10px !important;
              max-height: 80px !important;
              overflow: hidden !important;
              font-size: 1.1em !important;
            }
            .none {
              background-color: transparent !important;
            }
            .today .number {
              border-radius: 5px;
              background-color: orange !important;
              padding-left: 4px;
              padding-right: 4px;
                  
            }
            .day .date .text {
              font-size: 1em !important;
              font-weight: bold !important;
            }
            .day .date .number {
              font-weight: bold !important;
              font-size: 3em !important;
            }
            .day {
              --background-color: red;
              border: solid 1px whitesmoke;
              padding: 0.2%;
              width: 13% !important;
            }


                  
          }
type: masonry
title: Skylight

I do have the card mod and the browser mod set up as well.

Thanks

Would you be so kind to share how you did the counters on the todo list? and does the list drop down?

I added a “Lunch Menu” popup card for my kids school lunch menu which has been a hit with the family. Thought this might be of interest to some. Our school uses Nutrislice, which has an API. This thread has more info on the API and Markdown card.

Looks nice, glad you got it working! I ended up styling mine to just be entrees and to show pictures. Scrubbed breakfast and the sides.

Hi @mohesles1 I really love your project – it looks amazing! I’ve been trying to build something like it for the past two months, but I just can’t seem to get it to work (maybe I’m just not smart enough) :frowning:
I know that you and many other users here are very experienced with Home Assistant, but unfortunately, I’m completely new to all of this. I actually started this project only because of your inspiring post.

I’m really stuck and don’t know how to move forward. Maybe you – or someone else kind enough – could help me out by explaining things step by step? :frowning:
I’m honestly already thinking about just buying a finished solution, because I feel like I’m too dumb to figure it out on my own.

Also, I’m from Germany and a native German speaker – maybe there’s someone here who also speaks German and could help me in my language?

Hi Tugahome

If you want to start with home automation, this project is a pretty big Start. I don’t want to say it’s not possible to start with HA and this project. It will take some time to learn about how HA is working and what possibilities HA will provide you.

If you just want to start HA and this Project, you should first learn how to setup HA for your home. Choosing the right Platform to host it, and how to grant access from all of your devices. So for that Simon.42 (Attention German Language warning) could help you.

After the Setup you need to learn what HACS is, also for that you’ll find a tutorial on Simon.42s Youtube Channel.

If you got that set up and running you can start by following the downloads which @fgorodishter quoted here. Attention, now you’ve just installed pieces of Code from some guys out of the Internet.

And then you can follow the code snippets from @mohesles1.

If this sounds to time consumption to you or you don’t need anything else from HA besides this Family Calendar feature. I think you should learn more about setting up a DakBoard on a RPI and build a smart family Dashboard with this system. At the end it costs something but is much less time consummating than hosting, supporting and expanding a Home Assistant Universe.


Hi Tugahome

Wenn du mit der Hausautomation starten möchtest, ist diese Projekt schon eher fĂŒr fortgeschrittene Nutzer gedacht. Ich möchte dir nicht untersagen mit diesem Projekt zu starten, trotzdem wirst du hier einiges konfigurieren, was teils sehr komplex und nur in HA Logik zu verstehen ist. Somit empfehle ich dir dieses Projekt nur anzufangen, wenn du dir sicher bist, dass du HomeAssistant als deinen alltĂ€glichen Assistenten einrichten möchtest. Aber ich kann es dir nur empfehlen, denn die Möglichkeiten die dir HA bieten sind immens.

Du möchtest also mit HomeAssistant starten, dann musst du dir einmal im klaren sein, auf welcher Plattform du diesen betreiben möchtest. Sowie auch der Zugriff muss geklĂ€rt sein. Ich empfehle die Simon.42s Videos. Oben die Links gelten auch fĂŒr den deutschen Pfosten hier. Darin wird dir bei der Plattform Wahl geholfen. Ich persönlich kann die HA auf dem RPi sowie auch auf Proxmox empfehlen.

Wenn du alles aufgesetzt hast und du dich das erste mal mit HA auseinandergesetzt hast, kommt die Spezialzutat. HACS is ein ZusÀtzlicher Programm Marktplatz, bei welchem du Kommunalprojekte direkt in Home Assistant installieren kannst. Video ebenfalls von Simon.42.

Danach installierst du die von fgorodishter erwĂ€hnten HACS add-ons. Achtung ab jetzt hast du Software bei dir installiert, welche von wildfremden Personen zur VerfĂŒgung gestellt werden.

Jetzt kannst du mit dem initialen Pfosten von mohesles1 und seinem Code starten.

Wenn dir das jedoch zu aufwendig erscheint oder du dieses Projekt nur fĂŒr den Interaktiven Familienkalender machen möchtest? Dann empfehle ich dir, dass du dich mit dem Aufsetzen deine DakBoard auf einem RPi auseinandersetzt und dir mit DakBoard deinen Kalender gestaltest. Das kostet zwar etwas geld, jedoch benötigt das betreiben, pflegen und weiterentwickeln eines HomeAssistant viel Zeit und Musse.

Ich hoffe, dass dir das etwas weiter hilft.

Mfg

2 Likes

Send me PM and we’ll walk through it and make it work

Man I’m really hoping for the part about the chores page you have. are you utilizing grocy api?

Amazing work given the complications maybe you (or someone) should have a patreon shop for offering assistance and troubleshooting for those who need it.

I’m trying to get all of this going as well, but may be a little too newb with HA. I have google calendar integration working with all my family members and I have a basic weekly-planner-card working. Beyond that I’m struggling a bit

My specific questions -

  1. Do we still need to do the filters with the new capability for legends and turning calendars on and off in calendar card add-on. If so, where does the input_text helper go?
  2. Where do the other pieces of yaml code go for steps 4/5. I tried cutting/pasting it into a new dashboard into the header section and main section and it didn’t do anything remotely close.

Any help or pointers to other guides is appreciated. I’m slowly adding to my HA skills and dashboards is the part I’m struggling with the most. I have a lot of automations and devices, just can’t get my brain to connect YAML with visual entities.

To your questions:

  1. No, you should not need the extra filters/helpers.
  2. Create a new dashboard and go into yaml. Overwrite the entirety of the yaml with what I provided. You can delete the Kiosk mode section if you do not need that.

If you are using this yaml wholesale, you will need to install the other addons i mentioned here: DIY Family Calendar (Skylight) - #58 by fgorodishter

Alright so I copied this text code and updated my calendar entities but I am still getting the following error.

Configuration error

  • Cannot read properties of undefined (reading ‘startsWith’)

No card type configured

I installed all of the cards but didn’t do anything else with them.

What am I missing?

Love this iedea and it looks great. Wang to get it up and running but as a newbie to home assistant I have no idea where I am putting those scripts, filters and regex.

Without creating too much work for anyone, is there a clearer step by step on what I need to do to add the scripts and filters?

I had the same problem, still not sure how you would implement this. Anyway I just took another approach to solving this problem and made an add-on daylight calendar. Instructions to setup this addon are in the repo, but the long/short of it is:

  • Navigate to the Home Assistant Supervisor panel
    
  • Go to the Add-on Store tab
    
  • Click the three dots in the upper right corner and select "Repositories"
    
  • Add this repository URL: https://github.com/Ark-Web-Services/daylightcalendar
    
  • Find the "Daylight Calendar" add-on in the store and click "Install"
    

It’s open source, so you can fork and modify it however you like, or if you want to see some improvements suggest or contribute.

Why Daylight Calendar Stands Out:

  • All-in-one family organization solution (not just a calendar)
  • Chore system with reward system
  • Kitchen Management with recipe-to-grocery list automation
  • Entertainment Integration with built-in games
  • Task Management with visual Kanban boards

Downloaded
 It looks like a good framework but the calendar is not showing any of my events from my HA Local Calendar.

I’m also having a few issues, the framework looks good but no calendar events. I put my weather entity in the config but it doesn’t update and i get a 404 error about loading meal plans and chore lists. Also if I try to add a chore it asks who I want to assign it to and there are 4 random people I don’t know :slight_smile:

Will keep it installed though as it looks great and simple

I love the look of this, but I’m frustrated since your Saturday doesn’t say Sat and it shifts all the events up a little because of that. I haven’t figured out how to fix that. Any ideas would be VERY helpful.

Why recreate the wheel when Mealie has the meal stuff integrated in and is a great service. I love the concept, but it isn’t there yet.

Hi, first I want thank the maker of this awesome DIY project! I am still in progress Only I have one little issue my calendar card is not showing horizontal but vertical how can I fix that?

So this is really cool and I got most of it functioning. However I’m stuck with one thing. When it click the button card to trigger the regex change for filtering, it does so correctly - but the calendar card view does not update automatically with the new filter applied. I can refresh the page and it correctly filters those calendar events though, so it seems it is working - just not updating automatically. Anyone have any insights?

Thanks!