Segway-ninebot protocol

Protocol used by IoT scooters manufactured by Segway-Ninebot headquartered in China.
flespi parses the Segway-ninebot protocol messages into a JSON object with the fields listed below in the Parameters tab.

It's possible to get the position data and other parameters from Segway-Ninebot e-scooters as well as manage them remotely via the API.

To connect your scooter using the Segway-Ninebot protocol, you need to have an segway-ninebot channel created first.

Point your scooter to the channel's domain name:port via SMS or configuration tool provided by the vendor.

Then create a device instance for your tracker and use a 15-character IMEI (usually specified on the tracker casing) in the ident field.

Use the Logs & Messages tab on the device screen to check if the messages are coming.

backup.battery.voltage.status
boolean
Backup battery voltage if normal (true - inside the predefined range) or abnormal (false - outside of the predefined range)
battery.charging.cycles
number
Number of charges/discharges of the battery
battery.charging.status
boolean
Battery charging status
battery.connected.status
boolean
Internal battery is connected
battery.level
number
percentage
Internal battery level
battery.lock.status
boolean
Battery lock locked/unlocked status
battery.temperature
number
celsius
Battery temperature
battery.voltage
number
volts
Internal battery voltage
bluetooth.mac.address
string
Bluetooth MAC address
bms.serial.number
string
BMS (Battery Management System) serial number
cable.lock.status
boolean
Peripherial device cable lock status
channel.id
number
ID of channel that received a message
controller.voltage
number
volts
Driving voltage of the controller
device.id
number
ID of device that received a message
device.name
string
Name of device that received a message
device.serial.number
string
Device serial number
device.type.id
number
ID of device type of device that received a message
disassemble.alarm
boolean
Disassemble alarm event
display.hardware.version
string
Display hardware version
ecu.error.code
string
ECU error code
event.enum
number
Protocol-specific event code
external.battery.hardware.version
string
External battery hardware version
external.battery.temperature
number
celsius
Indexed temperature of external battery
fall.alarm.status
boolean
Fall alarm status
firmware.update.code
number
Firmware update confirmation code
gsm.mcc
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) country code
gsm.mnc
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) code
gsm.operator.code
string
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) operator code, which is MCC joined with MNC
gsm.signal.level
number
percentage
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) signal strength level
gsm.signal.quality
number
The quality (bit error rate) of the Mobile network (GSM, 3G, 4G, LTE, 5G, ...) signal
gsm.sim.iccid
string
Integrated Circuit Card Id of SIM card of the Mobile network (GSM, 3G, 4G, LTE, 5G, ...)
hardware.version
string
Hardware version
ident
string
Device unique identifier like serial number, IMEI, etc
illegal.movement.alarm
boolean
Illegal movement alarm event
indication.mode
string
Position indication mode: A - autonomous, D - differential, E - estimate, N - invalid data
internal.battery.hardware.version
string
Internal battery hardware version
left.turm.lamp.status
boolean
Left turn lamp status - true - on, false - off
lock.status
boolean
Lock status
message.type
string
Message type
peer
string
IP:port from which device connecting to the channel
position.altitude
number
meters
Altitude value for position
position.hdop
number
Horizontal dilution of precision
position.latitude
number
degrees
Latitude coordinate value
position.longitude
number
degrees
Longitude coordinate value
position.satellites
number
Quantity of satellites used to calculate coordinates for given position information
position.speed
number
km/h
Instant speed at position detection moment
position.valid
boolean
Is position information accurate and valid for given timestamp
protocol.id
number
ID of protocol
reboot.event
boolean
Device reboot event
remaining.range
number
km
Current remaining range
right.turm.lamp.status
boolean
Right turn lamp status - true - on, false - off
scooter.battery.level
number
percentage
Scooter battery level
server.timestamp
number
seconds
Timestamp when server received a message
software.version
string
Software version string
speed.mode
number
Current mode of scooter 1:low speed 2:medium speed 3:high speed
timestamp
number
seconds
Message timestamp
trip.driving.time
number
seconds
Single riding time
trip.duration
number
seconds
Trip duration
trip.mileage
number
km
Distance driven since engine start
vendor.code
string
Vendor identification string code
Properties
Custom command
custom
Send custom command to device. Format for R0 and L0 commands : 0xFFFF*SCOS,OM,{ident},{instruction_type},{payload},# Format for other commands with payload: 0xFFFF*SCOS,OM,{ident},{instruction_type},{payload}# Format for commands with no payload: 0xFFFF*SCOS,OM,{ident},{instruction_type}# Note: The following settings are saved after power down.
payload: Comma separated list of parameters to send as payload
instruction_type: 2 letter instruction type
R0 Unlocking/Lock operation request command
{"payload":"0,20,1234","instruction_type":"R0"}
L0 Unlocking command, e.g. 255 value received as key in R0 command
{"payload":"255,1234","instruction_type":"L0"}