![JAR search and dependency download from the Maven repository](/logo.png)
com.amazonaws.services.iot.client.sample.shadow.ShadowSample Maven / Gradle / Ivy
/*
* Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.iot.client.sample.shadow;
import com.amazonaws.services.iot.client.AWSIotConnectionStatus;
import com.amazonaws.services.iot.client.AWSIotDevice;
import com.amazonaws.services.iot.client.AWSIotException;
import com.amazonaws.services.iot.client.AWSIotMessage;
import com.amazonaws.services.iot.client.AWSIotMqttClient;
import com.amazonaws.services.iot.client.AWSIotQos;
import com.amazonaws.services.iot.client.sample.sampleUtil.CommandArguments;
import com.amazonaws.services.iot.client.sample.sampleUtil.SampleUtil;
import com.amazonaws.services.iot.client.sample.sampleUtil.SampleUtil.KeyStorePasswordPair;
/**
* This example demonstrates how to use {@link AWSIotMqttClient} and a derived
* {@link AWSIotDevice} to keep the device connected with its shadow in the
* cloud. This is the recommended way of accessing a shadow and keeping it
* synchronized with the device. The only thing the application needs to provide
* in the derived class is the annotated device properties and their
* corresponding getter and setter methods.
*/
public class ShadowSample {
private static AWSIotMqttClient awsIotClient;
public static void setClient(AWSIotMqttClient client) {
awsIotClient = client;
}
private static void initClient(CommandArguments arguments) {
String clientEndpoint = arguments.getNotNull("clientEndpoint", SampleUtil.getConfig("clientEndpoint"));
String clientId = arguments.getNotNull("clientId", SampleUtil.getConfig("clientId"));
String certificateFile = arguments.get("certificateFile", SampleUtil.getConfig("certificateFile"));
String privateKeyFile = arguments.get("privateKeyFile", SampleUtil.getConfig("privateKeyFile"));
if (awsIotClient == null && certificateFile != null && privateKeyFile != null) {
String algorithm = arguments.get("keyAlgorithm", SampleUtil.getConfig("keyAlgorithm"));
KeyStorePasswordPair pair = SampleUtil.getKeyStorePasswordPair(certificateFile, privateKeyFile, algorithm);
awsIotClient = new AWSIotMqttClient(clientEndpoint, clientId, pair.keyStore, pair.keyPassword);
}
if (awsIotClient == null) {
String awsAccessKeyId = arguments.get("awsAccessKeyId", SampleUtil.getConfig("awsAccessKeyId"));
String awsSecretAccessKey = arguments.get("awsSecretAccessKey", SampleUtil.getConfig("awsSecretAccessKey"));
String sessionToken = arguments.get("sessionToken", SampleUtil.getConfig("sessionToken"));
if (awsAccessKeyId != null && awsSecretAccessKey != null) {
awsIotClient = new AWSIotMqttClient(clientEndpoint, clientId, awsAccessKeyId, awsSecretAccessKey,
sessionToken);
}
}
if (awsIotClient == null) {
throw new IllegalArgumentException("Failed to construct client due to missing certificate or credentials.");
}
}
public static void main(String args[]) throws InterruptedException, AWSIotException {
CommandArguments arguments = CommandArguments.parse(args);
initClient(arguments);
awsIotClient.setWillMessage(new AWSIotMessage("client/disconnect", AWSIotQos.QOS0, awsIotClient.getClientId()));
String thingName = arguments.getNotNull("thingName", SampleUtil.getConfig("thingName"));
ConnectedWindow connectedWindow = new ConnectedWindow(thingName);
awsIotClient.attach(connectedWindow);
awsIotClient.connect();
// Delete existing document if any
connectedWindow.delete();
AWSIotConnectionStatus status = AWSIotConnectionStatus.DISCONNECTED;
while (true) {
AWSIotConnectionStatus newStatus = awsIotClient.getConnectionStatus();
if (!status.equals(newStatus)) {
System.out.println(System.currentTimeMillis() + " Connection status changed to " + newStatus);
status = newStatus;
}
Thread.sleep(1000);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy