AmazHA — приложение Home Assistant для часов Amazfit — в основном работает в одну сторону: свет, шторы и термостаты у вас на запястье. Функция Датчики часов работает в обратную сторону. Часы считывают собственные данные — от шагов до состояния сна и заряда батареи — и отправляют их в Home Assistant в виде сенсоров, которые можно выводить на графики, показывать на панели и использовать в автоматизациях.
Дальше: что отправляется, как оно туда попадает, как это включить, почему датчики пропадают, и десять автоматизаций, которые можно просто вставить.
Короткий ответ
С AmazHA часы Amazfit могут отправлять в Home Assistant до 18 показаний: шаги, расстояние, калории, пульс, пульс в покое, кислород в крови, стресс, оценку сна, длительность сна, текущее состояние «спит / бодрствует», ношение на руке, атмосферное давление, заряд батареи и другое. Они приходят через интеграцию Home Assistant Mobile App как sensor.<prefix>_<key> — при каждом открытии приложения, а затем каждые 1–6 минут в фоне.
Что попадает в Home Assistant
Восемнадцать датчиков в четырёх группах, каждый включается отдельно. Вот полный список с ключом, которым заканчивается идентификатор сущности, и состоянием, которое вы увидите в Home Assistant:
| Ключ | Единица | Что это | Пример состояния |
|---|---|---|---|
steps |
steps | Шаги за сегодня | 6412 |
distance |
m | Пройденное за сегодня расстояние | 4870 |
calories |
kcal | Сожжённые за сегодня калории | 1834 |
stand |
h | Часы активности стоя за сегодня | 7 |
fat_burning |
min | Интенсивные минуты за сегодня | 22 |
pai |
— | Показатель PAI | 68 |
heart_rate |
bpm | Последнее измерение пульса часами | 71 |
resting_heart_rate |
bpm | Пульс в покое | 58 |
spo2 |
% | Последнее измерение кислорода в крови | 97 |
stress |
— | Текущее значение стресса | 34 |
body_temperature |
°C | Температура тела, один знак после запятой | 36.4 |
sleep_score |
— | Оценка последнего сна | 81 |
sleep_duration |
min | Продолжительность последнего сна | 452 |
sleep_state |
— | Спите вы сейчас или нет | asleep / awake |
pressure |
hPa | Атмосферное давление, один знак после запятой | 1013.2 |
altitude |
m | Высота по барометру | 212 |
battery |
% | Заряд батареи самих часов | 64 |
wear |
— | Надеты ли часы на руку | not_worn / worn / in_motion / unknown |
В настройках AmazHA они сгруппированы в разделы Активность, Здоровье, Окружение и Устройство с названиями Шаги, Расстояние, Калории, Часы активности стоя, Интенсивные минуты, PAI, Пульс, Пульс в покое, Кислород в крови (SpO2), Стресс, Температура тела, Оценка сна, Длительность сна, Состояние сна, Атмосферное давление, Высота, Батарея часов и Часы на руке.
Единицы, классы и долгосрочная статистика
Датчики приходят с метаданными Home Assistant, поэтому ведут себя как любые другие сенсоры. У батареи класс устройства battery, так что она получает значок батареи и подходит для шкалы. Расстояние и высота — distance, атмосферное давление — atmospheric_pressure, температура тела — temperature, интенсивные минуты и длительность сна — duration. У каждого датчика свой значок.
Дневные счётчики (шаги, расстояние, калории, часы активности стоя, интенсивные минуты) используют класс состояния total_increasing: они обнуляются, когда у часов начинается новый день, и Home Assistant понимает это как сброс, а не падение. Измеряемые величины (пульс, батарея, давление и остальные) используют measurement. В обоих случаях Home Assistant ведёт для них долгосрочную статистику, так что график статистики по шагам работает без дополнительной настройки.
sleep_state и wear — текстовые состояния, без единицы и класса. Используйте их в триггерах и условиях по состоянию.
Показания, которые не отправляются
Часы отправляют датчик, только когда у них есть корректное показание. Вместо него они не отправляют ни ноль, ни заглушку:
- Пульс, пульс в покое, стресс, оценка сна и длительность сна не отправляются, пока часы сообщают 0 — это значит, что измерения ещё не было. Когда у часов нет новых данных о сне, датчики сна сохраняют последнее значение.
- Кислород в крови — это измерение, а не непрерывный сигнал. AmazHA отправляет самое свежее, какое найдёт: только что сделанное, отсчёты за последние два часа или последнее корректное значение не старше 24 часов. Поэтому
spo2— это «последнее измерение», а не «прямо сейчас». - Температура тела отправляется только на часах с таким датчиком и только когда у него есть данные.
- Атмосферное давление и высота отправляются только на часах с барометром.
- Состояние сна отправляется, только когда часы сообщают «спит» или «бодрствует».
Когда показание не отправлено, Home Assistant сохраняет последнее известное значение. Для автоматизаций это важно: датчик, который не изменился, мог просто не обновиться.
Идентификаторы сущностей
Каждая сущность называется sensor.<prefix>_<key>. Префикс — это то, что вы вписали в Префикс сущностей (необязательно); если поле пустое, это имя ваших часов, приведённое к виду, допустимому для идентификатора, так что «Amazfit GTS 4» даёт sensor.amazfit_gts_4_steps, sensor.amazfit_gts_4_battery и так далее. Экран Датчики часов выводит под каждым датчиком точный идентификатор с единицей, так что гадать никогда не придётся.
Префикс фиксируется при первой отправке данных с часов. Если потом переименовать часы, ваши сущности не сдвинутся. А если сменить префикс самим — сдвинутся: регистрируется второе устройство с новыми идентификаторами, а старое остаётся в Home Assistant, пока вы его не удалите. Выберите префикс до того, как строить на нём автоматизации.
Как это работает: часы становятся устройством Mobile App
Часы регистрируются в интеграции Home Assistant Mobile App — той же, которой пользуется официальное приложение Companion от Home Assistant. Ваши часы становятся устройством, их показания — сенсорами этого устройства, и ничего не нужно ставить из HACS или писать в configuration.yaml.
Что происходит по шагам:
- Часы считывают включённые вами датчики и отправляют их на телефон по Bluetooth.
- Телефонная часть AmazHA, работающая внутри приложения Zepp, один раз регистрирует часы в интеграции Home Assistant Mobile App. Устройство указывается с производителем Amazfit.
- Каждый датчик регистрируется один раз, со своей единицей, классом и значком. После этого каждое обновление — один пакетный вызов сразу для всех датчиков.
Поскольку это настоящие сущности в реестре Home Assistant, с уникальным идентификатором, их можно переименовывать, менять им значок, скрывать или помещать в зону прямо из интерфейса Home Assistant. Они сохраняются после перезапусков Home Assistant. Если удалить устройство в Home Assistant, AmazHA зарегистрирует его снова при следующей отправке.
Интеграция Mobile App входит в конфигурацию Home Assistant по умолчанию, так что она есть почти в каждой установке. Если ваша её не загружает, AmazHA переходит на прямую запись состояний: это работает, но даёт сущности, которыми Home Assistant не может управлять из интерфейса и которые исчезают при его перезапуске. Если это ваш случай, добавьте в конфигурацию mobile_app:.
Сами часы с Home Assistant никогда не общаются. Это делает телефон, по тем же адресам, что и весь остальной AmazHA: дома — по локальному, вне дома — по удалённому. Если указан только локальный адрес, обновления, отправленные, пока вас нет дома, до Home Assistant не дойдут. Варианты описаны в статье удалённый доступ для часов.
Как включить, шаг за шагом
Сначала нужны полная версия и работающее подключение к Home Assistant. Дальше — минута, как показано в уроке 9, «Датчики часов»:
- Откройте «Датчики часов». В настройках AmazHA (в приложении Zepp: Профиль › ваши часы › Приложения › AmazHA › Настройки) нажмите Датчики часов. Шаг 1.
- Включите отправку. Включите Отправлять в Home Assistant. Шаг 2.
- Задайте имя, если хотите. Префикс сущностей (необязательно) задаёт имя каждой сущности
sensor.<prefix>_…. Если оставить поле пустым, используется имя ваших часов. Шаг 3. - Выберите частоту. Обновлять каждые задаёт интервал фоновых обновлений, от 1 до 6 минут. Шаг 4.
- Выберите датчики. Включите нужные. Изначально все выключены. Шаг 5.
- Откройте AmazHA на часах. Часы отправят первые показания и запросят разрешение Фоновая активность. Дайте его. Шаг 6.
- Найдите часы в Home Assistant. Перейдите в Настройки › Устройства и службы › Mobile App и откройте свои часы. Шаг 7.
Если вместо этого экран Датчики часов показывает карточку разблокировки, полная версия ещё не активна: см. разблокировку полной версии. Если он пишет Сначала подключитесь к Home Assistant, настройте подключение, как в уроке «Подключение Home Assistant».
Когда данные пришли, экран Датчики часов показывает строку вроде Отправлено 6 датчиков · 14:05, а в конце — · фон, если данные пришли с фоновым обновлением. Эта строка — самая быстрая проверка, что всё работает.
Фоновые обновления: каждые 1–6 минут
Часы отправляют датчики при каждом открытии приложения, а затем в фоне с выбранным интервалом — если выдано разрешение Фоновая активность. Без разрешения датчики обновляются, только когда вы открываете AmazHA.
| Когда | Что нужно | |
|---|---|---|
| При открытии приложения | Каждый раз, когда вы открываете AmazHA на часах | Ничего, кроме настройки |
| Пока приложение открыто | С вашим интервалом | Ничего, кроме настройки |
| В фоне | С вашим интервалом, 1–6 мин (по умолчанию 5), при закрытом приложении | Разрешение Фоновая активность на часах |
В обоих случаях нужен телефон рядом, с включённым Bluetooth и запущенным приложением Zepp, потому что данные в Home Assistant отправляет именно телефон.
Как выдать разрешение
На часах, где AmazHA установлено из Zepp App Store, часы запрашивают Фоновая активность при следующем открытии AmazHA после включения функции. Спрашивают один раз. Если вы отказались или запрос так и не появился, вернуть всё можно двумя способами:
- Дайте разрешение в настройках самих часов: Разрешения приложений (или Конфиденциальность, в зависимости от часов), затем AmazHA, затем разрешите фоновую активность.
- Или выключите и снова включите Отправлять в Home Assistant в настройках AmazHA, а затем откройте AmazHA на часах: они спросят ещё раз.
Что ещё стоит знать
- Изменения доходят до фона при следующем открытии приложения. Если вы включили или выключили датчик или изменили Обновлять каждые, один раз откройте AmazHA на часах. До тех пор фоновые обновления используют прежний набор.
- Режим энергосбережения останавливает фоновые обновления. Пока часы в режиме энергосбережения, они не выполняют фоновых задач, поэтому датчики замирают; открытие AmazHA после этого сразу их возвращает.
- Перезапуск часов — не конец. После короткого перезапуска фоновые обновления возобновляются сами, обычно в течение часа. Открытие AmazHA возвращает их сразу.
Почему датчики часов не появляются
Когда датчиков нет, причина почти всегда в одном из пунктов ниже. Проверяйте их по порядку:
- «Отправлять в Home Assistant» выключено. В меню настроек Датчики часов отмечены как «Вкл.» или «Выкл.». Должно быть «Вкл.».
- Выключены отдельные датчики. Каждый датчик изначально выключен. Экран Датчики часов показывает, сколько вы отправляете, например «6 из 18 датчиков отправляется в HA».
- Вы ещё не открывали AmazHA на часах после изменений. Первые данные часы отправляют, когда вы открываете приложение. Откройте его один раз после любых изменений.
- Полная версия не активна. Без лицензии экран показывает карточку разблокировки, и ничего не отправляется.
- Home Assistant не подключён. Экран пишет Сначала подключитесь к Home Assistant. Исправьте подключение: урок 4, а при ошибках — «Если что-то не так».
- У датчика ещё нет корректного показания. Кислород в крови, стресс и температура тела появляются только после измерения; давление и высота — только на часах с барометром. Если в строке состояния написано Датчики не включены, ни у одного из включённых вами датчиков не было показания для отправки.
- Обновляется только при открытии приложения. Это разрешение Фоновая активность: см. выше.
- Вы ищете не там. Датчики принадлежат устройству в разделе Настройки › Устройства и службы › Mobile App, названному по вашему префиксу. Можно также поискать префикс на вкладке Объекты раздела Настройки › Устройства и службы.
- Телефон не может достучаться до Home Assistant. Вне дома телефону нужен удалённый адрес. Откройте адрес своего Home Assistant в браузере телефона: если там не работает, не работает и для датчиков. Об этом — шаг 3 урока о проблемах.
- Значения выглядят замершими. Посмотрите на время в строке состояния. Если оно давнее, телефон или часы с тех пор ничего не отправляли: телефон вне зоны досягаемости, приложение Zepp закрыто, включён режим энергосбережения или нет разрешения.
Десять автоматизаций
Десять автоматизаций ниже покрывают то, о чём спрашивают снова и снова: низкий заряд, засыпание, пробуждение, часы, забытые на зарядке, цели по активности. Они написаны в текущем синтаксисе Home Assistant и вставляются как есть.
Чтобы добавить автоматизацию: Настройки › Автоматизации и сцены › Создать автоматизацию › Создать новую автоматизацию, затем меню из трёх точек, Редактировать в YAML, и вставьте.
Все идентификаторы сущностей здесь — примеры. Датчики часов используют префикс amazfit_gts_4; замените его своим. notify.mobile_app_your_phone — действие уведомления телефона с официальным приложением Companion от Home Assistant; найдите своё в Панель разработчика › Действия, введя «notify». Свет, шторы, сцены и сущность person — заглушки для ваших собственных. Пороги — отправная точка: посмотрите историю за неделю, прежде чем выбрать свои.
1. Низкий заряд часов
Уведомление, когда заряд часов опускается ниже 15 %.
alias: Низкий заряд часов
description: Уведомить, когда заряд часов опускается ниже 15 %
triggers:
- trigger: numeric_state
entity_id: sensor.amazfit_gts_4_battery
below: 15
actions:
- action: notify.mobile_app_your_phone
data:
title: Низкий заряд часов
message: "Заряд часов — {{ states('sensor.amazfit_gts_4_battery') }} %."
mode: single
Триггер numeric_state срабатывает, когда значение пересекает границу, а не при каждом обновлении ниже неё, так что уведомление придёт один раз за разряд.
2. Зарядите перед сном
Если вы хотите отслеживать сон, часам нужно продержаться всю ночь. Вечернее напоминание, если не продержатся:
alias: Зарядить часы перед сном
triggers:
- trigger: time
at: "21:30:00"
conditions:
- condition: numeric_state
entity_id: sensor.amazfit_gts_4_battery
below: 30
actions:
- action: notify.mobile_app_your_phone
data:
message: "Заряд часов {{ states('sensor.amazfit_gts_4_battery') }} %: зарядите их сейчас, чтобы записать сон этой ночью."
mode: single
3. Уснули: свет выключен, отопление ниже
Когда часы сообщают, что вы спите, и сообщают это уже десять минут, выключите свет в гостиной и понизьте температуру термостата в спальне.
alias: Сон — выключить свет
triggers:
- trigger: state
entity_id: sensor.amazfit_gts_4_sleep_state
to: "asleep"
for:
minutes: 10
conditions:
- condition: time
after: "21:00:00"
before: "04:00:00"
actions:
- action: light.turn_off
target:
area_id: living_room
- action: climate.set_temperature
target:
entity_id: climate.bedroom
data:
temperature: 18
mode: single
Временное окно не даёт дневному сну выключить весь дом; окно, переходящее через полночь, в условии по времени допустимо. Десять минут в for: отсекают короткую дрёму на диване. Учтите, что состояние попадает в Home Assistant только со следующим обновлением, так что реальная задержка — ваш интервал плюс for:.
4. Проснулись: утренний сценарий
Когда вы просыпаетесь утром в будний день, откройте жалюзи в спальне, включите свет на кухне и запустите кофемашину — один раз в день.
alias: Пробуждение — утренний сценарий
triggers:
- trigger: state
entity_id: sensor.amazfit_gts_4_sleep_state
from: "asleep"
to: "awake"
for:
minutes: 5
conditions:
- condition: time
after: "05:30:00"
before: "10:30:00"
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: template
value_template: >-
{{ this.attributes.last_triggered is none
or this.attributes.last_triggered < today_at() }}
actions:
- action: cover.open_cover
target:
entity_id: cover.bedroom_blinds
- action: light.turn_on
target:
entity_id: light.kitchen
data:
brightness_pct: 60
- action: switch.turn_on
target:
entity_id: switch.coffee_machine
mode: single
from: "asleep" важен: засчитывается только настоящий переход от сна к бодрствованию, а не возвращение датчика из unknown или unavailable, которое иначе могло бы начать ваше утро в 3 часа ночи. Условие-шаблон позволяет автоматизации сработать только раз в день, так что если вы проснулись в 6, задремали и снова проснулись в 7, жалюзи откроются один раз.
5. Зарядились и остались на зарядке
Часы полностью заряжены, но всё ещё не на руке: напоминание надеть их.
alias: Часы заряжены, наденьте их
triggers:
- trigger: state
entity_id: sensor.amazfit_gts_4_wear
to: "not_worn"
for:
minutes: 45
conditions:
- condition: numeric_state
entity_id: sensor.amazfit_gts_4_battery
above: 90
- condition: time
after: "07:00:00"
before: "22:00:00"
actions:
- action: notify.mobile_app_your_phone
data:
message: Часы заряжены и уже 45 минут не на руке.
mode: single
Часы не на руке и с высоким зарядом — обычно значит, что они на зарядке или на столе. Учтите, что unknown — тоже допустимое значение wear: часы не были уверены. В Home Assistant оно выглядит точно так же, как «unknown» у датчика без данных, поэтому никогда не используйте его в триггере.
6. Пульс в покое выше обычного
Мягкое предупреждение, когда пульс в покое держится выше вашего обычного диапазона. Это повод прислушаться к самочувствию, а не медицинская тревога.
alias: Пульс в покое выше обычного
triggers:
- trigger: numeric_state
entity_id: sensor.amazfit_gts_4_resting_heart_rate
above: 80
for:
hours: 1
actions:
- action: notify.mobile_app_your_phone
data:
message: "Пульс в покое {{ states('sensor.amazfit_gts_4_resting_heart_rate') }} уд/мин — выше обычного."
mode: single
Порог задайте по своей истории: откройте датчик в Home Assistant и посмотрите несколько недель. Значение на 10–15 уд/мин выше вашего обычного пульса в покое — разумная отправная точка.
7. Цель по шагам достигнута
Уведомление в тот момент, когда вы перешагнули за 10 000 шагов.
alias: Цель по шагам достигнута
triggers:
- trigger: numeric_state
entity_id: sensor.amazfit_gts_4_steps
above: 9999
actions:
- action: notify.mobile_app_your_phone
data:
message: "Сегодня 10 000 шагов. Отлично!"
mode: single
above означает строго больше, отсюда 9999. Шаги обнуляются, когда у часов начинается новый день, так что на следующий день триггер снова готов.
8. Напоминание о вечерней прогулке
В 18:30, если часы на вас, а шагов всё ещё меньше 5000, — предложение прогуляться.
alias: Напоминание о вечерней прогулке
triggers:
- trigger: time
at: "18:30:00"
conditions:
- condition: numeric_state
entity_id: sensor.amazfit_gts_4_steps
below: 5000
- condition: state
entity_id: sensor.amazfit_gts_4_wear
state:
- worn
- in_motion
actions:
- action: notify.mobile_app_your_phone
data:
message: "{{ states('sensor.amazfit_gts_4_steps') }} шагов за сегодня. Может, прогуляться?"
mode: single
Условие по ношению не даёт докучать вам в день, когда часы пролежали на зарядке: мало шагов было бы у часов, а не у вас.
9. Утренний отчёт о сне
Короткая сводка о ночи в 9:00, в часах и минутах.
alias: Утренний отчёт о сне
triggers:
- trigger: time
at: "09:00:00"
conditions:
- condition: template
value_template: "{{ states('sensor.amazfit_gts_4_sleep_duration') | is_number }}"
actions:
- variables:
mins: "{{ states('sensor.amazfit_gts_4_sleep_duration') | int(0) }}"
- action: notify.mobile_app_your_phone
data:
title: Прошлая ночь
message: >-
{{ mins // 60 }} ч {{ mins % 60 }} мин,
оценка сна {{ states('sensor.amazfit_gts_4_sleep_score') }}.
mode: single
Оценка и длительность сна следуют собственной сводке сна часов, которую часы обновляют по своему расписанию. Отчёт в фиксированное время, заметно позже подъёма, надёжнее, чем отчёт в момент пробуждения.
10. Напряжённый вечер: спокойный свет
Когда значение стресса вечером держится высоким четверть часа, а вы дома, переключите гостиную на спокойную сцену.
alias: Высокий стресс — спокойный свет
triggers:
- trigger: numeric_state
entity_id: sensor.amazfit_gts_4_stress
above: 75
for:
minutes: 15
conditions:
- condition: state
entity_id: person.you
state: "home"
- condition: time
after: "17:00:00"
before: "23:00:00"
actions:
- action: scene.turn_on
target:
entity_id: scene.living_room_calm
mode: single
Присутствие берётся из person.you, а не из часов. 15 минут в for: означают, что значение должно оставаться высоким несколько обновлений подряд, — так отсекается единичный всплеск после подъёма по лестнице.
О задержках
Каждая автоматизация выше реагирует на состояние, которое Home Assistant получил от телефона. При интервале 5 минут изменение на часах может идти до 5 минут, а for: добавляет своё время сверху. Выбирайте автоматизации, для которых несколько минут не важны: свет после того, как вы уснули, — да; сигнализация, когда вы выходите из дома, — нет.
Идеи для панелей
Датчики часов — обычные сенсоры Home Assistant, так что с ними работает любая стандартная карточка. Несколько удачных вариантов:
- Карточка часов вверху панели на телефоне: Tile card (карточка-плитка) для
battery,wearиsleep_stateрядом. - Батарея в виде шкалы: Gauge card (карточка-шкала) для
batteryс цветами уровней, например красный ниже 20 и янтарный ниже 40. - Пульс за день: History graph card (график истории) с
heart_rateиresting_heart_rateза 24 часа. - Шаги по дням: Statistics graph card (график статистики) для
stepsс периодом «день» и статистикой «изменение». Это работает, потому что дневные счётчики используют класс состоянияtotal_increasing. - Ночь в одной строке: Entities card (карточка объектов) с
sleep_score,sleep_durationиspo2. - Метеостанция на запястье: на часах с барометром History graph card для
pressureза два-три дня показывает тренд, который приносит смена погоды.
Длительность сна приходит в минутах. Если на панели удобнее часы, добавьте сенсор-шаблон: Settings › Devices & services › Helpers › Create helper › Template › Template a sensor (в русском интерфейсе: Настройки › Устройства и службы › вспомогательные объекты › создать › шаблон › сенсор-шаблон), с таким шаблоном состояния и единицей h:
{{ (states('sensor.amazfit_gts_4_sleep_duration') | float(0) / 60) | round(1) }}
Чем это не является
Датчики часов полезны для автоматизаций, которые могут подождать несколько минут. Они не заменяют специализированные датчики, и прежде чем на них полагаться, стоит знать о трёх ограничениях.
Не мгновенно. Обновления приходят при каждом открытии приложения, а затем с вашим интервалом, от 1 до 6 минут. Изменение состояния на часах может идти до Home Assistant столько же, а то и дольше, если телефон вне зоны досягаемости, приложение Zepp закрыто или включён режим энергосбережения. Фоновые обновления к тому же зависят от разрешения Фоновая активность.
Не датчик присутствия. Ни один из 18 датчиков не сообщает, где вы. wear говорит, надеты ли часы на руку, но не на чью руку и не в каком доме. Для обновлений нужен телефон рядом, но это ничего не говорит о том, дома ли вы. Для присутствия используйте телефон, сущность person или датчик в комнате.
Не медицинские данные. Пульс, кислород в крови, стресс и температура тела берутся из собственных датчиков часов. Они хороши для трендов и мягких напоминаний, а не для диагностики или тревог, от которых зависит ваше здоровье. Кислород в крови, в частности, — это последнее измерение часов, и ему может быть уже несколько часов.
Ваши данные остаются вашими. Показания идут с часов на телефон по Bluetooth, а с телефона — в ваш собственный Home Assistant. У AmazHA нет аккаунтов, аналитики и собственного сервера, и данные о здоровье никогда не отправляются разработчику или кому-либо ещё. В Home Assistant они хранятся как любые другие сенсоры, по вашим настройкам хранения. Каждый датчик выключен, пока вы его не включите, так что вы отправляете ровно то, что выбрали. Подробности — в политике конфиденциальности.