A Home Assistant integration for Muli electric cargo bikes, providing real-time monitoring and control of your bike's status, location, and security features.
Muli manufactures electric cargo bikes designed for urban transportation and family use. This integration connects to the Muli cloud API (powered by Velco) to provide monitoring and control capabilities within Home Assistant.
This integration provides the following platforms and entities:
- Battery - Main bike battery level (%)
- Total Mileage - Odometer reading in kilometers
- Remaining Distance - Estimated range in kilometers
- Battery Cycles - Total number of charge cycles
- Assistance Level - Current electric assistance level
- Speed - Current speed in km/h
- Status - Product status information
- Firmware Version (Diagnostic) - Bike firmware version
- Hardware Version (Diagnostic) - Bike hardware version
- GPS Tracker Battery (Diagnostic) - GPS tracker battery level (%)
- Armed - Arm or disarm the bike's security alarm
- Alarm Mode - Choose alarm notification mode:
- Silent - Alarm triggers sensor state change only (no siren)
- Audible - Alarm triggers bike siren and sensor state change
- Alarm - Indicates if the security alarm has been triggered
- Location - Real-time GPS tracking of your bike with attributes:
- GPS signal status
- Last position timestamp
- Last signal timestamp
Then, go to Settings → Devices & Services → Add Integration → Search for "Muli"
- Download the latest release from the GitHub releases page
- Extract the
custom_components/mulibikesfolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration → Search for "Muli"
-
When adding the integration, you'll be prompted to enter:
- Email: Your Muli account email address
- Password: Your Muli account password
-
The integration will authenticate with the Muli cloud API and automatically discover your bike
If your authentication tokens expire, Home Assistant will prompt you to re-enter your credentials. Simply:
- Click on the notification
- Re-enter your email and password
- The integration will refresh your tokens and resume normal operation
| Entity | Type | Unit | Description |
|---|---|---|---|
| Battery | Sensor | % | Main bike battery level |
| Total Mileage | Sensor | km | Total distance traveled (odometer) |
| Remaining Distance | Sensor | km | Estimated remaining range |
| Battery Cycles | Sensor | - | Number of battery charge cycles |
| Assistance Level | Sensor | - | Current electric assistance level |
| Speed | Sensor | km/h | Current speed |
| Status | Sensor | - | Product status information |
| Firmware Version | Sensor | - | Bike firmware version (diagnostic) |
| Hardware Version | Sensor | - | Bike hardware version (diagnostic) |
| GPS Tracker Battery | Sensor | % | GPS tracker battery level (diagnostic) |
| Armed | Switch | - | Security alarm armed/disarmed |
| Alarm Mode | Select | - | Alarm notification mode (Silent/Audible) |
| Alarm | Binary Sensor | - | Alarm triggered state |
| Location | Device Tracker | - | Real-time GPS location |
- Main Data: Updated every 30 seconds (battery, speed, location, etc.)
- Bike Details: Updated every 30 minutes (firmware, hardware versions)
automation:
- alias: "Muli Alarm Triggered"
trigger:
- platform: state
entity_id: binary_sensor.muli_bike_alarm
to: "on"
action:
- service: notify.mobile_app_your_phone
data:
message: "Your Muli bike alarm has been triggered!"
title: "Bike Alert"automation:
- alias: "Muli Low Battery"
trigger:
- platform: numeric_state
entity_id: sensor.muli_bike_battery
below: 20
action:
- service: notify.mobile_app_your_phone
data:
message: "Your Muli bike battery is below 20%"
title: "Low Battery"automation:
- alias: "Arm Muli at Night"
trigger:
- platform: time
at: "22:00:00"
action:
- service: switch.turn_on
target:
entity_id: switch.muli_bike_armedThis integration uses the Velco API (vr-api.velco.bike) which powers Muli bikes. The integration:
- Authenticates using JWT tokens
- Automatically refreshes access tokens when they expire
- Implements proper error handling and reauthentication flows
- Respects API rate limits with appropriate polling intervals
Contributions are welcome! Please see DEVELOPERS.md for technical documentation and contribution guidelines.
This integration is licensed under the Apache License 2.0.
For issues, feature requests, or questions:
- GitHub Issues: Report bugs or request features
- Documentation: See this README and DEVELOPERS.md
Developed for the Home Assistant community.
- API Provider: Velco
- Bike Manufacturer: Muli
