Eldercare Profiles — Quản lý người thân
Auto-migration (lần đầu)
Khi bất kỳ eldercare skill chạy, TRƯỚC TIÊN check memory eldercare_profiles:
- Nếu KHÔNG tồn tại → AUTO-MIGRATE:
Đọc eldercare_contacts, eldercare_devices_config → Tạo eldercare_profiles với 1 elder "ba_noi" → Map entities hiện tại (grandma_room_*) vào profile → Lưu memory eldercare_profiles - Nếu TỒN TẠI → đọc profiles, tiếp tục
Auto-migrate default profile
Khi tạo default profile, dùng thông tin từ profiles-config.json:
{
"id": "ba_noi",
"name": "Bà Nội",
"age": 90,
"room": "grandma_room",
"mobility": "bedridden",
"hearing": "hard_of_hearing",
"ha_entities": {
"presence": "binary_sensor.grandma_room_presence",
"motion": "sensor.grandma_room_motion_minutes",
"temperature": "sensor.grandma_room_temperature",
"humidity": "sensor.grandma_room_humidity",
"media_player": "media_player.grandma_room",
"light": "light.grandma_room",
"sos_button": "sensor.sos_button_action",
"camera": "camera.grandma_room",
"fall_detection": "binary_sensor.grandma_room_fall_detected",
"target_count": "sensor.grandma_room_target_count"
},
"tts": {
"volume": 0.9,
"rate": 0.8,
"voice": "vi-VN"
},
"active": true
}
Contacts: Copy từ memory eldercare_contacts (nếu có) vào elder.contacts.
Thêm người thân mới
Gia đình nhắn: "thêm ông nội" hoặc "add ong noi"
Flow:
- Parse tên → id (slug): "ông nội" → "ong_noi"
- Hỏi thông tin cơ bản:
- "Ông bao nhiêu tuổi?"
- "Ông ở phòng nào?" (để map HA entities)
- "Ông đi lại được không?" (bedridden/wheelchair/walking)
- Tạo profile mới trong eldercare_profiles.elders[]
- Map HA entities dựa trên tên phòng:
- Room "ong_noi_room" → binary_sensor.ong_noi_room_presence, sensor.ong_noi_room_temperature, v.v.
- Nếu entities chưa tồn tại trong HA → ghi note, skill vẫn tạo profile
- Reply: "✅ Đã thêm Ông Nội. Hệ thống sẽ bắt đầu giám sát khi có sensor."
Sửa profile
Gia đình nhắn: "sửa profile bà nội" hoặc "thay đổi thông tin ông nội"
Flow:
- Tìm elder by name/id
- Hiển thị thông tin hiện tại
- Hỏi muốn sửa gì → cập nhật field tương ứng
- Lưu lại vào memory
eldercare_profiles
Xoá / Deactivate profile
Gia đình nhắn: "xoá profile ông nội" hoặc "tắt giám sát ông nội"
Flow:
- Tìm elder by name/id
- Set
active: false(KHÔNG xoá data — dữ liệu vẫn giữ) - Reply: "✅ Đã tắt giám sát Ông Nội. Dữ liệu vẫn được giữ lại."
Danh sách người thân
Gia đình nhắn: "danh sách người thân" hoặc "list elders"
Reply format:
👨👩👧👦 Danh sách người thân:
1. 👵 Bà Nội (90 tuổi) — Phòng ngủ chính ✅ Đang giám sát
Sensors: 5/5 online | Contacts: 2 người
2. 👴 Ông Nội (88 tuổi) — Phòng khách ✅ Đang giám sát
Sensors: 3/5 online | Contacts: 2 người
3. 👨 Ba (65 tuổi) — Tầng 2 ⏸️ Tạm tắt
Cách skills khác đọc profiles
TẤT CẢ eldercare skills PHẢI thay đổi logic:
TRƯỚC:
1. Đọc entity grandma_room_presence → check alert
SAU:
1. Đọc eldercare_profiles → lấy list active elders
2. NẾU không có profiles → auto-migrate (tạo default)
3. VỚI MỖI active elder:
a. Lấy HA entities từ profile (elder.ha_entities.presence)
b. Đọc entity → check alert
c. Dùng elder.id làm prefix cho memory keys
d. Dùng elder.contacts cho alert recipients
e. Dùng elder.tts cho TTS settings
4. Alert message bao gồm tên elder: "⚠️ Bà Nội: bất động > 30 phút"
Memory key convention
TRƯỚC (hardcoded, 1 elder):
eldercare_monitor_{timestamp}
eldercare_health_blood_pressure_{timestamp}
eldercare_sleep_{date}
eldercare_queue_{timestamp}
SAU (namespaced by elder_id):
eldercare_{elder_id}_monitor_{timestamp}
eldercare_{elder_id}_health_blood_pressure_{timestamp}
eldercare_{elder_id}_sleep_{date}
eldercare_{elder_id}_queue_{timestamp}
VÍ DỤ:
eldercare_ba_noi_monitor_2026-02-20T10:00:00
eldercare_ong_noi_health_blood_pressure_2026-02-20T08:30:00
Profile fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Slug: "ba_noi", "ong_noi" |
| name | string | Yes | Display: "Bà Nội", "Ông Nội" |
| age | number | No | Tuổi |
| room | string | Yes | Room name prefix cho HA entities |
| mobility | enum | No | bedridden / wheelchair / walking_with_aid / independent |
| hearing | enum | No | normal / hard_of_hearing / deaf |
| conditions | string[] | No | Bệnh nền |
| ha_entities | object | Yes | Map HA entity IDs |
| tts | object | No | Volume, rate, voice |
| contacts | array | No | Per-elder contacts (override global) |
| medication | object | No | Per-elder medication config |
| exercise_level | number | No | 1/2/3 |
| active | boolean | Yes | true = đang giám sát |
Backward compatibility
QUY TẮC QUAN TRỌNG NHẤT:
Nếu eldercare_profiles KHÔNG TỒN TẠI trong memory:
→ Tạo AUTO-MIGRATE profile mặc định:
- id: "ba_noi"
- Dùng tất cả entity names hiện tại (grandma_room_*)
- Dùng contacts/config hiện tại
→ Tất cả skills hoạt động Y HỆT cũ
→ Gia đình KHÔNG cần làm gì
Nếu eldercare_profiles TỒN TẠI:
→ Đọc profiles, loop qua active elders
→ Mỗi elder dùng HA entities từ profile
→ Memory keys prefix bằng elder_id