
Gymnasticson permite que las bicicletas de ejercicio obsoletas y/o patentadas trabajen con Zwift y otras aplicaciones de entrenamiento. El soporte para bicicletas nuevas se puede agregar fácilmente. El siguiente diagrama muestra un ejemplo de cómo funciona con la bicicleta casera del volante.

Cualquier software, computadora de bicicleta o reloj que admita los sensores estándar de medidor de potencia Bluetooth LE y Ant+ Power debería funcionar, que incluya:
Raspberry Pi Zero W se recomienda para la mejor experiencia de usuario. Cualquier sistema reciente de Linux o MacOS debería poder ejecutar Gymnasticon.
Nota: Si usa una bicicleta Bluetooth LE (por ejemplo, volante) se requiere un adaptador Bluetooth LE 4.1+ con capacidad de múltiples roles. Todos los dispositivos Raspberry Pi enumerados anteriormente tienen esta capacidad, pero no todos los adaptadores BT 4.1+ están garantizados para tenerlo. Alternativamente, dos adaptadores BT 4.0+ también pueden funcionar: uno para el cliente (para conectarse a la bicicleta) y otro para el servidor (para recibir conexiones desde ZWift u otra aplicación).

Esta es la forma más fácil de ponerse en funcionamiento en una Raspberry Pi.
Prerrequisitos:
dd(1)Pasos:
ddArchivo de configuración:
Si usa una bicicleta que no sea volante o pelotón, cree y adapte un archivo gymnasticon.json dentro de la carpeta principal de la tarjeta SD. Debe terminar en la misma carpeta que bootcode.bin , cmdline.txt , config.txt , etc.
El siguiente ejemplo configura Gymnasticon para buscar una bicicleta Schwinn IC4 y reducir sus valores de medición de potencia en un 8%:
{
"bike": "ic4",
"power-scale": 0.92
}
El siguiente ejemplo configura Gymnasticon para buscar una bicicleta de la Serie Keizer M:
{
"bike": "keiser"
}
Consulte a continuación las opciones de configuración adicionales.
Durante el primer arranque, Gymnasticon habilita el sistema de archivos de superposición para el sistema de archivos raíz ("/") y monta "/arranque" como de solo lectura. Esto reduce el riesgo de la corrupción del sistema de archivos fatales como resultado de las fallas de potencia de EG, pero también extiende la vida útil de la tarjeta SD minimizando el desgaste.
Por lo tanto, no es necesario un cierre limpio de Gymnasticon. Simplemente mantenga su Raspberry Pi enchufada y en funcionamiento.
Todavía es posible configurar las redes y el acceso remoto para que pueda verificar los registros o participar en el trabajo de desarrollo. Pero este modo no es necesario ni recomendado para usuarios típicos.
Nota: Esta imagen modificada de PI OS se comportará equivalente a las imágenes de stock PI OS con respecto a los archivos
wpa_supplicant.confysshsolo durante el primer arranque. Esto significa que la configuración WiFi y SSH se convierte en parte del sistema de archivos subyacentes y persisten en reinicios posteriores. Colocar un archivowpa_supplicant.confosshen la partición de arranque después de la primera arranque dará como resultado que los configuraciones no se persistan en reinicios. También tenga en cuenta que en este caso los archivoswpa_supplicant.confysshse eliminan y no están disponibles durante otro reinicio.
Puede cambiar el sistema de archivos raíz entre el modo de lectura y la lectura-escritura, pero también mostrar el modo actual usando el comando overctl .
Bicicleta de volante
Peloton Bike (con cableado pasivo)
Prueba el comienzo rápido primero. De lo contrario, lea cómo instalar Gymnasticson y sus dependencias manualmente.
Dependencias:
Node.js 12.16.1+
En Linux (incluida Raspberry Pi)
sudo apt-get install libudev-dev (requerido por nodo-bluetooth-hci-socket)Nota: Su usuario debe tener permiso para acceder al adaptador Bluetooth y a los servicios de publicidad.
Instalar:
npm install -g gymnasticon
gymnasticon
Para ejecutarse como un usuario no privilegiado:
# this gives cap_net_raw+eip to all node programs not just gymnasticon
sudo setcap cap_net_raw+eip $(eval readlink -f $(which node))
Para ejecutarse en el momento del arranque, reinicie la salida y para evitar dar cap_net_raw+eip al binario del nodo, se recomienda que se ejecute en Systemd. Consulte la deploy/gymnasticon.service desde este repositorio para un archivo de unidad SystemD de ejemplo.
sudo cp gymnasticon.service /etc/systemd/system
sudo systemctl enable gymnasticon
sudo systemctl start gymnasticon
Para ver la salida de Gymnasticon que se ejecuta en Systemd:
journalctl -u gymnasticon -f
Nota: Las opciones de CLI a continuación también se pueden usar en el archivo de configuración.
--bike ic4en la línea de comandos es lo mismo que{"bike":"ic4"}en el archivo de configuración.
$ 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
Debería ser trivial agregar apoyo para otras bicicletas patentadas, siempre que haya un medio para obtener datos de cadencia/potencia de tiempo real.
MIT
Lea las notas de desarrollo aquí.