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.
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 thedrift
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]+)\)$"