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.

Connection process

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 configuration tool (Android app that connects to tracker via Bluetooth) provided by the vendor. There is no way to configure device remotely via SMS or TCP connection commands.

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

Troubleshooting

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
Instruction type H0,
Instruction type S6
battery.level
number
percentage
Internal battery level
Instruction type H0,
Instruction type Q0,
Instruction type S5,
Instruction type S6
battery.lock.status
boolean
Battery lock locked/unlocked status
Instruction type L6
battery.low.alarm
boolean
Battery low alarm event
Instruction type W0
battery.serial
string
Scooter battery serial number
Instruction type L6
battery.voltage
number
volts
Internal battery voltage
Instruction type H0,
Instruction type Q0,
Instruction type S5,
Instruction type S6
bms.serial.number
string
BMS (Battery Management System) serial number
Instruction type M1
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
Instruction type M1
device.type.id
number
ID of device type of device that received a message
disassemble.alarm.status
boolean
Illegal disassembling alarm event status
Instruction type W0
ecu.error.code
string
ECU error code
Instruction type E0,
Instruction type E1
error.type
number
Protocol-specific error identification number
Instruction type H0,
Instruction type S5,
Instruction type S6
error.type.description
string
Protocol-specific error error description string
Error type 1,
Error type 10,
Error type 11,
Error type 13,
Error type 3,
Error type 4,
Error type 6
event.enum
number
Protocol-specific event code
Instruction type S1,
Instruction type W0,
Instruction type W1
external.equipment.state
number
External equipment state
Instruction type L5
external.equipment.type
number
External equipment type
Instruction type L5
fall.alarm.status
boolean
Fall alarm status
Instruction type W0
gsm.mcc
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) country code
Instruction type Q0
gsm.mnc
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) code
Instruction type Q0
gsm.operator.code
string
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) operator code, which is MCC joined with MNC
Instruction type Q0
gsm.signal.level
number
percentage
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) signal strength level
Instruction type H0,
Instruction type Q0,
Instruction type S5,
Instruction type S6
ident
string
Device unique identifier like serial number, IMEI, etc
illegal.movement.alarm
boolean
Illegal movement alarm event
Instruction type W0
indication.mode
string
Position indication mode: A - autonomous, D - differential, E - estimate, N - invalid data
Instruction type D0,
Instruction type D1
lock.status
boolean
Lock status
Instruction type H0,
Instruction type L0,
Instruction type L1,
Instruction type S5,
Instruction type S6
message.type
string
Message type
movement.event
boolean
Movement detected
Instruction type W0
payload.text
string
Text Payload received from device
Instruction type K0,
Instruction type U0,
Instruction type U1,
Instruction type U2,
Instruction type U3,
Instruction type Z0
peer
string
IP:port from which device connecting to the channel
position.altitude
number
meters
Altitude value for position
Instruction type D0,
Instruction type D1
position.hdop
number
Horizontal dilution of precision
Instruction type D0,
Instruction type D1
position.latitude
number
degrees
Latitude coordinate value
Instruction type D0,
Instruction type D1
position.longitude
number
degrees
Longitude coordinate value
Instruction type D0,
Instruction type D1
position.satellites
number
Quantity of satellites used to calculate coordinates for given position information
Instruction type D0,
Instruction type D1,
Instruction type S5
position.speed
number
km/h
Instant speed at position detection moment
Instruction type S6
position.valid
boolean
Is position information accurate and valid for given timestamp
Instruction type D0,
Instruction type D1
protocol.id
number
ID of protocol
reboot.event
boolean
Device reboot event
Instruction type Q38
remaining.range
number
km
Current remaining range
Instruction type S6
report.reason
number
Transmission reason code
Instruction type C0
rfid.card.type
string
RFID card type
Instruction type C0
rfid.code
string
Hexadecimal code of connected RFID
Instruction type C0
server.timestamp
number
seconds
Timestamp when server received a message
software.version
string
Software version string
Instruction type Q0,
Instruction type U0
speed.mode
number
Current mode of scooter 1:low speed 2:medium speed 3:high speed
Instruction type S6
timestamp
number
seconds
Message timestamp
Instruction type D0,
Instruction type D1,
Instruction type L0,
Instruction type L1,
Instruction type Q38
trip.duration
number
seconds
Trip duration
Instruction type L1
trip.mileage
number
km
Distance driven since engine start
Instruction type S6
unlock.timestamp
number
seconds
Bike unlock instruction received timestamp
Instruction type L1
vehicle.state
string
Vehicle state, such as moving, idling, parked etc
Instruction type S6
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"}