Синхронизация данных «Здоровья» с MQTT

Публикация данных о здоровье на MQTT-брокер.

Last updated: April 5, 2026

На этой странице

Автоматизации MQTT публикуют данные о здоровье на MQTT-брокер. Подходит для IoT, умного дома и любых сервисов с MQTT.

Обзор

Данные публикуются JSON-сообщениями в заданную тему при каждом запуске по расписанию.

Примеры использования:

  • IoT (Home Assistant, OpenHAB и др.);
  • дашборды на MQTT;
  • мониторинг в реальном времени;
  • кастомная автоматизация;
  • логирование и аналитика.

Возможности:

  • только JSON (под MQTT);
  • с авторизацией и без;
  • настраиваемая структура темы;
  • идентификатор клиента;
  • необязательные имя пользователя и пароль.

Ограничения

  • Доступ к данным о здоровью: при заблокированном iPhone данные недоступны. См. ручную синхронизацию.

  • Фоновая работа: ограничения iOS и фонового обновления.

    • фоновое обновление отключено;
    • режим энергосбережения;
    • долгий простой;
    • нехватка ресурсов;
    • конкуренция приложений.
  • только JSON;

  • нужен MQTT-брокер (локальный или облачный).

Требования

  • брокер (Mosquitto, HiveMQ, AWS IoT Core и др.);
  • сеть до брокера;
  • IP или имя хоста;
  • порт;
  • при необходимости имя пользователя и пароль.

Настройка

Автоматические экспорты → «Новая автоматизация» → «MQTT».

Имя автоматизации

Например, «Home Assistant MQTT», «Облачный брокер».

Уведомления

  • При обновлении кэша
  • При каждой публикации

Брокер

IP-адрес

IP или имя хоста брокера.

Примеры:

  • 192.168.1.100
  • mqtt.example.com
  • broker.hivemq.com
  • localhost (на том же устройстве; для iOS обычно не подходит)

Примечание: для локальной сети — IP; для облака — имя. Устройство должно достучаться до брокера.

Порт

Порт MQTT (по умолчанию 1883).

Тема

Тема, в которую публикуются данные; подписчики используют её же.

Примеры:

  • health/data
  • home/health/metrics
  • user/health/export
  • hae/automation-name

Рекомендации:

  • / для иерархии;
  • понятные имена;
  • без пробелов и лишних спецсимволов;
  • при нескольких автоматизациях — имя в теме.

Примечание: регистр важен; подписчики должны совпадать точно.

Client ID

Уникальный идентификатор клиента для брокера.

Примеры:

  • health-export-iphone
  • hae-client-001
  • ios-health-app

Имя пользователя (необязательно)

Для авторизации на брокере; пусто, если не требуется.

Пароль (необязательно)

Пароль брокера; пусто, если не требуется.

Тип данных

Тип данных

  • Показатели здоровья
  • Тренировки
  • Симптомы
  • ЭКГ
  • Уведомления о пульсе
  • Состояние (iOS 18.0+)
  • Цикл
  • Лекарства (iOS 26.0+)

Показатели здоровья

Выбор показателей — все или выборочно.

Совет: меньше метрик — меньше сообщение и быстрее.

Предпочитаемые источники — приоритет источников.

Тренировки

Включать маршрут — для активностей с координатами.

Включать метрики тренировки — пульс, калории и др.

Группировка по времени (метрики тренировки) — при версии 2 и включённых метриках:

  • Минуты
  • Секунды

Параметры экспорта

Формат

Только JSON; изменить нельзя.

Версия экспорта

Для структуры тренировок:

  • Версия 1 — старый формат
  • Версия 2 — расширенные тренировки

Примечание: в основном влияет на тренировки, если они экспортируются.

Диапазон дат

  • По умолчанию — вчера полностью плюс данные до сейчас
  • С последней синхронизации — с последнего запуска до сейчас
  • Сегодня — текущие сутки
  • Вчера — полные предыдущие сутки
  • Предыдущие 7 дней — полные семь предыдущих дней

Сводка данных

Для JSON и показателей здоровья:

  • Вкл. — сводки (по умолчанию)
  • Выкл. — отдельные точки, где возможно

Группировка по времени

При включённой сводке — шаг агрегации.

Сводка данных

Для показателей здоровья:

  • Вкл. — сводки (по умолчанию)
  • Выкл. — отдельные точки, где возможно

Примечание: только для показателей здоровья.

Периодичность

Как часто публиковать в MQTT: число и интервал.

Проверка

Ручной тест

  1. «Ручной экспорт»
  2. Диапазон дат
  3. «Экспорт» — публикация сообщения
  4. MQTT-клиент: подписка на тему и проверка

MQTT-клиент

  1. Клиент MQTT
  2. Подключение к тому же брокеру с теми же учётными данными
  3. Подписка на тему
  4. Ручной экспорт из приложения
  5. Сообщение в клиенте

Журнал активности

  1. «Просмотр журнала активности»
  2. Запуски
  3. Ошибки подключения или публикации
  4. Время публикаций

Формат сообщения

Полезная нагрузка — JSON в стандартном формате экспорта:

{
  "data": {
    "metrics": [...],
    "workouts": [...],
    ...
  }
}

Параметры публикации:

  • Тема: как в настройках
  • QoS: не чаще одного раза (at most once)
  • Retain: без удержания
  • Payload: JSON со строкой данных

Устранение неполадок

Частые проблемы

Нет подключения

  • IP/имя и порт;
  • брокер слушает порт;
  • сеть и файрвол;
  • TLS/SSL при необходимости

Ошибка авторизации

  • логин и пароль;
  • включена ли авторизация на брокере;
  • права на публикацию в тему

Сообщения не приходят

  • тема совпадает посимвольно;
  • подписчики на том же брокере и в нужной теме;
  • автоматизация включена;
  • журнал активности

Слишком большое сообщение

  • меньше метрик;
  • грубее агрегация;
  • несколько автоматизаций по типам данных

Советы

  1. Автосинхронизация: зарядка и трансляция iPhone.

  2. Темы: иерархия (health/metrics, health/workouts), идентификаторы устройства или автоматизации, документируйте схему.

  3. Размер: укладывайтесь в лимиты брокера; грубее агрегация; при необходимости делите данные на несколько сообщений.

  4. Мониторинг: журнал активности в приложении.

  5. Облачные брокеры (AWS IoT, HiveMQ Cloud и т.д.):

    • требования к подключению;
    • лимиты размера и частоты;
    • соглашения об именах тем