|
|
|
@ -22,6 +22,7 @@ import com.google.common.util.concurrent.Futures; |
|
|
|
import com.google.common.util.concurrent.ListenableFuture; |
|
|
|
import com.google.common.util.concurrent.SettableFuture; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
import org.thingsboard.common.util.JacksonUtil; |
|
|
|
import org.thingsboard.server.common.data.Customer; |
|
|
|
@ -29,6 +30,7 @@ import org.thingsboard.server.common.data.DataConstants; |
|
|
|
import org.thingsboard.server.common.data.Device; |
|
|
|
import org.thingsboard.server.common.data.EdgeUtils; |
|
|
|
import org.thingsboard.server.common.data.StringUtils; |
|
|
|
import org.thingsboard.server.common.data.device.data.DeviceData; |
|
|
|
import org.thingsboard.server.common.data.edge.Edge; |
|
|
|
import org.thingsboard.server.common.data.edge.EdgeEvent; |
|
|
|
import org.thingsboard.server.common.data.edge.EdgeEventActionType; |
|
|
|
@ -59,9 +61,11 @@ import org.thingsboard.server.gen.edge.v1.DownlinkMsg; |
|
|
|
import org.thingsboard.server.gen.edge.v1.UpdateMsgType; |
|
|
|
import org.thingsboard.server.queue.TbQueueCallback; |
|
|
|
import org.thingsboard.server.queue.TbQueueMsgMetadata; |
|
|
|
import org.thingsboard.server.queue.util.DataDecodingEncodingService; |
|
|
|
import org.thingsboard.server.queue.util.TbCoreComponent; |
|
|
|
import org.thingsboard.server.service.rpc.FromDeviceRpcResponseActorMsg; |
|
|
|
|
|
|
|
import java.util.Optional; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.concurrent.locks.ReentrantLock; |
|
|
|
|
|
|
|
@ -70,6 +74,9 @@ import java.util.concurrent.locks.ReentrantLock; |
|
|
|
@TbCoreComponent |
|
|
|
public class DeviceEdgeProcessor extends BaseEdgeProcessor { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private DataDecodingEncodingService dataDecodingEncodingService; |
|
|
|
|
|
|
|
private static final ReentrantLock deviceCreationLock = new ReentrantLock(); |
|
|
|
|
|
|
|
public ListenableFuture<Void> processDeviceFromEdge(TenantId tenantId, Edge edge, DeviceUpdateMsg deviceUpdateMsg) { |
|
|
|
@ -191,6 +198,11 @@ public class DeviceEdgeProcessor extends BaseEdgeProcessor { |
|
|
|
deviceUpdateMsg.getDeviceProfileIdLSB())); |
|
|
|
device.setDeviceProfileId(deviceProfileId); |
|
|
|
} |
|
|
|
Optional<DeviceData> deviceDataOpt = |
|
|
|
dataDecodingEncodingService.decode(deviceUpdateMsg.getDeviceDataBytes().toByteArray()); |
|
|
|
if (deviceDataOpt.isPresent()) { |
|
|
|
device.setDeviceData(deviceDataOpt.get()); |
|
|
|
} |
|
|
|
Device savedDevice = deviceService.saveDevice(device); |
|
|
|
tbClusterService.onDeviceUpdated(savedDevice, device); |
|
|
|
return saveEdgeEvent(tenantId, edge.getId(), EdgeEventType.DEVICE, EdgeEventActionType.CREDENTIALS_REQUEST, deviceId, null); |
|
|
|
@ -231,6 +243,11 @@ public class DeviceEdgeProcessor extends BaseEdgeProcessor { |
|
|
|
deviceUpdateMsg.getDeviceProfileIdLSB())); |
|
|
|
device.setDeviceProfileId(deviceProfileId); |
|
|
|
} |
|
|
|
Optional<DeviceData> deviceDataOpt = |
|
|
|
dataDecodingEncodingService.decode(deviceUpdateMsg.getDeviceDataBytes().toByteArray()); |
|
|
|
if (deviceDataOpt.isPresent()) { |
|
|
|
device.setDeviceData(deviceDataOpt.get()); |
|
|
|
} |
|
|
|
if (created) { |
|
|
|
deviceValidator.validate(device, Device::getTenantId); |
|
|
|
device.setId(deviceId); |
|
|
|
|