ua2json

ua2json is a command line tool to translate between OPC UA JSON encoding and OPC UA binary encoding. ua2json follows the tradition of shell-based unix-tools and provides translation between the binary and JSON encoding formats of OPC UA messages as a reusable building block. Input can be piped through ua2json from stdin to stdout. File input and output is possible as well.

At the core of the OPC UA protocol lies a type system in which the protocol messages are defined. The built-in data types include integers, strings, and so on. From these, more complex structures are assembled. For example the ReadRequest and ReadResponse message pair.

Usage

Usage: ua2json [encode|decode] [-t dataType] [-o outputFile] [inputFile]
- encode/decode: Translate UA binary input to UA JSON / Translate UA JSON input to UA binary (required)
- dataType: UA DataType of the input (default: Variant)
- outputFile: Output target (default: write to stdout)
- inputFile: Input source (default: read from stdin)

Examples

Take the following JSON encoding of a Variant data type instance with a 2x4 matrix of numerical values. Variants can encapsulate scalars and multi-dimensional arrays of any data type.

{
    "Type": 3,
    "Body": [1,2,3,4,5,6,7,8],
    "Dimension": [2, 4]
}

Piping this JSON-encoding through ua2json (and the xxd tool to print the output as hex) yields the binary OPC UA encoding.

$ cat variant.json | ua2json decode -t Variant | xxd
00000000: c308 0000 0001 0203 0405 0607 0802 0000  ................
00000010: 0002 0000 0004 0000 00                   .........

The inverse transformation returns the original JSON (modulo pretty-printing).

$ cat variant.bin | ua2json encode -t Variant