2 điểm bởi GN⁺ 2025-02-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Script Python để phân tích và thao tác dữ liệu sức khỏe thành cơ sở dữ liệu SQLite
  • Tải xuống và phân tích dữ liệu từ Garmin Connect hoặc đồng hồ Garmin, file CSV của FitBit, CSV của MS Health, rồi dùng notebook Jupyter để phân tích dữ liệu trong cơ sở dữ liệu Sqlite

Tính năng

  • Tự động tải xuống và nhập dữ liệu như nhịp tim cả ngày, hoạt động, leo cao/xuống dốc, căng thẳng, phút cường độ... từ trang "Daily Summary" của Garmin Connect
  • Trích xuất dữ liệu giấc ngủ, cân nặng, nhịp tim lúc nghỉ từ Garmin Connect, lưu thành file JSON và nhập vào cơ sở dữ liệu
  • Tải xuống và nhập file hoạt động từ Garmin Connect. Bao gồm bảng tóm tắt cho mọi hoạt động và dữ liệu chi tiết cho một số loại hoạt động
  • Tóm tắt dữ liệu thành các bảng gồm tổng hợp theo ngày, tuần, tháng và năm
  • Vẽ biểu đồ dữ liệu bằng dòng lệnh hoặc notebook Jupyter
  • Lưu trữ các file JSON và FIT đã tải xuống để có thể tái tạo cơ sở dữ liệu mà không cần kết nối lại với Garmin Connect hoặc tải lại dữ liệu
  • Có thể xuất hoạt động ra file TCX

Cách dùng

Bản phát hành

  • GarminDb được lưu trữ trên PyPI. Cần Python 3.x. Chạy pip install garmindb trong terminal để cài bản phát hành mới nhất
  • Sao chép GarminConnectConfig.json.example thành ~/.GarminDb/GarminConnectConfig.json, thêm tên người dùng và mật khẩu Garmin Connect, rồi điều chỉnh ngày bắt đầu của dữ liệu
  • Để tải toàn bộ dữ liệu và tạo cơ sở dữ liệu, chạy garmindb_cli.py --all --download --import --analyze
  • Để tải và nhập dữ liệu mới nhất nhằm cập nhật tăng dần cho cơ sở dữ liệu, chạy garmindb_cli.py --all --download --import --analyze --latest
  • Để sao lưu file cơ sở dữ liệu, thỉnh thoảng chạy garmindb_cli.py --backup

Từ mã nguồn

  • Dùng phương thức clone SSH để Git clone kho lưu trữ GarminDB. Submodule cũng phải dùng SSH
  • Trong cây thư mục đã clone, chạy make setup để chuẩn bị xử lý dữ liệu
  • Sao chép GarminConnectConfig.json.example thành ~/.GarminDb/GarminConnectConfig.json, thêm tên người dùng và mật khẩu, rồi điều chỉnh ngày bắt đầu
  • Chạy make create_dbs một lần để nhập và xử lý dữ liệu
  • Chạy lệnh make định kỳ để giữ toàn bộ dữ liệu cục bộ luôn được cập nhật

Notebook Jupyter

  • Các notebook Jupyter để phân tích dữ liệu trong cơ sở dữ liệu nằm trong thư mục 'Jupyter' của cây mã nguồn

Plugin

  • Plugin cho phép người dùng mở rộng các loại dữ liệu được xử lý và lưu trong cơ sở dữ liệu. GarminDb đã có sẵn nhiều plugin để xử lý ứng dụng Connect IQ và các trường dữ liệu của bên thứ ba

1 bình luận

 
GN⁺ 2025-02-04
Ý kiến trên Hacker News
  • Cần thận trọng với các ứng dụng xác thực bằng Garth. Việc tích hợp với Garmin khá khó

    • API và SDK của Garmin khó sử dụng
    • Có cách xuất dữ liệu từ Garmin Connect thành tệp FIT
    • Có thể đọc và phân tích tệp FIT bằng các thư viện mã nguồn mở cho Python và Go
  • Có cách lấy dữ liệu hiện tại từ thiết bị

    • Có thể kết nối thiết bị với máy tính, gắn như một hệ thống tệp và lấy các tệp .FIT
  • Dùng Intervals để phân tích dữ liệu liên quan đến Garmin và Strava là hữu ích

    • Đặc biệt tốt vì có thể tạo các chỉ số liên quan đến chèo thuyền
  • Garmin nên cung cấp phần cứng cho phép quản lý dữ liệu tốt hơn thay vì phụ thuộc vào ứng dụng điện thoại thông minh

    • Không chỉ khó truy cập API mà họ còn không lắng nghe ý kiến từ cộng đồng
    • Cần có tính năng lọc bài tập mà không cần thiết bị
  • SDK của Garmin đã cũ và quyền truy cập dữ liệu bị hạn chế

    • Định dạng tệp FIT chỉ được hỗ trợ trong các ứng dụng hạn chế
  • Cần một chiếc đồng hồ thể thao có khả năng truy cập dữ liệu tốt hơn

    • Cần một chiếc đồng hồ có thể truy cập thông tin sức khỏe theo thời gian thực
  • Tôi đã mua Garmin Vivoactive5 mới và khá hài lòng dù API của Garmin không phải tốt nhất

    • Đã cân nhắc Apple Watch Series 10 nhưng bỏ qua vì thời lượng pin và giá
    • Cần một chiếc đồng hồ mở có thể hack được, và sự hồi sinh của Pebble có thể lấp đầy khoảng trống này