Custom Topics Starting with $oc
Process
- Product creation: Access the IoTDA service page and click Access Console. Click the target instance card. For details, see Creating a Product.
- Topic setting: On the product details page, create a custom topic prefixed with $oc/devices/{device_id}/user/.
- Select an MQTT product. On the product details page, click the Topic Management tab, select Custom Topic, and click Add Topic.
Figure 2 Topic management - Custom topics
- In the displayed dialog box, select device operation permissions and enter the topic name.
Figure 3 Topic management - Adding a custom topic
- Click OK. After the topic is added, you can modify or delete it in the custom topic list.
- Select an MQTT product. On the product details page, click the Topic Management tab, select Custom Topic, and click Add Topic.
- Device creation: Create a device under the product. The created device inherits the custom topics set for the product. For details, see Registering an Individual Device.
- Device subscription/publishing: For details about how to publish and subscribe to messages through custom topics, see Using a Custom Topic for Communication.
Java SDK Usage on the Device Side
Devices can integrate the device SDKs provided by Huawei Cloud IoT to quickly connect to Huawei Cloud IoTDA and report messages. The following example uses the Java SDK to connect a device to IoTDA for publishing and subscribing to messages through the custom topic $oc/devices/ + device.getDeviceId() + /user/wpy.
- Configure the Maven dependency of the SDK on the device.
<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 the device.
// 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 = MessageSample.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"; // Initialize the device connection. IoTDevice device = new IoTDevice(serverUrl, deviceId, deviceSecret, file); if (device.init() != 0) { return; }
- Report a device message.
device.getClient().publishRawMessage(new RawMessage( "$oc/devices/" + device.getDeviceId() + "/user/wpy", "hello", 1), new ActionListener() { @Override public void onSuccess(Object context) { System.out.println("reportDeviceMessage success: "); } @Override public void onFailure(Object context, Throwable var2) { System.out.println("reportDeviceMessage fail: " + var2); } });
- Subscribe to the topic.
device.getClient().subscribeTopic(new RawMessage("$oc/devices/" + device.getDeviceId() + "/user/wpy", new ActionListener() { @Override public void onSuccess(Object context) { System.out.println("subscribeTopic success: "); } @Override public void onFailure(Object context, Throwable var2) { System.out.println("subscribeTopic fail: " + var2); } }, 0);
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