Menü
iX Magazin

IoT-Anwendung mit MQTT und AWS-Cloud steuern

Vom Client bis zum Backend: Wir richten im Beispiel einen Java-basierten Temperatursensor so ein, sodass man ihn über Amazons AWS-Cloud steuern kann.

vorlesen Drucken Kommentare lesen
IoT-Anwendung mit MQTT und AWS-Cloud steuern

(Bild: dpa, obs/T-Systems)

Das folgende Szenario kombiniert IoT-Client, Message-Broker, Backend und Frontend. Es beschreibt einen in den Branchen Hausautomation, Lebensmittel, Pharma und Logistik typischen Anwendungsfall: die sensorische Temperaturüberwachung. Komponenten sind ein MQTT-Client (AWS IoT bietet eine eigene MQTT-Infrastruktur einschließlich eines MQTT-Clients), ein MQTT-Message-Broker (von AWS IoT), eine Datenbank (die auf Cassandra basierende Zeitreihendatenbank KairosDB) und ein Frontend zum Anzeigen der Sensordaten (Grafana).

Um einen Client zu entwickeln, der mit dem Message-Broker in der AWS-Cloud kommuniziert, benötigt der Entwickler das AWS IoT Device SDK. Entweder erstellt er in Eclipse ein Maven-Projekt mit den Abhängigkeiten aws-iot-device-sdk-java und aws-iot-device-sdk-java-samples oder er bezieht sie als Java Archive von GitHub. Der folgende Codeausschnitt zeigt, wie der MQTT-Client Nachrichten an die AWS-Cloud sendet.

private AWSIotMqttClient getClient() {
  if (this.client == null) {
    KeyStorePasswordPair pair = SampleUtil.getKeyStorePasswordPair(this.certificateFile, this.privateKeyFile);
    this.client = new AWSIotMqttClient(this.clientEndpoint, this.clientId, pair.keyStore, pair.keyPassword);
    this.client.connect();
  }
  return this.client;
}
protected void publish(String topic, Map<String, Object> payload) {
  NonBlockingMessage message = new NonBlockingMessage(
                         topic, this.qos, getObjectMapper().writeValueAsString(payload));
  getClient().publish(message, this.timeout);
}

AWS sichert die Client-Server-Kommunikation über Zertifikate ab. Dieses Feature muss man nicht selbst programmieren, man kann (wie im Beispiel) die vorgefertigten Funktionen des AWS IoT Device SDK nehmen. Kopien von Clientzertifikat und privatem Schlüssel landen im Verzeichnis src\test\resources\.

Immer mehr Wissen. Das digitale Abo für IT und Technik.

  • Zugriff auf alle Inhalte von heise+
  • exklusive Tests, Ratgeber & Hintergründe: unabhängig, kritisch fundiert
  • c't, iX, Technology Review, Mac & i, Make, c't Fotografie direkt im Browser lesen
  • einmal anmelden – auf allen Geräten lesen - jederzeit kündbar
  • erster Monat gratis, danach monatlich 9,95 €
  • Wöchentlicher Newsletter mit persönlichen Leseempfehlungen des Chefredakteurs
GRATIS-Monat beginnen Jetzt GRATIS-Monat beginnen Mehr Informationen zu heise+