
Gymnasticon은 쓸모없고 독점적 인 운동 자전거가 Zwift 및 기타 교육 앱과 함께 일할 수 있도록합니다. 새로운 자전거 지원을 쉽게 추가 할 수 있습니다. 아래 다이어그램은 플라이휠 홈 바이크에서 어떻게 작동하는지에 대한 예를 보여줍니다.

표준 Bluetooth LE 및 ANT+ Power Meter를 지원하는 모든 소프트웨어, 자전거 컴퓨터 및 시계 및 케이던스 센서가 다음을 포함하여 작동해야합니다.
최상의 사용자 경험을 위해 Raspberry Pi Zero W가 권장됩니다. 최근의 Linux 또는 MacOS 시스템은 Gymnasticon을 운영 할 수 있어야합니다.
참고 : Bluetooth LE 자전거 (예 : 플라이휠)를 사용하는 경우 다중 역할 기능이있는 Bluetooth LE 4.1+ 어댑터가 필요합니다. 위에 나열된 모든 Raspberry Pi 장치에는이 기능이 있지만 모든 BT 4.1+ 어댑터가 보장되는 것은 아닙니다. 또는 2 개의 BT 4.0+ 어댑터도 작동 할 수 있습니다. 하나는 클라이언트 (자전거에 연결하기 위해)와 서버 용 (Zwift 또는 다른 앱으로부터 연결을 수신).

이것은 라즈베리 파이에서 일어나고 달리는 가장 쉬운 방법입니다.
전제 조건 :
dd(1) 와 같은 SD 카드 이미지를 작성하는 프로그램단계 :
dd 사용하여 SD 카드에 이미지를 작성하십시오.구성 파일 :
Flywheel 또는 Peloton 이외의 자전거를 사용하는 경우 - SD 카드의 기본 폴더 내에서 gymnasticon.json 파일을 만들고 조정하십시오. bootcode.bin , cmdline.txt , config.txt 등과 동일한 폴더에서 끝나야합니다.
다음 예는 Gymnasticon이 Schwinn IC4 자전거를 찾고 전력 측정 값을 8%줄이도록 구성합니다.
{
"bike": "ic4",
"power-scale": 0.92
}
다음 예는 Gymnasticon이 Keizer M 시리즈 자전거를 찾도록 구성합니다.
{
"bike": "keiser"
}
추가 구성 옵션은 아래를 참조하십시오.
첫 번째 부팅 기간 동안 Gymnasticon은 루트 파일 시스템 ( "/")의 오버레이 파일 시스템을 활성화하고 "/boot"를 읽기 전용으로 마운트합니다. 이는 예를 들어 전력 고장의 결과로 치명적인 파일 시스템 손상의 위험을 줄일 수 있지만 마모를 최소화하여 SD 카드의 수명을 연장합니다.
따라서 Gymnasticon의 깨끗한 폐쇄는 필요하지 않습니다. Raspberry Pi를 연결하고 실행하기 만하면됩니다.
로그를 확인하거나 개발 작업에 참여할 수 있도록 네트워킹 및 원격 액세스를 설정할 수 있습니다. 그러나이 모드는 일반적인 사용자에게는 필요하지도 않습니다.
참고 :이 수정 된 Pi OS 이미지는 첫 번째 부팅 중에 만
wpa_supplicant.conf및ssh파일과 관련하여 Stock Pi OS 이미지와 동일합니다. 이는 Wi -Fi 및 SSH 설정이 언더 레이 파일 시스템의 일부가되어 후속 재부팅에서 지속됨을 의미합니다. 첫 번째 부팅 후에wpa_supplicant.conf또는ssh파일을 부팅 파티션에 배치하면 재부팅이 지속되지 않습니다. 또한이 경우wpa_supplicant.conf및ssh파일이 제거되어 다른 재부팅 중에 사용할 수 없습니다.
읽기 전용 및 읽기 쓰기 모드간에 루트 파일 시스템을 변경할 수 있지만 overctl 명령을 사용하여 현재 모드도 표시 할 수 있습니다.
플라이휠 자전거
펠로 톤 자전거 (수동 배선 포함)
빠른 시작을 먼저 시도하십시오. 그렇지 않으면 Gymnasticon 및 그 종속성을 수동으로 설치하는 방법을 읽으십시오.
종속성 :
node.js 12.16.1+
Linux에서 (Raspberry Pi 포함)
sudo apt-get install libudev-dev (node-bluetooth-hci-socket에 의해 요구됨)참고 : 사용자는 Bluetooth 어댑터에 액세스하고 서비스를 광고 할 수있는 권한이 있어야합니다.
설치하다:
npm install -g gymnasticon
gymnasticon
비공식적 인 사용자로 실행하려면 :
# this gives cap_net_raw+eip to all node programs not just gymnasticon
sudo setcap cap_net_raw+eip $(eval readlink -f $(which node))
부팅 시간에 실행하려면 종료시 다시 시작하고 cap_net_raw+eip 노드 바이너리에 제공하지 않으려면 SystemD에서 실행하는 것이 좋습니다. Systemd Unit 파일 예제는이 저장소의 deploy/gymnasticon.service 참조하십시오.
sudo cp gymnasticon.service /etc/systemd/system
sudo systemctl enable gymnasticon
sudo systemctl start gymnasticon
SystemD에서 실행되는 Gymnasticon의 출력을 보려면 :
journalctl -u gymnasticon -f
참고 : 아래 CLI 옵션은 구성 파일에서도 사용할 수도 있습니다. -명령 줄의
--bike ic4는 구성 파일의{"bike":"ic4"}와 동일합니다.
$ gymnasticon --help
__o
_ <_
(_)/(_)
Gymnasticon
v1.4.0
usage: gymnasticon [OPTIONS]
Options:
--config <filename> load options from json file [string]
--bike <type>
[string] [choices: "flywheel", "peloton", "ic4", "keiser", "bot",
"autodetect"] [default: "autodetect"]
--bike-connect-timeout <seconds> [number] [default: 0]
--bike-receive-timeout <seconds> [number] [default: 4]
--bike-adapter <name> for bike connection [default: "hci0"]
--flywheel-address <macaddr>
--flywheel-name <name>
--peloton-path <path> usb serial device path
[string] [default: "/dev/ttyUSB0"]
--bot-power <watts> initial bot power [number]
--bot-cadence <rpm> initial bot cadence [number]
--bot-host <host> for power/cadence control over udp [string]
--bot-port <port> for power/cadence control over udp [number]
--server-adapter <name> for app connection [default: "hci0"]
--server-name <name> used for Bluetooth advertisement
[default: "Gymnasticon"]
--server-ping-interval <seconds> ping app when user not pedaling
[number] [default: 1]
--ant-device-id <id> ANT+ device id for bike power broadcast
[number] [default: 11234]
--power-scale <value> scale watts by this multiplier
[number] [default: 1]
--power-offset <value> add this value to watts [number] [default: 0]
--version Show version number [boolean]
-h, --help Show help [boolean]
git clone https://github.com/ptx2/gymnasticon.git
cd gymnasticon
npm run build
npm link
gymnasticon --help
실시간 케이던스/전력 데이터를 얻는 수단이있는 한 다른 독점 자전거에 대한 지원을 추가하는 것은 사소한 일이어야합니다.
MIT
여기에서 개발 노트를 읽으십시오.