Read logged history

Lifecycle: Beta. Last updated 2020-12-10

Log read flow

The log read is initiated by central which requests for the type of data and time range of the logs. The log is read with command that has a header destination set to physical quantity being read, source to any and type as a log read. The payload is two 32-bit timestamps, seconds since unix epoch. First timestamp is current time, and second time is the lower bound of log data timestamps. For example if the timestamps are 1567047917 and 1566047917 data from time between 2019-08-13 13:18 and 2019-08-29 03:05 is sent.

The logs are sent in format where header destination is the source of read command, source is the physical quantity and type is log write. Payload is 4 bytes of timestamp and 4 bytes of value. Interpretation of value depends on the type of data, possible types are listed below.

When the log buffer is sent and no more data remains, a special message with the entire payload set to 0xFF is sent. It should be noted that there is no way to send only “missing sections” of data from the middle of the logs, logs are always retrieved to the end of the stored data.

Example communication - read temperature

Device

Header

Payload

Description

Central

0x30 30 11

0x5D6740ED 5D57FEAD

“To: temperature. From: temperature. Action: read log data. Clock is 2019-08-29 03:05 now, start from 2019-08-13 13:18”

Peripheral

0x30 30 10

5D57FEAD 000000098D

“To: temperature. From: temperature. Action: write log data. Temperature at 2019-08-13 13:18 24.45 C“

.

.

.

Log entry

.

.

.

Log Entry

Peripheral

0x30 30 10

0x5D6740ED FFFFF8AC

“To: temperature. From: temperature. Action: write log data. Temperature at 2019-08-29 0305 -18.76 C”

Peripheral

0x30 30 10

0xFFFFFFFF FFFFFFFF

“To: temperature. From: temperature. Action: write log data. No more logs”

Example communication - read all environmental data

Device

Header

Payload

Description

Central

0x3A 3A 11

0x5D6740ED 5D57FEAD

“To: environmental. From: environmental. Action: read log data. Clock is 2019-08-29 03:05 now, start from 2019-08-13 13:18”

Peripheral

0x3A 30 10

5D57FEAD 000000098D

“To: environmental. From: temperature. Action: write log data. Temperature at 2019-08-13 13:18 24.45 C“

Peripheral

0x3A 31 10

5D57FEAD 000000098D

“To: environmental. From: humidity. Action: write log data. Humidity at 2019-08-13 13:18 24.45 RH-%“

Peripheral

0x3A 32 10

5D57FEAD 000000098D

“To: environmental. From: pressure. Action: write log data. Pressure at 2019-08-13 13:18 2445 Pa“

.

.

.

Log entry

.

.

.

Log Entry

.

.

.

Log Entry

Peripheral

0x3A 3A 10

0xFFFFFFFF FFFFFFFF

“To: environmental. From: environmental. Action: write log data. No more logs”

Data endpoints

Endpoint byte

Value

Interpretation

0x30

Temperature

int32_t, 0.01 C per LSB

0x31

Humidity

uint32_t, 0.01 RH-% per LSB

0x32

Air pressure

uint32_t, 1 Pa per LSB

0x3A

All environmental values

Special value which can be used to query all environmental data at once.

Full length data

File below is abbreviated nRF Connect log with some heartbeat transmissions and clutter removed. Log read command was added manually

Timeout

If log read takes over 5 minutes, the tag assumes that it has encourtered an internal error and will send error message with header type 0xF0 and payload set to 0xFF, e.g. 0x 30 30 F0 FF FF FF FF FF FF FF FF . It's safe to resume log read by sending a repeated log read command with start timestamp at the last received element.

Last updated