Giter Club home page Giter Club logo

elemntary's Introduction

Elemntary

Elemntary is a GUI application that allows your to control Wahoo Elemnt bicycle computers from a desktop PC providing some insights and hidden features.

Screenshot

Elemntary

Features

  • show software info;
  • upload custom maps & routing tiles (OSM files can be generated by wahooMapsCreator);
  • upload themes;
  • take device screenshots;
  • enable/disable hidden features;
  • web server management;
  • config backup/restore;
  • run system actions (clear cache, restart, reboot).

Installation

The easiest way to install it is to download a pre-built release zip-file for your Operating System:

  • Windows (application is not signed, you might need to add a security exception)
  • MacOS (application is not signed, you might need to add a security exception)
  • Linux

Usage

In order for your Wahoo computers to be controllable by Elemntary they need to be authorized. The authorization process depends on the model. Follow the instructions:

  1. turn the device on (make sure it's not connected via usb yet)
  2. press keys on device
    • BOLT v1 and ROAM
      • press the power button (you enter the settings menu)
      • press the power button again (you return to the normal screen)
    • BOLT v2 and ROAM v2
      • press the power, up and down buttons at the same time (this is a bit hard, but give it several tries if it doesn't work)
  3. connect the device to your pc

Development

This is an Electron app, so JavaScript/Node knowledge is required.

Environment

You need to have the following software installed:

  • node (>= v16)
  • yarn (or use npm)

NodeJS can be downloaded and installed for your operation system from the official NodeJS downloads page.

Yarn is optional and can be installed by following their guide.

For MacOS it is also possible to use brew:

$ brew install node
$ brew install yarn

Building

# Clone the project
$ git clone https://github.com/vti/elemntary
$ cd elemntary

# Install dependencies
$ yarn install

# Run tests
$ yarn test

# Start the application
$ yarn start

# Build the application for your current platform
$ yarn make

Credits

This project is standing on the shoulders of the giants:

@Intyre for reverse engineering

@treee111 for wahooMapsCreator

@thoughtgap for routing tiles upload

Translations

Author

Viacheslav Tykhanovskyi (vti AT uptosmth.com)

Copyright and License

Copyright (C) 2022-2023, Viacheslav Tykhanovskyi

This program is free software, you can redistribute it and/or modify it under the terms of the GNU GENERAL PUBLIC LICENSE v3 or later. See LICENSE file for details.

elemntary's People

Contributors

thoughtgap avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

elemntary's Issues

Development in Linux (Ubuntu 22.04)

Hi @vti,

In Ubuntu the standard Node package is very old (~12.2), therefore I had this issue:

image

These are the steps I needed to follow to be able to build and run the app:

#updating Ubuntu package lists
sudo apt update 

#install npm 
sudo apt install npm

#install Electron framework
npm install electron --save-dev

#install node globally 
sudo npm install -g n

#update node to the latest version
sudo n stable

#installing yarn [is required]
npm install --global yarn

#cloning the source code 
git clone https://github.com/vti/elemntary.git

cd elemntary

#creates a compressed build file
npm run make

#to create an executable 
npm run package

#execute elemntary
./out/elemntary-linux-x64/elemntary

Include these lines as you like in your README file.

Copy device theme to Elemnt

Currently we're able to copy map data to the Wahoo device. Fantastic!

In the last day I created my custom rendering theme with new icons and new xml. I copy it manually all the time and reset cache with your tool.
Do you think it is possible to create a new function to your app, copying these rendering theme files to the Wahoo, in the same way as you do it with map data? This would make the process even better.

I am talking about these files and subfolder: https://github.com/treee111/wahooMapsCreator/tree/develop/device_themes/vtm_theme_poi

Maps not really uploading to the device on windows

For me at least on windows 11 the map upload function is not working correctly.
After hitting the upload button it takes about half a second for the "Map successfully uploaded" message to appear. Map files are unpacked to the tmp directory. But when checking after restarting on the device the map files are not updated (timestamp)
After manually deleting the maps on the device and restarting and retrying the upload the same successful message is displayed but no files are to be found in the maps folder.

node-ipc dependency doesn't work with current version of node

Trying to do a fresh build from source on macOS using brew-based instructions, and yarn install gives the following error:

$ yarn install
yarn install v1.22.19
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
error @achrinza/[email protected]: The engine "node" is incompatible with this module. Expected version "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18". Got "20.3.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

node was installed via brew. Here's the details on it:

$ brew info node
==> node: stable 20.3.0 (bottled), HEAD
Platform built on V8 to build network applications
https://nodejs.org/
/usr/local/Cellar/node/20.3.0 (2,446 files, 59.4MB) *
  Poured from bottle using the formulae.brew.sh API on 2023-06-14 at 00:44:47
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/node.rb
License: MIT
==> Dependencies
Build: pkg-config โœ”, [email protected] โœ˜
Required: brotli โœ”, c-ares โœ”, icu4c โœ”, libnghttp2 โœ”, libuv โœ”, [email protected] โœ”
==> Options
--HEAD
	Install HEAD version
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Analytics
install: 231,059 (30 days), 16,840 (90 days), 3,907,553 (365 days)
install-on-request: 180,250 (30 days), 15,300 (90 days), 3,454,684 (365 days)
build-error: 496 (30 days)

Device Not Authorized

When I try and connect using Elemntary, I can see the device through file explorer, but Elemntry under devices says "Unknown 47223710409 not authorized" Am I missing something in the setup or are there other install files I need? Thanks

Language not selected by default

I got this error (TypeError: Cannot read properties of undefined (reading 'menu'))
image

This is the start window

Labels not shown:

Fixed selecting "English" in Language menu. Or setting {"locale":"en"} in ~/.config/elemntary/settings.json

Building on macOS hints

Nice app! Thank you!

I got it working on macOS BigSur: in contrib/adb/ you should create a path "darwin" and add macOS adb there. That is missing.

And maybe these hints are useful for other macOS users:

  • install homebrew
  • run brew install yarn
  • run brew install node
  • then follow the instructions from the readme.

Warning/error after selecting directory not containing maps

When uploading maps to the device, if you accidentally select a folder not containing map tiles you get a warning/error that no map tiles were found (good). But if you, after that, select a folder that does contain map tiles the warning/error message does not disappear.
The subsequent upload however does find the tiles and uploads them just fine.

VTM Rendering option

Hi,

when I change the VTM_RENDERING option, I get an error code:

Unhandled Promise Rejection
NonError: { code: 1, stdout: , stderr: '' }
at module.exports (C:/Wahoo/elemntary-win32-x64-0.5.5/resources/app/node_modules/ensure-error/index.js:14:10)
at handleError (C:/Wahoo/elemntary-win32-x64-0.5.5/resources/app/node_modules/electron-unhandled/index.js:50:10)
at process. (C:/Wahoo/elemntary-win32-x64-0.5.5/resources/app/node_modules/electron-unhandled/index.js:130:4)
at process.emit (node:events:513:28)
at emit (node:internal/process/promises:149:20)
at processPromiseRejections (node:internal/process/promises:294:27)
at process.processTicksAndRejections (node:internal/process/task_queues:96:32)

The option does seem to be activated; the check box is checked.
On the element roamv2 there is no change, so on the elemnt itself the options doesn't seem to be changed.
Next to the line "WORD OPGESLAGEN: (in dutch) there is a spinning circle

edit: I use elementary-win32-x64-0.5.5

image

A little tip; to connect a wahoo roamV2 I use the same method as described for a wahoo roam and bold V1. Just enter the setting menu, press again and connect the roam.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.