224 files

This commit is contained in:
Home Assistant Version Control
2026-07-27 13:30:34 +00:00
parent b5723aa856
commit e36b8a1a22
224 changed files with 9967 additions and 2663 deletions
@@ -50,6 +50,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Ajoneuvo",
"name_ja": "乗り物",
"name_hi": "वाहन",
"name_pt-br": "Veículos",
"name_hu": "Járművek",
"name_ko": "차량",
"name_tr": "Araç",
},
"home": {
"icon": "mdi:home",
@@ -71,6 +75,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Koti ja LVI",
"name_ja": "住宅設備",
"name_hi": "घर और HVAC",
"name_pt-br": "Casa e HVAC",
"name_hu": "Otthon és HVAC",
"name_ko": "주택 및 HVAC",
"name_tr": "Ev ve HVAC",
},
# v2.27: two extra top-level groups keep the growing catalog scannable —
# recurring HOUSEHOLD routines split from device-centric "home", and
@@ -96,6 +104,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_ja": "家事・ルーティン",
"name_hi": "गृहकार्य और दिनचर्या",
"name_zh": "家务与日常",
"name_pt-br": "Lar e rotinas",
"name_hu": "Háztartás és rutinok",
"name_ko": "가사 및 루틴",
"name_tr": "Ev İşleri ve Rutinler",
},
"garden": {
"icon": "mdi:tree",
@@ -117,6 +129,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_ja": "庭・屋外",
"name_hi": "बगीचा और बाहरी क्षेत्र",
"name_zh": "花园与户外",
"name_pt-br": "Jardim e área externa",
"name_hu": "Kert és szabadtér",
"name_ko": "정원 및 야외",
"name_tr": "Bahçe ve Dış Mekân",
},
"pool": {
"icon": "mdi:pool",
@@ -138,6 +154,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Uima-allas",
"name_ja": "プール",
"name_hi": "पूल",
"name_pt-br": "Piscina",
"name_hu": "Medence",
"name_ko": "수영장",
"name_tr": "Havuz",
},
"appliance": {
"icon": "mdi:washing-machine",
@@ -159,6 +179,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Kodinkoneet",
"name_ja": "家電",
"name_hi": "उपकरण",
"name_pt-br": "Eletrodomésticos",
"name_hu": "Háztartási gépek",
"name_ko": "가전제품",
"name_tr": "Ev Aletleri",
},
"pets": {
"icon": "mdi:paw",
@@ -180,6 +204,10 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Lemmikit",
"name_ja": "ペット",
"name_hi": "पालतू जानवर",
"name_pt-br": "Pets",
"name_hu": "Háziállatok",
"name_ko": "반려동물",
"name_tr": "Evcil Hayvanlar",
},
"tech": {
"icon": "mdi:server",
@@ -201,6 +229,35 @@ TEMPLATE_CATEGORIES: dict[str, dict[str, str]] = {
"name_fi": "Tekniikka ja IT",
"name_ja": "テクノロジー・IT",
"name_hi": "टेक और IT",
"name_pt-br": "Tecnologia e TI",
"name_hu": "Technika és IT",
"name_ko": "기술 및 IT",
"name_tr": "Teknoloji ve BT",
},
"health": {
"icon": "mdi:heart-pulse",
"name_en": "Health",
"name_de": "Gesundheit",
"name_nl": "Gezondheid",
"name_fr": "Santé",
"name_it": "Salute",
"name_es": "Salud",
"name_ru": "Здоровье",
"name_uk": "Здоров'я",
"name_pt": "Saúde",
"name_zh": "健康",
"name_pl": "Zdrowie",
"name_cs": "Zdraví",
"name_sv": "Hälsa",
"name_da": "Sundhed",
"name_nb": "Helse",
"name_fi": "Terveys",
"name_ja": "健康",
"name_hi": "स्वास्थ्य",
"name_pt-br": "Saúde",
"name_hu": "Egészség",
"name_ko": "건강",
"name_tr": "Sağlık",
},
}
@@ -805,6 +862,119 @@ TEMPLATES: list[ObjectTemplate] = [
),
],
),
# --- Health ---
# Roadmap 3a (the resmed_myair lesson): CPAP machines have real,
# manufacturer-specified upkeep but their integrations expose only
# therapy metrics — no wear sensors. Because a CPAP runs every night,
# calendar intervals track usage almost perfectly, so a static template
# IS the right trigger here. Intervals follow ResMed's replacement
# guidance; they suit other brands (Löwenstein, Philips) too.
ObjectTemplate(
id="health_cpap",
name="CPAP Machine",
category="health",
tasks=[
TaskTemplate(
"Clean Mask & Humidifier Tub",
"cleaning",
"time_based",
7,
2,
"Wash the mask cushion and humidifier tub in warm soapy water; air-dry away from direct sunlight.",
),
TaskTemplate("Replace Mask Cushion", "replacement", "time_based", 30, 7),
TaskTemplate(
"Air Filter",
"replacement",
"time_based",
30,
7,
"Replace sooner if it looks discolored or dusty.",
),
TaskTemplate("Replace Tubing", "replacement", "time_based", 90, 14),
TaskTemplate("Replace Humidifier Tub", "replacement", "time_based", 180, 21),
TaskTemplate("Replace Headgear & Frame", "replacement", "time_based", 180, 21),
TaskTemplate("Annual Service", "inspection", "time_based", 365, 30),
],
),
ObjectTemplate(
id="health_hearing_aids",
name="Hearing Aids",
category="health",
tasks=[
TaskTemplate(
"Deep Clean & Dry",
"cleaning",
"time_based",
7,
2,
"Brush off earwax and use a drying capsule or electronic dryer overnight.",
),
TaskTemplate("Replace Wax Guards", "replacement", "time_based", 30, 7),
TaskTemplate("Replace Domes", "replacement", "time_based", 90, 14),
TaskTemplate("Professional Check & Adjustment", "inspection", "time_based", 365, 30),
],
),
# --- Template-worthiness lens (roadmap 3b): device classes with real,
# manufacturer/guideline-specified maintenance and NO smart signals at
# all — the class the signature sweeps can never surface. ---
ObjectTemplate(
id="home_fire_safety",
name="Fire Safety Equipment",
category="home",
tasks=[
TaskTemplate(
"Inspect Fire Extinguisher",
"inspection",
"time_based",
180,
14,
"Check the pressure gauge, seal and pin; make sure it is accessible and undamaged.",
),
TaskTemplate(
"Fire Extinguisher Service",
"service",
"time_based",
730,
60,
"Professional inspection per the label — commonly every 2 years; replace the unit after 10-15 years.",
),
TaskTemplate(
"Check First-Aid Kit",
"inspection",
"time_based",
180,
14,
"Replace expired sterile items and restock anything used.",
),
],
),
ObjectTemplate(
id="pets_aquarium",
name="Aquarium",
category="pets",
tasks=[
TaskTemplate(
"Partial Water Change",
"cleaning",
"time_based",
14,
3,
"Change 20-30 % of the water; match temperature and treat tap water with conditioner.",
),
TaskTemplate("Test Water Values", "inspection", "time_based", 14, 3),
TaskTemplate(
"Clean Filter Media",
"cleaning",
"time_based",
30,
7,
"Rinse media in removed tank water - never under the tap, that kills the bacteria culture.",
),
TaskTemplate("Replace Activated Carbon", "replacement", "time_based", 30, 7),
TaskTemplate("Clean Glass & Decor", "cleaning", "time_based", 30, 7),
],
),
]