Currently we use JSON SenML for device messaging. Using JSON for telemetry messages for embedded devices is heavy and unsuitable for several reasons:
JSON encoding is not simple for embedded devices. As a matter of fact, I found only one suitable JSON parser for these kind of devices that have no OS (so no system calls) and use their own C stdlib: https://zserge.com/jsmn.html
Binary messages are more compact and this have 2 consequences:
Battery is preserved (as most of the battery is spent on radio Tx bursts)
Bandwidth is cheaper - especially important when you pay cellular monthly plans for CAT-M/NB-IoT
Both of these points (battery and bandwidth price) are crucial.
I agree that this is a good choice, since support of CBOR is part of the SenML specification. Moreover, CBOR is also a proposed standard under RFC 7049.
Currently we use JSON SenML for device messaging. Using JSON for telemetry messages for embedded devices is heavy and unsuitable for several reasons:
Both of these points (battery and bandwidth price) are crucial.
SenML supports CBOR encoding by standard.
Additionally, and related to #367, we can use COSE for security.