Okai protocol

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.

To make the device configurator (settings in Setbox) work properly for Okai devices, make sure to specify the password in device configuration — either the default one (set by the manufacturer) or the one you specified instead.

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.low.status
boolean
Backup battery low
backup.battery.status
boolean
Backup battery usage status
backup.battery.voltage
number
volts
Backup battery voltage
battery.capacity.full
number
Ah
Full battery capacity
battery.capacity.remaining
number
Ah
Remaining battery capacity
battery.charging.status
boolean
Battery charging status
battery.health
number
percentage
Battery health level (SoH)
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.lock.position.status
boolean
Battery lock position status
battery.lock.status
boolean
Battery lock locked/unlocked status
battery.pack.number
number
Primary or Secondary battery pack number
battery.parallel.number
number
Number of batteries in parallel
battery.serial
string
Scooter battery serial number
battery.series.number
number
Number of batteries in series
battery.voltage
number
volts
Internal battery voltage
ble.beacons
array
Array with all detected BLE beacons data objects. Each object contain list of assosiated parameteres sent by appropriate beacon. Standard parameter names used: *id* - beacon identification string. Usually it is beacon's UUID or MAC-address *local_name* - Beacons's Local Name *rssi* - BLE signal level. Units = dBm *battery.voltage* - Beacon's battery voltage. Units = volts *battery.level* - Beacon's battery level. Units = percentage *temperature* - Beacon's temperature. Units = celsius
bluetooth.version
string
Bluetooth version
channel.id
number
ID of channel that received a message
condition.limit
string
Current restrictions on using scooters
device.firmware.version
string
Firmware revision
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
external.powersource.voltage
number
volts
External power voltage
file.upload.state
number
File upload result code
firmware.update.code
number
Firmware update confirmation code
frames.count
number
The number of acceleration data frames contained in the message
geofence.id
number
Geofence ID
gps.module.version
string
GPS module version
gsm.cellid
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) base station ID
gsm.lac
number
Mobile network (GSM, 3G, 4G, LTE, 5G, ...) location area 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.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 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
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
horseshoe.lock.status
boolean
Horseshoe lock status
hub.lock.status
boolean
Hub lock status
ident
string
Device unique identifier like serial number, IMEI, etc
left.brake
number
Left brake value
max.battery.temperature
number
celsius
Maximum battery temperature
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
min.battery.temperature
number
celsius
Minimum battery temperature
modem.firmware.version
string
Firmware version of the modem
modem.hardware.version
string
Firmware hardware of the modem
motion.data.count
number
Motion data samples count
movement.status
boolean
Current movement state
mqtt.will.message
string
MQTT Will message
network.signal.rssi
number
dbm
Network signal strength
nfc.code
string
NFC card code (UID)
peak.battery.current
number
amperes
Peal battery current
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
pile.lock.status
boolean
Pile lock status
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
scooter.battery.level
number
percentage
Scooter battery level
scooter.firmware.version
string
Scooter firmware version
scooter.hardware.version
string
Scooter hardware version
sensor.temperature
number
celsius
Temperature sensor value
server.timestamp
number
seconds
Timestamp when server received a message
shutdown.alarm
boolean
Shutdown alarm event
spare.lock.firmware.version
string
Spare lock firmware version
spare.lock.hardware.version
string
Spare lock hardware version
speed.handle
number
Speed handle value
task.code
string
Task code
throttle.status
boolean
Throttle status
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
wait_ack: Wait ACK
Reboot the device
{"cmd":"GTRTO","payload":"3,,,0,,,,","password":"mypass"}