|
|
|
@ -219,11 +219,15 @@ class DeviceState { |
|
|
|
} |
|
|
|
if (!keys.isEmpty()) { |
|
|
|
EntityKeyType keyType = getKeyTypeFromScope(scope); |
|
|
|
keys.forEach(key -> latestValues.removeValue(new EntityKey(keyType, key))); |
|
|
|
Set<AlarmConditionFilterKey> removedKeys = keys.stream().map(key -> new EntityKey(keyType, key)) |
|
|
|
.peek(latestValues::removeValue) |
|
|
|
.map(DataSnapshot::toConditionKey).collect(Collectors.toSet()); |
|
|
|
SnapshotUpdate update = new SnapshotUpdate(AlarmConditionKeyType.ATTRIBUTE, removedKeys); |
|
|
|
|
|
|
|
for (DeviceProfileAlarm alarm : deviceProfile.getAlarmSettings()) { |
|
|
|
AlarmState alarmState = alarmStates.computeIfAbsent(alarm.getId(), |
|
|
|
a -> new AlarmState(this.deviceProfile, deviceId, alarm, getOrInitPersistedAlarmState(alarm), dynamicPredicateValueCtx)); |
|
|
|
stateChanged |= alarmState.process(ctx, msg, latestValues, null); |
|
|
|
stateChanged |= alarmState.process(ctx, msg, latestValues, update); |
|
|
|
} |
|
|
|
} |
|
|
|
ctx.tellSuccess(msg); |
|
|
|
|