|
@@ -117,8 +117,8 @@ public class MqttSubHandle {
|
|
|
case "login":
|
|
|
subDevLogin(topic, payload);
|
|
|
break;
|
|
|
- case "offline":
|
|
|
- subDevOffline(topic, payload);
|
|
|
+ case "last_will":
|
|
|
+ subDevLastWill(topic, payload);
|
|
|
break;
|
|
|
case "presence_change":
|
|
|
subDevPresenceChange(topic, payload);
|
|
@@ -351,7 +351,7 @@ public class MqttSubHandle {
|
|
|
return;
|
|
|
}
|
|
|
//0:no presense 1:presence
|
|
|
- int presence = obj.getIntValue("presence");
|
|
|
+ long presence = obj.getIntValue("presence");
|
|
|
|
|
|
devInfoService.update(
|
|
|
new LambdaUpdateWrapper<DevInfo>()
|
|
@@ -364,7 +364,7 @@ public class MqttSubHandle {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- private void subDevOffline(String topic, String payload) {
|
|
|
+ private void subDevLastWill(String topic, String payload) {
|
|
|
|
|
|
log.info("Received device message: topic={}, payload={}", topic, payload);
|
|
|
String clientId = getDevId(topic);
|
|
@@ -374,6 +374,12 @@ public class MqttSubHandle {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ JSONObject obj = JSONObject.parseObject(payload);
|
|
|
+ if (obj.get("cmd_offline") == null || obj.getIntValue("cmd_offline") != 1) {
|
|
|
+ log.warn("cmd_offline is null or not 1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
devInfoService.update(
|
|
|
new LambdaUpdateWrapper<DevInfo>()
|
|
|
.eq(DevInfo::getClientId, clientId)
|