From 69434788752eb28e3eb92020631e3c36abcf719b Mon Sep 17 00:00:00 2001 From: Juiced66 Date: Mon, 10 Mar 2025 07:16:01 +0100 Subject: [PATCH 1/3] fix: use original event with new payload --- lib/modules/measure/MeasureService.ts | 24 +++++++++++----------- lib/modules/measure/types/MeasureEvents.ts | 16 +++++++-------- tests/application/tests/pipes.ts | 9 +++----- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/lib/modules/measure/MeasureService.ts b/lib/modules/measure/MeasureService.ts index a7d37a19..7efcebef 100644 --- a/lib/modules/measure/MeasureService.ts +++ b/lib/modules/measure/MeasureService.ts @@ -8,10 +8,10 @@ import { BaseService } from "../shared"; import { DecodedMeasurement, MeasureContent } from "./types/MeasureContent"; import { AskMeasureSourceIngest, - EventMeasureProcessSourceAfter, - EventMeasureProcessSourceBefore, - TenantEventMeasureProcessSourceAfter, - TenantEventMeasureProcessSourceBefore, + EventMeasureProcessAfter, + EventMeasureProcessBefore, + TenantEventMeasureProcessAfter, + TenantEventMeasureProcessBefore, } from "./types/MeasureEvents"; import { ApiMeasureSource, @@ -113,14 +113,14 @@ export class MeasureService extends BaseService { * * Useful to enrich measures before they are saved. */ - await this.app.trigger( - "device-manager:measures:process:sourceBefore", + await this.app.trigger( + "device-manager:measures:process:before", { asset, measures, source, target }, ); if (indexId) { - await this.app.trigger( - `engine:${indexId}:device-manager:measures:process:sourceBefore`, + await this.app.trigger( + `engine:${indexId}:device-manager:measures:process:before`, { asset, measures, source, target }, ); } @@ -153,14 +153,14 @@ export class MeasureService extends BaseService { * Useful to trigger business rules like alerts * */ - await this.app.trigger( - "device-manager:measures:process:sourceAfter", + await this.app.trigger( + "device-manager:measures:process:after", { asset, measures, source, target }, ); if (indexId) { - await this.app.trigger( - `engine:${indexId}:device-manager:measures:process:sourceAfter`, + await this.app.trigger( + `engine:${indexId}:device-manager:measures:process:after`, { asset, measures, source, target }, ); } diff --git a/lib/modules/measure/types/MeasureEvents.ts b/lib/modules/measure/types/MeasureEvents.ts index 7bd0755f..71c28dc6 100644 --- a/lib/modules/measure/types/MeasureEvents.ts +++ b/lib/modules/measure/types/MeasureEvents.ts @@ -27,8 +27,8 @@ export type AskMeasureSourceIngest = { * * Useful to enrich measures before they are saved. */ -export type EventMeasureProcessSourceBefore = { - name: "device-manager:measures:process:sourceBefore"; +export type EventMeasureProcessBefore = { + name: "device-manager:measures:process:before"; args: [ { @@ -45,8 +45,8 @@ export type EventMeasureProcessSourceBefore = { * * Useful to enrich measures before they are saved. */ -export type TenantEventMeasureProcessSourceBefore = { - name: `engine:${string}:device-manager:measures:process:sourceBefore`; +export type TenantEventMeasureProcessBefore = { + name: `engine:${string}:device-manager:measures:process:before`; args: [ { @@ -61,8 +61,8 @@ export type TenantEventMeasureProcessSourceBefore = { /** * Event after processing new measures from data source. */ -export type EventMeasureProcessSourceAfter = { - name: "device-manager:measures:process:sourceAfter"; +export type EventMeasureProcessAfter = { + name: "device-manager:measures:process:after"; args: [ { @@ -78,8 +78,8 @@ export type EventMeasureProcessSourceAfter = { * Tenant event after processing new measures from data source. * */ -export type TenantEventMeasureProcessSourceAfter = { - name: `engine:${string}:device-manager:measures:process:sourceAfter`; +export type TenantEventMeasureProcessAfter = { + name: `engine:${string}:device-manager:measures:process:after`; args: [ { diff --git a/tests/application/tests/pipes.ts b/tests/application/tests/pipes.ts index 136f8171..b4a50d56 100644 --- a/tests/application/tests/pipes.ts +++ b/tests/application/tests/pipes.ts @@ -1,9 +1,6 @@ import { Backend } from "kuzzle"; -import { - MeasureContent, - EventMeasureProcessSourceBefore, -} from "../../../index"; +import { MeasureContent, EventMeasureProcessBefore } from "../../../index"; import { TemperatureMeasurement } from "../measures"; @@ -82,8 +79,8 @@ function addTemperatureWeatherMeasure( } export function registerTestPipes(app: Backend) { - app.pipe.register( - "device-manager:measures:process:sourceBefore", + app.pipe.register( + "device-manager:measures:process:before", async ({ source, target, asset, measures }) => { if (source.id === "DummyTemp-enrich_me_master") { enrichTemperatureMeasures(measures); From cb37a6dd541511cfd53308d2571db412c4e09e58 Mon Sep 17 00:00:00 2001 From: Juiced66 Date: Mon, 10 Mar 2025 08:41:57 +0100 Subject: [PATCH 2/3] docs: document new ingestion --- doc/2/concepts/measures-ingestion/index.md | 202 +++++++----------- .../measures-ingestion/ingestion-pipeline.png | Bin 41455 -> 60240 bytes 2 files changed, 81 insertions(+), 121 deletions(-) diff --git a/doc/2/concepts/measures-ingestion/index.md b/doc/2/concepts/measures-ingestion/index.md index c9b07f35..38b379ba 100644 --- a/doc/2/concepts/measures-ingestion/index.md +++ b/doc/2/concepts/measures-ingestion/index.md @@ -252,164 +252,124 @@ For each measure contained in the Kuzzle IoT Platform, it is possible to go back The `payloadUuids` property contained in the measures allows you to search the `payloads` collection to find the corresponding data frames. -# Ingestion pipeline events +## Measures Sources -It is possible to execute additional processing within the ingestion pipeline by using one of the events provided for this purpose. +Measures can originate from different sources: -Adding new business rules is done using the Kuzzle pipe mechanism (See [Event System](/core/2/guides/develop-on-kuzzle/event-system/)). +### Device Measure Source -Depending on the treatments, it is better to choose one or the other and that is what we are going to see now. +Represents measures coming directly from a physical device. -![Ingestion pipeline](./ingestion-pipeline.png) +- **Properties:** + - `type`: Always "device" + - `id`: Unique identifier of the source + - `reference`: Device reference + - `deviceMetadata`: Metadata of the device + - `model`: Device model + - `lastMeasuredAt`: (optional) Timestamp of the last measurement -## Data enrichment processing (before) - -It is best to enrich data at this level of the ingestion pipeline to limit the number of document versions. - -Also, the measures will be propagated to the different entities of the Kuzzle IoT Platform, so it is more difficult to modify them afterwards. +### API Measure Source -The ingest pipeline offers a mechanism to modify them before they are propagated and then persisted, so it is possible to modify their contents before this step. +Represents measures coming from an API call. -The `device-manager:measures:process:before` event is triggered with an object containing 3 properties: +- **Properties:** + - `type`: Always "api" + - `id`: Unique identifier of the source -- `device`: the last state of the device associated with the measures -- `measures`: table of measures -- `asset`: (optional) the last state of the asset linked to the device +## Measures Targets -::: info -An isolated version of the event is also available: `engine::device-manager:measures:process:before` -::: +Measures are directed towards specific targets: -Another event is triggered after updating the asset and the device with the latest measures but before being persisted: `device-manager:measures:persist:after`. +### Device Measure Target -The object passed to the event is the same as for the previous event. +Targets a device entity within the platform. -### Enrich existing measures +- **Properties:** + - `type`: Always "device" + - `assetId`: (optional) linked Asset identifier + - `indexId`: Index identifier -It is possible to modify the fields of existing measures directly by manipulating the table of measures. +### API Measure Target -- **_Example: calculation of power in watts from volts and amps_** +Targets an API entity or external systems. - ```jsx - app.pipe.register < - EventMeasureProcessBefore > - ("device-manager:measures:process:before", - async ({ measures, device, asset }) => { - for (const measure of measures) { - if (measure.type === "power") { - measure.values.watt = measure.values.volt * measure.values.ampere; - } - } +- **Properties:** + - `type`: Always "api" + - `assetId`: Associated asset identifier + - `engineGroup`: (optional) Specific engine group targeted + - `indexId`: Index identifier - return { measures, device, asset }; - }); - ``` -### Add new measures +## Events Emitted During Measure Processing -New measures can be created and added to the measure table. +To enrich or modify measures during ingestion, the Kuzzle IoT Platform provides events emitted at various stages. Below are the details on events triggered during measure processing: -If these measures are present in the device or device, then they must also be added to them. +![Ingestion pipeline](./ingestion-pipeline.png) -- **_Example: retrieving the temperature from an API from the current position_** +### Event Before process : `device-manager:measures:process:before` - ```jsx - app.pipe.register < - EventMeasureProcessBefore > - ("device-manager:measures:process:before", - async ({ measures, device, asset }) => { - const measuresCopy = [...measures]; +Triggered before measures are processed and persisted. Ideal for enriching measures or adjusting metadata prior to saving. - // Iterate on a copy because we are mutating the original array - for (const measure of measuresCopy) { - if (measure.type === "position") { - const temperature = await weatherApi.getTemperature( - measure.values.position - ); +- **Event properties:** + - `source`: Origin of the measures (Device or API). + - `target`: Intended target for the measures (Device or API). + - `asset`: (optional) Asset associated with the device. + - `measures`: Array of measures to be processed. - const temperatureMeasure: MeasureContent = { - measuredAt: Date.now(), - type: "temperature", - asset: { - _id: asset._id, - measureName: "temperature", - metadata: asset._source.metadata, - model: asset._source.model, - reference: asset._source.reference, - }, - origin: { - type: "computed", - measureName: "temperature", - _id: "weather-api", - payloadUuids: measure.origin.payloadUuids, - }, - values: { temperature }, - }; +_Example of enriching a measure:_ - // Add the new measure to the array so it will be persisted - measures.push(temperatureMeasure); +```javascript +app.pipe.register('device-manager:measures:process:before', async ({ measures, source, target, asset }) => { + for (const measure of measures) { + if (measure.type === "temperature" && measure.values.celsius) { + measure.values.fahrenheit = measure.values.celsius * 9/5 + 32; + } + } - // Embed the new measure in the asset so it will be persisted - asset._source.measures.temperature = { - name: "temperature", - type: "temperature", - measuredAt: Date.now(), - originId: "weather-api", - values: { temperature }, - payloadUuids: measure.origin.payloadUuids, - }; - } - } + return { measures, source, target, asset }; +}); +``` - return { measures, device, asset }; - }); - ``` +### Tenant-specific event -### Edit metadata - -The metadata of the device and the asset can also be modified according to the information received in the measures. - -** Example: automatic switch to low battery mode** +An isolated tenant-specific event variant is also available: -```jsx -app.pipe.register < - EventMeasureProcessBefore > - ("device-manager:measures:process:before", - async ({ measures, device, asset }) => { - for (const measure of measures) { - if (measure.type === "battery" && measure.values.volts < 1.5) { - device._source.metadata.mode = "saving"; - } - } - - return { measures, device, asset }; - }); +```typescript +engine::device-manager:measures:process:before ``` -## Processing in reaction to the data (after) +### Event After Process(`device-manager:measures:process:after`) -Once the data has been enriched and persisted, it is possible to trigger additional processing. +Triggered after measures have been processed and persisted. Suitable for triggering further actions based on new data. -These treatments are not intended to modify the existing data (measure, device and asset). +- **Event properties:** + - `source`: Origin of the measures. + - `target`: Destination for the measures. + - `asset`: (optional) Updated asset state associated with the measures. + - `measures`: Array of persisted measures. -The `device-manager:measures:process:after` event is triggered with an object containing 3 properties: +_Example: Trigger an alert after processing measures_ -- `device`: the new state of the device associated with the measures -- `measures`: table of measures -- `asset`: (optional) the new state of the asset linked to the device +```javascript +app.pipe("device-manager:measures:process:after", async ({ measures, source, asset }) => { + for (const measure of measures) { + if (measure.type === "security_alert" && measure.values.alertType === "forced_entry") { + notifySecurityTeam(asset, measure); + } + } -::: info -An isolated version of the event is also available: `engine::device-manager:measures:process:after` -::: + return { measures, source, target, asset }; +}); +``` -## Ingestion Pipeline Concurrency +### Tenant-specific events -In order to avoid race conditions in the pipeline, a Mutex ensures that the measures of a device are processed one after the other. +Tenant-specific events are also available for isolated measure processing: -This Mutex is related to the device ID of the processed measures. +- **Before processing:** + - `engine::device-manager:measures:process:before` +- **After processing:** + - `engine::device-manager:measures:process:after` -Examples: +These events carry the same properties as their global counterparts and allow for tenant-specific customizations and workflows. -- reception of 1 data frame containing 4 measures for 4 devices ⇒ execution of 4 pipelines in parallel, -- reception of 1 data frame containing 2 measures for 1 device ⇒ execution of a pipeline processing the two measures for the device -- reception of 2 data frames containing 1 measure for 1 device ⇒ execution of 2 pipelines sequentially for the device diff --git a/doc/2/concepts/measures-ingestion/ingestion-pipeline.png b/doc/2/concepts/measures-ingestion/ingestion-pipeline.png index d3f63cbff507ce33ee808a274a06411d5bdd6df3..2afc85889d954edf0f20930b138b2759297b3495 100644 GIT binary patch literal 60240 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%0DE5TQ^tBQ~%z(oSl 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 literal 41455 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 WWHdfuLnZ)ifDCUL>sD#oJ^wETIjgt; From 814b2627a083b9c7b2dbaedab6c383beaac943ee Mon Sep 17 00:00:00 2001 From: Juiced66 Date: Mon, 10 Mar 2025 08:50:23 +0100 Subject: [PATCH 3/3] docs: document request argument for decoder.decode --- doc/2/concepts/measures-ingestion/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/2/concepts/measures-ingestion/index.md b/doc/2/concepts/measures-ingestion/index.md index 38b379ba..88e1614d 100644 --- a/doc/2/concepts/measures-ingestion/index.md +++ b/doc/2/concepts/measures-ingestion/index.md @@ -145,10 +145,11 @@ class AbeewayDecoder extends Decoder { The `decode` method is in charge of transforming the raw data into standardized measures. -It receives two arguments: +It receives three arguments: - `decodedPayload`: instance of `DecodedPayload` used to extract measures - `payload`: raw data +- `request`: Kuzzle request Each measure must be extracted using the `addMeasurement` method of the `decodedPayload` object. @@ -170,7 +171,8 @@ export class AbeewayDecoder extends Decoder { async decode( decodedPayload: DecodedPayload, - payload: JSONObject + payload: JSONObject, + request: KuzzleRequest ) { decodedPayload.addMeasurement( payload.deviceEUI, // device reference @@ -188,6 +190,7 @@ export class AbeewayDecoder extends Decoder { } } ``` +- `request` can be use to interract with [kuzzle request](https://docs.kuzzle.io/core/2/framework/classes/kuzzle-request/properties/) as documented onto kuzzle documentation. (ex: configure response format using [`request.response.configure`](https://docs.kuzzle.io/core/2/framework/classes/request-response/configure/).) ### Registration on the framework