Skip to content
This repository was archived by the owner on Sep 11, 2026. It is now read-only.

Latest commit

 

History

611 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScootUI - Librescoot's User Interface

ScootUI is the user interface component for the Librescoot electric scooter project. It's a Flutter application designed to run on a display mounted on electric scooters, providing riders with real-time information, controls, and navigation capabilities.

Archived. ScootUI has been superseded by scootui-qt for the DBC dashboard; this repository is kept for history only.

Part of the Librescoot open-source platform.

CC BY-NC-SA 4.0

🚀 Features

  • Real-time Telemetry Display

    • Speed, power output, battery levels, odometer, trip meter
    • GPS status, connectivity indicators, and system warnings
  • Multiple View Modes

    • Cluster view with speedometer and vehicle status
    • Map view with navigation capabilities
    • Destination selection screen
    • OTA update interface
  • Navigation

    • Online and offline map support (using MBTiles)
    • Integration with routing services (BRouter)
    • Turn-by-turn directions
  • System Integration

    • Connects to the scooter's main data bus (Redis-based MDB)
    • Handles battery, engine, GPS, Bluetooth, and other vehicle systems
    • Support for over-the-air (OTA) updates
  • Adaptable Design

    • Light and dark themes

🔧 Technology Stack

  • Flutter/Dart - UI framework and language
  • Bloc/Cubit - State management
  • Redis - Real-time data communication
  • Flutter Map - Mapping and navigation display
  • MBTiles - Offline map data storage

💻 Development

ScootUI includes a simulator mode for development and testing without physical scooter hardware. It's designed to run on various platforms:

  • Embedded Linux systems (target hardware)
  • Desktop development environments (macOS, Windows, Linux)
  • Mobile devices (for testing)

WSL2 Flickering Fix

If you experience screen flickering when running on WSL2 (Windows Subsystem for Linux), use software rendering:

FLUTTER_LINUX_RENDERER=software flutter run -d linux

📋 Project Structure

  • cubits/ - State management components
  • repositories/ - Data access layer
  • screens/ - Main UI screens
  • services/ - System services (Redis, map, settings)
  • state/ - Vehicle state data models
  • widgets/ - Reusable UI components

⚙️ Configuration

Redis Connection

ScootUI connects to Redis on the MDB (default host: 192.168.7.1, port 6379).

The Redis host can be overridden with the SCOOTUI_REDIS_HOST environment variable:

export SCOOTUI_REDIS_HOST=127.0.0.1
flutter run -d linux

A runtime environment variable takes priority over a compile-time --dart-define value. If neither is set, the default 192.168.7.1 is used.

For reference, the compile-time approach still works but is no longer necessary for development:

flutter run -d linux --dart-define=SCOOTUI_REDIS_HOST=127.0.0.1

Runtime Settings

ScootUI uses Redis for dynamic configuration. Settings are stored in the settings hash and can be modified at runtime.

Dashboard Display Settings

Key Possible Values Default Description
dashboard.show-raw-speed true, false false Show uncorrected speed as reported by ECU instead of wheel circumference corrected speed
dashboard.show-gps always, active-or-error, error, never error GPS icon visibility: always show, when GPS has fix or error, error only, or never
dashboard.show-bluetooth always, active-or-error, error, never active-or-error Bluetooth icon visibility: always show, when connected or error, error only, or never
dashboard.show-cloud always, active-or-error, error, never error Cloud connection icon visibility: always show, when connected or error, error only, or never
dashboard.show-internet always, active-or-error, error, never always Internet/cellular icon visibility: always show, when connected or error, error only, or never

Map Settings

Key Possible Values Default Description
dashboard.map.type online, offline offline Map source: online uses CartoDB tiles, offline uses local MBTiles
dashboard.map.render-mode vector, raster raster Rendering mode for offline maps: vector for dynamic styling, raster for pre-rendered tiles

Examples:

# Show raw GPS speed on dashboard
redis-cli hset settings dashboard.show-raw-speed true

# Always show GPS indicator
redis-cli hset settings dashboard.show-gps always

# Switch to online maps
redis-cli hset settings dashboard.map.type online

# Use vector rendering for offline maps
redis-cli hset settings dashboard.map.render-mode vector

📱 Screens

  • Cluster Screen - Main dashboard with speedometer and vehicle status
  • Map Screen - Navigation view with location and routing
  • Address Selection - Destination input interface
  • OTA Screen - System update interface

🔄 Contributing

Contributions to ScootUI are welcome. When contributing, please follow the existing code style and patterns.

📜 License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

About

Open-source Flutter dashboard for e-scooters with speedometer, battery monitoring, and GPS navigation. Features offline maps, navigation and vehicle diagnostics.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages