Skip to content

Mobile app aiming to be a third-party client for e-scooters with Bluetooth functionality, allowing an alternative interface with more features

License

Notifications You must be signed in to change notification settings

johan-perso/escive

Repository files navigation

Version française ici.

eScive

eScive is a mobile app that aims to be a third-party client for e-scooters with Bluetooth functionality, allowing an alternative interface with more features, and more importantly, without all the telemetry that is included in some official apps (generally Chinese ones 👀).

For now, the project specifically targets iScooter "i10" electric scooters, but is coded in a way that will allow other brands in the future. Communications between devices are based on reverse engineering of packets sent using the BLE protocols, and directly from the decompiled source code of official apps.

Homepage / Onboarding Homepage / speedometer

Installation

Android

You can download the app directly from the Play Store if your device supports it.

The app is still in a very intensive development phase and is not yet available for download, neither through the Play Store, nor through a provided APK file. You can follow the commits on this repository to be up-to-date with the development progress and its eventual release, which will first be on GitHub and then on the Play Store.

iOS

The app is not yet available for iOS, and will probably not be for a while. I put a priority on supporting Android to reduce development time, mainly because of the native features (widgets, Bluetooth...) that are more complex to implement and test. However, the app can be compiled and installed on an iPhone/iPad by first running a build using Xcode on a Mac, and then by using the command flutter build ios. Some features will be limited or not available, and others will not be as optimized as on Android.

Automation

Protocol

You can directly open the app on your phone from a URL starting with escive://. Depending on the URL, you can choose any predefined actions from the list below that will be done as soon as possible.

Path Description
app Open the app without any actions
controls/lock/on Lock the current associated device
controls/lock/off Unlock the current associated device
controls/lock/toggle Lock or unlock depending on the current state
controls/light/on Turn on the LED
controls/light/off Turn off the LED
controls/light/toggle Toggle the LED
controls/speed/0 Set speed profile on the mode #1
controls/speed/1 Set speed profile on the mode #2
controls/speed/2 Set speed profile on the mode #3
controls/speed/3 Set speed profile on the mode #4

Kustom Variables

On Android, you can use eScive data in a custom homescreen widget or wallpaper with an app like like KWGT or KLWP using the function "BR - Broadcast receiver". Third-party app not affiliated with eScive.

Available variables:

Variable name Type Description
id String Random UUID assigned for the current device
name String Name of the device, can be manually changed by the user
bluetoothName String Name of the Bluetooth device, cannot be changed from the app by the user
protocol String Protocol used by the current device
state String none, connecting or connected depending on the connection state
battery Number Between 0 and 100, representing the battery level (in %)
speedMode Number Between 0 and 3 (0 = first speed profile, 1 = second speed profile)
speedKmh Number Represent the speed at the device is going (in km/h)
light Boolean Indicate if the LED is on or off with false or true
locked Boolean Indicate if the device is locked or unlocked with false or true
$br(escive, speedMode)$
# Show: 2

License

MIT © Johan. Support this project if you want to help me 💙

About

Mobile app aiming to be a third-party client for e-scooters with Bluetooth functionality, allowing an alternative interface with more features

Topics

Resources

License

Stars

Watchers

Forks