[TF-TD] encoding formats

Hi Sebastian,

I am in the midst of implementing a Web of Things server in C++ for microcontrollers like the Arduino where memory and packet size are both very limited.  I am therefore looking at ways to use more compact encodings for the messages used between a proxy and the thing it proxies.  In the NodeJS server I’ve started with JSON over Web Sockets, and now want to add support for CoAP and MQTT.

For the microcontroller, I will need to use compact message formats as a means to achieve short messages, and to avoid the memory overhead of JSON. There is a very small Arduino library for CBOR, but I couldn’t find one for EXI.

Given that the server hosting the proxy, and the server hosting the thing being proxied, both have copies of the thing’s model, it should be possible to use the model as a shared symbol table with a view to avoiding the need to send these as strings. I am therefore experimenting with a compact byte code format where symbols can be encoded with a single byte in common situations. I will give more details when it is all working.

It would be interesting to discuss design issues around message encoding formats, e.g. how much memory is needed to support the encoding and decoding, how much CPU effort is needed, and how compact the formats are.

p.s. I am not advocating that the Web of Things have a single encoding format, as I think the choice will depend on the context.  Of course between any pair of servers, they will need to find common protocols, data formats and encodings. If that can’t be done, then in principle, an intermediary could be used to bridge the differences.

p.p.s.  one challenge is to be able to test the server on a powerful computer before installing it on a microcontroller. This is needed for ease of debugging.

Best regards,
—
   Dave Raggett <dsr@w3.org <mailto:dsr@w3.org>>

Received on Tuesday, 30 June 2015 10:20:52 UTC