Okai protocol

Integration level: params + settings
Protocol used by electric scooters and bikes manufactured by Okai headquartered in Germany.
flespi parses the Okai protocol messages into a JSON object with the fields listed below in the Parameters tab.

To connect your scooter using the Okai protocol, you need to have a okai 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 scooter and use a 15-character IMEI in the ident field.

Use the Toolbox tab on the device screen to check if the messages are coming.

It is possible to configure Okai scooters OTA using the flespi web-based configurator tool. To connect Okai to Wialon or another platform via flespi please read this article.

acceleration.array
array
g
Array of objects with acceleration data by x, y, and z axis
alive.status
boolean
Scooter alive status: true - riding enabled, false - riding disabled
backup.battery.level
number
percentage
Backup battery level
backup.battery.status
boolean
Backup battery usage status: false - main power is used, true - backup battery is used
backup.battery.voltage
number
volts
Backup battery voltage
battery.charging.status
boolean
Battery charging status
battery.level
number
percentage
Internal battery level
battery.lock.firmware.version
string
Battery lock firmware version
battery.lock.hardware.version
string
Battery lock hardware version
battery.serial
string
Scooter battery serial number
battery.voltage
number
volts
Internal battery voltage
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.self.name
string
Device name reported by the device
device.type.id
number
ID of device type of device that received a message
ecu.battery.charging.status
boolean
Scooter battery charging status, read from ECU
ecu.battery.lock.door.status
boolean
Battery lock door opened/closed status, read from ECU
ecu.battery.lock.status
boolean
Battery lock locked/unlocked status, read from ECU
ecu.bell.button.status
boolean
Bell button pressed/released status read from ECU
ecu.charging.status
boolean
Scooter battery charging status read from ECU: true - charging, false - not charging
ecu.current.mileage
number
km
Current mileage read from ECU
ecu.error.code
string
ECU error code
ecu.error.type
number
ECU error type
ecu.firmware.version
string
ECU firmware version
ecu.hardware.version
string
ECU hardware version
ecu.head.light.status
boolean
Head light status read from ECU: true - ON, false - OFF
ecu.key.status
boolean
Key status read from ECU: true - pressed, false - not pressed
ecu.lock.status
boolean
ECU lock status: true - locked, false - unlocked
ecu.rear.light.status
boolean
Rear light status read from ECU: true - ON, false - OFF
ecu.remaining.mileage
number
km
Remaining mileage read from ECU
ecu.ride.time
number
seconds
Time of riding read from ECU
ecu.speed
number
km/h
Current speed read from ECU
ecu.total.mileage
number
km
Total mileage read from ECU
frames.count
number
The number of acceleration data frames contained in the message
gsm.cellid
number
GSM base station ID
gsm.lac
number
GSM location area code
gsm.mcc
string
GSM mobile country code
gsm.mnc
string
GSM mobile network code
gsm.network.type
string
The type of the mobile network the device is currently registered to
gsm.signal.quality
number
The quality (bit error rate) of GSM signal
helmet.box.door.status
boolean
Helmet box door opened status
helmet.box.lock.firmware.version
string
Helmet box lock firmware version
helmet.box.lock.hardware.version
string
Helmet box lock hardware version
helmet.box.lock.status
boolean
Helmet box locked status
helmet.exists.status
boolean
Helmet exists status
helmet.id
string
Helmet ID
helmet.recognition.status
boolean
Helmet ID recognition status, true - the same, false - not the same
ident
string
Device unique identifier like serial number, IMEI, etc
left.brake
number
Left brake value
mechanical.lock.event
number
Mechanical lock event type
mechanical.lock.status
boolean
Mechanical lock state: true - locked, false - unlocked
mechanical.lock.type
number
Type of mechanical lock
motion.data.count
number
Motion data samples count
movement.status
boolean
Current movement state
network.signal.rssi
number
dbm
Network signal strength
peer
string
IP:port from which device connecting to the channel
pile.lock.firmware.version
string
Pile lock firmware version
pile.lock.hardware.version
string
Pile lock hardware version
position.altitude
number
meters
Altitude value for position
position.direction
number
degrees
Heading angle at position detection moment
position.hdop
number
Horizontal dilution of precision
position.latitude
number
degrees
Latitude coordinate value
position.longitude
number
degrees
Longitude coordinate value
position.speed
number
km/h
Instant speed at position detection moment
position.timestamp
number
seconds
Timestamp when coordinates where calculated
power.on.status
boolean
Power-on device status
protocol.id
number
ID of protocol
protocol.version
string
Protocol version string
qr.code
string
QR code of the device
report.code
string
Report code
report.reason
number
Transmission reason code
right.brake
number
Right brake value
sensor.temperature
number
celsius
Temperature sensor value
server.timestamp
number
seconds
Timestamp when server received a message
spare.lock.firmware.version
string
Spare lock firmware version
spare.lock.hardware.version
string
Spare lock hardware version
speed.handle
number
Speed handle value
timestamp
number
seconds
Message timestamp
vehicle.vin
string
VIN of vehicle
Properties
AT Command
custom
Send custom AT command to device
cmd: Command to send, after AT+
payload: Command payload after password and up to count number: ',FFFF$' will be appended automatically by server
password: Device password
Reboot the device
{"cmd":"GTRTO","payload":"3,,,0,,,,","password":"mypass"}