MO
Mobile Originated (MO) Messages from the Device
Cloudloop will receive messages from Iridium Edge Solar devices and attempt to decode the message. This decoded message is then contained within the json shown in Cloudloop Data. Below is the embedded structure of the message decoding response.
Structure
status
- If the Message was successfully decoded - true/falseerror[]
- Where false, one or more reason for failure (if known)ERROR_UNKNOWN
ERROR_NO_PAYLOAD
ERROR_PAYLOAD_TOO_LONG
ERROR_ENCRYPTED_NO_KEY
ERROR_ENCRYPTED_BAD_KEY
ERROR_PAYLOAD_INVALID
ERROR_PAYLOAD_INVALID_SIZE
ERROR_DECRYPTING_PAYLOAD
message
- The top level Edge Solar message containermo
- Mobile Originated (MO) Messageposition
- Iridium Edge Solar Device LocationchainedMessage
- Chained position messagesuserPosition
- Location Appended with User DataradioSilenceIn
- Magnet Insertion Message. Entering Storage ModeradioSilenceOut
- Magnet Removal Message. Entering Operating Modemotion
- Vibration-based motion messagenullGps
- Message Event Completed but GPS Location Failedengineering
- Device operation datatlv
- Type-Length-Value message (includes: config updated, NAK, user data)
Messages
Depending on the type of Message, one of the following Message objects will be populated...
Position Report
[position]
The most widely consumed Message type, representing a single position report.
{
"powerSave": false,
"secondaryOver50": false,
"fix3d": false,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"vibration": false,
"positionMode": "POSITION_MODE_INTERVAL",
"heading": 0,
"speed": 0,
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
}
}
The position mode options are:
POSITION_MODE_UNKNOWN
POSITION_MODE_RESERVED
POSITION_MODE_INTERVAL
POSITION_MODE_HOME
POSITION_MODE_AWAY
POSITION_MODE_PPW_SAVE
POSITION_MODE_USER
Chained Message
[chainedMessage]
Iridium Edge Solar Encrypted Chained Position Message contains a series of location reports in the same structure as the unencrypted chained message.
{
"positionMessage": {
"powerSave": false,
"secondaryOver50": false,
"fix3d": true,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"vibration": true,
"positionMode": "POSITION_MODE_INTERVAL",
"heading": 0,
"speed": 0,
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 4,
"Minute": 39,
"Second": 36
}
}
},
"chainLink": [
{
"timeIncrement": "CHAIN_INCREMENT_MINUTES_15",
"timeMultiplier": 12,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"speed": 0,
"mode": "CHAIN_MODE_POSITION",
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
}
},
{
"timeIncrement": "CHAIN_INCREMENT_HOURS_1",
"timeMultiplier": 17,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"speed": 0,
"mode": "CHAIN_MODE_POSITION",
"at": {
"date": {
"Day": 24,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 8,
"Minute": 39,
"Second": 36
}
}
}
]
}
The chain mode options are:
CHAIN_MODE_UNKNOWN
CHAIN_MODE_POSITION
CHAIN_MODE_POWER_SAVE
CHAIN_MODE_HOME
CHAIN_MODE_AWAY
CHAIN_MODE_USER
CHAIN_MODE_RADIO
CHAIN_MODE_MOTION_START
CHAIN_MODE_MOTION_STOP
CHAIN_MODE_IN_MOTION
User Position
[userPosition]
The Iridium Edge Solar will initiate a User Position Message in response to a Send User Position command received over Bluetooth or any other network command.
{
"messageCount": 1,
"fix3d": true,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"userMessage": "Hello",
"time": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
},
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
}
}
Radio Silence In
[radioSilenceIn]
The Iridium Edge Solar will transmit a single message directly before going into a radio silent (dormant) state.
{
"messageCount": 1,
"magTrigger": true
}
Radio Silence Out
[radioSilenceOut]
The Iridium Edge Solar will report when it comes out of the radio silent state.
{
"messageCount": 1,
"fix3d": true,
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"magTrigger": true,
"timedOut": false,
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
}
}
Motion Messages
[motion]
The Iridium Edge Solar may transmit three distinct motion triggers if enabled for Vibration Based Motion Reporting (VBMR). These three message types denote start of motion, end of motion , or in motion.
{
"messageCount": 1,
"fix3d": true,
"type": "MOTION_TYPE_START",
"latitude": 50.87766102282679,
"longitude": -1.252245343435237,
"time": {
"Hour": 12,
"Minute": 0,
"Second": 0
},
"heading": 270,
"speed": 100,
"at": {
"date": {
"Day": 25,
"Month": 10,
"Year": 2023
},
"time": {
"Hour": 1,
"Minute": 39,
"Second": 36
}
}
}
The motion types options are:
MOTION_TYPE_UNKNOWN
MOTION_TYPE_START
MOTION_TYPE_IN
MOTION_TYPE_STOP
Null GPS
[nullGps]
The Iridium Edge Solar may issue a Null GPS Message when it fails to ascertain a GPS location.
{
"powerSave": true,
"origEventId": "IQ==",
"searchTime": 16,
"failCount": 177,
"origEvent": "EjQ="
}
Engineering Report
[engineering]
The Iridium Edge Solar collects data for device operation and reports this data on a scheduled interval as configured.
{
"changeCounter": 1,
"gpsFailureRatio": 22.5,
"averageGpsFix": 5,
"averageSvFix": 3,
"averageHdop": 161,
"powerSaveRatio": 26.8,
"resetType": "RESET_TYPE_HW_WATCHDOG",
"acquisitionFailure": 26.8,
"tsNetworkFailure": 6.7,
"transmitCount": 35,
"averageAcquisitionTime": 17,
"averageTxTime": 1,
"averageRssi": 2,
"primaryBatteryCharge": 3,
"secondBatteryCharge": 4,
"secondSurplus": -32,
"secondUseTime": 6,
"maximumTemperature": 7,
"minimumTemperature": 8,
"averageTemperature": 9,
"xAcc": 0.0,
"yAcc": 0.0,
"zAcc": 0.0,
"averageLux": 800,
"maToLux": 10,
"statusFlag": 0
}
The reset type options are:
RESET_TYPE_UNKNOWN
RESET_TYPE_FIRST_BOOT
RESET_TYPE_HW_WATCHDOG
RESET_TYPE_SW_WATCHDOG
RESET_TYPE_SW
RESET_TYPE_CPU_LOCK
RESET_TYPE_POWER_DETECT
RESET_TYPE_POWER_ON_RESET
Type-Length-Value
[tlv]
TLV decoding includes the ability to decode multiple tuples within the same message and store them in an array.
Plain TLV
The Iridium Edge Solar can send TLV (type - length - value) data with a checksum.
{
"values": [
{
"plain": {
"type": 1,
"length": 2,
"message": "AgM="
}
},
{
"plain": {
"type": 2,
"length": 2,
"message": "AwM="
}
}
],
"checksum": 21580
}
Config Updated
The Iridium Edge Solar Config Updated TLV Tuple is a MO acknowledgement of a device configuration change.
{
"values": [
{
"configUpdated": {
"commandType": 42,
"statusCode": 0
}
}
],
"checksum": 41178
}
NAK
The Iridium Edge Solar will send a MO TLV NAK Message on receipt of any MT command that cannot be decoded.
{
"values": [
{
"nak": {
"message": "BQ=="
}
}
],
"checksum": 41178
}
User Data
The Iridium Edge Solar can receive data from a nearby sensor sending data via Bluetooth, then relay that data over the Iridium network as a User Data Message.
{
"values": [
{
"userData": {
"message": "AAECAwEC"
}
}
],
"checksum": 41178
}