【Java代码调用华为云IoT MQTT】

目录

在这里插入图片描述
欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199

下面是使用Java代码调用华为云IoT MQTT:

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class HuaweiCloudMqttExample {

    public static void main(String[] args) {
        String brokerAddress = "c065e19a05.iot-mqtts.cn-north-4.myhuaweicloud.com";
        int brokerPort = 1883;
        String clientId = "62e0ee8a4c7c4e3646bcaf4d_0001_0_0_2022072707";
        String username = "62e0ee8a4c7c4e3646bcaf4d_0001";
        String password = "13b9e75dddad59a7fd4cebc00a2c14a355820ec04b0af83d40f3c6ca24a42fd4";
        String topic = "$oc/devices/62e0ee8a4c7c4e3646bcaf4d_0001/sys/properties/report";

        try {
            MqttClient mqttClient = new MqttClient(
                    String.format("tcp://%s:%d", brokerAddress, brokerPort), clientId, new MemoryPersistence());
            MqttConnectOptions connectOptions = new MqttConnectOptions();
            connectOptions.setUserName(username);
            connectOptions.setPassword(password.toCharArray());

            mqttClient.connect(connectOptions);

            MqttMessage message = new MqttMessage("Hello, Huawei IoT".getBytes());
            message.setQos(0);

            mqttClient.publish(topic, message);

            mqttClient.disconnect();
            mqttClient.close();
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }

}

请注意,这里使用的是Paho MQTT客户端库来进行MQTT通信,你需要将以下依赖项添加到你的项目中:

<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.4</version>
</dependency>

在代码中,将brokerAddress替换为你的Broker地址,将brokerPort替换为你的Broker端口,将clientIdusernamepassword替换为你的设备相关信息,将topic替换为你要发布消息的主题。然后运行代码即可发送消息到华为云IoT平台。

下面是使用Java代码调用和订阅华为的MQTT的示例代码:

import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class MqttClientExample {

    public static void main(String[] args) {
        String broker = "tcp://c065e19a05.iot-mqtts.cn-north-4.myhuaweicloud.com:1883";
        String clientId = "62e0ee8a4c7c4e3646bcaf4d_0001_0_0_2022072707";
        String username = "62e0ee8a4c7c4e3646bcaf4d_0001";
        String password = "13b9e75dddad59a7fd4cebc00a2c14a355820ec04b0af83d40f3c6ca24a42fd4";
        String topic = "$oc/devices/62e0ee8a4c7c4e3646bcaf4d_0001/sys/properties/report";

        MemoryPersistence persistence = new MemoryPersistence();
        try {
            MqttClient mqttClient = new MqttClient(broker, clientId, persistence);

            MqttConnectOptions connOpts = new MqttConnectOptions();
            connOpts.setCleanSession(true);
            connOpts.setUserName(username);
            connOpts.setPassword(password.toCharArray());

            mqttClient.setCallback(new MqttCallback() {
                @Override
                public void connectionLost(Throwable throwable) {
                    System.out.println("Connection lost!");
                }

                @Override
                public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
                    System.out.println("Received message: " + new String(mqttMessage.getPayload()));
                }

                @Override
                public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
                    // Not used in this example
                }
            });

            mqttClient.connect(connOpts);

            mqttClient.subscribe(topic);

            MqttMessage message = new MqttMessage();
            message.setPayload("Hello from Java!".getBytes());
            mqttClient.publish(topic, message);

            mqttClient.disconnect();
        } catch (MqttException me) {
            me.printStackTrace();
        }
    }
}

请注意,这是使用Eclipse Paho MQTT客户端库来实现的。您需要将以下Maven依赖项添加到您的项目中:

<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.5</version>
</dependency>
<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.android.service</artifactId>
    <version>1.1.1</version>
</dependency>

请确保您已经正确地替换了brokerclientIdusernamepasswordtopic变量的值。此示例中的代码将连接到指定的华为MQTT代理,订阅指定的主题,并向该主题发布一条消息。

希望这可以帮助您开始使用华为的MQTT服务!

### 如何在华为云上配置和使用MQTT服务 #### 准备工作 为了顺利配置并使用华为云上的MQTT服务,需先注册华为云账号,并完成实名认证。之后进入控制台创建项目。 #### 创建IoT平台实例 通过华为云官网登录管理后台,在产品列表中找到“IoTDA物联网平台”,点击立即购买来启动新的IoT平台实例。按照向导填写必要参数,如区域、规格等信息后提交订单等待开通成功[^2]。 #### 配置MQTT连接参数 当IoT平台实例部署完成后,访问其详情页面获取用于建立客户端连接所需的基础设置项,包括但不限于接入点域名、端口号以及传输协议类型(TLS/SSL)。对于安全性的考量建议优先选用加密通信方式[^1]。 #### 获取鉴权三元组 利用官方提供的在线工具生成MQTT鉴权所需的用户名、密码及ClientID组合即所谓的“三元组”。该工具位于链接内:[华为云IoT工具](https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/) 。输入设备证书文件中的ProductKey, DeviceSecret即可得到完整的身份验证凭据。 #### 编写测试程序 编写简单的Python脚本作为模拟设备端代码示例,展示如何基于paho-mqtt库发起订阅发布操作: ```python import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print(f"Connected with result code {rc}") client = mqtt.Client() client.on_connect = on_connect # 替换成实际获得的三元组数据 username = 'your_username' password = 'your_password' clientId = 'your_clientId' broker_address="mqtt.example.com" port=8883 client.username_pw_set(username,password) client.tls_set() # 如果使用ssl/tls则调用此方法加载默认CA证书 client.connect(broker_address,port) try: client.loop_forever() except KeyboardInterrupt: pass finally: client.disconnect() ``` 上述代码片段展示了基本框架结构,具体实现细节可能依据业务逻辑有所差异。 #### 设备上线调试 将编写的测试应用程序部署到目标硬件平台上运行,观察日志输出确认能否正常接收到云端下发的主题消息;同时也可以借助Web界面监控当前已连接节点状态变化情况以便及时调整优化网络性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贺公子之数据科学与艺术

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值