Wie IOT-Systeme miteinander sprechen (Teil 1)

Posted on Posted in Technologie

In meiner Masterarbeit über die Supplets habe ich mich viel damit beschäftigt,
wie IOT-Geräte miteinander kommunizieren können bzw. sollten.
Hier möchte ich ein paar meiner Erkenntnisse teilen.

Ein überaus beliebter Standard, der sich zur Zeit bei IOT etabliert heißt Message Queue Telemetry Transport (MQTT).

Das Nachrichtenprotokoll arbeitet nach dem Publish-Subscribe-Prinzip.
Geräte veröffentlichen Informationen (publish) unter bestimmten Überschriften (Topics), die von interessierten Lesern abonniert werden können (subscribe). Alle Nachrichten werden an einen zentralen Rechner, den MQTT-Broker geschickt, der dann für die Auslieferung zuständig ist.
Das interessante an MQTT ist, dass der Absender einer Nachricht den Empfänger nicht kennen muss. Das Prinzip wird auch als lose Kopplung bezeichnet. Nur wie kommt die Nachricht beim Empfänger an?

Zuvor melden sich potentielle Empfänger beim MQTT-Broker und abonnieren (subscribe) bestimmte Nachrichtenüberschriften (Topics).

1. Schritt: Subscribe (Icons von flaticon.com; FreePik & madebyoliver)

Empfängt der Broker nun eine Nachricht mit einem passenden Topic,
wird diese an alle Teilnehmer ausgeliefert, die es abonniert haben.

2. Schritt: Publish (Icons von flaticon.com; FreePik & madebyoliver)

Durch die lose Kopplung können Sender und Empfänger sehr flexibel miteinander sprechen. Ein Temperatursensor veröffentlicht z.B. regelmäßig die Raumtemperatur unter dem Topic livingroom/temperature, unabhängig davon ob sich ein anderes Gerät für die Nachricht interessiert.
In diesem Fall wird sie vom MQTT-Broker einfach ignoriert.
Möchte man ein Thermostat für die automatische Steuerung der Heizung verbinden, kann dieses einfach die Nachricht abonnieren, um auf die aktuelle Raumtemperatur zu reagieren.

Zusätzlich könnte ein Server in der Cloud anhand von vorprogrammierten Regeln bestimmte Nachrichten weiterleiten oder abfangen. Beispiel: WENN die Wohnzimmertür geöffnet wird (=Bewegung in bestimmte Richtung), DANN soll Licht und Strom eingeschaltet werden.

MQTT ist sehr einfach und kann durch Verschlüsselung auch relativ sicher sein. Jedoch geht dadurch auch immer ein Teil der Flexibilität verloren, denn nur Geräte, die den Schlüssel auch kennen, können eine Nachricht verstehen. Die Authentizität einer Nachricht ist ebenfalls ein Problem. Woher soll der Empfänger wissen, wer die Nachricht abgeschickt hat? Das ist z.B. problematisch, wenn ein gefälschter Absender einen falschen Temperaturwert sendet, um absichtlich enorme Heizkosten zu verursachen.
Diese Probleme sind bei so flexiblen Systemen wie MQTT nicht einfach zu lösen.

Das ist jedoch nicht der Grund, weshalb wir uns gegen MQTT entschieden haben. Im nächsten Blog-Eintrag werde ich unsere Lösung für die Supplets vorstellen und die Vorteile gegenüber MQTT erwähnen.

Hier gehts zum nächsten Beitrag

Let’s Supp!

Referenzen

  1. http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
  2. https://www.heise.de/developer/artikel/Kommunikation-ueber-MQTT-3238975.html

Comment Supplets - let's supp!