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.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
IoT-Anwendung mit MQTT und AWS-Cloud steuern

(Bild: dpa, obs/T-Systems)

Lesezeit: 7 Min.
Von
  • Christoph Czaja
  • Eldar Sultanow
Inhaltsverzeichnis

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\.