iobroker.e3oncan 1.0.3 → 1.1.1

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.
package/README.de.md CHANGED
@@ -12,11 +12,14 @@
12
12
 
13
13
  ## e3oncan Adapter für ioBroker
14
14
 
15
+ > **Hinweis:** Die Navigationslinks in diesem Dokument funktionieren am besten in der [GitHub-Ansicht](https://github.com/MyHomeMyData/ioBroker.e3oncan/blob/main/README.de.md). Relative Links zu anderen Dokumenten (z.B. [data-points.md](https://github.com/MyHomeMyData/ioBroker.e3oncan/blob/main/lib/data-points.md)) öffnen ebenfalls auf GitHub.
16
+
15
17
  > Dieses Dokument ist die deutsche Version der Dokumentation. [English version: README.md](README.md)
16
18
 
17
19
  ## Inhaltsverzeichnis
18
20
 
19
21
  - [Übersicht](#übersicht)
22
+ - [Was ist neu in v1.1.0](#was-ist-neu-in-v110)
20
23
  - [Was ist neu in v1.0.3](#was-ist-neu-in-v103)
21
24
  - [Was ist neu in v1.0.0](#was-ist-neu-in-v100)
22
25
  - [Schnellstart](#schnellstart)
@@ -57,6 +60,26 @@ Welche Modi verfügbar sind, hängt von der Gerätekonfiguration ab. Weitere Det
57
60
 
58
61
  ---
59
62
 
63
+ ## Was ist neu in v1.1.1
64
+
65
+ ### Aktualisierte Datenpunkt-Definitionen
66
+
67
+ Die Datenpunktdefinitionen wurden auf Version 20260705 (allgemein) und 20260630 (Varianten) aktualisiert.
68
+
69
+ ### Neuer Codec O3ESwitch
70
+
71
+ Ein neuer Codec `O3ESwitch` wurde für Datenpunkte ergänzt, deren Struktur von einem gerätespezifischen Diskriminator-Byte abhängt. Das erste Byte wählt die aktive Variante aus einem Satz vordefinierter Codec-Zweige. Damit wird die vollständig strukturierte Dekodierung der ZigBee-Geräteslot-DIDs (2086–2143, 2262) ermöglicht, bei denen die dekodierten Felder je nach Gerätetyp unterschiedlich sind (z. B. Klimasensor, Heizkörperthermostat, Fußbodenheizungsthermostat, Stellantrieb).
72
+
73
+ ### Dezimalrundung für numerische Codecs
74
+
75
+ Numerische Codecs (`O3EInt8`, `O3EInt16`, `O3EInt32`, `O3EInt64`, `O3EFloat32`) unterstützen jetzt einen optionalen Parameter `decimals`. Ist dieser größer als 0, wird das Dekodierergebnis auf die angegebene Anzahl Nachkommastellen gerundet. Beispielsweise wird `SignalLevel` (Skalierung 2,55, Dezimalstellen 2) damit ohne übermäßig lange Gleitkommazahlen ausgegeben.
76
+
77
+ ### Einheiten und Metadaten werden beim Start nach Strukturänderungen gesetzt
78
+
79
+ Erkennt der Adapter beim Start, dass sich die Struktur eines Datenpunkts geändert hat (neue Version in `didsE3var.json` oder `didsE3.json`), werden Einheiten und Beschreibungen für alle Unterzustände des neu angelegten Tree-Abschnitts jetzt korrekt gesetzt. Bisher wurden Einheiten nur beim Datenpunktscan gesetzt; nach einer Strukturaktualisierung war ein erneuter Scan erforderlich, um sie zu befüllen.
80
+
81
+ ---
82
+
60
83
  ## Was ist neu in v1.0.3
61
84
 
62
85
  ### Kein Rebuild mehr nach einem Node.js-Upgrade
package/README.md CHANGED
@@ -12,11 +12,14 @@
12
12
 
13
13
  ## e3oncan adapter for ioBroker
14
14
 
15
+ > **Note:** Navigation links in this document work best when viewed [on GitHub](https://github.com/MyHomeMyData/ioBroker.e3oncan#readme). Relative links to other documents (e.g. [data-points.md](https://github.com/MyHomeMyData/ioBroker.e3oncan/blob/main/lib/data-points.md)) also open on GitHub.
16
+
15
17
  > Eine deutsche Version dieser Dokumentation ist verfügbar: [README.de.md](README.de.md)
16
18
 
17
19
  ## Table of contents
18
20
 
19
21
  - [Overview](#overview)
22
+ - [What's new in v1.1.0](#whats-new-in-v110)
20
23
  - [What's new in v1.0.3](#whats-new-in-v103)
21
24
  - [What's new in v1.0.0](#whats-new-in-v100)
22
25
  - [What's new in v0.11.x](#whats-new-in-v011x)
@@ -58,6 +61,26 @@ Which modes are available depends on your device topology. See the [device topol
58
61
 
59
62
  ---
60
63
 
64
+ ## What's new in v1.1.1
65
+
66
+ ### Updated data point definitions
67
+
68
+ Data point definitions have been updated to version 20260705 (common) and 20260630 (variant).
69
+
70
+ ### New O3ESwitch codec
71
+
72
+ A new codec `O3ESwitch` has been added for data points whose structure depends on a device type discriminator byte. The first byte selects the active variant from a set of predefined codec branches. This enables full structured decoding of ZigBee device slot DIDs (2086–2143, 2262), where the decoded fields differ by device type (e.g. climate sensor, TRV, floor thermostat, actuator).
73
+
74
+ ### Decimal rounding for numeric codecs
75
+
76
+ Numeric codecs (`O3EInt8`, `O3EInt16`, `O3EInt32`, `O3EInt64`, `O3EFloat32`) now support an optional `decimals` parameter. When set to a value greater than 0, the decoded result is rounded to that number of decimal places. This is used, for example, for `SignalLevel` (scale 2.55, decimals 2) to avoid excessively long floating-point values.
77
+
78
+ ### Units and metadata set at startup when data point structure changes
79
+
80
+ When the adapter detects at startup that a data point's structure has changed (new version in `didsE3var.json` or `didsE3.json`), it now correctly registers units and descriptions for all sub-states of the rebuilt tree. Previously, units were only set during a data point scan; a subsequent scan was required to populate them after a structure update.
81
+
82
+ ---
83
+
61
84
  ## What's new in v1.0.3
62
85
 
63
86
  ### No more rebuild after a Node.js upgrade
@@ -111,24 +134,6 @@ After the data point scan, the adapter automatically analyses the bus topology d
111
134
 
112
135
  ---
113
136
 
114
- ## What's new in v0.11.x
115
-
116
- ### Updated data point structures (action required when upgrading)
117
-
118
- Version 0.11.0 introduced updated definitions for many data points — new variant types, additional metadata (description, unit, links), and revised data format handling. **If you are upgrading from v0.10.x, please perform a device scan followed by a full data point scan** to apply the new definitions and metadata to your ioBroker object tree.
119
-
120
- For a detailed list of changed data points see the [data point changelog](lib/data-points.md#changelog-of-data-point-definitions).
121
-
122
- ### Variant data points and device format configuration
123
-
124
- The adapter now handles variant data points — data points whose structure depends on the device's configuration (e.g. temperature unit °C/°F, date/time format). During the device scan, the relevant format configuration (data point 382) is read and stored. The data point scan then applies the correct codec for each device automatically.
125
-
126
- ### Metadata on data point objects
127
-
128
- Data point objects in the ioBroker object tree now carry metadata: description, physical unit, read/write access flag, and links to further information where available. Metadata for existing objects is updated during each data point scan and is also restored if a data point object is deleted and re-created (added in v0.11.1).
129
-
130
- ---
131
-
132
137
  ## Quick start
133
138
 
134
139
  **Prerequisites**
@@ -422,6 +427,16 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
422
427
  Placeholder for the next version (at the beginning of the line):
423
428
  ### **WORK IN PROGRESS**
424
429
  -->
430
+ ### 1.1.1 (2026-07-06)
431
+ * (MyHomeMyData) Update of list of data points for E3 devices to version 20260705 (common)
432
+ * (MyHomeMyData) Fixed duplicate display of variant data points in data point list of WebUI
433
+
434
+ ### 1.1.0 (2026-07-05)
435
+ * (MyHomeMyData) Update of list of data points for E3 devices to version 20260701 (common) and 20260630 (variant)
436
+ * (MyHomeMyData) Added codec `O3ESwitch` for device-dependent data point structures selected by a discriminator byte
437
+ * (MyHomeMyData) Added optional `decimals` parameter to numeric codecs to round decoded values
438
+ * (MyHomeMyData) Added update of meta data during startup, when structure of data point has changed
439
+
425
440
  ### 1.0.3 (2026-06-02)
426
441
  * (MyHomeMyData) Update of list of data points for E3 devices to version 20260528 for common and 20260527 for variant data points; For details see this [changelog](lib/data-points.md#changelog-of-data-point-definitions)
427
442
  * (MyHomeMyData) Suppress spurious variant-did warning when common dict covers the length
@@ -440,52 +455,6 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
440
455
  * (MyHomeMyData) Improved scan status detection: uses `udsDidsWritable` instead of `didsMetaDict` to reliably detect whether a data point scan has been performed
441
456
  * (MyHomeMyData) Added re-scan recommendation hint in datapoints tab when a scan exists but Collect auto-detection has not yet been run
442
457
 
443
- ### 1.0.0-beta.2 (2026-05-02)
444
- * (MyHomeMyData) Fixed: saving schedules in the datapoints tab could leave stale entries under certain conditions
445
- * (MyHomeMyData) Added Topology button to the datapoints tab; opens the bus topology diagram in a modal dialog
446
-
447
- ### 1.0.0-beta.1 (2026-04-30)
448
- * (MyHomeMyData) Bus topology analysis is now generated automatically after the data point scan; results are stored in `info.topology` (JSON) and `info.topologyHtml` (HTML); see Readme for details
449
- * (MyHomeMyData) Input validation added for interval and delay fields in the datapoints tab — only positive integers are accepted
450
-
451
- ### 1.0.0-beta.0 (2026-04-26)
452
- * (MyHomeMyData) Introduced new e3oncan datapoints webUI pinned to the adapter's instance row
453
- * (MyHomeMyData) Energy meters (E380, E3100CB) are now auto-detected during the device scan by passive CAN listening on both CAN channels
454
- * (MyHomeMyData) State names for energy meters are assigned automatically based on CAN address and channel; see Readme for details
455
- * (MyHomeMyData) Energy meter Collect toggle and delay are now configured exclusively in the e3oncan datapoints page; changes take effect after adapter restart
456
- * (MyHomeMyData) On first run after upgrade, the active setting is automatically migrated from the previous adapter configuration
457
- * (MyHomeMyData) Collect-capable devices are now auto-detected during the data point scan by passive CAN listening; a pin icon is shown in the device card header for each detected device
458
- * (MyHomeMyData) Added option to suppress storing of data point values during data point scan
459
-
460
- ### 0.11.3 (2026-05-03)
461
- * (MyHomeMyData) The accidentally mentioned data points 1415-1418 have been removed from the changelog of version 0.11.0
462
-
463
- ### 0.11.2 (2026-05-02)
464
- * (MyHomeMyData) Added "What's new in v0.11.x" section to Readme with upgrade notes for data point structure changes
465
-
466
- ### 0.11.1 (2026-04-23)
467
- * (MyHomeMyData) Improved robustness: Receiving a data point of length zero is treated as a "negative response"
468
- * (MyHomeMyData) The metadata is now also restored after a data point is deleted
469
- * (MyHomeMyData) Aligned test cases for German system language
470
-
471
- ### 0.11.0 (2026-04-14)
472
- * (MyHomeMyData) To take full advantage of the variant data points and metadata, please perform a device scan followed by a data point scan
473
- * (MyHomeMyData) Added handling for variant data points and for device's data format configuration, refer to https://github.com/MyHomeMyData/ioBroker.e3oncan/lib/data-points.md for details
474
- * (MyHomeMyData) Added metadata to several data points, e.g. description, unit, link to further info
475
- * (MyHomeMyData) During scan of data points now metadata are added to data point objects
476
- * (MyHomeMyData) Changed handling of writable data points; this info now also is available within definition of data point; however, there is no change to handling of the whitelist of writables
477
- * (MyHomeMyData) During device scan the information about used data formats (data point 382) is evaluated
478
- * (MyHomeMyData) Updated structure of many data points; for details see this [changelog](lib/data-points.md#changelog-of-data-point-definitions)
479
-
480
- ### 0.10.14 (2025-11-03)
481
- * (MyHomeMyData) Added elements to enums.js based of PR no. 182 of open3e
482
- * (MyHomeMyData) Simplified configuration of dids scan limits in source code
483
- * (MyHomeMyData) Extended scan up to did 3338
484
- * (MyHomeMyData) Added hint regarding scan range in Readme
485
- * (MyHomeMyData) Fixes for issue #169 (repository checker)
486
- * (MyHomeMyData) Bugfix: Manual change of device specific dids was not evaluated for collect workers
487
- * (MyHomeMyData) Update of list of data points for E3 devices to version 20251102
488
-
489
458
  ### Older versions
490
459
 
491
460
  Older changelog entries are available in [CHANGELOG_OLD.md](CHANGELOG_OLD.md).
@@ -1,92 +1,92 @@
1
1
  {
2
+ "'Device state name' must not be blank!": "'Device state name' must not be blank!",
3
+ "Activate communication": "Activate communication",
4
+ "Assignments to External CAN Adapter": "Assignments to External CAN Adapter",
5
+ "Assignments to Internal CAN Adapter": "Assignments to Internal CAN Adapter",
6
+ "Assignments to UDS CAN Adapter": "Assignments to UDS CAN Adapter",
7
+ "Assignments to second CAN Adapter": "Assignments to second CAN Adapter",
2
8
  "CAN Adapter": "CAN Adapter",
3
- "Please start this adapter instance to enable further configuration options.": "Please start this adapter instance to enable further configuration options.",
4
- "Please press button 'Save', when you're done on this tab.": "Please press button 'Save', when you're done on this tab.",
5
- "External CAN Adapter": "External CAN Adapter",
6
- "Device mame of CAN adapter connected to external bus, e.g. can0": "Device mame of CAN adapter connected to external bus, e.g. can0",
9
+ "CAN id - still experimental. Leave blank for deactivation.": "CAN id - still experimental. Leave blank for deactivation.",
10
+ "CAN id for collecting data": "CAN id for collecting data",
11
+ "Cancel": "Cancel",
12
+ "Check, if this adapter shall be used.": "Check, if this adapter shall be used.",
13
+ "Codec": "Codec",
14
+ "Codec used for datapoint": "Codec used for data point",
15
+ "Collecting Data on External CAN Adapter": "Collecting Data on External CAN Adapter",
16
+ "Collecting Data on Internal CAN Adapter": "Collecting Data on Internal CAN Adapter",
17
+ "Collecting Data on UDS CAN Adapter": "Collecting Data on UDS CAN Adapter",
18
+ "Collecting Data on second CAN Adapter": "Collecting Data on second CAN Adapter",
19
+ "Configuration requires a running adapter instance!": "Configuration requires a running adapter instance!",
20
+ "Confirm scan for datapoints": "Confirm scan for data points",
7
21
  "Connect to Adapter": "Connect to Adapter",
8
- "Internal CAN Adapter": "Internal CAN Adapter",
22
+ "Data formats used by the device": "Data formats used by the device",
23
+ "Description": "Description",
24
+ "Description of datapoint": "Description of data point",
25
+ "Detected Collect CAN IDs": "Detected Collect CAN IDs",
26
+ "Detected during last device scan. Run scan to update.": "Detected during last device scan. Run scan to update.",
27
+ "Detected energy meters": "Detected energy meters",
28
+ "Device Address": "Device address",
29
+ "Device ECU address (fixed)": "Device ECU address (fixed)",
30
+ "Device ECU name (fixed)": "Device ECU name (fixed)",
31
+ "Device is using these formats for numbers, date and time": "Device is using these formats for numbers, date and time",
32
+ "Device mame of CAN adapter connected to UDS-capable bus, e.g. can0": "Device mame of CAN adapter connected to UDS-capable bus, e.g. can0",
33
+ "Device mame of CAN adapter connected to external bus, e.g. can0": "Device mame of CAN adapter connected to external bus, e.g. can0",
9
34
  "Device mame of CAN adapter connected to internal bus, e.g. can1": "Device mame of CAN adapter connected to internal bus, e.g. can1",
10
- "List of UDS devices": "List of UDS devices",
11
- "List of available devices": "List of available devices",
12
- "Configuration requires a running adapter instance!": "Configuration requires a running adapter instance!",
13
- "You may edit 2nd column to set name of state for the device (visible in object tree).": "You may edit 2nd column to set name of state for the device (visible in object tree).",
14
- "UDS device scan is ongoing. This may take up to 20 seconds.": "UDS device scan is ongoing. This may take up to 20 seconds.",
15
- "'Device state name' must not be blank!": "'Device state name' must not be blank!",
16
- "Symbol '.' not allowed in 'Device state name'": "Symbol '.' not allowed in 'Device state name'",
35
+ "Device mame of CAN adapter connected to second bus, e.g. can1": "Device mame of CAN adapter connected to second bus, e.g. can1",
17
36
  "Device name (Viessmann)": "Device name (Viessmann)",
37
+ "Device name in object tree. Must not contain dots.": "Device name in object tree. Must not contain dots.",
18
38
  "Device state name": "Device state name",
19
- "Device ECU name (fixed)": "Device ECU name (fixed)",
20
- "Data formats used by the device": "Data formats used by the device",
21
- "Device is using these formats for numbers, date and time": "Device is using these formats for numbers, date and time",
22
- "n/a": "n/a",
23
- "For a list of frequently used data points see here.": "For a list of frequently used data points see here.",
39
+ "Devices for collecting data. No writing to CAN bus. Press '+' to add device.": "Devices for collecting data. No writing to CAN bus. Press '+' to add device.",
40
+ "ERROR: column 'Device state name' must contain unique text.": "ERROR: column 'Device state name' must contain unique text.",
41
+ "Energy Meter E380": "Energy Meter E380",
42
+ "Energy Meters": "Energy Meters",
43
+ "Energy meter detection and configuration": "Energy meter detection and configuration",
44
+ "External CAN Adapter": "External CAN Adapter",
24
45
  "For a list of all available data points see here.": "For a list of all available data points see here.",
25
- "Device Address": "Device address",
26
- "Device ECU address (fixed)": "Device ECU address (fixed)",
27
- "CAN id for collecting data": "CAN id for collecting data",
28
- "CAN id - still experimental. Leave blank for deactivation.": "CAN id - still experimental. Leave blank for deactivation.",
29
- "List of datapoints": "List of data points",
30
- "Start scan for datapoints of all devices": "Start scan for data points of all devices",
31
- "Confirm scan for datapoints": "Confirm scan for data points",
32
- "Scan will take up to 5 minutes. Please make sure, no other UDSonCAN client (e.g. Open3Eclient.py) is running. Please do not close the tab during scan. You may follow up the progress by watching the Log in an additional tab.": "Scan will take up to 5 minutes. Please make sure, no other UDSonCAN client (e.g. Open3Eclient.py) is running. Please do not close the tab during scan. You may follow up the progress by watching the Log in an additional tab.",
33
- "OK": "OK",
34
- "Cancel": "Cancel",
35
- "Select device": "Select device",
36
- "List of device specific datapoints": "List of device specific data points",
46
+ "For a list of frequently used data points see here.": "For a list of frequently used data points see here.",
37
47
  "ID": "ID",
38
48
  "Id of datapoint": "Id of data point",
49
+ "Internal CAN Adapter": "Internal CAN Adapter",
39
50
  "Length": "Length",
40
51
  "Length of datapoint": "Length of data point",
41
- "Name": "Name",
42
- "Description of datapoint": "Description of data point",
43
- "Name of datapoint": "Name of data point",
44
- "Codec": "Codec",
45
- "Codec used for datapoint": "Codec used for data point",
46
- "Assignments to External CAN Adapter": "Assignments to External CAN Adapter",
47
- "Energy Meter E380": "Energy Meter E380",
48
- "WARNING: Values below 2 seconds may cause heavy system load!": "WARNING: Values below 2 seconds may cause heavy system load!",
49
- "Activate communication": "Activate communication",
50
- "This text will be used as base for object tree": "This text will be used as base for object tree",
52
+ "List of UDS devices": "List of UDS devices",
53
+ "List of available devices": "List of available devices",
54
+ "List of datapoints": "List of data points",
55
+ "List of device specific datapoints": "List of device specific data points",
51
56
  "Min. update time (s)": "Min. update time (s)",
52
57
  "Minumum update time for states. 0 for immediate update.": "Minumum update time for states. 0 for immediate update.",
53
- "Collecting Data on External CAN Adapter": "Collecting Data on External CAN Adapter",
54
- "Devices for collecting data. No writing to CAN bus. Press '+' to add device.": "Devices for collecting data. No writing to CAN bus. Press '+' to add device.",
58
+ "Name": "Name",
59
+ "Name of datapoint": "Name of data point",
55
60
  "No device for collecting available (missing CAN ID).": "No device for collecting available (missing CAN ID).",
56
- "ERROR: column 'Device state name' must contain unique text.": "ERROR: column 'Device state name' must contain unique text.",
57
- "active": "active",
61
+ "OK": "OK",
62
+ "Optional description of this schedule.": "Optional description of this schedule.",
63
+ "Please press button 'Save', when you're done on this tab.": "Please press button 'Save', when you're done on this tab.",
64
+ "Please start this adapter instance to enable further configuration options.": "Please start this adapter instance to enable further configuration options.",
65
+ "Requesting data on UDS CAN Adapter via UDSonCAN": "Requesting data on UDS CAN Adapter via UDSonCAN",
58
66
  "Requesting data on external CAN Adapter via UDSonCAN": "Requesting data on external CAN Adapter via UDSonCAN",
59
- "Specify schedules for devices, press '+' to begin.": "Specify schedules for devices, press '+' to begin.",
67
+ "Run the scan above to discover all data points on your devices and add metadata (description, unit, access). This is required before writing to any data point and recommended after every adapter or device firmware update.": "Run the scan above to discover all data points on your devices and add metadata (description, unit, access). This is required before writing to any data point and recommended after every adapter or device firmware update.",
68
+ "Save all data point values to object tree during scan": "Save all data point values to object tree during scan",
69
+ "Scan will take up to 5 minutes. Please make sure, no other UDSonCAN client (e.g. Open3Eclient.py) is running. Please do not close the tab during scan. You may follow up the progress by watching the Log in an additional tab.": "Scan will take up to 5 minutes. Please make sure, no other UDSonCAN client (e.g. Open3Eclient.py) is running. Please do not close the tab during scan. You may follow up the progress by watching the Log in an additional tab.",
60
70
  "Schedule (s)": "Schedule (s)",
61
71
  "Schedule for requesting given datapoints. 0 for one time request on start of adapter instance.": "Schedule for requesting given data points. 0 for one time request on start of adapter instance.",
72
+ "Second CAN Adapter": "Second CAN Adapter",
73
+ "Select device": "Select device",
62
74
  "Separate by comma! All given datapoints will be requested with specified schedule and ECU address.": "Separate by comma! All given data points will be requested with specified schedule and ECU address.",
63
- "Assignments to Internal CAN Adapter": "Assignments to Internal CAN Adapter",
64
- "Collecting Data on Internal CAN Adapter": "Collecting Data on Internal CAN Adapter",
65
- "Update list of datapoints": "Update list of data points",
75
+ "Specify schedules for devices, press '+' to begin.": "Specify schedules for devices, press '+' to begin.",
76
+ "Start scan for datapoints of all devices": "Start scan for data points of all devices",
66
77
  "Start scan to update list of devices": "Start scan to update list of devices",
67
- "Description": "Description",
68
- "Optional description of this schedule.": "Optional description of this schedule.",
69
- "Energy Meters": "Energy Meters",
70
- "UDS CAN Adapter": "UDS CAN Adapter",
71
- "Device mame of CAN adapter connected to UDS-capable bus, e.g. can0": "Device mame of CAN adapter connected to UDS-capable bus, e.g. can0",
72
- "Assignments to UDS CAN Adapter": "Assignments to UDS CAN Adapter",
73
- "Collecting Data on UDS CAN Adapter": "Collecting Data on UDS CAN Adapter",
74
- "Requesting data on UDS CAN Adapter via UDSonCAN": "Requesting data on UDS CAN Adapter via UDSonCAN",
75
- "Second CAN Adapter": "Second CAN Adapter",
76
- "Device mame of CAN adapter connected to second bus, e.g. can1": "Device mame of CAN adapter connected to second bus, e.g. can1",
77
- "Assignments to second CAN Adapter": "Assignments to second CAN Adapter",
78
- "Collecting Data on second CAN Adapter": "Collecting Data on second CAN Adapter",
79
- "Detected during last device scan. Run scan to update.": "Detected during last device scan. Run scan to update.",
80
- "Detected energy meters": "Detected energy meters",
81
- "Energy meter detection and configuration": "Energy meter detection and configuration",
82
- "Detected Collect CAN IDs": "Detected Collect CAN IDs",
83
- "Topology summary (JSON)": "Topology summary (JSON)",
78
+ "Symbol '.' not allowed in 'Device state name'": "Symbol '.' not allowed in 'Device state name'",
79
+ "This text will be used as base for object tree": "This text will be used as base for object tree",
84
80
  "Topology summary (HTML)": "Topology summary (HTML)",
85
- "Save all data point values to object tree during scan": "Save all data point values to object tree during scan",
81
+ "Topology summary (JSON)": "Topology summary (JSON)",
82
+ "UDS CAN Adapter": "UDS CAN Adapter",
83
+ "UDS device scan is ongoing. This may take up to 20 seconds.": "UDS device scan is ongoing. This may take up to 20 seconds.",
84
+ "Update list of datapoints": "Update list of data points",
85
+ "WARNING: Values below 2 seconds may cause heavy system load!": "WARNING: Values below 2 seconds may cause heavy system load!",
86
86
  "When unchecked, values and metadata are updated for already existing data point objects only. New data point objects are not created during the scan — they are created automatically on first data receipt after the scan.": "When unchecked, values and metadata are updated for already existing data point objects only. New data point objects are not created during the scan — they are created automatically on first data receipt after the scan.",
87
- "Run the scan above to discover all data points on your devices and add metadata (description, unit, access). This is required before writing to any data point and recommended after every adapter or device firmware update.": "Run the scan above to discover all data points on your devices and add metadata (description, unit, access). This is required before writing to any data point and recommended after every adapter or device firmware update.",
87
+ "You may edit 2nd column to set name of state for the device (visible in object tree).": "You may edit 2nd column to set name of state for the device (visible in object tree).",
88
+ "active": "active",
89
+ "n/a": "n/a",
88
90
  "► After the scan, browse and manage the discovered data points using the 'datapoints page', which is accessible via the link button in the adapter's instance row.": "► After the scan, browse and manage the discovered data points using the 'datapoints page', which is accessible via the link button in the adapter's instance row.",
89
- "► Alternatively, you can use the tab 'Assignments to UDS CAN Adapter' within this configuration dialog.": "► Alternatively, you can use the tab 'Assignments to UDS CAN Adapter' within this configuration dialog.",
90
- "Check, if this adapter shall be used.": "Check, if this adapter shall be used.",
91
- "Device name in object tree. Must not contain dots.": "Device name in object tree. Must not contain dots."
91
+ "► Alternatively, you can use the tab 'Assignments to UDS CAN Adapter' within this configuration dialog.": "► Alternatively, you can use the tab 'Assignments to UDS CAN Adapter' within this configuration dialog."
92
92
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "e3oncan",
4
- "version": "1.0.3",
4
+ "version": "1.1.1",
5
5
  "news": {
6
+ "1.1.1": {
7
+ "en": "Update of list of data points for E3 devices to version 20260705 (common)\nFixed duplicate display of variant data points in data point list of WebUI",
8
+ "de": "Aktualisierung der Liste der Datenpunkte für E3-Geräte auf Version 20260705 für gemeinsame Datenpunkte\nDoppelte Anzeige von varianten Datenpunkten in der Datenpunktliste der WebUI behoben",
9
+ "ru": "Обновление списка параметров данных для устройств E3 до версии 20260705 (общая).\nИсправлено дублирование отображения вариантов точек данных в списке точек данных веб-интерфейса.",
10
+ "pt": "Atualização da lista de pontos de dados para dispositivos E3 para a versão 20260705 (comum)\nCorrigida a exibição duplicada de pontos de dados variantes na lista de pontos de dados da interface web.",
11
+ "nl": "Update van de lijst met gegevenspunten voor E3-apparaten naar versie 20260705 (algemeen)\nDe dubbele weergave van variantgegevenspunten in de gegevenspuntenlijst van de webinterface is gecorrigeerd.",
12
+ "fr": "Mise à jour de la liste des points de données pour les périphériques E3 vers la version 20260705 (commune)\nCorrection de l'affichage en double des points de données de variantes dans la liste des points de données de l'interface Web",
13
+ "it": "Aggiornamento dell'elenco dei punti dati per i dispositivi E3 alla versione 20260705 (comune)\nRisolto il problema di visualizzazione duplicata dei punti dati delle varianti nell'elenco dei punti dati dell'interfaccia Web.",
14
+ "es": "Actualización de la lista de puntos de datos para dispositivos E3 a la versión 20260705 (común).\nSe corrigió la visualización duplicada de puntos de datos de variantes en la lista de puntos de datos de la interfaz web.",
15
+ "pl": "Aktualizacja listy punktów danych dla urządzeń E3 do wersji 20260705 (wspólna)\nNaprawiono duplikację wyświetlania punktów danych wariantów na liście punktów danych interfejsu WebUI",
16
+ "uk": "Оновлення списку точок даних для пристроїв E3 до версії 20260705 (загальна)\nВиправлено дублювання відображення варіантів точок даних у списку точок даних WebUI",
17
+ "zh-cn": "将 E3 设备的数据点列表更新至版本 20260705(通用)\n修复了 WebUI 数据点列表中重复显示变体数据点的问题。"
18
+ },
19
+ "1.1.0": {
20
+ "en": "Update of list of data points for E3 devices to version 20260701 (common) and 20260630 (variant)\nAdded codec `O3ESwitch` for device-dependent data point structures selected by a discriminator byte\nAdded optional `decimals` parameter to numeric codecs to round decoded values\nAdded update of meta data during startup, when structure of data point has changed",
21
+ "de": "Aktualisierung der Liste der Datenpunkte für E3-Geräte auf Version 20260701 für gemeinsame und 20260630 für variante Datenpunkte\nCodec `O3ESwitch` für geräteabhängige Datenpunktstrukturen hinzugefügt, die durch ein Diskriminatorbyte ausgewählt werden.\nDer optionale Parameter `decimals` wurde zu den numerischen Codecs hinzugefügt, um die dekodierten Werte zu runden.\nDie Metadaten werden nun beim Start aktualisiert, wenn sich die Struktur eines Datenpunkts geändert hat.",
22
+ "ru": "Обновлен список параметров данных для устройств E3 до версий 20260701 (общая) и 20260630 (вариант).\nДобавлен кодек `O3ESwitch` для зависимых от устройства структур данных, выбираемых дискриминаторным байтом.\nДобавлен необязательный параметр `decimals` к числовым кодекам для округления декодированных значений.\nДобавлено обновление метаданных во время запуска при изменении структуры точки данных.",
23
+ "pt": "Atualização da lista de pontos de dados para dispositivos E3 para a versão 20260701 (comum) e 20260630 (variante)\nAdicionado o codec `O3ESwitch` para estruturas de pontos de dados dependentes do dispositivo, selecionadas por um byte discriminador.\nAdicionado parâmetro opcional `decimals` aos codecs numéricos para arredondar os valores decodificados.\nAdicionada atualização de metadados durante a inicialização, quando a estrutura do ponto de dados é alterada.",
24
+ "nl": "Update van de lijst met gegevenspunten voor E3-apparaten naar versie 20260701 (standaard) en 20260630 (variant).\nCodec `O3ESwitch` toegevoegd voor apparaatafhankelijke datapuntstructuren die worden geselecteerd door een discriminatorbyte.\nEr is een optionele parameter `decimals` toegevoegd aan numerieke codecs om gedecodeerde waarden af te ronden.\nUpdate van metadata tijdens het opstarten toegevoegd, wanneer de structuur van een datapunt is gewijzigd.",
25
+ "fr": "Mise à jour de la liste des points de données pour les périphériques E3 vers la version 20260701 (commune) et 20260630 (variante)\nAjout du codec `O3ESwitch` pour les structures de points de données dépendantes du périphérique sélectionnées par un octet discriminateur.\nAjout d'un paramètre optionnel `decimals` aux codecs numériques pour arrondir les valeurs décodées\nAjout d'une mise à jour des métadonnées au démarrage, lorsque la structure du point de données a été modifiée.",
26
+ "it": "Aggiornamento dell'elenco dei punti dati per i dispositivi E3 alle versioni 20260701 (comune) e 20260630 (variante).\nAggiunto il codec `O3ESwitch` per le strutture di punti dati dipendenti dal dispositivo selezionate da un byte discriminatore\nAggiunto il parametro opzionale `decimals` ai codec numerici per arrotondare i valori decodificati.\nAggiunto l'aggiornamento dei metadati all'avvio, quando la struttura del punto dati cambia",
27
+ "es": "Actualización de la lista de puntos de datos para dispositivos E3 a la versión 20260701 (común) y 20260630 (variante).\nSe agregó el códec `O3ESwitch` para estructuras de puntos de datos dependientes del dispositivo seleccionadas por un byte discriminador.\nSe agregó el parámetro opcional `decimals` a los códecs numéricos para redondear los valores decodificados.\nSe agregó la actualización de metadatos durante el inicio, cuando la estructura del punto de datos ha cambiado.",
28
+ "pl": "Aktualizacja listy punktów danych dla urządzeń E3 do wersji 20260701 (wspólna) i 20260630 (wariant)\nDodano kodek „O3ESwitch” dla struktur punktów danych zależnych od urządzenia, wybranych przez bajt dyskryminatora\nDodano opcjonalny parametr „decimals” do kodeków numerycznych w celu zaokrąglenia zdekodowanych wartości\nDodano aktualizację metadanych podczas uruchamiania, gdy struktura punktu danych uległa zmianie",
29
+ "uk": "Оновлення списку точок даних для пристроїв E3 до версії 20260701 (загальна) та 20260630 (варіант)\nДодано кодек `O3ESwitch` для залежних від пристрою структур точок даних, вибраних байтом дискримінатора.\nДодано необов'язковий параметр `decimals` до числових кодеків для округлення декодованих значень\nДодано оновлення метаданих під час запуску, коли змінюється структура точки даних.",
30
+ "zh-cn": "将 E3 设备的数据点列表更新至版本 20260701(通用)和 20260630(变体)\n新增了用于设备相关数据点结构的编解码器 `O3ESwitch`,该结构由鉴别器字节选择。\n为数值编解码器添加了可选的 `decimals` 参数,用于对解码值进行四舍五入。\n启动时,当数据点的结构发生变化时,会更新元数据。"
31
+ },
6
32
  "1.0.3": {
7
33
  "en": "Update of list of data points for E3 devices to version 20260528 for common and 20260527 for variant data points; For details see this [changelog](lib/data-points.md#changelog-of-data-point-definitions)\nSuppress spurious variant-did warning when common dict covers the length\nUser-defined variant data point structures in `udsDidsSpecific` can now be protected from automatic updates by adding `\"protected\": true` (and an optional `\"reason\"` text) to the entry; see [documentation](lib/data-points.md#user-defined-data-point-structures-in-udsdidsspecific)\nUpdated socketcan dependency to 4.2.1 (N-API) — the native CAN module no longer needs to be rebuilt after a Node.js upgrade",
8
34
  "de": "Aktualisierung der Liste der Datenpunkte für E3 Geräte auf Version 20260528 für gemeinsame und 20260527 für variante Datenpunkte; Für Details siehe [hier](lib/data-points.md#changelog-of-data-point-definitions)\nIrreführende Varianten-Did Warnung wird unterdrückt\nBenutzerdefinierte Varianten-Datenpunktstrukturen in `udsDidsSpecific` können nun durch Hinzufügen von `\"protected\": true` (und optionaler `\"reason\"' Text) zum Eintrag vor automatischen Updates geschützt werden; siehe [Dokumentation](lib/data-points.md#user-definiert-data-point-structures-in-udsdidsspezifische)\nAktualisierte socketcan-Abhängigkeit auf 4.2.1 (N-API) — das native CAN-Modul muss nach einem Node.js-Upgrade nicht mehr neu compiliert werden",
@@ -67,32 +93,6 @@
67
93
  "pl": "Naprawiono: Zapisywanie harmonogramów w zakładce punkty danych może zostawić nieświeże wpisy pod pewnymi warunkami\nDodano przycisk Topologia do zakładki punkty danych; otwiera schemat topologii autobusu w oknie modalnym",
68
94
  "uk": "Виправлено: Зберегти графіки в вкладці даних може залишити записи за певними умовами\nДодано кнопку Топології до вкладки даних; відкриває схему топології автобуса в модальному діалоговому вікні",
69
95
  "zh-cn": "固定:在数据点标签中保存时间表可能会在某些条件下留下呆滞的条目\n添加到数据点标签的地形按钮; 在模式对话框中打开总线地形图"
70
- },
71
- "1.0.0-beta.1": {
72
- "en": "Bus topology analysis is now generated automatically after the data point scan; results are stored in info.topology (JSON) and info.topologyHtml (HTML); see Readme for details\nInput validation added for interval and delay fields in the datapoints tab — only positive integers are accepted",
73
- "de": "Bus-Topologie-Analyse wird jetzt automatisch nach dem Datenpunktscan erstellt; Ergebnisse werden in info.topology (JSON) und info.topologyHtml (HTML) gespeichert; Details im Readme\nEingabevalidierung für Intervall- und Verzögerungsfelder in der Datenpunkte-Seite ergänzt — nur positive ganze Zahlen werden akzeptiert",
74
- "ru": "Анализ топологии шины теперь генерируется автоматически после сканирования точек данных; результаты сохраняются в info.topology (JSON) и info.topologyHtml (HTML); подробности в Readme\nДобавлена проверка ввода для полей интервала и задержки на вкладке точек данных — принимаются только положительные целые числа",
75
- "pt": "A análise da topologia do barramento é agora gerada automaticamente após o scan dos pontos de dados; os resultados são armazenados em info.topology (JSON) e info.topologyHtml (HTML); consulte o Readme para detalhes\nValidação de entrada adicionada para campos de intervalo e atraso na aba de pontos de dados — apenas inteiros positivos são aceites",
76
- "nl": "Bus-topologieanalyse wordt nu automatisch gegenereerd na de datapuntscan; resultaten worden opgeslagen in info.topology (JSON) en info.topologyHtml (HTML); zie Readme voor details\nInvoervalidatie toegevoegd voor interval- en vertragingsvelden in de datapunten tab — alleen positieve gehele getallen worden geaccepteerd",
77
- "fr": "L'analyse de la topologie du bus est maintenant générée automatiquement après le scan des points de données; les résultats sont stockés dans info.topology (JSON) et info.topologyHtml (HTML); voir le Readme pour les détails\nValidation des entrées ajoutée pour les champs d'intervalle et de délai dans l'onglet des points de données — seuls les entiers positifs sont acceptés",
78
- "it": "L'analisi della topologia del bus viene ora generata automaticamente dopo la scansione dei punti dati; i risultati sono memorizzati in info.topology (JSON) e info.topologyHtml (HTML); vedere il Readme per i dettagli\nAggiunta la validazione degli input per i campi intervallo e ritardo nella scheda dei punti dati — vengono accettati solo interi positivi",
79
- "es": "El análisis de la topología del bus ahora se genera automáticamente después del escaneo de puntos de datos; los resultados se almacenan en info.topology (JSON) e info.topologyHtml (HTML); consulte el Readme para más detalles\nSe añadió validación de entrada para los campos de intervalo y retraso en la pestaña de puntos de datos — solo se aceptan enteros positivos",
80
- "pl": "Analiza topologii magistrali jest teraz generowana automatycznie po skanowaniu punktów danych; wyniki są przechowywane w info.topology (JSON) i info.topologyHtml (HTML); szczegóły w Readme\nDodano walidację danych wejściowych dla pól interwału i opóźnienia w zakładce punktów danych — akceptowane są tylko dodatnie liczby całkowite",
81
- "uk": "Аналіз топології шини тепер генерується автоматично після сканування точок даних; результати зберігаються в info.topology (JSON) та info.topologyHtml (HTML); подробиці у Readme\nДодано перевірку введення для полів інтервалу та затримки на вкладці точок даних — приймаються лише додатні цілі числа",
82
- "zh-cn": "数据点扫描后现在自动生成总线拓扑分析;结果存储在info.topology(JSON)和info.topologyHtml(HTML)中;详情请参阅Readme\n在数据点标签的间隔和延迟字段中添加了输入验证——只接受正整数"
83
- },
84
- "1.0.0-beta.0": {
85
- "en": "Introduced new e3oncan datapoints webUI pinned to the adapter's instance row\nEnergy meters (E380, E3100CB) are now auto-detected during the device scan by passive CAN listening on both CAN channels\nState names for energy meters are assigned automatically based on CAN address and channel; see Readme for details\nEnergy meter Collect toggle and delay are now configured exclusively in the e3oncan datapoints page; changes take effect after adapter restart\nOn first run after upgrade, the active setting is automatically migrated from the previous adapter configuration\nCollect-capable devices are now auto-detected during the data point scan by passive CAN listening; a pin icon is shown in the device card header for each detected device\nAdded option to suppress storing of data point values during data point scan",
86
- "de": "Neue e3oncan Datenpunkte-Webseite, direkt in der Adapterinstanzzeile verankert\nEnergiezähler (E380, E3100CB) werden jetzt beim Gerätescan durch passives CAN-Lauschen auf beiden Kanälen automatisch erkannt\nState-Namen für Energiezähler werden automatisch anhand von CAN-Adresse und Kanal vergeben; Details im Readme\nCollect-Schalter und Verzögerung für Energiezähler werden ausschließlich in der e3oncan Datenpunkte-Seite konfiguriert; Änderungen werden nach Adapter-Neustart wirksam\nBeim ersten Start nach einem Upgrade wird die Aktiv-Einstellung automatisch aus der bisherigen Adapterkonfiguration migriert\nCollect-fähige Geräte werden jetzt beim Datenpunktscan durch passives CAN-Lauschen automatisch erkannt; ein Pin-Symbol erscheint im Gerätekarten-Header für jedes erkannte Gerät\nOption hinzugefügt, das Speichern von Datenpunktwerten während des Datenpunktscans zu unterdrücken",
87
- "ru": "Новая веб-страница датапоинтов e3oncan, закреплённая в строке экземпляра адаптера\nСчётчики электроэнергии (E380, E3100CB) теперь автоматически обнаруживаются при сканировании устройств путём пассивного прослушивания CAN на обоих каналах\nИмена состояний для счётчиков электроэнергии назначаются автоматически по адресу CAN и каналу; подробности в Readme\nПереключатель Collect и задержка для счётчиков электроэнергии настраиваются исключительно на странице датапоинтов e3oncan; изменения вступают в силу после перезапуска адаптера\nПри первом запуске после обновления активная настройка автоматически переносится из предыдущей конфигурации\nУстройства с поддержкой Collect теперь автоматически обнаруживаются при сканировании датапоинтов; значок булавки отображается в заголовке карточки устройства\nДобавлена опция для отключения сохранения значений датапоинтов во время сканирования",
88
- "pt": "Nova página web de pontos de dados e3oncan fixada na linha de instância do adaptador\nContadores de energia (E380, E3100CB) são agora automaticamente detectados durante o scan de dispositivos por escuta passiva CAN em ambos os canais\nNomes de estado para contadores de energia são atribuídos automaticamente com base no endereço CAN e canal; consulte o Readme para detalhes\nO interruptor Collect e o atraso para contadores de energia são configurados exclusivamente na página de pontos de dados e3oncan; as alterações têm efeito após reinício do adaptador\nNa primeira execução após atualização, a configuração ativa é automaticamente migrada da configuração anterior do adaptador\nDispositivos com capacidade Collect são agora automaticamente detectados durante o scan de pontos de dados; um ícone de pino é mostrado no cabeçalho do cartão do dispositivo\nAdicionada opção para suprimir o armazenamento de valores de pontos de dados durante o scan",
89
- "nl": "Nieuwe e3oncan datapunten webpagina vastgezet in de adapterinstantierij\nEnergiemeters (E380, E3100CB) worden nu automatisch gedetecteerd tijdens de apparaatscan door passief CAN-luisteren op beide kanalen\nToestandsnamen voor energiemeters worden automatisch toegewezen op basis van CAN-adres en kanaal; zie Readme voor details\nDe Collect-schakelaar en vertraging voor energiemeters worden uitsluitend geconfigureerd op de e3oncan datapunten pagina; wijzigingen worden van kracht na herstart van de adapter\nBij de eerste uitvoering na een upgrade wordt de actieve instelling automatisch gemigreerd vanuit de vorige adapterconfiguratie\nCollect-geschikte apparaten worden nu automatisch gedetecteerd tijdens de datapuntscan; een speldpictogram verschijnt in de apparaatkaart header voor elk gedetecteerd apparaat\nOptie toegevoegd om het opslaan van datapuntwaarden tijdens de scan te onderdrukken",
90
- "fr": "Nouvelle page web des points de données e3oncan épinglée dans la ligne d'instance de l'adaptateur\nLes compteurs d'énergie (E380, E3100CB) sont maintenant automatiquement détectés lors du scan des appareils par écoute passive CAN sur les deux canaux\nLes noms d'état des compteurs d'énergie sont attribués automatiquement selon l'adresse CAN et le canal ; voir le Readme pour les détails\nL'interrupteur Collect et le délai pour les compteurs d'énergie sont configurés exclusivement dans la page des points de données e3oncan ; les modifications prennent effet après redémarrage de l'adaptateur\nLors du premier démarrage après une mise à jour, la configuration active est automatiquement migrée depuis la configuration précédente\nLes appareils compatibles Collect sont maintenant automatiquement détectés lors du scan des points de données ; une icône d'épingle est affichée dans l'en-tête de la carte de l'appareil\nAjout d'une option pour supprimer l'enregistrement des valeurs de points de données lors du scan",
91
- "it": "Nuova pagina web dei punti dati e3oncan agganciata alla riga dell'istanza dell'adattatore\nI contatori di energia (E380, E3100CB) vengono ora rilevati automaticamente durante la scansione dei dispositivi tramite ascolto passivo CAN su entrambi i canali\nI nomi degli stati per i contatori di energia vengono assegnati automaticamente in base all'indirizzo CAN e al canale; vedere il Readme per i dettagli\nL'interruttore Collect e il ritardo per i contatori di energia sono configurati esclusivamente nella pagina dei punti dati e3oncan; le modifiche hanno effetto dopo il riavvio dell'adattatore\nAl primo avvio dopo un aggiornamento, la configurazione attiva viene migrata automaticamente dalla configurazione precedente\nI dispositivi con supporto Collect vengono ora rilevati automaticamente durante la scansione dei punti dati; un'icona a spillo è mostrata nell'intestazione della scheda del dispositivo\nAggiunta opzione per sopprimere il salvataggio dei valori dei punti dati durante la scansione",
92
- "es": "Nueva página web de puntos de datos e3oncan anclada en la fila de instancia del adaptador\nLos contadores de energía (E380, E3100CB) ahora se detectan automáticamente durante el escaneo de dispositivos mediante escucha pasiva CAN en ambos canales\nLos nombres de estado para los contadores de energía se asignan automáticamente según la dirección CAN y el canal; consulte el Readme para más detalles\nEl interruptor Collect y el retardo para los contadores de energía se configuran exclusivamente en la página de puntos de datos e3oncan; los cambios tienen efecto tras reiniciar el adaptador\nEn la primera ejecución tras una actualización, la configuración activa se migra automáticamente desde la configuración anterior\nLos dispositivos con capacidad Collect ahora se detectan automáticamente durante el escaneo de puntos de datos; se muestra un icono de chincheta en el encabezado de la tarjeta del dispositivo\nSe añadió una opción para suprimir el almacenamiento de valores de puntos de datos durante el escaneo",
93
- "pl": "Nowa strona internetowa punktów danych e3oncan przypięta do wiersza instancji adaptera\nLiczniki energii (E380, E3100CB) są teraz automatycznie wykrywane podczas skanowania urządzeń przez pasywne nasłuchiwanie CAN na obu kanałach\nNazwy stanów dla liczników energii są przypisywane automatycznie na podstawie adresu CAN i kanału; szczegóły w Readme\nPrzełącznik Collect i opóźnienie dla liczników energii są konfigurowane wyłącznie na stronie punktów danych e3oncan; zmiany wchodzą w życie po ponownym uruchomieniu adaptera\nPrzy pierwszym uruchomieniu po aktualizacji aktywna konfiguracja jest automatycznie migrowana z poprzedniej konfiguracji adaptera\nUrządzenia obsługujące tryb Collect są teraz automatycznie wykrywane podczas skanowania punktów danych; ikona pinezki jest wyświetlana w nagłówku karty urządzenia\nDodano opcję pomijania zapisywania wartości punktów danych podczas skanowania",
94
- "uk": "Нова веб-сторінка точок даних e3oncan, закріплена в рядку екземпляра адаптера\nЛічильники електроенергії (E380, E3100CB) тепер автоматично виявляються під час сканування пристроїв шляхом пасивного прослуховування CAN на обох каналах\nІмена станів для лічильників електроенергії призначаються автоматично на основі адреси CAN та каналу; подробиці у Readme\nПеремикач Collect і затримка для лічильників електроенергії налаштовуються виключно на сторінці точок даних e3oncan; зміни набирають чинності після перезапуску адаптера\nПри першому запуску після оновлення активне налаштування автоматично переноситься з попередньої конфігурації адаптера\nПристрої з підтримкою Collect тепер автоматично виявляються під час сканування точок даних; значок шпильки відображається у заголовку картки пристрою\nДодано опцію для відключення збереження значень точок даних під час сканування",
95
- "zh-cn": "新的e3oncan数据点网页固定在适配器实例行中\n能量表(E380、E3100CB)现在在设备扫描期间通过对两个CAN通道的被动监听自动检测\n能量表的状态名称根据CAN地址和通道自动分配;详情请参阅Readme\n能量表的Collect开关和延迟仅在e3oncan数据点页面中配置;更改在适配器重启后生效\n升级后首次运行时,激活设置会自动从之前的适配器配置中迁移\n在数据点扫描期间,通过被动CAN监听自动检测支持Collect模式的设备;每个检测到的设备在设备卡片标题中显示图钉图标\n添加了在扫描期间抑制数据点值存储的选项"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/lib/codecs.js CHANGED
@@ -277,6 +277,7 @@ class O3EInt {
277
277
  this.byte_width = byte_width;
278
278
  this.scale = _args.scale;
279
279
  this.signed = _args.signed;
280
+ this.decimals = _args.decimals;
280
281
  }
281
282
  /**
282
283
  * @param {string} data Raw data
@@ -292,7 +293,12 @@ class O3EInt {
292
293
  * @param {Array} data Array of bytes
293
294
  */
294
295
  decode(data) {
295
- return int2val(data.slice(0, this.byte_width), this.signed) / this.scale;
296
+ const val = int2val(data.slice(0, this.byte_width), this.signed) / this.scale;
297
+ if (this.decimals > 0) {
298
+ const f = 10 ** this.decimals;
299
+ return Math.round(val * f) / f;
300
+ }
301
+ return val;
296
302
  }
297
303
 
298
304
  /**
@@ -422,6 +428,7 @@ class O3EFloat32 {
422
428
  this.string_len = string_len;
423
429
  this.id = idStr;
424
430
  this.scale = _args.scale;
431
+ this.decimals = _args.decimals;
425
432
  }
426
433
  /**
427
434
  * @param {number} _data Float32 value
@@ -438,7 +445,12 @@ class O3EFloat32 {
438
445
  const intView = new Int32Array(buffer);
439
446
  const floatView = new Float32Array(buffer);
440
447
  intView[0] = int2val(string_bin, false);
441
- return floatView[0] / this.scale;
448
+ const val = floatView[0] / this.scale;
449
+ if (this.decimals > 0) {
450
+ const f = 10 ** this.decimals;
451
+ return Math.round(val * f) / f;
452
+ }
453
+ return val;
442
454
  }
443
455
 
444
456
  /**
@@ -1016,6 +1028,64 @@ class O3EEnum {
1016
1028
  }
1017
1029
  }
1018
1030
 
1031
+ /**
1032
+ * Codec for UDSonCAN: Discriminated union. Decodes a 1-byte enum value (looked up in
1033
+ * enums[listStr], same as O3EEnum), followed by a payload whose codec is selected from
1034
+ * args.cases by the enum value (falling back to args.default if no case matches).
1035
+ */
1036
+ class O3ESwitch {
1037
+ /**
1038
+ * @param {number} string_len Length of raw data
1039
+ * @param {string} idStr Data ID (DID)
1040
+ * @param {object} _args Additional parameters
1041
+ * @param {string} _devUnits Units and formats of device
1042
+ */
1043
+ constructor(string_len, idStr, _args, _devUnits) {
1044
+ this.string_len = string_len;
1045
+ this.id = idStr;
1046
+ this.listStr = _args.listStr;
1047
+ this.cases = _args.cases;
1048
+ this.default = _args.default;
1049
+ this.devUnits = _devUnits;
1050
+ }
1051
+ /**
1052
+ * @param {object} _data Raw data
1053
+ */
1054
+ encode(_data) {
1055
+ throw new Error('O3ESwitch.encode(): not implemented yet');
1056
+ }
1057
+ /**
1058
+ * @param {Array} string_bin Raw data (array of bytes)
1059
+ */
1060
+ decode(string_bin) {
1061
+ const val = string_bin[0];
1062
+ const txt =
1063
+ this.listStr in enums.enums && String(val) in enums.enums[this.listStr]
1064
+ ? enums.enums[this.listStr][String(val)]
1065
+ : `Enum not found in ${this.listStr}`;
1066
+ const result = { ID: val, Text: txt };
1067
+ const cdi = this.cases[String(val)] ?? this.default;
1068
+ if (!cdi) {
1069
+ result.Error = `No matching case for ID ${val}`;
1070
+ return result;
1071
+ }
1072
+ const subT = new O3Ecodecs[cdi.codec](cdi.len, cdi.id, cdi.args, this.devUnits);
1073
+ const sub = subT.decode(string_bin.slice(1, 1 + subT.string_len));
1074
+ if (sub !== null && typeof sub === 'object' && !Array.isArray(sub)) {
1075
+ Object.assign(result, sub);
1076
+ } else {
1077
+ result[subT.id] = sub;
1078
+ }
1079
+ return result;
1080
+ }
1081
+ /**
1082
+ * Returns length of raw data
1083
+ */
1084
+ __len__() {
1085
+ return this.string_len;
1086
+ }
1087
+ }
1088
+
1019
1089
  /**
1020
1090
  * Codec for UDSonCAN: List of subs
1021
1091
  */
@@ -1256,6 +1326,7 @@ const O3Ecodecs = {
1256
1326
  O3EDateTime: O3EDateTime,
1257
1327
  O3EUtc: O3EUtc,
1258
1328
  O3EEnum: O3EEnum,
1329
+ O3ESwitch: O3ESwitch,
1259
1330
  O3EList: O3EList,
1260
1331
  O3EArray: O3EArray,
1261
1332
  O3EComplexType: O3EComplexType,