Получение данных о частоте сердечных сокращений Fitbit с помощью Python

Я использовал пакет Fitbit Python для анализа своих данных. Когда я смотрю на свои данные упражнений, кажется, что они работают очень хорошо:

fitbit_stats = authd_client._COLLECTION_RESOURCE('activities', date='2015-09-16')

Однако, когда я пытаюсь получить данные о частоте сердечных сокращений, он запускается, но не возвращает ничего, кроме 0:

fitbit_stats = authd_client._COLLECTION_RESOURCE('heart', date='2015-09-16')
print fitbit_stats

{'heart': [], 'average': [{'tracker': 'Пульс в покое', 'heartRate': 0}, {'tracker': 'Нормальный пульс', 'heartRate': 0}, { 'трекер': 'Частота сердечных сокращений при физической нагрузке', 'частота сердечных сокращений': 0}]}

Кто-нибудь знает, почему я не возвращаю никаких данных здесь?


person Jack Simpson    schedule 17.09.2015    source источник
comment
FWIW, я подозреваю, что это ошибка. Я зарегистрировался на dev.fitbit.com, клонировал последний репозиторий python-fitbit, собрал свои учетные данные OAuth2, создал экземпляр fitbit.Fitbit с oauth2=True и смог собрать все, что тестировал, кроме частоты сердечных сокращений. Я не стал копать дальше, но смог получить данные с помощью тестера API здесь: connect2. я/фитбит/фитбит-сердце   -  person radicalbiscuit    schedule 17.09.2015


Ответы (1)


Следующее будет работать, но я не уверен, что это то, что вы ищете

fitbit_stats = authd_client._COLLECTION_RESOURCE('activities/heart', date='2016-08-11')
print fitbit_stats

Я предполагаю, что вы хотите внутридневную дату (как и я)

Согласно https://dev.fitbit.com/docs/heart-rate/#get-heart-rate-intraday-time-series

Доступ к внутридневным временным рядам для личного использования (доступ к вашим собственным данным) доступен через тип приложения «Личное».

Доступ к внутридневным временным рядам для всех других целей в настоящее время предоставляется на индивидуальной основе. ...

Я добавил пользовательскую функцию в пакет API fitbit:

def get_heartrate_intraday(self, date="today", end_date="1d", detail_level="1sec", user_id=None):
    uri = "{0}/{1}/user/-/activities/heart/date/{date}/{end_date}/{detail_level}.json"

    date = self._get_date_string(date)
    end_date = self._get_date_string(end_date)

    url = uri.format(
        *self._get_common_args(user_id=user_id),
        date=date,
        end_date=end_date,
        detail_level=detail_level
    )
    return self.make_request(url)

Данные, которые это вернет, выглядят так:

'activities-heart-intraday': {
    'dataset': [
        {'time': '00:00:00', 'value': 66},
        {'time': '00:00:10', 'value': 67},
        {'time': '00:00:25', 'value': 67},
        {'time': '00:00:40', 'value': 67},

        {'time': '23:57:40', 'value': 84},
        {'time': '23:58:40', 'value': 85},
        {'time': '23:58:50', 'value': 80}
    ],
    'datasetInterval': 1,
    'datasetType': 'second'
}
person PvdL    schedule 12.08.2016