Broadcast Communication Example
Java SDK Usage
This section describes how to use the Java SDK for the development of broadcast communication.
Development Environment Requirements
JDK 1.8 or later has been installed.
Configuring the SDK for the Application
- Configure the Maven dependency.
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>[3.0.40-rc, 3.2.0)</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-iotda</artifactId> <version>[3.0.40-rc, 3.2.0)</version> </dependency>
- The following is a complete example of a broadcast message. The topic must be prefixed with $oc/broadcast/, and the message content must be encoded using Base64.
public class BroadcastMessageSolution { // REGION_ID: If CN East-Shanghai1 is used, enter cn-east-3. If CN North-Beijing4 is used, enter cn-north-4. If CN South-Guangzhou is used, enter cn-south-4. private static final String REGION_ID = "<YOUR REGION ID>"; // ENDPOINT: On the console, choose Overview and click Access Addresses to view the HTTPS application access address. private static final String ENDPOINT = "<YOUR ENDPOINT>"; // For the standard or enterprise edition, create a region object. public static final Region REGION_CN_NORTH_4 = new Region(REGION_ID, ENDPOINT); public static void main(String[] args) { String ak = "<YOUR AK>"; String sk = "<YOUR SK>"; String projectId = "<YOUR PROJECTID>"; // Create a credential. ICredential auth = new BasicCredentials().withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) .withAk(ak) .withSk(sk) .withProjectId(projectId); // Create and initialize an IoTDAClient instance. IoTDAClient client = IoTDAClient.newBuilder().withCredential(auth) // For the basic edition, select the region object in IoTDARegion. //.withRegion(IoTDARegion.CN_NORTH_4) // For the standard or enterprise edition, create a region object. .withRegion(REGION_CN_NORTH_4).build(); // Instantiate a request object. BroadcastMessageRequest request = new BroadcastMessageRequest(); DeviceBroadcastRequest body = new DeviceBroadcastRequest(); body.withMessage(Base64.getEncoder().encodeToString("hello".getBytes())); body.withTopicFullName("$oc/broadcast/test"); request.withBody(body); try { BroadcastMessageResponse response = client.broadcastMessage(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
Table 1 Parameters Parameter
Description
ak
Access key ID (AK) of your Huawei Cloud account. You can create and view your AK/SK on the Access Keys.
page of the Huawei Cloud console. For details, seesk
Secret access key (SK) of your Huawei Cloud account.
projectId
Project ID. For details on how to obtain a project ID, see Obtaining a Project ID.
IoTDARegion.CN_NORTH_4
Region where the IoT platform to be accessed is located. The available regions of the IoT platform have been defined in the SDK code IoTDARegion.java.
On the console, you can view the region name of the current service and the mapping between regions and endpoints. For details, see Platform Connection Information.
REGION_ID
If CN East-Shanghai1 is used, enter cn-east-3. If CN North-Beijing4 is used, enter cn-north-4. If CN South-Guangzhou is used, enter cn-south-4.
ENDPOINT
On the console, choose Overview and click Access Addresses to view the HTTPS application access address.
Configuring the SDK on Devices
- Configure the Maven dependency of the SDK on devices.
<dependency> <groupId>com.huaweicloud</groupId> <artifactId>iot-device-sdk-java</artifactId> <version>1.1.4</version> </dependency>
- Configure the SDK and device connection parameters on devices.
// Load the CA certificate of the IoT platform. For details about how to obtain the certificate, visit https://support.huaweicloud.com/intl/en-us/devg-iothub/iot_02_1004.html. URL resource = BroadcastMessageSample.class.getClassLoader().getResource("ca.jks"); File file = new File(resource.getPath()); // The format is ssl://Domain name:Port number. // To obtain the domain name, log in to the Huawei Cloud IoTDA console. In the navigation pane, choose Overview and click Access Details in the Instance Information area. Select the access domain name corresponding to port 8883. String serverUrl = "ssl://localhost:8883"; // Device ID created on the IoT platform String deviceId = "deviceId"; // Secret corresponding to the device ID String deviceSecret = "secret"; // Create a device. IoTDevice device = new IoTDevice(serverUrl, deviceId, deviceSecret, file); if (device.init() != 0) { return; }
- Subscribe to a broadcast topic for the device. The broadcast topic must be prefixed with $oc/broadcast/.
device.getClient().subscribeTopic("$oc/broadcast/test", null, rawMessage -> { log.info(" on receive message topic : {} , payload : {}", rawMessage.getTopic(), new String(rawMessage.getPayload())); rawMessage.getPayload(); }, 0);
Testing and Verification
Run the SDK code on the device to bring the device online and subscribe to the broadcast topic for the device. Run the SDK code on the application and call the broadcastMessage API to send a broadcast message to the device. Example message:
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot