IRC-SPHERE / elsts2017-temperature-data

Accompanying datasets for the paper "Temperature-Resilient Time Synchronization for the Internet of Things"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This contains accompanying datasets for the paper:

Atis Elsts, Xenofon Fafoutis, Simon Duquennoy, George Oikonomou, Robert Piechocki and Ian Craddock, Temperature-Resilient Time Synchronization for the Internet of Things, IEEE Transactions on Industrial Informatics.

It contains both temperature measurements (by on-board HDC temperature sensors) in .csv files and the resulting drifts, in form of log outputs generated by the embedded devices.

The experiments used the microsecond-accuracy TSCH branch (source code available at https://github.com/atiselsts/contiki/tree/ptsch). The method is described in:

Elsts, A., Duquennoy, S., Fafoutis, X., Oikonomou, G., Piechocki, R. and Craddock, I., 2016. Microsecond-Accuracy Time Synchronization Using the IEEE 802.15.4 TSCH Protocol. In Local Computer Networks Workshops (LCN Workshops), IEEE 41st Conference on (pp. 156-164). IEEE.

File formats

The CSV files contain the temperature measurements on the sensor nodes.

The log files (.txt) are just the raw logging output of nodes. There are three types of lines one needs to extract:

1494298887.2 > TSCH: {asn-0.575016 link-0-0-0-0 ch-26} drift -65
1494298887.2 > TSCH: {asn-0.575016 link-0-0-0-0 ch-26} bc-0-0 35 rx 131, dr -2 (-24562), edr 2 (24562)
1494298887.4 > TSCH: {asn-0.57502b link-0-0-0-0 ch-20} bc-0-0 35 rx 131, edr 1 (-299)
  • The 1494298887.2 is server time, in seconds.
  • asn-0.575016 is the ASN slot number, in the 5 byte hex notation.
  • drift -65 is the drift estimate of the sensor node, printed in ppm (parts per million) multiplied by 1024. I.e. -65 is approximately -0.065 parts per million. It is only printed after its updated, and it's only updated on synchronization events.
  • dr -2 (-24562), edr 2 (24562) shows that EB packet was received and used for synchronization. 24562 is the corrected synchronization error. It is printed custom units, 1/1024 of a microsecond. Time correction also triggers update of the drift value (which was already printed, in the line before this one). -2 is also the corrected synchronization error, but using rtimer ticks timing. It can be ignored when the more accurate estimate in brackets is available. (There are 5^6 = 15625 units per rtimer tick. -24562 / 15625 = -1.57, which when rounded to integer gives -2).
  • edr 1 (-299) shows that EB packet was received, but not used for syncronization. -299 is the estimated error.

In the experiment, beacons were sent around once per second, but sync only once per several minutes (at least after the initial learning period). So we have few synchronization events, definitely much less than temperature sensing events.

We use these regular expressions to parse the lines (the server time is ignored):

regex_drift_value = ".*TSCH: {asn-([0-9a-f])\.([0-9a-f]+) .*} drift (-?[0-9]+)$"
regex_edr_line = ".*TSCH: {asn-([0-9a-f])\.([0-9a-f]+) .*} bc-.* rx 131, edr -?[0-9]+ \((-?[0-9]+)\)$"
regex_dr_line = ".*TSCH: {asn-([0-9a-f])\.([0-9a-f]+) .*} bc-.* rx 131, dr -?[0-9]+ \((-?[0-9]+)\), edr -?[0-9]+ \((-?[0-9]+)\)$"

About

Accompanying datasets for the paper "Temperature-Resilient Time Synchronization for the Internet of Things"