Google Calendar

A connected Google Calendar account, reporting your calendar's current and next event as read-only sensors and letting automations create new events on it - the same browser-redirect OAuth2 consent screen Google Drive uses, with your own Google Cloud app credentials.

Connecting

Devices & Services > Google Calendar > "+ Add account" needs a Client ID and Client Secret from an app you create yourself in the Google Cloud Console (with the Google Calendar API enabled and the shown Redirect URI added to it), then redirects your browser to Google's own consent screen; approving it redirects back to Athena and saves the account automatically. Athena requests only the calendar.events scope, so it can read and create events but never touch your calendar's own settings or sharing.

Calendar ID defaults to primary (your account's own default calendar) - only change it if you want Athena connected to a different calendar in the same Google account.

Reached over a raw LAN IP (e.g. https://192.168.1.50:8088)? Google rejects a bare IP address as a redirect URI - and also rejects local-only endings like .local or .home, since it requires the redirect URI's own domain to end in a real top-level domain such as .com or .org. That domain never needs to be registered or reachable on the public internet - only your own hosts file needs to resolve it, and only for your own browser. Add a line like 192.168.1.50 local.athena.com to your hosts file (using this server's own IP and any name you like, as long as it ends in .com/.org/similar) - Athena is then reachable at https://local.athena.com:8088. Use that as the Redirect URI both in the connect form here and in the app in the Google Cloud Console. The hosts file is /etc/hosts on Linux and macOS (edit with sudo), or C:\Windows\System32\drivers\etc\hosts on Windows (edit Notepad as Administrator).

Entities

Checked every 2 minutes: event_now (true whenever an event is currently happening), current_event_summary/current_event_end/current_event_location, next_event_summary/next_event_start/next_event_end/next_event_location, and today_event_count (how many events fall on today's date). Works with Dashboard cards, History, and Automations exactly like every other integration.

Calendar page

Google Calendar's own page menu has a "Calendar view" entry - a month grid merging every connected account's own events, each account in its own color. Click a day to see everything on it, or an event directly for its time, location, and description. Unlike the sensors above (which refresh every 2 minutes), the calendar page always fetches live from Google whenever you change month.

Creating events from an automation

The "Create Calendar Event" action node sets a summary, optional description, how many minutes from now the event starts, and how long it lasts - useful for logging what an automation just did (e.g. "Water heater ran 18:00-21:00") straight onto your calendar.

Reconnecting

Google's own refresh token can stop working - most commonly because the connected app is still in "Testing" publishing status in the Google Cloud Console, where Google expires refresh tokens after about a week. When that happens the account's own page gets a "Reconnect" button (re-runs the consent screen without losing history), a notification appears pointing straight at it, and a needs_reconnect sensor is available if you want to build your own automation around it (e.g. a push notification through ntfy).

Google Cast, Google Drive, Google Calendar, and Google Mail share one "Google" entry when picking a new integration to add from Devices & Services, since all four connect to the same account family - once any is configured, each still gets its own separate card.