Data Strip

This module is not ready for use.

This module is efficient and versatile, but rather complicated to use. Perhaps it would be better to transmit small JSON records with a timestamp, and organize that data by days and years, or a template to decode i8/u8 - i64/u64 integers, float32, float64, text, dates, and boolean values.

Low-bandwidth sensor data can efficiently be transmitted via UDP.

Every UDP device may send a data strip. To enable the strip, add a data strip entry to the account configuration:

{"key": "...", "data strip": document(), "...": null}

The data strip document may be empty.

Conceptually, the data strip is a ribbon of 264 bytes, to which the UDP device may write arbitrary (binary) data. The UDP device may use any parts of the strip, although contiguous ranges yield better performance than random chunks here and there.

When receiving a chunk of data, the server writes a new blob, and links it to the data stream. The data stream document has the following structure:

{"writes": 43, "chunks": [{"#b": randomHex(8) + "…", "offset": 1685059200000, "length": 1200}, {"#b": randomHex(8) + "…", "offset": 1685059201200, "length": 1200}, {"#b": randomHex(8) + "…", "offset": 1685059202400, "length": 1200}, "..."], "...": null}

As more chunks are coming in, the server condenses contiguous ranges to blobs of up to 100 MB:

{"writes": 2, "chunks": [{"#b": randomHex(8) + "…", "offset": 1685059200000, "length": 76800}, {"#b": randomHex(8) + "…", "offset": 1685059276800, "length": 1200}, "..."], "...": null}

Later chunks overwrite earlier chunks. The application processing the data may freely modify the data stream document.

UDP Request

Request

			
Response

			

Writes a chunk of (sensor) data to the data strip.