- Python 77.2%
- JavaScript 22.8%
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. |
||
|---|---|---|
| assets | ||
| custom_components/procare_activities | ||
| www/community/procare-timeline-card | ||
| hacs.json | ||
| README.md | ||
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.
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.
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
cameraentity — 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
numberentity 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
- Copy the
procare_activitiesdirectory from this repository into your Home Assistantcustom_componentsfolder. - Restart Home Assistant.
Configuration
- Go to Settings > Devices & Services.
- Click Add Integration and search for Procare Activities.
- Enter your Procare Connect username and password.
- (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. - (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
numberentity, photo settings via the integration's Configure button. - 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.
- If you have more than one child associated with your account, you will be prompted to select one from a list.
- 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_intervalentity 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: Forsign_in/sign_outactivities, who performed it.
binary_sensor.<child_name>_signed_in
- State:
onif the child is currently signed in at daycare,offotherwise. Deliberately has nodevice_class, so it reads as plain On/Off rather than the misleading Home/Not Home apresenceclass 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'sattachmentparam) to read those files back, that directory needs to be added toallowlist_external_dirsinconfiguration.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.
