Create Data Payload Processor (DPP) configuration for a byte payload
- Last UpdatedApr 24, 2025
- 5 minute read
The following example illustrates how to create a Data Payload Processor (DPP) configuration for a payload consisting of a byte string.
Assumption: We assume that we know how the byte string is configured. In our case, it breaks down into the values seen in the table below.
4316000043160000429600004296000041c8000041f00000416bae1400000000
|
Param |
Vol |
Energy |
Press |
Temp |
Elev |
Base Temp |
Atmos Press |
Latitude |
|
Byte |
4316000 |
4316000 |
4296000 |
4296000 |
41c8000 |
41f0000 |
416bae1 |
0000000 |
|
Value |
0 |
0 |
0 |
0 |
0 |
0 |
4 |
0 |
|
Converted Value |
150 |
150 |
75 |
75 |
25 |
30 |
14.73 |
0 |
To create DPP configuration for a byte payload
-
On the DPP Config Tool window, we select New > New Decode Template.
The New Decode Template dialog box opens.

-
We configure the New Decode Template dialog box as shown and save the record.
The Decode Method Template dialog box opens.

-
The first value of our incoming data, as seen in the table above, is Volume (43160000).Therefore, we want to use the Volume parameter:
-
Since we know the incoming data is a byte string, we have to determine the byte ordering (Big Endian or Small Endian) and choose which conversion action we will use. In this case, we have Big Endian byte ordering and we want to convert the bytes to float. Therefore, we change Action to HexAsciiToFloat.
Note: If the raw data payload is using Small Endian, change Action to HexASCIISmallEndian2Float.
-
In the Input Data Type field, we select Byte String.
-
Since we are not using a custom stored procedure or enumerated types, we leave Type as Standard.
-
We skip String Delimiter, as we're dealing with bytes.
-
We determine the Byte Count and Delimiter/Byte Offset by reviewing the byte string:
4316000043160000429600004296000041c8000041f00000416bae1400000000
We know that Volume is 4 bytes, so Byte Count in this case is 4.
We know that Volume is the first 4 bytes of our byte string, so Delimiter/Byte Offset in this case is 0.
-
Finally, since the Source is coming from the Payload column of the rdm_readingRaw table, we enter Payload.
-
-
The next value in the incoming string is Energy (43160000). Therefore, we want to use the Energy parameter in our list:
-
Since we know the incoming data is a byte string, we have to determine the byte ordering (Big Endian or Small Endian) and choose which conversion action we will use. In this case, we have big endian byte ordering and we want to convert the bytes to float. Therefore, we change Action to HexAsciiToFloat.
-
In the Input Data Type field, we select Byte String.
-
Since we are not using a custom stored procedure or enumerated types, we leave Type as Standard.
-
We skip String Delimiter, as we're dealing with bytes.
-
We determine the Byte Count and Delimiter/Bye Offset by reviewing the byte string:
4316000043160000429600004296000041c8000041f00000416bae1400000000
We know that Energy is 4 bytes, so Byte Count in this case is 4.
We know that Energy is the second 4 bytes of our byte string, so Delimiter/Byte Offset in this case is 4.
-
Finally, since the Source is coming from the Payload column of the rdm_readingRaw table, we enter Payload.
-
-
We continue the pattern outlined in the steps above for Energy and Pressure.
In some scenarios, we will need to grab values that don’t come from the Payload. The values may come instead from other columns in the rdm_readingRaw record, or be manually entered. In the example seen in the Decode Method Template dialog box figure above, we are assuming we are getting Obj Name from xmlCommand and hard coding Time Format to "%Y-%m-%d %H:%M:%S".
Since we are getting the Obj Name value from the xmlCommand column, we can leave Action, Input Data Type, and Type as their default values. We can also skip String Delimiter, Byte Count, and Delimiter/Byte Offset, as these fields are only required when you're grabbing a value from Payload.
In the Source column, we're grabbing a value from an xml tag in our rdm_readingRaw record. For example, our xmlCommand could appear as follows:
<commandrequest>
<primary>Meter1</primary>
<starttime>2014-02-01 09:00:00</starttime>
</commandrequest>
Since we want the value inside "primary" (our Obj Name), we would set our Source as commandrequest.primary.
Note: The Source value is case-sensitive.
-
On the DPP Config Tool window, we select New > New Decode Template to create the AGA Parameter Decode Template for Elevation and, after that, Base Temperature, Atmospheric Pressure, and Latitude.
The New Decode Template dialog box opens.

-
We configure the New Decode Template dialog box as shown and save the record.
The Decode Method Template dialog box opens.

-
First, we configure the Decode Method Template dialog box for Elevation and select Save.
Note: For information on determining the Sub Group Name and Item Name, refer to Determine item name and subgroup name.
-
To create the Decode Template for Base Temperature, we change the fields on the Decode Method Template dialog box as required and select Save as New Template (refer to Create a Decode Template from an existing Decode Template).

-
We repeat Step 9 for Atmospheric Pressure and Latitude.
We have now created five Decode Templates for our data. Next, we create a new Decode Define.
-
On the DPP Config Tool window, we select New > New Decode Define.
The New Decode Define dialog box opens.

-
We configure the New Decode Define dialog box as outlined in Create a Decode Define.
The Decode Definition must match the incoming record stringKey. In the decodeDefine table, DPP compares the Definition column to the incoming rdm_readingRaw record's stringKey column.
-
We add the five new Decode Templates created above to the Decode Define and select Save.