Markus Tacker
Senior R&D Engineer
Markus.Tacker@NordicSemi.no
Twitter: @coderbyheart
coderbyheart.com
First full time cloud engineer working on nrfcloud.com building Software-as-a-service (Saas) offering.
Application Group to work on on open-source end-to-end examples of real world IoT products.
Typical IoT Data Protocol Configuration
Because the latest state should be immediately visible: buffer data in a Digital Twin.
Cellular IoT devices need to send data about past events: they will be offline most of the time.
{
"v": {
"lng": 10.414394,
"lat": 63.430588,
"acc": 17.127758,
"alt": 221.639832,
"spd": 0.320966,
"hdg": 0
},
"ts": 1566042672382
}
“default” data protocol for IoT (AWS, Azure, Google Cloud)
👍 human readable
👍 schema-less (self-describing)
👎 overhead
GPS location message
02 36 01 37 51 4b 73 2b
d4 24 40 09 68 06 f1 81
1d b7 4f 40 11 68 cd 8f
bf b4 20 31 40 19 e6 5d
f5 80 79 b4 6b 40 21 1a
30 48 fa b4 8a d4 3f 29
00 00 00 00 00 00 00 00
09 00 e0 cf ac f6 c9 76
42
JSON
114 bytes
without newlines
Protocol Buffers
65 bytes (-42%)
source
developers.google.com/protocol-buffers
GPS location message
A2 61 76 A6 63 6C 6E 67
FB 40 24 D4 2B 73 4B 51
37 63 6C 61 74 FB 40 4F
B7 1D 81 F1 06 68 63 61
63 63 FB 40 31 20 B4 BF
8F CD 68 63 61 6C 74 FB
40 6B B4 79 80 F5 5D E6
63 73 70 64 FB 3F D4 8A
B4 FA 48 30 1A 63 68 64
67 00 62 74 73 1B 00 00
01 6C 9F 6A CC FE
JSON
114 bytes
without newlines
CBOR
86 bytes (-24%)
source
Look into denser data protocols!
JSON is for Humans.
common protocol for “ecommerce” cloud vendors
(AWS, Azure, Google Cloud)
for medium throughput applications requiring low power, low latency and/or mobility
for static, low throughput applications requiring low power and long range
Serverless computing allows me to focus on implementing the solution, and not spend time on maintaining the infrastructure needed to execute it.
More detailed analysis: martinfowler.com/articles/serverless.html
Instead of restarting the instance,
I can update an individual function.
Please share your feedback!
Markus.Tacker@NordicSemi.no
Twitter: @coderbyheart
Latest version:
bit.ly/tek03iot