fw update improvements
This commit is contained in:
parent
df0754789e
commit
4cbbefdd26
@ -45,11 +45,11 @@ import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MExecuteRequ
|
|||||||
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteReplaceRequest;
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteReplaceRequest;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteResponseCallback;
|
import org.thingsboard.server.transport.lwm2m.server.downlink.TbLwM2MWriteResponseCallback;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
import org.thingsboard.server.transport.lwm2m.server.log.LwM2MTelemetryLogService;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MClientFwOtaInfo;
|
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy;
|
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareDeliveryMethod;
|
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareDeliveryMethod;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateResult;
|
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateResult;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateState;
|
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.FirmwareUpdateState;
|
||||||
|
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MClientFwOtaInfo;
|
||||||
|
import org.thingsboard.server.transport.lwm2m.server.ota.firmware.LwM2MFirmwareUpdateStrategy;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MClientSwOtaInfo;
|
import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MClientSwOtaInfo;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy;
|
import org.thingsboard.server.transport.lwm2m.server.ota.software.LwM2MSoftwareUpdateStrategy;
|
||||||
import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateResult;
|
import org.thingsboard.server.transport.lwm2m.server.ota.software.SoftwareUpdateResult;
|
||||||
@ -178,7 +178,7 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
|
|||||||
attributesToFetch.add(SOFTWARE_TAG);
|
attributesToFetch.add(SOFTWARE_TAG);
|
||||||
attributesToFetch.add(SOFTWARE_URL);
|
attributesToFetch.add(SOFTWARE_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
var clientSettings = clientContext.getProfile(client.getProfileId()).getClientLwM2mSettings();
|
var clientSettings = clientContext.getProfile(client.getProfileId()).getClientLwM2mSettings();
|
||||||
|
|
||||||
onFirmwareStrategyUpdate(client, clientSettings);
|
onFirmwareStrategyUpdate(client, clientSettings);
|
||||||
@ -283,8 +283,17 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
|
|||||||
}
|
}
|
||||||
fwInfo.setUpdateState(state);
|
fwInfo.setUpdateState(state);
|
||||||
Optional<OtaPackageUpdateStatus> status = toOtaPackageUpdateStatus(state);
|
Optional<OtaPackageUpdateStatus> status = toOtaPackageUpdateStatus(state);
|
||||||
status.ifPresent(otaStatus -> sendStateUpdateToTelemetry(client, fwInfo,
|
|
||||||
otaStatus, "Firmware Update State: " + state.name()));
|
if (FirmwareUpdateState.IDLE.equals(state) && DOWNLOADING.equals(fwInfo.getStatus())) {
|
||||||
|
fwInfo.setFailedPackageId(fwInfo.getTargetPackageId());
|
||||||
|
status = Optional.of(FAILED);
|
||||||
|
}
|
||||||
|
|
||||||
|
status.ifPresent(otaStatus -> {
|
||||||
|
fwInfo.setStatus(otaStatus);
|
||||||
|
sendStateUpdateToTelemetry(client, fwInfo,
|
||||||
|
otaStatus, "Firmware Update State: " + state.name());
|
||||||
|
});
|
||||||
update(fwInfo);
|
update(fwInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,8 +303,19 @@ public class DefaultLwM2MOtaUpdateService extends LwM2MExecutorAwareService impl
|
|||||||
LwM2MClientFwOtaInfo fwInfo = getOrInitFwInfo(client);
|
LwM2MClientFwOtaInfo fwInfo = getOrInitFwInfo(client);
|
||||||
FirmwareUpdateResult result = FirmwareUpdateResult.fromUpdateResultFwByCode(code.intValue());
|
FirmwareUpdateResult result = FirmwareUpdateResult.fromUpdateResultFwByCode(code.intValue());
|
||||||
Optional<OtaPackageUpdateStatus> status = toOtaPackageUpdateStatus(result);
|
Optional<OtaPackageUpdateStatus> status = toOtaPackageUpdateStatus(result);
|
||||||
status.ifPresent(otaStatus -> sendStateUpdateToTelemetry(client, fwInfo,
|
|
||||||
otaStatus, "Firmware Update Result: " + result.name()));
|
if (FirmwareUpdateResult.INITIAL.equals(result) && OtaPackageUpdateStatus.UPDATING.equals(fwInfo.getStatus())) {
|
||||||
|
status = Optional.of(UPDATED);
|
||||||
|
fwInfo.setRetryAttempts(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
status.ifPresent(otaStatus -> {
|
||||||
|
fwInfo.setStatus(otaStatus);
|
||||||
|
sendStateUpdateToTelemetry(client, fwInfo,
|
||||||
|
otaStatus, "Firmware Update Result: " + result.name());
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
if (result.isAgain() && fwInfo.getRetryAttempts() <= 2) {
|
if (result.isAgain() && fwInfo.getRetryAttempts() <= 2) {
|
||||||
fwInfo.setRetryAttempts(fwInfo.getRetryAttempts() + 1);
|
fwInfo.setRetryAttempts(fwInfo.getRetryAttempts() + 1);
|
||||||
startFirmwareUpdateIfNeeded(client, fwInfo);
|
startFirmwareUpdateIfNeeded(client, fwInfo);
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import lombok.Data;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.thingsboard.server.common.data.StringUtils;
|
import org.thingsboard.server.common.data.StringUtils;
|
||||||
import org.thingsboard.server.common.data.ota.OtaPackageType;
|
import org.thingsboard.server.common.data.ota.OtaPackageType;
|
||||||
|
import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ public abstract class LwM2MClientOtaInfo<Strategy, State, Result> {
|
|||||||
protected Strategy strategy;
|
protected Strategy strategy;
|
||||||
protected State updateState;
|
protected State updateState;
|
||||||
protected Result result;
|
protected Result result;
|
||||||
|
protected OtaPackageUpdateStatus status;
|
||||||
|
|
||||||
protected String failedPackageId;
|
protected String failedPackageId;
|
||||||
protected int retryAttempts;
|
protected int retryAttempts;
|
||||||
@ -104,4 +106,7 @@ public abstract class LwM2MClientOtaInfo<Strategy, State, Result> {
|
|||||||
|
|
||||||
public abstract OtaPackageType getType();
|
public abstract OtaPackageType getType();
|
||||||
|
|
||||||
|
public String getTargetPackageId() {
|
||||||
|
return getPackageId(targetName, targetVersion);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user