iobroker.e3oncan 1.0.3 → 1.1.0
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 +23 -0
- package/README.md +29 -64
- package/admin/i18n/{en/translations.json → en.json} +69 -69
- package/io-package.json +14 -14
- package/lib/codecs.js +73 -2
- package/lib/codecs.test.js +38 -0
- package/lib/data-points.md +23 -0
- package/lib/didsE3.json +3346 -8
- package/lib/didsE3var.json +24953 -4647
- package/lib/enums.js +11 -6
- package/lib/storage.js +29 -0
- package/main.js +20 -0
- package/package.json +4 -4
- /package/admin/i18n/{de/translations.json → de.json} +0 -0
- /package/admin/i18n/{es/translations.json → es.json} +0 -0
- /package/admin/i18n/{fr/translations.json → fr.json} +0 -0
- /package/admin/i18n/{it/translations.json → it.json} +0 -0
- /package/admin/i18n/{nl/translations.json → nl.json} +0 -0
- /package/admin/i18n/{pl/translations.json → pl.json} +0 -0
- /package/admin/i18n/{pt/translations.json → pt.json} +0 -0
- /package/admin/i18n/{ru/translations.json → ru.json} +0 -0
- /package/admin/i18n/{uk/translations.json → uk.json} +0 -0
- /package/admin/i18n/{zh-cn/translations.json → zh-cn.json} +0 -0
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.0
|
|
64
|
+
|
|
65
|
+
### Aktualisierte Datenpunkt-Definitionen
|
|
66
|
+
|
|
67
|
+
Die Datenpunktdefinitionen wurden auf Version 20260701 (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.0
|
|
65
|
+
|
|
66
|
+
### Updated data point definitions
|
|
67
|
+
|
|
68
|
+
Data point definitions have been updated to version 20260701 (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,12 @@ 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.0 (2026-07-05)
|
|
431
|
+
* (MyHomeMyData) Update of list of data points for E3 devices to version 20260701 (common) and 20260630 (variant)
|
|
432
|
+
* (MyHomeMyData) Added codec `O3ESwitch` for device-dependent data point structures selected by a discriminator byte
|
|
433
|
+
* (MyHomeMyData) Added optional `decimals` parameter to numeric codecs to round decoded values
|
|
434
|
+
* (MyHomeMyData) Added update of meta data during startup, when structure of data point has changed
|
|
435
|
+
|
|
425
436
|
### 1.0.3 (2026-06-02)
|
|
426
437
|
* (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
438
|
* (MyHomeMyData) Suppress spurious variant-did warning when common dict covers the length
|
|
@@ -440,52 +451,6 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
|
|
|
440
451
|
* (MyHomeMyData) Improved scan status detection: uses `udsDidsWritable` instead of `didsMetaDict` to reliably detect whether a data point scan has been performed
|
|
441
452
|
* (MyHomeMyData) Added re-scan recommendation hint in datapoints tab when a scan exists but Collect auto-detection has not yet been run
|
|
442
453
|
|
|
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
454
|
### Older versions
|
|
490
455
|
|
|
491
456
|
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
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
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
|
-
"
|
|
54
|
-
"
|
|
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
|
-
"
|
|
57
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
64
|
-
"
|
|
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
|
-
"
|
|
68
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "e3oncan",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.1.0": {
|
|
7
|
+
"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",
|
|
8
|
+
"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.",
|
|
9
|
+
"ru": "Обновлен список параметров данных для устройств E3 до версий 20260701 (общая) и 20260630 (вариант).\nДобавлен кодек `O3ESwitch` для зависимых от устройства структур данных, выбираемых дискриминаторным байтом.\nДобавлен необязательный параметр `decimals` к числовым кодекам для округления декодированных значений.\nДобавлено обновление метаданных во время запуска при изменении структуры точки данных.",
|
|
10
|
+
"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.",
|
|
11
|
+
"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.",
|
|
12
|
+
"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.",
|
|
13
|
+
"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",
|
|
14
|
+
"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.",
|
|
15
|
+
"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",
|
|
16
|
+
"uk": "Оновлення списку точок даних для пристроїв E3 до версії 20260701 (загальна) та 20260630 (варіант)\nДодано кодек `O3ESwitch` для залежних від пристрою структур точок даних, вибраних байтом дискримінатора.\nДодано необов'язковий параметр `decimals` до числових кодеків для округлення декодованих значень\nДодано оновлення метаданих під час запуску, коли змінюється структура точки даних.",
|
|
17
|
+
"zh-cn": "将 E3 设备的数据点列表更新至版本 20260701(通用)和 20260630(变体)\n新增了用于设备相关数据点结构的编解码器 `O3ESwitch`,该结构由鉴别器字节选择。\n为数值编解码器添加了可选的 `decimals` 参数,用于对解码值进行四舍五入。\n启动时,当数据点的结构发生变化时,会更新元数据。"
|
|
18
|
+
},
|
|
6
19
|
"1.0.3": {
|
|
7
20
|
"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
21
|
"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",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"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
94
|
"uk": "Аналіз топології шини тепер генерується автоматично після сканування точок даних; результати зберігаються в info.topology (JSON) та info.topologyHtml (HTML); подробиці у Readme\nДодано перевірку введення для полів інтервалу та затримки на вкладці точок даних — приймаються лише додатні цілі числа",
|
|
82
95
|
"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
|
-
|
|
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
|
-
|
|
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,
|
package/lib/codecs.test.js
CHANGED
|
@@ -185,6 +185,12 @@ describe('codecs.js => O3EFloat32().decode()', () => {
|
|
|
185
185
|
codecDecode('Float -7851817360303081791424561152', -7851817360303081791424561152, E3.O3Ecodecs.O3EFloat32, 4, 'Float32Test9', {scale: 1.0}, [0xed, 0xca, 0xf6, 0xf8].reverse());
|
|
186
186
|
codecDecode('Float +0.005' , +0.004999999888241291, E3.O3Ecodecs.O3EFloat32, 4, 'Float32Test9', {scale: 1.0}, [0x3b, 0xa3, 0xd7, 0x0a].reverse());
|
|
187
187
|
codecDecode('Float -0.005' , -0.004999999888241291, E3.O3Ecodecs.O3EFloat32, 4, 'Float32Test10', {scale: 1.0}, [0xbb, 0xa3, 0xd7, 0x0a].reverse());
|
|
188
|
+
codecDecode('Float +0.005, decimals=2' , 0.0, E3.O3Ecodecs.O3EFloat32, 4, 'Float32Test11', {scale: 1.0, decimals: 2}, [0x3b, 0xa3, 0xd7, 0x0a].reverse());
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
describe('codecs.js => O3EInt8().decode() with decimals', () => {
|
|
192
|
+
codecDecode('scale=2.55, decimals=2', 1.96, E3.O3Ecodecs.O3EInt8, 1, 'test1', {scale:2.55, signed:false, decimals:2}, [0x05]);
|
|
193
|
+
codecDecode('scale=2.55, decimals=0', 5 / 2.55, E3.O3Ecodecs.O3EInt8, 1, 'test2', {scale:2.55, signed:false, decimals:0}, [0x05]);
|
|
188
194
|
});
|
|
189
195
|
|
|
190
196
|
// Integer DECODER:
|
|
@@ -289,6 +295,38 @@ describe('codecs.js => O3EList()', () => {
|
|
|
289
295
|
codecEncode('Encoding did 266 ', raw_arr, E3.O3Ecodecs[cdi.codec], cdi.len, cdi.id, cdi.args, js, 'Metric / DayMonthYear / TwentyFourHours');
|
|
290
296
|
});
|
|
291
297
|
|
|
298
|
+
describe('codecs.js => O3ESwitch().decode()', () => {
|
|
299
|
+
const cases = {
|
|
300
|
+
'0': { codec: 'RawCodec', len: 1, id: 'Unknown', args: {} },
|
|
301
|
+
'1': { codec: 'O3EInt8', len: 1, id: 'Demand', args: { scale: 10, signed: false } },
|
|
302
|
+
};
|
|
303
|
+
codecDecode(
|
|
304
|
+
'Discriminator matches case 0 (RawCodec)',
|
|
305
|
+
{ ID: 0, Text: 'Standby', Unknown: 'ab' },
|
|
306
|
+
E3.O3Ecodecs.O3ESwitch, 2, 'test1', { listStr: 'ZigBeeOperatingModes', cases },
|
|
307
|
+
[0x00, 0xab],
|
|
308
|
+
);
|
|
309
|
+
codecDecode(
|
|
310
|
+
'Discriminator matches case 1 (O3EInt8)',
|
|
311
|
+
{ ID: 1, Text: 'Heating', Demand: 5 },
|
|
312
|
+
E3.O3Ecodecs.O3ESwitch, 2, 'test2', { listStr: 'ZigBeeOperatingModes', cases },
|
|
313
|
+
[0x01, 0x32],
|
|
314
|
+
);
|
|
315
|
+
codecDecode(
|
|
316
|
+
'Discriminator without case and without default',
|
|
317
|
+
{ ID: 9, Text: 'Enum not found in ZigBeeOperatingModes', Error: 'No matching case for ID 9' },
|
|
318
|
+
E3.O3Ecodecs.O3ESwitch, 2, 'test3', { listStr: 'ZigBeeOperatingModes', cases },
|
|
319
|
+
[0x09, 0xff],
|
|
320
|
+
);
|
|
321
|
+
codecDecode(
|
|
322
|
+
'Discriminator without case, falls back to default',
|
|
323
|
+
{ ID: 9, Text: 'Enum not found in ZigBeeOperatingModes', Unknown: 'cd' },
|
|
324
|
+
E3.O3Ecodecs.O3ESwitch, 2, 'test4',
|
|
325
|
+
{ listStr: 'ZigBeeOperatingModes', cases, default: { codec: 'RawCodec', len: 1, id: 'Unknown', args: {} } },
|
|
326
|
+
[0x09, 0xcd],
|
|
327
|
+
);
|
|
328
|
+
});
|
|
329
|
+
|
|
292
330
|
describe('codecs.js => O3EList()', () => {
|
|
293
331
|
const raw_hex = '0a00b001f3031417120b050e3a313602f3031417120b050e390c3602f3031417120b050e2f273602f3031417120b050d2b063602f3031417120b050d2a233602f3031417120b050d27383602f3031417120b050d26033602f3031417120b050d242d3602f3031417120b050d1f043602f3031417120b050d1e133602';
|
|
294
332
|
const raw_arr = toByteArray(raw_hex);
|
package/lib/data-points.md
CHANGED
|
@@ -185,6 +185,29 @@ The adapter will log `Variant datapoint ... is protected by user. Update skipped
|
|
|
185
185
|
|
|
186
186
|
## Changelog of Data Point Definitions
|
|
187
187
|
|
|
188
|
+
### v1.1.0 (2026-07-05)
|
|
189
|
+
|
|
190
|
+
**Variant data points (didsE3var.json, v20260630)**
|
|
191
|
+
|
|
192
|
+
* **ZigBee current-values DIDs 2086–2143 and 2262** (68-byte variant): Restructured around a new `ViCareDevice` O3ESwitch discriminator that selects the decoded fields by device type:
|
|
193
|
+
- type 0 — empty slot (raw)
|
|
194
|
+
- type 1 — climate sensor: `ActualTemperature` (°C), `Humidity` (%)
|
|
195
|
+
- type 2 — TRV: `ActualTemperature` (°C), `ValveOpening` (%), `DeviceDisplayTurned`, `DeviceChildLockActive`, `DeviceTemperatureSetpoint` (°C)
|
|
196
|
+
- type 3 — floor thermostat / Verteiler: `FlowTemperature` (°C, int16 LE), `OperatingMode`
|
|
197
|
+
- type 4/5 — actuator NC/NO: `Demand` (%), `ValveState`
|
|
198
|
+
- `SignalLevel` (%) and `BatteryRssi` (dBm, signed) added to all types
|
|
199
|
+
* **Room property DIDs 1884–1943** (85-byte variant): Added linked ZigBee device index fields; `ChildLockActive` description updated; `WindowDetection` enum corrected.
|
|
200
|
+
* **DID 1603** (PointOfCommonCouplingPower): minor description update.
|
|
201
|
+
|
|
202
|
+
**Common data points (didsE3.json, v20260701)**
|
|
203
|
+
|
|
204
|
+
* **3 new DIDs** using `O3EFloat32`:
|
|
205
|
+
- 2990 `ElectricalEnergySystemBatteryCapacityDelta`
|
|
206
|
+
- 2991 `ElectricalEnergySystemBatteryCapacity`
|
|
207
|
+
- 2992 `ElectricalEnergySystemStateOfChargeUseable`
|
|
208
|
+
* **Unit fixes**: DID 279 and 281 field `Actual`: unit corrected to °C (was empty); DID 321 field `Average`: unit corrected to °C (was hPa); DID 322 field `Average`: unit corrected to hPa (was °C).
|
|
209
|
+
* `decimals` field added to all numeric sub-fields for consistency with the updated codec definition (value `0` — no change to decoded values).
|
|
210
|
+
|
|
188
211
|
### v1.0.3 (2026-05-31)
|
|
189
212
|
* **ZigBee DIDs 2084–2319 structured**: ZigBeeDeviceProperty (incl. ArticleNumber), ZigBeeDeviceCurrentValues in 57-byte (gas heater) and 68-byte (heat pump) variants with WorkingMode, Setpoint, Display, ChildLock fields
|
|
190
213
|
* **Room DIDs 1884–1943 structured**: RoomProperty (name, type, temperature control, window detection) and RoomCurrentValues (temperature, humidity min/max) in 84/85-byte variants
|