android byte转string_Android设备接入华为IoT实战

1.开通华为IoT设备接入服务

华为IoT设备接入云产品开通:

https://www.huaweicloud.com/product/iothub.html

dc1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

开通后,接入的是物联网平台的控制台,需要点击右上角设备管理服务,进入IoT Platform控制台。参考下图:

de1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

2.华为IoT Platform控制台

华为IoT Platform控制台的设备管理页面,可以查看全部设备,当前设备的状态。参考下图:

df1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

2.1 创建设备

进入到设备管理的 设备注册页面,点击右上角的 创建 按钮。

e01bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

在弹出框里选择产品模型,输入设备识别码,点击确定按钮。参考下图

e11bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

创建成功,系统会自动生成秘钥。如下图:

e21bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

接下来,我们查看全量设备,会看到刚刚创建的设备,状态为 未激活。下参考下图:

e31bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

然后我们点击设备识别码,接入设备详情,开启设备消息跟踪服务。华为IoT默认不启动消息跟踪日志,需要手动开启。而且每次最多跟踪3天消息日志,过期后需要再次开启。这里开发联调过程比较痛苦。

e41bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

2.2 Android设备接入

我们在Android设备上采用Eclipse的paho mqtt库来接入华为IoT平台。

通过阅读华为文档,我们知道Connect的参数如下:

e61bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

华为IoT平台消息通信的Topic不允许自定义,只能使用默认的上行(/data/),下行(/command/)2个Topic。

e71bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

核心Connect代码:

String targetServer = "ssl://iot-acc.cn-north-4.myhuaweicloud.com:8883";
String timestamp = getHuaweiUTCString();
String mqttclientId = deviceId + "_0_0_" + timestamp;
String mqttPassword = HuaweiIoTSignUtil.sign(deviceSecret, timestamp);
mqttClient = new MqttAndroidClient(getBaseContext(), targetServer, mqttclientId);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setMqttVersion(4);
connOpts.setAutomaticReconnect(true);
connOpts.setCleanSession(true);
connOpts.setKeepAliveInterval(120);
connOpts.setUserName(deviceId);
connOpts.setPassword(mqttPassword.toCharArray());
try {
    connOpts.setSocketFactory(new HuaweiIoTSocketFactory(getResources().openRawResource(R.raw.rootcert)));
} catch (Exception e) {
    e.printStackTrace();
}
final IMqttToken token = mqttClient.connect(connOpts);
token.setActionCallback(new IMqttActionListener() {
    @Override
    public void onSuccess(IMqttToken asyncActionToken) {
        showToast("MQTT连接成功 ooooo");
    }
    @Override
    public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
        showToast("MQTT连接失败 xxxxx");
    }
});

上报数据代码

 /huawei/v1/devices/{deviceId}/data/json

MqttMessage message = new MqttMessage(payloadJson.getBytes("utf-8"));
message.setQos(1);
mqttClient.publish(pubTopic, message);

3.设备运行

启动App,输入设备DeviceId和Secret,点击建立连接。如下图

e81bdd2b-3d1b-eb11-8da9-e4434bdf6706.png 

点击上报数据,当前页面显示的型号,sdk以及OS信息会上报到云端。在设备详情信息里展示出来。如下图

ea1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

点击断开连接,设备主动下线。控制台设备状态会显示为离线。如下图

eb1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

设备整个行为记录,也完整的展示在设备详情的消息跟踪里面。如下图

ed1bdd2b-3d1b-eb11-8da9-e4434bdf6706.png

[推广] 阿里云AIoT设备上云大促,百万代金券 >>>

f01bdd2b-3d1b-eb11-8da9-e4434bdf6706.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值