Omni protocol

Protocol used by IoT scooters manufactured by Omni headquartered in China.
flespi parses the Omni 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 Omni e-scooters as well as manage them remotely via the API.

To connect your scooter using the Omni protocol, you need to have an omni 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 Toolbox tab on the device screen to check if the messages are coming.

If you see parsing errors (red lines in Logs & Messages tab) of the channel or device - make sure you selected correct device type. For omni protocol it is crucial to specify for the device correct type because the authentication packet is the same for all models, but during normal operation the content of other packets is often slightly different with different number of fields and their meaning.

If you are not sure which type of device to choose - try different types and check if one of them will work correctly. If you will continue experiencing problems - contact our team in the flespi chat with correct protocol document attached to schedule the integration.

battery.charging.status
boolean
Battery charging status
battery.level
number
percentage
Internal battery level
battery.lock.status
boolean
Battery lock locked/unlocked status
battery.low.alarm
boolean
Battery low alarm event
battery.serial
string
Scooter battery serial number
battery.voltage
number
volts
Internal battery voltage
bms.serial.number
string
BMS (Battery Management System) serial number
channel.id
number
ID of channel that received a message
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.status
boolean
Illegal disassembling alarm event status
ecu.error.code
string
ECU error code
error.type
number
Protocol-specific error identification number
error.type.description
string
Protocol-specific error error description string
event.enum
number
Protocol-specific event code
external.equipment.state
number
External equipment state
external.equipment.type
number
External equipment type
fall.alarm.status
boolean
Fall alarm status
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
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
lock.status
boolean
Lock status
message.type
string
Message type
movement.event
boolean
Movement detected
payload.text
string
Text Payload received from device
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
report.reason
number
Transmission reason code
rfid.card.type
string
RFID card type
rfid.code
string
Hexadecimal code of connected RFID
server.timestamp
number
seconds
Timestamp when server received a message
software.version
string
Software version string
timestamp
number
seconds
Message timestamp
trip.duration
number
seconds
Trip duration
trip.mileage
number
km
Distance driven since engine start
unlock.timestamp
number
seconds
Bike unlock instruction received timestamp
vehicle.state
string
Vehicle state, such as moving, idling, parked etc
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
D0 - Get position instruction
{"instruction_type":"D0"}
I0 - Get the SIM card ICCID number
{"instruction_type":"I0"}
S6 - Obtain scooter information command
{"instruction_type":"S6"}
D1 Upload positioning interval 60 seconds
{"payload":"60","instruction_type":"D1"}
R0 Unlocking/Lock operation request command
{"payload":"0,20,1234","instruction_type":"R0"}
V0 Beep playback commands: 2: Find a scooter alert
{"payload":"2","instruction_type":"V0"}
L0 Unlocking command, e.g. 255 value received as key in R0 command
{"payload":"255,1234","instruction_type":"L0"}
S7 Scooter setting instruction 1 command: headlight switch ON, mode high speed, throttle ignore, taillights flashing shut down
{"payload":"1,3,0,1","instruction_type":"S7"}