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_UNKNOWNERROR_NO_PAYLOADERROR_PAYLOAD_TOO_LONGERROR_ENCRYPTED_NO_KEYERROR_ENCRYPTED_BAD_KEYERROR_PAYLOAD_INVALIDERROR_PAYLOAD_INVALID_SIZEERROR_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_UNKNOWNPOSITION_MODE_RESERVEDPOSITION_MODE_INTERVALPOSITION_MODE_HOMEPOSITION_MODE_AWAYPOSITION_MODE_PPW_SAVEPOSITION_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_UNKNOWNCHAIN_MODE_POSITIONCHAIN_MODE_POWER_SAVECHAIN_MODE_HOMECHAIN_MODE_AWAYCHAIN_MODE_USERCHAIN_MODE_RADIOCHAIN_MODE_MOTION_STARTCHAIN_MODE_MOTION_STOPCHAIN_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_UNKNOWNMOTION_TYPE_STARTMOTION_TYPE_INMOTION_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_UNKNOWNRESET_TYPE_FIRST_BOOTRESET_TYPE_HW_WATCHDOGRESET_TYPE_SW_WATCHDOGRESET_TYPE_SWRESET_TYPE_CPU_LOCKRESET_TYPE_POWER_DETECTRESET_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
}