Cloud . stable . built by us . since 2024

Sunshine

Cloud service for the unu Scooter Pro. Replaces the original cloud that was discontinued with the insolvency, and adds features unu never shipped.

Status
live
Stack
Rails . PostgreSQL/PostGIS . MQTT . WebSocket
Vehicle
unu Scooter Pro
License
AGPL-3.0

What Sunshine provides

Sunshine takes over the responsibilities of the original unu cloud: real-time telemetry, a trip log, sharing, browser-based remote control, statistics, and software updates for the scooter. It also adds features that were not part of the original software, including a configurable alarm system, achievements, and leaderboards. No dedicated app is required; everything runs in the browser, including on a phone.

Day-to-day functionality

Lock, unlock, locate. The scooter can be locked and unlocked remotely. The “Find my scooter” function emits a short tone and activates the hazard lights. Individual blinkers, the hazard lights, and remote opening of the seatbox are also available.

Alarm system. A motion sensor detects two stages: light movement triggers the hazard lights; sustained movement adds the horn. Volume, duration, and automatic arming on lock are configurable. Unauthorized movement triggers an email containing the location and a map link.

Location data and weather. The map shows the most recent known position, the corresponding address, and current weather plus a forecast. The weather data comes from the German Weather Service via the BrightSky API. No third-party services are contacted, and no API key is required.

Battery information. Per-battery state of charge, state of health, and cycle count. Tracking is done by serial number, not slot, so swapping batteries during a trip is recorded correctly.

Trip log. Trips are detected and recorded automatically. The trip view shows the route on a map with speed-graded coloring, an elevation profile, energy consumption, and average and top speed.

Statistics. Reports over 7 days, 30 days, 3 or 6 months, a year, year-to-date, or the entire lifetime. Distance, riding time, energy use (Wh/km), speed distribution, and efficiency are tracked. Charts can be resolved by hour, day, week, or month.

Achievements and leaderboards. Over thirty public achievements (distance tiers, trip counts, top speed, seasons, membership duration), plus per-instance configurable secret achievements. Leaderboard participation is explicitly opt-in.

Sharing. Scooters can be shared with family or friends, with granular per-person permissions. Invitations go out by email; the recipient confirms by clicking a link.

Hardware tracking. Batteries, MDB, DBC, and ECU are identified automatically from telemetry. Replacements and rotations are timestamped and logged.

Requirements

Setup

  1. Solder in the SIM adapter, remove the original unu SIM, insert the Nano-SIM
  2. Create an account at sunshine.rescoot.org (invitation link in Discord)
  3. Enter the VIN and a name for the scooter
  4. Run the install command Sunshine generates for you in an SSH session on the scooter
  5. Done

The installer detects automatically whether the scooter is running stock firmware or librescoot and installs the matching variant of the telemetry client (radio-gaga).

Developer interfaces

API. OAuth 2.0 with three scopes (read, write, scooter_control), with PKCE support for mobile applications. Legacy bearer tokens remain supported.

MCP. Sunshine implements the Model Context Protocol. An MCP-capable client can drive the scooter directly: lock, unlock, horn, navigation, status queries, listing trips.

Stack. Rails 8.1, PostgreSQL 17 with PostGIS, SolidQueue for background jobs, Hotwire/Turbo on the front end, Tailwind 4. Scooters connect in parallel via MQTT (older firmware) and a WebSocket uplink (newer). Source at github.com/rescoot/sunshine, licensed AGPL-3.0.

Current status

Sunshine has been running in production since December 2024. The migration from SQLite to PostgreSQL with PostGIS is complete; the achievement system has been substantially expanded. Currently in progress: synchronisation of saved destinations between browser and scooter, unified acknowledgment across both transports, and the rollout of a stable update channel.

Bug reports and feature requests via GitHub or in Discord.