Skip to content

Message Formats

Network Survey uses standardized message formats defined in the Network Survey Messaging library. This ensures consistency across MQTT (JSON) and gRPC (protobuf) protocols.

Network Survey streams data in two formats:

  • MQTT - JSON format (human-readable, larger size)
  • gRPC - Protocol Buffers format (binary, compact, ~60% smaller)

Both formats use the same underlying message definitions from the Network Survey Messaging library.

Network Survey sends different message types for each technology:

  • Cellular: GsmRecord, CdmaRecord, UmtsRecord, LteRecord, NrRecord
  • Wi-Fi: WifiBeaconRecord
  • Bluetooth: BluetoothRecord
  • GNSS: GnssRecord
  • Device Status: DeviceStatusMessage
  • Phone State: PhoneStateMessage

Each message type has specific fields for that technology (e.g., MCC/MNC for cellular, SSID/BSSID for Wi-Fi).

Here’s what an MQTT message looks like (LTE cellular record):

{
"version": "1.9.0",
"messageType": "LteRecord",
"data": {
"deviceSerialNumber": "1234",
"deviceName": "Craxiom Pixel",
"deviceTime": "1996-12-19T16:39:57-08:00",
"latitude": 51.470334,
"longitude": -0.486594,
"altitude": 13.3,
"speed": 9.3,
"missionId": "Survey1 20200724-154325",
"recordNumber": 1,
"groupNumber": 1,
"accuracy": 40,
"locationAge": 1000,
"heading": 32.7,
"pitch": -0.1,
"roll": 0.15,
"fieldOfView": 40,
"receiverSensitivity": -50,
"mcc": 311,
"mnc": 480,
"tac": 52803,
"eci": 52824577,
"earfcn": 5230,
"pci": 234,
"rsrp": -107,
"rsrq": -11,
"snr": 19,
"ta": 27,
"signalStrength": -73.1,
"cqi": 7,
"servingCell": true,
"lteBandwidth": "MHZ_10",
"provider": "Verizon",
"slot": 2
}
}

Key elements:

  • version - Message format version
  • messageType - Type of record (LteRecord, WifiBeaconRecord, etc.)
  • data - The actual message payload with all fields

For detailed information on all message formats, fields, and usage, visit:

The official Network Survey Messaging documentation includes:

  • Complete field definitions for all message types
  • Detailed field descriptions including data types, ranges, and optional fields
  • Message versioning and compatibility information

The GitHub repository provides:

  • Protocol Buffer source files (.proto)
  • Java library for working with the message API
  • Version history and release notes