Zwift: добавьте сопротивление с помощью контрольной точки FTMS - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь построить умный домашний тренажер. в данный момент он связан с Zwift сервисом Fitness Machine. Я могу отправить в zwift Power and Cadence, и я могу играть. Теперь я пытаюсь добавить контрольную точку (одна из характеристик, включенных в FTMS), но я не могу закончить sh транзакцию, описанную в спецификациях. Я думаю, что это не очень легко. Файл xml, описывающий контрольную точку, пуст! Нет полной диаграммы последовательности блок-схем. в этот момент я могу получить событие записи из zwift в контрольную точку. Сначала zwift отправляет 0x7, а затем 0x0. После этого ... снова пишите 7 в контрольную точку, а затем 0, я пытаюсь ответить (указать) 0x80, 0x801, 0x0180 за 2 необходимых байта (см. Спецификацию). Я думаю, что я не очень Понимаете ли вы спецификацию? Есть ли у вас информация, чтобы помочь мне? Любая блок-схема, диаграмма последовательности для обновления уровня сопротивления? Вы подтверждаете, что мне действительно необходимо указать 2 байта для ответа на запись от zwift в контрольную точку?

@ Yonkee

1 Ответ

0 голосов
/ 18 февраля 2020

Я согласен, что немного странно, что контрольная точка XML пуста, поскольку PDF-файл спецификации FTMS не дает полного списка, например, что ожидать в качестве параметров для различных команд.

Однако мне удалось создать реализацию, которая поддерживает некоторые варианты использования, которые могут вас заинтересовать. В настоящее время она поддерживает установку целевого сопротивления и мощности, но не параметры симуляции, которые вам понадобятся для обычного режима симуляции в Zwift. Вы можете найти эту реализацию на github . Это не завершено, и я просто обработал несколько команд там, но вы можете получить asp концепцию из кода.

Я написал это, используя информацию, которую смог найти в Интернете, в основном Характеристики тренажера и различные Характеристики характеристик GATT .

Когда приложение как и Zwift, записывающий в CP, это OP-код, за которым необязательно следуют параметры, вы должны ответить с помощью OP-кода 0x80 (код ответа), за которым следует OP-код, для которого предназначен ответ, за которым необязательно следуют параметры.

In поэтому в случае кода OP 0x00 (управление запросами) вы должны ответить: 0x80, 0x00, 0x01. Последний 0x01 - это код результата для «Success».

В случае кода OP 0x07 (Start / Resume) вы должны ответить: 0x80, 0x07, 0x01. Предполагая, что вы считаете запрос успешным, другие возможные ответы подробно описаны в Таблице 4.24 PDF-файла спецификации FTMS.

По команде, которую вы должны изучить, является OP Code 0x11. Когда Zwift работает в «режиме без тренировок», то есть в обычном режиме, Zwift будет использовать код OP 0x11, за которым следует набор параметров моделирования: скорость ветра, уклон, коэффициент сопротивления качению и коэффициент сопротивления ветра. Подробнее о формате этих параметров см. В «4.16.2.18 Установка процедуры имитации крытого велосипеда» в PDF-документе.

Надеюсь, это позволит вам продолжить. Счастливого взлома!

...