Логика взаимодействия

Каждое аппаратное устройство должно следовать определенному циклу взаимодействия с сервером для корректной работы.

Шаг 1: Первоначальный запуск и получение конфигурации

  1. При включении или перезагрузке устройство подключается к сети Wi-Fi.

  2. Сразу после успешного подключения к сети устройство должно отправить GET-запрос на эндпоинт конфигурации сервера:

    • GET /api/sensor/config/

  3. Сервер вернет JSON-ответ, содержащий ключ period — рекомендуемый интервал в секундах для отправки данных.

    {
      "period": 30
    }
  4. Устройство должно сохранить это значение и использовать его в качестве задержки между отправками данных.

Шаг 2: Периодическая отправка данных

  1. Устройство измеряет температуру с помощью своих сенсоров.

  2. С периодичностью, полученной на Шаге 1, устройство формирует POST-запрос на эндпоинт данных сервера:

    • POST /api/sensor/data/

  3. Тело запроса должно быть в формате JSON и содержать как минимум одно из полей contact_temp или non_contact_temp.

    {
      "contact_temp": 36.6,
      "non_contact_temp": 35.9
    }
  4. После отправки запроса устройство ожидает period секунд и повторяет Шаг 2.

Важные моменты

  • Идентификация: Сервер автоматически идентифицирует каждое устройство по его IP-адресу. Убедитесь, что ваши устройства получают стабильные IP-адреса (например, через DHCP-резервирование на роутере).

  • Ограничение частоты: Если устройство будет отправлять данные чаще, чем разрешено настройкой server_timeout на сервере, его запросы будут временно отклоняться с HTTP-статусом 429 Too Many Requests. Прошивка должна быть готова к такой ситуации и не должна входить в бесконечный цикл повторных отправок.

  • Отказоустойчивость: Прошивка должна предусматривать обработку ошибок сети (недоступность сервера, таймауты) и пытаться повторно получить конфигурацию или отправить данные после некоторой паузы.

Last updated