...
|
...
|
@@ -46,6 +46,7 @@ import org.thingsboard.server.common.data.device.data.lwm2m.ObjectAttributes; |
46
|
46
|
import org.thingsboard.server.common.data.device.data.lwm2m.OtherConfiguration;
|
47
|
47
|
import org.thingsboard.server.common.data.device.data.lwm2m.TelemetryMappingConfiguration;
|
48
|
48
|
import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
|
|
49
|
+import org.thingsboard.server.common.data.id.DeviceId;
|
49
|
50
|
import org.thingsboard.server.common.data.id.TenantId;
|
50
|
51
|
import org.thingsboard.server.common.data.ota.OtaPackageUtil;
|
51
|
52
|
import org.thingsboard.server.common.transport.TransportService;
|
...
|
...
|
@@ -73,6 +74,8 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MCancelObser |
73
|
74
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MCancelObserveRequest;
|
74
|
75
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MDiscoverCallback;
|
75
|
76
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MDiscoverRequest;
|
|
77
|
+import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MExecuteCallback;
|
|
78
|
+import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MExecuteRequest;
|
76
|
79
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MLatchCallback;
|
77
|
80
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MObserveCallback;
|
78
|
81
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MObserveRequest;
|
...
|
...
|
@@ -82,7 +85,6 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttrib |
82
|
85
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteAttributesRequest;
|
83
|
86
|
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
84
|
87
|
import org.thingsboard.server.transport.lwm2m.server.ota.LwM2MOtaUpdateService;
|
85
|
|
-import org.thingsboard.server.transport.lwm2m.server.rpc.LwM2MRpcRequestHandler;
|
86
|
88
|
import org.thingsboard.server.transport.lwm2m.server.session.LwM2MSessionManager;
|
87
|
89
|
import org.thingsboard.server.transport.lwm2m.server.store.TbLwM2MDtlsSessionStore;
|
88
|
90
|
import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
...
|
...
|
@@ -131,6 +133,8 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
131
|
133
|
|
132
|
134
|
public LwM2mValueConverterImpl converter;
|
133
|
135
|
|
|
136
|
+ private static final String REBOOT_ID = "/3/0/4";
|
|
137
|
+
|
134
|
138
|
private final TransportService transportService;
|
135
|
139
|
private final LwM2mTransportContext context;
|
136
|
140
|
private final LwM2MAttributesService attributesService;
|
...
|
...
|
@@ -275,26 +279,30 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
275
|
279
|
public void unReg(Registration registration, Collection<Observation> observations) {
|
276
|
280
|
executor.submit(() -> {
|
277
|
281
|
LwM2mClient client = clientContext.getClientByEndpoint(registration.getEndpoint());
|
278
|
|
- try {
|
279
|
|
- logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
|
280
|
|
- clientContext.unregister(client, registration);
|
281
|
|
- SessionInfoProto sessionInfo = client.getSession();
|
282
|
|
- if (sessionInfo != null) {
|
283
|
|
- sessionManager.deregister(sessionInfo);
|
284
|
|
- sessionStore.remove(registration.getEndpoint());
|
285
|
|
- log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType());
|
286
|
|
- } else {
|
287
|
|
- log.error("Client close session: [{}] unReg [{}] name [{}] sessionInfo ", registration.getId(), registration.getEndpoint(), null);
|
288
|
|
- }
|
289
|
|
- } catch (LwM2MClientStateException stateException) {
|
290
|
|
- log.info("[{}] delete registration: [{}] {}.", registration.getEndpoint(), stateException.getState(), stateException.getMessage());
|
291
|
|
- } catch (Throwable t) {
|
292
|
|
- log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
|
293
|
|
- logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
|
294
|
|
- }
|
|
282
|
+ logService.log(client, LOG_LWM2M_INFO + ": Client unRegistration");
|
|
283
|
+ doUnReg(registration, client);
|
295
|
284
|
});
|
296
|
285
|
}
|
297
|
286
|
|
|
287
|
+ private void doUnReg(Registration registration, LwM2mClient client) {
|
|
288
|
+ try {
|
|
289
|
+ clientContext.unregister(client, registration);
|
|
290
|
+ SessionInfoProto sessionInfo = client.getSession();
|
|
291
|
+ if (sessionInfo != null) {
|
|
292
|
+ sessionManager.deregister(sessionInfo);
|
|
293
|
+ sessionStore.remove(registration.getEndpoint());
|
|
294
|
+ log.info("Client close session: [{}] unReg [{}] name [{}] profile ", registration.getId(), registration.getEndpoint(), sessionInfo.getDeviceType());
|
|
295
|
+ } else {
|
|
296
|
+ log.error("Client close session: [{}] unReg [{}] name [{}] sessionInfo ", registration.getId(), registration.getEndpoint(), null);
|
|
297
|
+ }
|
|
298
|
+ } catch (LwM2MClientStateException stateException) {
|
|
299
|
+ log.info("[{}] delete registration: [{}] {}.", registration.getEndpoint(), stateException.getState(), stateException.getMessage());
|
|
300
|
+ } catch (Throwable t) {
|
|
301
|
+ log.error("[{}] endpoint [{}] error Unable un registration.", registration.getEndpoint(), t);
|
|
302
|
+ logService.log(client, LOG_LWM2M_ERROR + String.format(": Client Unable un Registration, %s", t.getMessage()));
|
|
303
|
+ }
|
|
304
|
+ }
|
|
305
|
+
|
298
|
306
|
@Override
|
299
|
307
|
public void onSleepingDev(Registration registration) {
|
300
|
308
|
log.debug("[{}] [{}] Received endpoint sleeping event", registration.getId(), registration.getEndpoint());
|
...
|
...
|
@@ -391,6 +399,14 @@ public class DefaultLwM2MUplinkMsgHandler extends LwM2MExecutorAwareService impl |
391
|
399
|
}
|
392
|
400
|
|
393
|
401
|
@Override
|
|
402
|
+ public void onDeviceDelete(DeviceId deviceId) {
|
|
403
|
+ LwM2mClient client = clientContext.getClientByDeviceId(deviceId.getId());
|
|
404
|
+ TbLwM2MExecuteRequest request = TbLwM2MExecuteRequest.builder().versionedId(REBOOT_ID).timeout(clientContext.getRequestTimeout(client)).build();
|
|
405
|
+ defaultLwM2MDownlinkMsgHandler.sendExecuteRequest(client, request, new TbLwM2MExecuteCallback(logService, client, REBOOT_ID));
|
|
406
|
+ doUnReg(client.getRegistration(), client);
|
|
407
|
+ }
|
|
408
|
+
|
|
409
|
+ @Override
|
394
|
410
|
public void onResourceUpdate(TransportProtos.ResourceUpdateMsg resourceUpdateMsgOpt) {
|
395
|
411
|
String idVer = resourceUpdateMsgOpt.getResourceKey();
|
396
|
412
|
TenantId tenantId = new TenantId(new UUID(resourceUpdateMsgOpt.getTenantIdMSB(), resourceUpdateMsgOpt.getTenantIdLSB()));
|
...
|
...
|
|