Skip to content

Commit 2ed8c43

Browse files
authored
Add originId digital twins embedded measures (#272)
Add the originId property to EmbeddedMeasure which contains the Device ID when the measure comes from a Device. It's more easier to retrieve the device who sent the measure, otherwise developers needs to find the device ID in the linkedDevices array from the measure name.
1 parent be656bb commit 2ed8c43

File tree

9 files changed

+381
-360
lines changed

9 files changed

+381
-360
lines changed

features/fixtures/application/tests/pipes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import should from "should";
66
import {
77
MeasureContent,
88
EventMeasureProcessBefore,
9-
AssetContent,
109
DeviceContent,
1110
TemperatureMeasurement,
1211
} from "../../../../index";
@@ -85,6 +84,7 @@ export function registerTestPipes(app: Backend) {
8584
values: {
8685
temperature: temperatureInt.values.temperature,
8786
},
87+
originId: device._id,
8888
};
8989
}
9090
}
@@ -131,6 +131,7 @@ export function registerTestPipes(app: Backend) {
131131
payloadUuids: measure.origin.payloadUuids,
132132
type: measure.type,
133133
values: measure.values,
134+
originId: device._id,
134135
};
135136
}
136137

lib/core/DeviceManagerEngine.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ import {
99
DeviceModelContent,
1010
MeasureModelContent,
1111
} from "../modules/model";
12-
import { measuresMappings } from "../modules/measure";
12+
import {
13+
getEmbeddedMeasureMappings,
14+
measuresMappings,
15+
} from "../modules/measure";
1316
import { devicesMappings } from "../modules/device";
1417
import { onAsk } from "../modules/shared";
1518
import { NamedMeasures } from "../modules/decoder";
@@ -225,17 +228,10 @@ export class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
225228
);
226229
}
227230

228-
mappings.properties.measures.properties[measureName] = {
229-
properties: {
230-
measuredAt: { type: "date" },
231-
name: { type: "keyword" },
232-
payloadUuids: { type: "keyword" },
233-
type: { type: "keyword" },
234-
values: {
235-
properties: measureModel._source.measure.valuesMappings,
236-
},
237-
},
238-
};
231+
mappings.properties.measures.properties[measureName] =
232+
getEmbeddedMeasureMappings(
233+
measureModel._source.measure.valuesMappings
234+
);
239235
}
240236
}
241237

lib/modules/measure/MeasureService.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ export class MeasureService {
292292
device._source.measures[measureName] = {
293293
measuredAt: measurement.measuredAt,
294294
name: measureName,
295+
originId: measurement.origin._id,
295296
payloadUuids: measurement.origin.payloadUuids,
296297
type: measurement.type,
297298
values: measurement.values,
@@ -330,6 +331,7 @@ export class MeasureService {
330331
asset._source.measures[measureName] = {
331332
measuredAt: measurement.measuredAt,
332333
name: measureName,
334+
originId: measurement.origin._id,
333335
payloadUuids: measurement.origin.payloadUuids,
334336
type: measurement.type,
335337
values: measurement.values,
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { JSONObject } from "kuzzle-sdk";
2+
3+
export const getEmbeddedMeasureMappings: (values: JSONObject) => JSONObject = (
4+
valuesMappings
5+
) => ({
6+
properties: {
7+
measuredAt: { type: "date" },
8+
name: { type: "keyword" },
9+
payloadUuids: { type: "keyword" },
10+
type: { type: "keyword" },
11+
values: {
12+
properties: valuesMappings,
13+
},
14+
originId: { type: "keyword" },
15+
},
16+
});

lib/modules/measure/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ export * from "./measures";
66
export * from "./MeasureModule";
77
export * from "./roles/RoleMeasuresAdmin";
88
export * from "./roles/RoleMeasuresReader";
9+
export * from "./collections/getEmbeddedMeasureMappings";

lib/modules/shared/types/EmbeddedMeasure.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,9 @@ export type EmbeddedMeasure<TMeasureValue extends JSONObject = JSONObject> = {
2626
* Name of the measure for the digital twin
2727
*/
2828
name: string;
29+
30+
/**
31+
* Origin ID of the measure (deviceId in most cases)
32+
*/
33+
originId: string;
2934
};

0 commit comments

Comments
 (0)