Eldercare Exercise — Bài tập cho người nằm giường
Disclaimer
QUAN TRỌNG: Bài tập này được thiết kế cho người cao tuổi khi nằm giường hoặc ngồi. Tuy nhiên, MỌI chương trình tập luyện nên được bác sĩ duyệt trước khi bắt đầu. Nếu bà đau hoặc khó chịu khi tập → DỪNG NGAY và thông báo gia đình.
Chương trình tập (3 levels)
Level 1: Siêu nhẹ (Người nằm liệt giường) — MẶC ĐỊNH
| # |
Bài tập |
Mô tả TTS |
Thời gian |
| 1 |
Thở sâu |
"Bà hít vào từ từ... giữ... thở ra chậm..." |
5 lần x 10s |
| 2 |
Xoay cổ tay |
"Bà xoay cổ tay phải tròn tròn nha... đổi bên..." |
10 vòng x 2 tay |
| 3 |
Co duỗi ngón tay |
"Bà nắm tay lại... mở ra... nắm lại..." |
10 lần x 2 tay |
| 4 |
Nâng tay |
"Bà nâng tay phải lên từ từ... hạ xuống..." |
5 lần x 2 tay |
| 5 |
Co duỗi chân |
"Bà co đầu gối phải lên... duỗi ra..." |
5 lần x 2 chân |
| 6 |
Xoay cổ chân |
"Bà xoay cổ chân phải tròn tròn..." |
10 vòng x 2 chân |
| 7 |
Thở sâu kết thúc |
"Bà hít thở sâu... giỏi lắm, bà tập xong rồi!" |
3 lần |
Tổng: ~10 phút
Level 2: Nhẹ (Người ngồi được)
Bài 1-7 của Level 1, cộng thêm:
| # |
Bài tập |
Mô tả TTS |
Thời gian |
| 8 |
Xoay vai |
"Bà xoay vai phải lên, ra sau, xuống... đổi bên..." |
10 vòng x 2 vai |
| 9 |
Nghiêng người |
"Bà nghiêng người qua phải từ từ... thẳng lại... qua trái..." |
5 lần mỗi bên |
| 10 |
Nâng chân ngồi |
"Bà nâng chân phải lên khỏi ghế từ từ... hạ xuống..." |
5 lần x 2 chân |
Tổng: ~15 phút
Level 3: Trung bình (Người đứng được với hỗ trợ)
Bài 1-10 của Level 2, cộng thêm:
| # |
Bài tập |
Mô tả TTS |
Thời gian |
| 11 |
Đứng vịn ghế |
"Bà vịn ghế đứng dậy từ từ... giữ 10 giây... ngồi xuống..." |
3 lần |
| 12 |
Bước tại chỗ |
"Bà bước chân tại chỗ nha... trái... phải... trái..." |
20 bước |
| 13 |
Kiễng chân |
"Bà kiễng gót chân lên... hạ xuống..." |
5 lần |
Tổng: ~20 phút
TTS Execution Flow
Khi trigger (chat hoặc cron 9h):
Pre-checks
Check eldercare_exercise_config trong memory → enabled?
- Nếu disabled → skip (cron), hoặc reply "Tính năng tập thể dục chưa bật. Nhắn 'bật tập thể dục' để bắt đầu." (chat)
Check bà thức:
action: get_state
entity_id: sensor.grandma_room_motion_minutes
- Nếu motion_minutes > 30 → bà có thể đang ngủ → skip
- Reply/retry: "Bà đang nghỉ, để lúc khác nha"
- Nếu cron → lưu memory
eldercare_exercise_retry_{date} → retry 10h
Check không trùng event:
- Memory
eldercare_sos_active tồn tại? → skip
- Memory
eldercare_call_active tồn tại? → skip
TTS Flow
Bắt đầu:
TTS: "Bà ơi, mình tập thể dục nhẹ nha! Bà sẵn sàng chưa?"
Dùng tool home_assistant:
action: call_service
domain: tts
service: speak
target: { entity_id: media_player.grandma_room }
data: { message: "Bà ơi, mình tập thể dục nhẹ nha!", language: "vi" }
Chờ 5 giây.
Với mỗi bài tập trong Level hiện tại:
TTS: "Bài {số}: {tên bài}"
[Chờ 2 giây]
TTS: "{Mô tả động tác chi tiết}"
[Đếm TTS: "Một... hai... ba..." — pace 1 số / 3 giây]
TTS: "Nghỉ một chút nha bà..."
[Chờ 10 giây]
Kết thúc:
TTS: "Bà tập xong rồi! Giỏi quá! Bà uống miếng nước nha!"
Lưu memory:
Key: eldercare_exercise_{YYYY-MM-DD}
{
"date": "2026-02-20",
"level": 1,
"started_at": "09:15",
"duration_min": 10,
"completed": true
}
Gửi Zalo group:
"🏋️ Bà đã tập thể dục sáng nay (10 phút, Level 1)"
TTS Settings
Cron 9h sáng
- Check config enabled → skip nếu disabled
- Check bà thức → skip nếu ngủ, retry 10h
- Check không trùng SOS/video call
- Bắt đầu TTS exercise flow
- Nếu đã tập hôm nay (key tồn tại) → skip
Chat triggers
- Tập ngay: "tập thể dục cho bà", "bà tập", "exercise" → start flow
- Tắt: "tắt tập thể dục" → set enabled=false, reply "✅ Đã tắt nhắc tập thể dục"
- Bật: "bật tập thể dục" → set enabled=true, reply "✅ Đã bật nhắc tập thể dục mỗi sáng 9h"
- Đổi level: "đổi level 2", "tập level 3" → update level, reply "✅ Đổi sang Level {X}"
- Xem status: "bà tập chưa", "exercise status" → check eldercare_exercise_{today}
Tích hợp daily report
🏋️ Thể dục: Tập lúc 9:15 (Level 1, 10 phút) ✅
hoặc
🏋️ Thể dục: Chưa tập hôm nay
Multi-Elder Support
Skill này hỗ trợ nhiều người thân:
- Đọc
eldercare_profiles từ memory
- Nếu không tồn tại → auto-migrate default profile "ba_noi" (xem skill eldercare-profiles)
- Loop qua tất cả active elders
- Với mỗi elder:
- Dùng
elder.ha_entities.* thay vì hardcoded entity names
- Dùng
eldercare_{elder.id}_* làm memory key prefix
- Dùng
elder.name trong messages/TTS
- Dùng
elder.contacts cho alert recipients (fallback global contacts)
- Dùng
elder.tts.* cho TTS settings
Thay đổi cụ thể
sensor.grandma_room_motion_minutes → elder.ha_entities.motion
media_player.grandma_room → elder.ha_entities.media_player
- Memory:
eldercare_exercise_config → eldercare_{elder.id}_exercise_config
- Memory:
eldercare_exercise_{date} → eldercare_{elder.id}_exercise_{date}
- Memory:
eldercare_exercise_retry_{date} → eldercare_{elder.id}_exercise_retry_{date}
- Memory:
eldercare_sos_active → eldercare_{elder.id}_sos_active
- Memory:
eldercare_call_active → eldercare_{elder.id}_call_active
- TTS: Dùng
elder.tts.*, adjust exercise difficulty based on elder.mobility
- Messages: "Bà ơi" → "{elder.name} ơi"
1---2name: eldercare-exercise3description: Hướng dẫn bài tập nhẹ cho người cao tuổi nằm giường hoặc ngồi. TTS đọc từng bước chậm rãi, đếm giữ, nghỉ giữa các bài. Trigger: Gia đình nhắn "tập thể dục cho bà" hoặc cron hàng ngày. Tất cả bài tập AN TOÀN cho người 90+ nằm giường. Disabled by default — gia đình bật khi sẵn sàng.4---56# Eldercare Exercise — Bài tập cho người nằm giường78## Disclaimer910**QUAN TRỌNG:** Bài tập này được thiết kế cho người cao tuổi khi nằm giường hoặc ngồi. Tuy nhiên, MỌI chương trình tập luyện nên được bác sĩ duyệt trước khi bắt đầu. Nếu bà đau hoặc khó chịu khi tập → DỪNG NGAY và thông báo gia đình.1112## Chương trình tập (3 levels)1314### Level 1: Siêu nhẹ (Người nằm liệt giường) — MẶC ĐỊNH1516| # | Bài tập | Mô tả TTS | Thời gian |17|---|---------|-----------|-----------|18| 1 | Thở sâu | "Bà hít vào từ từ... giữ... thở ra chậm..." | 5 lần x 10s |19| 2 | Xoay cổ tay | "Bà xoay cổ tay phải tròn tròn nha... đổi bên..." | 10 vòng x 2 tay |20| 3 | Co duỗi ngón tay | "Bà nắm tay lại... mở ra... nắm lại..." | 10 lần x 2 tay |21| 4 | Nâng tay | "Bà nâng tay phải lên từ từ... hạ xuống..." | 5 lần x 2 tay |22| 5 | Co duỗi chân | "Bà co đầu gối phải lên... duỗi ra..." | 5 lần x 2 chân |23| 6 | Xoay cổ chân | "Bà xoay cổ chân phải tròn tròn..." | 10 vòng x 2 chân |24| 7 | Thở sâu kết thúc | "Bà hít thở sâu... giỏi lắm, bà tập xong rồi!" | 3 lần |2526**Tổng: ~10 phút**2728### Level 2: Nhẹ (Người ngồi được)2930Bài 1-7 của Level 1, cộng thêm:3132| # | Bài tập | Mô tả TTS | Thời gian |33|---|---------|-----------|-----------|34| 8 | Xoay vai | "Bà xoay vai phải lên, ra sau, xuống... đổi bên..." | 10 vòng x 2 vai |35| 9 | Nghiêng người | "Bà nghiêng người qua phải từ từ... thẳng lại... qua trái..." | 5 lần mỗi bên |36| 10 | Nâng chân ngồi | "Bà nâng chân phải lên khỏi ghế từ từ... hạ xuống..." | 5 lần x 2 chân |3738**Tổng: ~15 phút**3940### Level 3: Trung bình (Người đứng được với hỗ trợ)4142Bài 1-10 của Level 2, cộng thêm:4344| # | Bài tập | Mô tả TTS | Thời gian |45|---|---------|-----------|-----------|46| 11 | Đứng vịn ghế | "Bà vịn ghế đứng dậy từ từ... giữ 10 giây... ngồi xuống..." | 3 lần |47| 12 | Bước tại chỗ | "Bà bước chân tại chỗ nha... trái... phải... trái..." | 20 bước |48| 13 | Kiễng chân | "Bà kiễng gót chân lên... hạ xuống..." | 5 lần |4950**Tổng: ~20 phút**5152## TTS Execution Flow5354Khi trigger (chat hoặc cron 9h):5556### Pre-checks57581. Check `eldercare_exercise_config` trong memory → enabled?59 - Nếu disabled → skip (cron), hoặc reply "Tính năng tập thể dục chưa bật. Nhắn 'bật tập thể dục' để bắt đầu." (chat)60612. Check bà thức:62 ```63 action: get_state64 entity_id: sensor.grandma_room_motion_minutes65 ```66 - Nếu motion_minutes > 30 → bà có thể đang ngủ → skip67 - Reply/retry: "Bà đang nghỉ, để lúc khác nha"68 - Nếu cron → lưu memory `eldercare_exercise_retry_{date}` → retry 10h69703. Check không trùng event:71 - Memory `eldercare_sos_active` tồn tại? → skip72 - Memory `eldercare_call_active` tồn tại? → skip7374### TTS Flow75764. Bắt đầu:77 ```78 TTS: "Bà ơi, mình tập thể dục nhẹ nha! Bà sẵn sàng chưa?"79 ```80 Dùng tool `home_assistant`:81 ```82 action: call_service83 domain: tts84 service: speak85 target: { entity_id: media_player.grandma_room }86 data: { message: "Bà ơi, mình tập thể dục nhẹ nha!", language: "vi" }87 ```88 Chờ 5 giây.89905. Với mỗi bài tập trong Level hiện tại:91 ```92 TTS: "Bài {số}: {tên bài}"93 [Chờ 2 giây]94 TTS: "{Mô tả động tác chi tiết}"95 [Đếm TTS: "Một... hai... ba..." — pace 1 số / 3 giây]96 TTS: "Nghỉ một chút nha bà..."97 [Chờ 10 giây]98 ```991006. Kết thúc:101 ```102 TTS: "Bà tập xong rồi! Giỏi quá! Bà uống miếng nước nha!"103 ```1041057. Lưu memory:106 Key: `eldercare_exercise_{YYYY-MM-DD}`107 ```json108 {109 "date": "2026-02-20",110 "level": 1,111 "started_at": "09:15",112 "duration_min": 10,113 "completed": true114 }115 ```1161178. Gửi Zalo group:118 "🏋️ Bà đã tập thể dục sáng nay (10 phút, Level 1)"119120### TTS Settings121122- **Volume:** MAX — bà nặng tai123 ```124 action: call_service125 domain: media_player126 service: volume_set127 target: { entity_id: media_player.grandma_room }128 data: { volume_level: 1.0 }129 ```130- **Rate:** 0.7 (chậm hơn bình thường — bà cần thời gian hiểu và làm theo)131- **Pause giữa câu:** 2-3 giây132- **Pause giữa bài:** 10 giây133- **Đếm pace:** 1 số / 3 giây134135## Cron 9h sáng1361371. Check config enabled → skip nếu disabled1382. Check bà thức → skip nếu ngủ, retry 10h1393. Check không trùng SOS/video call1404. Bắt đầu TTS exercise flow1415. Nếu đã tập hôm nay (key tồn tại) → skip142143## Chat triggers144145- **Tập ngay:** "tập thể dục cho bà", "bà tập", "exercise" → start flow146- **Tắt:** "tắt tập thể dục" → set enabled=false, reply "✅ Đã tắt nhắc tập thể dục"147- **Bật:** "bật tập thể dục" → set enabled=true, reply "✅ Đã bật nhắc tập thể dục mỗi sáng 9h"148- **Đổi level:** "đổi level 2", "tập level 3" → update level, reply "✅ Đổi sang Level {X}"149- **Xem status:** "bà tập chưa", "exercise status" → check eldercare_exercise_{today}150151## Tích hợp daily report152153```154🏋️ Thể dục: Tập lúc 9:15 (Level 1, 10 phút) ✅155```156hoặc157```158🏋️ Thể dục: Chưa tập hôm nay159```160161## Multi-Elder Support162163Skill này hỗ trợ nhiều người thân:1641651. Đọc `eldercare_profiles` từ memory1662. Nếu không tồn tại → auto-migrate default profile "ba_noi" (xem skill eldercare-profiles)1673. Loop qua tất cả active elders1684. Với mỗi elder:169 - Dùng `elder.ha_entities.*` thay vì hardcoded entity names170 - Dùng `eldercare_{elder.id}_*` làm memory key prefix171 - Dùng `elder.name` trong messages/TTS172 - Dùng `elder.contacts` cho alert recipients (fallback global contacts)173 - Dùng `elder.tts.*` cho TTS settings174175### Thay đổi cụ thể176177- `sensor.grandma_room_motion_minutes` → `elder.ha_entities.motion`178- `media_player.grandma_room` → `elder.ha_entities.media_player`179- Memory: `eldercare_exercise_config` → `eldercare_{elder.id}_exercise_config`180- Memory: `eldercare_exercise_{date}` → `eldercare_{elder.id}_exercise_{date}`181- Memory: `eldercare_exercise_retry_{date}` → `eldercare_{elder.id}_exercise_retry_{date}`182- Memory: `eldercare_sos_active` → `eldercare_{elder.id}_sos_active`183- Memory: `eldercare_call_active` → `eldercare_{elder.id}_call_active`184- TTS: Dùng `elder.tts.*`, adjust exercise difficulty based on `elder.mobility`185- Messages: "Bà ơi" → "{elder.name} ơi"