Fork of nmanclank/ha-procare-activity-fetcher with 2FA login support
  • Python 77.2%
  • JavaScript 22.8%
Find a file
Benjamin Caswell 53fc6e2f7e
Update README for the fork: 2FA disclosure, new entities, vibe-coded notice
Marks this as a personal fork of nmanclank/ha-procare-activity-fetcher
hosted on a private Forgejo instance rather than GitHub, notes HACS
custom-repo install doesn't apply here, and adds a disclaimer that
the fork's changes were built with an AI coding assistant against the
undocumented Procare API and tested against one real account/school -
not broadly validated.

Documents everything added since the fork: 2FA/MFA login and reauth,
the Signed In binary sensor, the adjustable update-interval number
entity, the optional latest-photo camera and its Configure-button
settings, and the activity sensor's new activity_type/signed_by
fields.
2026-07-08 20:38:24 -04:00
assets Add files via upload 2025-12-22 11:10:17 -07:00
custom_components/procare_activities Fix 500 error opening options flow on recent HA Core 2026-07-08 20:12:13 -04:00
www/community/procare-timeline-card minor formatting changes 2025-10-06 12:20:19 -07:00
hacs.json Initial Commit 2025-09-26 22:47:40 -07:00
README.md Update README for the fork: 2FA disclosure, new entities, vibe-coded notice 2026-07-08 20:38:24 -04:00

Procare Activities Integration for Home Assistant

This is a personal fork of nmanclank/ha-procare-activity-fetcher, hosted at git.ohmstead.dev/ben/ha-procare-activity-fetcher. It exists mainly to add support for Procare accounts with two-factor authentication enabled, plus a handful of features built on top of that. If you don't use 2FA with Procare, the original repo is likely all you need.

Disclaimer: the changes in this fork were vibe-coded — built iteratively with an AI coding assistant, working directly against the real Procare API rather than public documentation (there isn't any). It's been tested against one real account/school setup, not broadly. Review the code yourself before trusting it with your credentials, especially if you fork it further or run it somewhere you care about.

hacs_badge

This is a custom integration for Home Assistant to display activities from the Procare Connect platform: daily activity feed, live sign-in/out status, and (optionally) the latest photo — for a selected child.

Activity Sensor Screenshot

Features

  • 2FA/MFA Login Support: Handles Procare accounts with two-factor authentication (authenticator app) during setup, and via Home Assistant's standard reauthentication flow if the stored session ever needs to be refreshed.
  • Fetches Daily Activities: Retrieves the latest activities for a selected child from the Procare Connect API.
  • Real-time Sensor: Creates a sensor entity in Home Assistant for the most recent activity. The sensor's state is the title of the latest activity (e.g., "Meal: Lunch").
  • Detailed Attributes: Stores all activities from the last 7 days in the sensor's attributes, including timestamps, details, photos, staff member names, and who signed the child in/out.
  • Signed In Binary Sensor: A live "is my kid currently at daycare" sensor, backed by Procare's own sign-in status rather than inferred from the activity feed, with who-signed-in/out details as attributes.
  • Latest Photo Camera (optional): Exposes the most recent photo activity as a proper camera entity — avoids the signed, ever-changing S3 URL that lives in the activity attributes (which breaks notify services with URL length limits, and false-triggers "new photo" automations on every poll). Off by default; enable it and choose retention behavior (proxy-only vs. keep a local history) from the integration's Configure button after setup.
  • Adjustable Poll Interval: A number entity lets you change the polling interval at runtime, no reconfiguration or restart needed.
  • Multi-child Support: If your account has multiple children, you can select which child to monitor during the configuration process.
  • Custom School Support: Supports Procare instances with custom school domains.

Installation

HACS

This fork lives on a private Forgejo instance, not GitHub, so it isn't installable through HACS's custom-repository flow (which expects a GitHub source). If you want the HACS-installable version, use the original repository instead (note it does not have 2FA support).

Manual Installation

  1. Copy the procare_activities directory from this repository into your Home Assistant custom_components folder.
  2. Restart Home Assistant.

Configuration

  1. Go to Settings > Devices & Services.
  2. Click Add Integration and search for Procare Activities.
  3. Enter your Procare Connect username and password.
  4. (Optional) If your school uses a custom Procare domain (e.g., myschool.procareconnect.com), enter the school's unique name (e.g., myschool) in the "School Name" field. If you leave this blank, the integration will use the default Procare URLs.
  5. (Optional) Set the poll interval, and whether to enable the latest-photo camera and its retention behavior. These can all be changed later — poll interval via its own number entity, photo settings via the integration's Configure button.
  6. If your account has two-factor authentication enabled, you'll be prompted for a one-time code from your authenticator app after entering your password.
  7. If you have more than one child associated with your account, you will be prompted to select one from a list.
  8. A device is created for the selected child, with a sensor, a binary sensor, a number entity, and (if enabled) a camera entity.

Changing settings later

  • Poll interval: adjust the number.<child_name>_update_interval entity directly — takes effect on the next cycle, no reload needed.
  • Photo camera / retention: Settings > Devices & Services > Procare Activities > (your child's entry) > Configure.
  • Re-authentication: if Procare ever invalidates the stored session (rare, but possible), Home Assistant will surface a "reauthentication required" notification on the integration. Follow it to re-enter your password and a fresh 2FA code, if applicable.

Entity Reference

sensor.<child_name>_latest_activity

  • State: The title of the most recent activity (e.g., "Nap Started at 1:00 PM").
  • Attributes: activities — a list of all activities from the past 7 days. Each activity is a dictionary with:
    • id: The unique ID of the activity.
    • timestamp: The time the activity occurred (ISO 8601 format).
    • activity_type: The normalized activity type (e.g., sign_in, sign_out, meal, nap, photo, bottle, bathroom).
    • title: A descriptive title for the activity.
    • details: Additional details about the activity.
    • photo_url: A URL to a photo associated with the activity, if any (signed, and re-signed on every poll — see the camera entity below if you need a stable reference to a photo).
    • staff: The name of the staff member who recorded the activity.
    • signed_by: For sign_in/sign_out activities, who performed it.

binary_sensor.<child_name>_signed_in

  • State: on if the child is currently signed in at daycare, off otherwise. Deliberately has no device_class, so it reads as plain On/Off rather than the misleading Home/Not Home a presence class would show.
  • Attributes: last_signed_in_by, last_signed_in_at, last_signed_out_by, last_signed_out_at.

number.<child_name>_update_interval

  • Adjustable polling interval in minutes (5–120). Changing it takes effect immediately.

camera.<child_name>_latest_photo (if enabled)

  • Still image of the most recently posted photo activity. No live stream — it's a snapshot source, refreshed as new photos come in via the normal poll cycle.
  • With retention set to "keep history," photos are also saved under <config>/procare_photos/<child_id>/, capped at the 50 most recent. If you want another integration or service (e.g. notify.pushover's attachment param) to read those files back, that directory needs to be added to allowlist_external_dirs in configuration.yaml — a Home Assistant platform requirement this integration can't route around.

You can use any of this data to build automations or dashboards.

Contributing

Since this is a personal fork with a narrow purpose (2FA support and a few extras built on top of it), it's not actively looking for outside contributions the way the original project is. If you hit a bug specific to the 2FA/reauth flow or the newer entities, feel free to open an issue anyway.