eldercare-medication
Nhắc uống thuốc cho người cao tuổi. Gia đình cấu hình toa thuốc qua Zalo hoặc config UI. Hệ thống nhắc đúng giờ qua TTS + Zalo. Hỗ trợ nhiều thuốc, nhiều giờ, ghi nhận đã uống / chưa uống. Disabled by default — chỉ bật khi gia đình thêm toa thuốc.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Eldercare Medication — Nhắc uống thuốc
Skill nhắc uống thuốc theo toa cho người cao tuổi. Disabled by default — chỉ hoạt động khi gia đình config toa thuốc.
Config toa thuốc
Gia đình cấu hình qua chat hoặc lưu trực tiếp vào memory key eldercare_medication_list.
Memory format (eldercare_medication_list):
{
"enabled": true,
"medications": [
{
"name": "Thuốc huyết áp Amlodipine 5mg",
"short_name": "huyết áp",
"times": ["07:00", "21:00"],
"with_food": true,
"notes": "Uống sau ăn 30 phút"
},
{
"name": "Vitamin D3",
"short_name": "vitamin D",
"times": ["07:00"],
"with_food": false,
"notes": ""
},
{
"name": "Metformin 500mg",
"short_name": "tiểu đường",
"times": ["07:00", "18:00"],
"with_food": true,
"notes": "Uống ngay trước ăn"
}
]
}
Nhắn tin để config
Gia đình có thể nhắn chat:
-
Thêm thuốc: "thêm thuốc: huyết áp lúc 7h và 21h" hoặc "thêm thuốc Amlodipine 5mg lúc 7h sáng 21h tối"
- Parse: tên thuốc + giờ uống
- Thêm vào
eldercare_medication_list.medications[] - Reply: "✅ Đã thêm thuốc huyết áp: 7h, 21h"
-
Bỏ thuốc: "bỏ thuốc huyết áp" hoặc "xóa thuốc vitamin D"
- Tìm medication by short_name hoặc name (fuzzy match tiếng Việt)
- Remove khỏi list
- Reply: "✅ Đã bỏ thuốc huyết áp khỏi danh sách"
-
Danh sách: "danh sách thuốc bà" hoặc "thuốc bà"
- Reply: liệt kê tất cả thuốc + giờ
-
Tắt/bật: "tắt nhắc thuốc" →
enabled = false, "bật nhắc thuốc" →enabled = true
Cron handler (7h, 12h, 18h, 21h)
Khi cron trigger:
Bước 1: Check config
- Read memory key
eldercare_medication_list - Nếu không có hoặc
enabled === false→ skip, không làm gì - Nếu
medicationsrỗng → skip
Bước 2: Tìm thuốc cần nhắc
- Lấy giờ hiện tại (timezone Asia/Ho_Chi_Minh)
- Với mỗi medication trong list:
a. Check
times[]: giờ hiện tại khớp với time nào? (±30 phút window) b. Nếu không khớp → skip medication này
Bước 3: Check đã uống chưa
Với mỗi thuốc cần nhắc:
- Check memory key
eldercare_med_taken_{YYYYMMDD}_{short_name_normalized}- Nếu key tồn tại → đã uống → skip
- Nếu không → chưa uống → nhắc
Bước 4: Nhắc thuốc
Nếu có thuốc CHƯA uống:
-
TTS qua loa phòng bà (dùng tool
home_assistantvới servicetts.speakhoặcmedia_player.play_media):- "Bà ơi, đến giờ uống thuốc {short_name} nha!"
- Nếu
with_food === true: thêm "Bà uống sau khi ăn nha!" - TTS rate: 0.8 (chậm hơn bình thường cho bà dễ nghe)
- Volume: max
-
Gửi Zalo/Telegram group gia đình (dùng messaging tool):
- "💊 Nhắc: Bà cần uống thuốc {name} lúc {time}"
- Kèm notes nếu có: "({notes})"
Bước 5: Check thuốc quên
Nếu đây là cron buổi sau (ví dụ 12h) và thuốc buổi trước (7h) CHƯA uống:
- Gửi Zalo/Telegram: "⚠️ Bà chưa uống thuốc {name} lúc {time}h sáng"
- Chỉ cảnh báo 1 lần (check memory
eldercare_med_missed_{date}_{short_name})
Ghi nhận đã uống
Gia đình hoặc bà xác nhận qua chat hoặc voice:
Keywords xác nhận:
- "bà đã uống thuốc" / "đã uống" / "uống rồi"
- "bà uống thuốc huyết áp rồi" (chỉ định cụ thể)
- Voice: bà nói "uống rồi"
Xử lý:
- Nếu chỉ nói "uống rồi" (không chỉ thuốc): ghi nhận TẤT CẢ thuốc đến giờ hiện tại
- Nếu chỉ thuốc cụ thể: chỉ ghi nhận thuốc đó
Memory:
Lưu key eldercare_med_taken_{YYYYMMDD}_{short_name_normalized}:
{
"medication": "Thuốc huyết áp Amlodipine 5mg",
"short_name": "huyết áp",
"scheduled_time": "07:00",
"taken_time": "07:15",
"confirmed_by": "Con Lan (Zalo)",
"confirmed_at": "2026-02-20T07:15:00+07:00"
}
Reply: "✅ Đã ghi nhận bà uống thuốc {short_name} lúc {time}"
Tích hợp Daily Report
Skill eldercare-daily-report query medication status:
- Read
eldercare_medication_list→ lấy danh sách thuốc - Với mỗi thuốc, check
eldercare_med_taken_{today}_{name}→ uống hay quên - Format:
💊 Thuốc:
Huyết áp (Amlodipine): ✅ 7:15 + ✅ 21:00
Vitamin D: ✅ 7:15
Tiểu đường (Metformin): ✅ 7:15 + ⚠️ quên 18h
Lưu ý quan trọng
-
Disabled by default: Không phải bà nào cũng uống thuốc. Skill chỉ active khi
eldercare_medication_listtồn tại vàenabled: true - TTS volume max: Bà nặng tai, cần TTS to và chậm
- Nhắc nhẹ nhàng: Giọng TTS tiếng Việt, tốc độ 0.8, tone ấm áp
- Không spam: Chỉ nhắc 1 lần mỗi thuốc mỗi giờ. Quên thuốc cảnh báo 1 lần.
- Privacy: Không lưu tên thuốc cụ thể trong logs/analytics, chỉ lưu short_name
Multi-Elder Support
Skill này hỗ trợ nhiều người thân:
- Đọc
eldercare_profilestừ 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.nametrong messages/TTS - Dùng
elder.contactscho alert recipients (fallback global contacts) - Dùng
elder.tts.*cho TTS settings
- Dùng
Thay đổi cụ thể
-
media_player.grandma_room→elder.ha_entities.media_player - Memory:
eldercare_medication_list→eldercare_{elder.id}_medication_list - Memory:
eldercare_med_taken_{date}_{name}→eldercare_{elder.id}_med_taken_{date}_{name} - Memory:
eldercare_med_missed_{date}_{name}→eldercare_{elder.id}_med_missed_{date}_{name} - TTS: Dùng
elder.tts.rate(0.8),elder.tts.volumecho reminders - Messages: "Bà ơi, đến giờ uống thuốc" → "{elder.name} ơi, đến giờ uống thuốc"
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-03-11
- Index updated
- 2026-03-11
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!