MQTT设备断电 设备离线

a 集成MQTT后,设备突然没电,后台根据什么来判断设备是否离线?
1 可以根据MQTT内部封装好的心跳
2 可以根据你自定义的心跳,客户端开个线程上报自定义心跳。
3 可以根据遗嘱消息来判断。

1 conOpt.setKeepAliveInterval MQTT内部封装的心跳。

    private void init() {
        Log.i(TAG, "initMqtt :"+topic);
        // 服务器地址(协议+地址+端口号)
        client = new MqttAndroidClient(this, serverURI, MainActivity.deviceCode);
        conOpt = new MqttConnectOptions();
        // 清除缓存
        conOpt.setCleanSession(true);
        // 设置超时时间,单位:秒
        conOpt.setConnectionTimeout(30);
        // 心跳包发送间隔,单位:秒
        conOpt.setKeepAliveInterval(60);
        // 用户名
        conOpt.setUserName(MainActivity.deviceCode);
        // 密码
        conOpt.setPassword(MainActivity.deviceCode.toCharArray());
        try {
            // 设置MQTT监听并且接受消息
            client.setCallback(mqttCallback);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // last will message
        boolean doConnect = true;
        // 最后
        try {
            conOpt.setWill(topic1, MainActivity.deviceCode.getBytes(), qos, false);
        } catch (Exception e) {
            e.printStackTrace();
            doConnect = false;
            iMqttActionListener.onFailure(null, e);
        }
        if (doConnect) {
            doClientConnection();
        }

    }

2 第二个情况 需自定义,略

3 遗嘱消息 conOpt.setWill(topic1, MainActivity.deviceCode.getBytes(), qos, false);

    private void init() {
        Log.i(TAG, "initMqtt :"+topic);
        // 服务器地址(协议+地址+端口号)
        client = new MqttAndroidClient(this, serverURI, MainActivity.deviceCode);
        conOpt = new MqttConnectOptions();
        // 清除缓存
        conOpt.setCleanSession(true);
        // 设置超时时间,单位:秒
        conOpt.setConnectionTimeout(30);
        // 心跳包发送间隔,单位:秒
        conOpt.setKeepAliveInterval(60);
        // 用户名
        conOpt.setUserName(MainActivity.deviceCode);
        // 密码
        conOpt.setPassword(MainActivity.deviceCode.toCharArray());
        try {
            // 设置MQTT监听并且接受消息
            client.setCallback(mqttCallback);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // last will message
        boolean doConnect = true;
        // 最后
        try {
            conOpt.setWill(topic1, MainActivity.deviceCode.getBytes(), qos, false);
        } catch (Exception e) {
            e.printStackTrace();
            doConnect = false;
            iMqttActionListener.onFailure(null, e);
        }
        if (doConnect) {
            doClientConnection();
        }

    }

android集成MQTT 点击
https://blog.csdn.net/sun6223508/article/details/123296350

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值