{ "packageName": "PositionGuard", "author": "Christer Lundin", "version": "1.4.0", "minimumHEVersion": "2.3.0", "dateReleased": "2026-09-02", "documentationLink": "https://github.com/positionguard/positionguard-hubitat/blob/main/README.md", "communityLink": "https://community.hubitat.com/t/release-positionguard-family-presence-one-presence-device-per-family-member-area-level-no-coordinates-on-your-hub/165032", "licenseFile": "https://raw.githubusercontent.com/positionguard/positionguard-hubitat/main/LICENSE", "releaseNotes": "v1.4.0: Per-area member counts — each area in a group now gets a device reporting how many members are currently inside it, plus a count of members whose position is stale. Coordinate-free: the device reports how many, never where. Useful for occupancy rules — a count of 0 is a reliable 'everyone's out' trigger.\n\nBehavior change: safetyStatus now reports 'unknown' when a member's position has gone stale, instead of 'stale'. A phone that hasn't reported recently is genuinely unknown, and treating it as a location was producing rules that fired on someone who hadn't moved. If you have a rule comparing safetyStatus directly to 'out_of_zone', it will no longer match during stale periods — outsideUsualArea is unaffected and remains strictly true/false.\n\nTwo new attributes: positionAgeSeconds and positionFresh, so rules can gate on data freshness directly. Existing devices may need opening the device page once for the new attributes to appear.\n\nFixed: an out_of_zone transition logged its message twice per poll.", "category": "Integrations", "tags": [ "Presence & Location", "Cloud" ], "apps": [ { "id": "803e03ed-b0c8-470c-9ba1-3bbb43f8fc3d", "name": "PositionGuard", "namespace": "positionguard", "location": "https://raw.githubusercontent.com/positionguard/positionguard-hubitat/main/apps/positionguard-app.groovy", "required": true, "oauth": false, "primary": true } ], "drivers": [ { "id": "c8eaae64-a552-4914-84f4-52b72295c1ca", "name": "PositionGuard Member", "namespace": "positionguard", "location": "https://raw.githubusercontent.com/positionguard/positionguard-hubitat/main/drivers/positionguard-member.groovy", "required": true }, { "id": "48457b26-729e-4b73-9804-3c50594b9152", "name": "PositionGuard Area", "namespace": "positionguard", "location": "https://raw.githubusercontent.com/positionguard/positionguard-hubitat/main/drivers/positionguard-area.groovy", "required": true } ] }