Session: Data Formats for the IoT

Sessiongeber / Eckdaten

Namen Sessiongeber: Andreas Schmidt
Twitter: @schmidt75
Firma: thing forward
Websites: www.thingforward.io
Art der Veranstaltung: Vortrag / Diskussion Teilnehmerzahl: 14

Verlauf / Inhalte der Session

Mögliche Inhalte der Dokumentation zur Orientierung:

  • Ausgangslage (Um was geht es in der Session?): Vorstellung einer Programmiersprache für Kleinstgeräte
  • Fragen (Welche Fragen / Probleme gibt es)?: Wie lassen sich große Rohdaten reduzieren?
  • Ideen (Welche Lösungen wurden vorgeschlagen)?: Binärcodes könnten die Lösung sein

Weiterführende Links

Der Sessiongeber beschäftigte sich mit der Frage, wie Kleinstgeräte, die über eine Batterie mit Strom versorgt werden und wenig Leistung haben, dennoch am Netzwerk teilnehmen und funktionieren können. Denn das Problem ist, dass die meisten Programmiersprachen zu umfangreich sind für kleine Geräte und damit zu viel Speicherplatz benötigen. Für Bereiche, die das Internet of Things betreffen, sind sie damit nicht geeignet.

Andreas erläutert anhand von drei gängigen Klassen, warum die Programmiersprachen zu groß sind:

1.  Tiny

  • Typical 8-bit MCUs
  • Few KBs of Flash RAM und/oder SRAM
  • Langsame Geschwindigkeit, kleiner Arbeitsspeicher

2.  Small

  • Darunter fallen Kleinstgeräte, die 32 Bits MCUs haben. Diese haben ein eigenes Netzwerk.
  • Damit lässt sich jedoch kein operatives System umsetzen.

3.  Medium

  • Als Medium wird beispielsweise der Raspberry Pi einsortiert. Verfügbar sind Größen mit 32 oder 64 Bit-Chips. Diese verfügen über einen großen Speicher von 1 GB. Sie sind in der Lage, vielfältig zu netzwerken, und können wie ein Notebook am Netzwerk teilnehmen.

Da Kleinstgeräte, die am Netzwerk teilnehmen sollen, nur wenig Speicherplatz und Leistung haben, braucht es eine Lösung. Eine mögliche Lösung dafür könnten Binärcodes sein.

Protokolle und Datenformate können dann genutzt werden, wenn klar ist, von welcher Größe gesprochen wird. Die Unterscheidungen sind dabei signifikant. Wichtig bei den Datensätzen ist sowohl Struktur als auch Semantik. Gängige Datenformate sind derzeit JSON, YAML, XML. Die komplette serverseitige Datenverarbeitung im Web basiert darauf.

Problematik

Problem ist, dass komplexe Daten schwer zu verarbeiten und die gängigen Sprachen nicht gut geeignet sind für IoT. Beispielsweise ist XML ein großes und komplexes Datenformat. Manchmal erschweren zudem schlechte Bandbreiten die Arbeit von Kleinstgeräten für das IoT.

Schwierig ist auch die Ergänzung von dynamischen Speichern. Hier ist nur eine statische Umsetzung möglich. Voraussetzung dafür ist eine effiziente Nutzung des Speicherplatzes, doch dafür braucht es einen Parser, der auch auf ein Kleingerät passt. Und dieser muss robust genug sein, um sowohl Industriestandards als auch Schemata (wie dem XML-Schemata) eine Validierung zu ermöglichen.

Lösung

Binärformate können helfen. Sie sind platzeffizient, nutzen einen „kleinen“ Code von Parsern, sind sicher und robust genug, um auch mit „malformed input“ umgehen zu können, und sie unterstützen Schemata.

Es gibt verschiedene Binärvarianten, z. B.:

  • MessagePack (msgpack)
  • Concise Binary Object Representation (CBOR)
  • Thrift
  • Protocol Buffers (protobuf)
  • Efficient XML Interchange (EXI)

Sie bieten sich an als Alternative zu den gängigen Programmiersprachen.

Fazit

Binärformate sind für eingeschränkte Geräte sinnvoll, weil sie die Rohdaten sehr klein halten. Hier kann ein Netzwerken stattfinden, da die Datenformate mit Binärcode praktisch umgewandelt werden können.