@uns-kit/cli 2.0.24 → 2.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +175 -175
  3. package/package.json +6 -6
  4. package/templates/api/src/examples/api-example.ts +91 -91
  5. package/templates/azure-pipelines.yml +21 -21
  6. package/templates/codegen/codegen.ts +15 -15
  7. package/templates/codegen/src/uns/uns-tags.ts +1 -1
  8. package/templates/codegen/src/uns/uns-topics.ts +1 -1
  9. package/templates/config-files/config-docker.json +26 -26
  10. package/templates/config-files/config-localhost.json +26 -26
  11. package/templates/cron/AGENTS.md +24 -23
  12. package/templates/cron/src/examples/cron-example.ts +71 -71
  13. package/templates/default/.prettierignore +1 -1
  14. package/templates/default/.prettierrc +7 -7
  15. package/templates/default/AGENTS.md +24 -23
  16. package/templates/default/README.md +43 -41
  17. package/templates/default/config.json +27 -27
  18. package/templates/default/eslint.config.js +30 -30
  19. package/templates/default/gitignore +51 -51
  20. package/templates/default/package.json +49 -46
  21. package/templates/default/src/config/project.config.extension.example +23 -23
  22. package/templates/default/src/config/project.config.extension.ts +6 -6
  23. package/templates/default/src/examples/data-example.ts +86 -86
  24. package/templates/default/src/examples/load-test-data.ts +110 -110
  25. package/templates/default/src/examples/table-example.ts +97 -97
  26. package/templates/default/src/examples/table-window-load-test.ts +446 -446
  27. package/templates/default/src/examples/uns-gateway-cli.ts +10 -10
  28. package/templates/default/src/index.ts +15 -15
  29. package/templates/default/src/uns/uns-assets.ts +12 -12
  30. package/templates/default/src/uns/uns-dictionary.generated.ts +758 -758
  31. package/templates/default/src/uns/uns-measurements.generated.ts +366 -366
  32. package/templates/default/src/uns/uns-tags.ts +2 -2
  33. package/templates/default/src/uns/uns-topics.ts +2 -2
  34. package/templates/default/tsconfig.json +29 -29
  35. package/templates/python/app/README.md +8 -8
  36. package/templates/python/examples/README.md +134 -134
  37. package/templates/python/examples/api_handler.py +28 -28
  38. package/templates/python/examples/data_publish.py +11 -11
  39. package/templates/python/examples/data_subscribe.py +8 -8
  40. package/templates/python/examples/data_transformer.py +17 -17
  41. package/templates/python/examples/table_transformer.py +15 -15
  42. package/templates/python/gateway/cli.py +75 -75
  43. package/templates/python/gateway/client.py +155 -155
  44. package/templates/python/gateway/manager.py +97 -97
  45. package/templates/python/gen/__init__.py +1 -0
  46. package/templates/python/gen/uns_gateway_pb2.py +70 -0
  47. package/templates/python/gen/uns_gateway_pb2_grpc.py +312 -0
  48. package/templates/python/gitignore +47 -47
  49. package/templates/python/proto/uns-gateway.proto +102 -102
  50. package/templates/python/pyproject.toml +4 -4
  51. package/templates/python/runtime.json +4 -4
  52. package/templates/python/scripts/setup.sh +87 -87
  53. package/templates/temporal/src/examples/temporal-example.ts +37 -37
  54. package/templates/uns-dictionary/uns-dictionary.json +650 -650
  55. package/templates/uns-measurements/uns-measurements.json +360 -360
  56. package/templates/vscode/.vscode/launch.json +164 -164
  57. package/templates/vscode/.vscode/settings.json +9 -9
  58. package/templates/vscode/.vscode/tasks.json +27 -27
  59. package/templates/vscode/uns-kit.code-workspace +13 -13
@@ -1,97 +1,97 @@
1
- /**
2
- * Change this file according to your specifications and rename it to index.ts
3
- */
4
-
5
- import { UnsProxyProcess, ConfigFile, getLogger } from "@uns-kit/core";
6
- import { registerAttributeDescriptions, registerObjectTypeDescriptions } from "@uns-kit/core/uns/uns-dictionary-registry.js";
7
- import { UnsTopics } from "@uns-kit/core/uns/uns-topics.js";
8
- import {
9
- GeneratedObjectTypes,
10
- GeneratedAttributes,
11
- GeneratedAttributeDescriptions,
12
- GeneratedObjectTypeDescriptions,
13
- } from "../uns/uns-dictionary.generated.js";
14
- import { GeneratedAssets, resolveGeneratedAsset } from "../uns/uns-assets.js";
15
- import type { IUnsTableColumn } from "@uns-kit/core/uns/uns-interfaces.js";
16
- import type { ISO8601 } from "@uns-kit/core/uns/uns-interfaces.js";
17
- import { GeneratedPhysicalMeasurements } from "../uns/uns-measurements.generated.js";
18
-
19
- const logger = getLogger(import.meta.url);
20
-
21
- /**
22
- * Load the configuration from a file.
23
- * On the server, this file is provided by the `uns-datahub-controller`.
24
- * In the development environment, you are responsible for creating and maintaining this file and its contents.
25
- */
26
- const config = await ConfigFile.loadConfig();
27
- registerObjectTypeDescriptions(GeneratedObjectTypeDescriptions);
28
- registerAttributeDescriptions(GeneratedAttributeDescriptions);
29
-
30
- /**
31
- * Load and configure input and output brokers from config.json
32
- */
33
- const unsProxyProcess = new UnsProxyProcess(config.infra.host!, {processName: config.uns.processName!});
34
- const mqttInput = await unsProxyProcess.createUnsMqttProxy((config.input?.host)!, "templateUnsRttInput", config.uns.instanceMode!, config.uns.handover!, {
35
- mqttSubToTopics: ["raw/#"],
36
- });
37
- const mqttOutput = await unsProxyProcess.createUnsMqttProxy((config.output?.host)!, "templateUnsRttOutput", config.uns.instanceMode!, config.uns.handover!, {
38
- publishThrottlingDelay: 1000,
39
- });
40
-
41
- /**
42
- * The input worker connects to the upstream broker and listens for incoming messages.
43
- * It processes the messages and transforms them into a table-type IUnsMessage.
44
- * The resulting message is published to the output broker.
45
- */
46
- mqttInput.event.on("input", async (event) => {
47
- try {
48
- if (event.topic === "raw/data") {
49
- const values = event.message.split(",");
50
- const [countRaw, timestampRaw, sensorRaw] = values;
51
- if (!countRaw || !timestampRaw || !sensorRaw) {
52
- logger.warn(`Skipping malformed raw/data payload: ${event.message}`);
53
- return;
54
- }
55
-
56
- const currentValue = Number.parseFloat(countRaw);
57
- const eventDate = new Date(Number.parseInt(timestampRaw, 10));
58
- const sensorValue = Number.parseFloat(sensorRaw);
59
-
60
- const time: ISO8601 = eventDate.toISOString() as ISO8601;
61
- const intervalStart: ISO8601 = new Date(eventDate.getTime() - 1000).toISOString() as ISO8601;
62
- const intervalEnd: ISO8601 = eventDate.toISOString() as ISO8601;
63
- const dataGroup = "sensor_table";
64
- const columns: IUnsTableColumn[] = [
65
- { name: "current", type: "double", value: currentValue, uom: GeneratedPhysicalMeasurements.Ampere },
66
- { name: "voltage", type: "double", value: sensorValue },
67
- ];
68
- const topic: UnsTopics = "enterprise/site/area/line/";
69
- const asset = resolveGeneratedAsset("asset");
70
- const assetDescription = ""; // customize manually
71
- mqttOutput.publishMqttMessage({
72
- topic,
73
- asset,
74
- assetDescription,
75
- objectType: GeneratedObjectTypes["resource-status"],
76
- objectId: "main",
77
- attributes: [
78
- {
79
- attribute: GeneratedAttributes["status"] ?? "status",
80
- description: GeneratedAttributeDescriptions["status"] ?? "Table",
81
- table: {
82
- dataGroup,
83
- time,
84
- intervalStart,
85
- intervalEnd,
86
- columns,
87
- },
88
- },
89
- ],
90
- });
91
- }
92
- } catch (error) {
93
- const reason = error instanceof Error ? error : new Error(String(error));
94
- logger.error(`Error publishing message to MQTT: ${reason.message}`);
95
- throw reason;
96
- }
97
- });
1
+ /**
2
+ * Change this file according to your specifications and rename it to index.ts
3
+ */
4
+
5
+ import { UnsProxyProcess, ConfigFile, getLogger } from "@uns-kit/core";
6
+ import { registerAttributeDescriptions, registerObjectTypeDescriptions } from "@uns-kit/core/uns/uns-dictionary-registry.js";
7
+ import { UnsTopics } from "@uns-kit/core/uns/uns-topics.js";
8
+ import {
9
+ GeneratedObjectTypes,
10
+ GeneratedAttributes,
11
+ GeneratedAttributeDescriptions,
12
+ GeneratedObjectTypeDescriptions,
13
+ } from "../uns/uns-dictionary.generated.js";
14
+ import { GeneratedAssets, resolveGeneratedAsset } from "../uns/uns-assets.js";
15
+ import type { IUnsTableColumn } from "@uns-kit/core/uns/uns-interfaces.js";
16
+ import type { ISO8601 } from "@uns-kit/core/uns/uns-interfaces.js";
17
+ import { GeneratedPhysicalMeasurements } from "../uns/uns-measurements.generated.js";
18
+
19
+ const logger = getLogger(import.meta.url);
20
+
21
+ /**
22
+ * Load the configuration from a file.
23
+ * On the server, this file is provided by the `uns-datahub-controller`.
24
+ * In the development environment, you are responsible for creating and maintaining this file and its contents.
25
+ */
26
+ const config = await ConfigFile.loadConfig();
27
+ registerObjectTypeDescriptions(GeneratedObjectTypeDescriptions);
28
+ registerAttributeDescriptions(GeneratedAttributeDescriptions);
29
+
30
+ /**
31
+ * Load and configure input and output brokers from config.json
32
+ */
33
+ const unsProxyProcess = new UnsProxyProcess(config.infra.host!, {processName: config.uns.processName!});
34
+ const mqttInput = await unsProxyProcess.createUnsMqttProxy((config.input?.host)!, "templateUnsRttInput", config.uns.instanceMode!, config.uns.handover!, {
35
+ mqttSubToTopics: ["raw/#"],
36
+ });
37
+ const mqttOutput = await unsProxyProcess.createUnsMqttProxy((config.output?.host)!, "templateUnsRttOutput", config.uns.instanceMode!, config.uns.handover!, {
38
+ publishThrottlingDelay: 1000,
39
+ });
40
+
41
+ /**
42
+ * The input worker connects to the upstream broker and listens for incoming messages.
43
+ * It processes the messages and transforms them into a table-type IUnsMessage.
44
+ * The resulting message is published to the output broker.
45
+ */
46
+ mqttInput.event.on("input", async (event) => {
47
+ try {
48
+ if (event.topic === "raw/data") {
49
+ const values = event.message.split(",");
50
+ const [countRaw, timestampRaw, sensorRaw] = values;
51
+ if (!countRaw || !timestampRaw || !sensorRaw) {
52
+ logger.warn(`Skipping malformed raw/data payload: ${event.message}`);
53
+ return;
54
+ }
55
+
56
+ const currentValue = Number.parseFloat(countRaw);
57
+ const eventDate = new Date(Number.parseInt(timestampRaw, 10));
58
+ const sensorValue = Number.parseFloat(sensorRaw);
59
+
60
+ const time: ISO8601 = eventDate.toISOString() as ISO8601;
61
+ const intervalStart: ISO8601 = new Date(eventDate.getTime() - 1000).toISOString() as ISO8601;
62
+ const intervalEnd: ISO8601 = eventDate.toISOString() as ISO8601;
63
+ const dataGroup = "sensor_table";
64
+ const columns: IUnsTableColumn[] = [
65
+ { name: "current", type: "double", value: currentValue, uom: GeneratedPhysicalMeasurements.Ampere },
66
+ { name: "voltage", type: "double", value: sensorValue },
67
+ ];
68
+ const topic: UnsTopics = "enterprise/site/area/line/";
69
+ const asset = resolveGeneratedAsset("asset");
70
+ const assetDescription = ""; // customize manually
71
+ mqttOutput.publishMqttMessage({
72
+ topic,
73
+ asset,
74
+ assetDescription,
75
+ objectType: GeneratedObjectTypes["resource-status"],
76
+ objectId: "main",
77
+ attributes: [
78
+ {
79
+ attribute: GeneratedAttributes["status"] ?? "status",
80
+ description: GeneratedAttributeDescriptions["status"] ?? "Table",
81
+ table: {
82
+ dataGroup,
83
+ time,
84
+ intervalStart,
85
+ intervalEnd,
86
+ columns,
87
+ },
88
+ },
89
+ ],
90
+ });
91
+ }
92
+ } catch (error) {
93
+ const reason = error instanceof Error ? error : new Error(String(error));
94
+ logger.error(`Error publishing message to MQTT: ${reason.message}`);
95
+ throw reason;
96
+ }
97
+ });