MQTT Integration Payload Size

I’m currently testing a mqtt client on an embedded device. All is working nicely but the only issue I have is that the payload size is rather large, ~ 1500 bytes JSON.

I have looked at protobuf, but that is more awkward as the protoc generated code itself is rather large and needs to be tailored for every device. The embedded device I’m running it on isn’t linux based, it’s a much simpler microprocessor.

{
  "deduplicationId": "2dbe483b-ee4b-402a-8f4a-129efac46a0d",
  "time": "2024-05-14T20:57:12.510453+00:00",
  "deviceInfo": {
    "tenantId": "52f14cd4-c6f1-4fbd-8f87-4025e1d49242",
    "tenantName": "ChirpStack",
    "applicationId": "f79e217b-9bca-47fd-81b6-0b841bc69202",
    "applicationName": "HA",
    "deviceProfileId": "a898f728-b994-426a-96a4-97f636877292",
    "deviceProfileName": "tabs TBMS100 Motion Sensor (PIR)",
    "deviceName": "tabs TBMS100 Motion Sensor (PIR)",
    "devEui": "e8e1e10001092989",
    "deviceClassEnabled": "CLASS_A",
    "tags": {}
  },
  "devAddr": "019c386d",
  "adr": true,
  "dr": 5,
  "fCnt": 3953,
  "fPort": 102,
  "confirmed": false,
  "data": "AQs3AACeTgA=",
  "object": {
    "time_since_last_event": 0,
    "event_count": 20126,
    "status": 1,
    "battery_voltage": 3.6,
    "temperature": 23
  },
  "rxInfo": [
    {
      "gatewayId": "7076ff0064040264",
      "uplinkId": 19335,
      "gwTime": "2024-05-14T20:57:12.510453+00:00",
      "nsTime": "2024-05-14T20:57:12.534231538+00:00",
      "rssi": -48,
      "snr": 9.2,
      "channel": 1,
      "board": 1,
      "location": {},
      "context": "fTwPkw==",
      "metadata": {
        "region_config_id": "eu868",
        "region_common_name": "EU868"
      },
      "crcStatus": "CRC_OK"
    }
  ],
  "txInfo": {
    "frequency": 867300000,
    "modulation": {
      "lora": {
        "bandwidth": 125000,
        "spreadingFactor": 7,
        "codeRate": "CR_4_5"
      }
    }
  }
}

All I really want out of the payload is the object.
I’m guessing that it isn’t possible right now, but I just wanted to double check.

The easiest approach would be to implement a kind of bridge service, thus:

[ChirpStack] -- MQTT integration JSON data --> [Bridge Service] -- simplified MQTT integration JSON --> [Embedded Device]

Then you have full control over what you are forwarding to your embedded devices.

1 Like

Thought as much, thanks @brocaar!