iobroker.e3oncan 0.6.9
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/LICENSE +21 -0
- package/README.md +129 -0
- package/admin/e3oncan.png +0 -0
- package/admin/e3oncan_small.png +0 -0
- package/admin/i18n/de/translations.json +60 -0
- package/admin/i18n/en/translations.json +60 -0
- package/admin/i18n/es/translations.json +62 -0
- package/admin/i18n/fr/translations.json +62 -0
- package/admin/i18n/it/translations.json +62 -0
- package/admin/i18n/nl/translations.json +62 -0
- package/admin/i18n/pl/translations.json +62 -0
- package/admin/i18n/pt/translations.json +62 -0
- package/admin/i18n/ru/translations.json +62 -0
- package/admin/i18n/uk/translations.json +62 -0
- package/admin/i18n/zh-cn/translations.json +62 -0
- package/admin/jsonConfig.json +594 -0
- package/admin/udsDevices.json +37 -0
- package/io-package.json +164 -0
- package/lib/adapter-config.d.ts +19 -0
- package/lib/canCollect.js +199 -0
- package/lib/canUds.js +715 -0
- package/lib/codecs.js +709 -0
- package/lib/didsE3.json +29025 -0
- package/lib/didsE380.json +275 -0
- package/lib/didsE3Writables.json +396 -0
- package/lib/enums.js +2223 -0
- package/lib/storage.js +396 -0
- package/lib/udsScan.js +353 -0
- package/main.js +490 -0
- package/package.json +80 -0
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
{
|
|
2
|
+
"i18n": true,
|
|
3
|
+
"type": "tabs",
|
|
4
|
+
"items": {
|
|
5
|
+
"tabCanAdapter": {
|
|
6
|
+
"type": "panel",
|
|
7
|
+
"label": "CAN Adapter",
|
|
8
|
+
"items": {
|
|
9
|
+
"introTabCanInstanceNotActiveTxt": {
|
|
10
|
+
"type": "staticText",
|
|
11
|
+
"text": "Please start this adapter instance to enable further configuration options.",
|
|
12
|
+
"newLine": true,
|
|
13
|
+
"hidden": "_alive",
|
|
14
|
+
"style": {
|
|
15
|
+
"color": "red"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"introTabCanPressSaveTxt": {
|
|
19
|
+
"type": "staticText",
|
|
20
|
+
"text": "Please press button 'Save', when you're done on this tab.",
|
|
21
|
+
"newLine": true,
|
|
22
|
+
"hidden": "!_changed",
|
|
23
|
+
"style": {
|
|
24
|
+
"color": "red"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"canExtHeader": {
|
|
28
|
+
"type": "header",
|
|
29
|
+
"text": "External CAN Adapter",
|
|
30
|
+
"size": 2,
|
|
31
|
+
"newLine": true
|
|
32
|
+
},
|
|
33
|
+
"canExtName": {
|
|
34
|
+
"type": "text",
|
|
35
|
+
"tooltip": "Device mame of CAN adapter connected to external bus, e.g. can0",
|
|
36
|
+
"default" : "vcan0",
|
|
37
|
+
"newLine": false
|
|
38
|
+
},
|
|
39
|
+
"canExtActivated": {
|
|
40
|
+
"type": "checkbox",
|
|
41
|
+
"label": "Connect to Adapter",
|
|
42
|
+
"tooltip": "Check, if this adapter shall be used.",
|
|
43
|
+
"default" : false,
|
|
44
|
+
"newLine": false
|
|
45
|
+
},
|
|
46
|
+
"canIntHeader": {
|
|
47
|
+
"type": "header",
|
|
48
|
+
"text": "Internal CAN Adapter",
|
|
49
|
+
"size": 2,
|
|
50
|
+
"newLine": true
|
|
51
|
+
},
|
|
52
|
+
"canIntName": {
|
|
53
|
+
"type": "text",
|
|
54
|
+
"tooltip": "Device mame of CAN adapter connected to internal bus, e.g. can1",
|
|
55
|
+
"default" : "vcan1",
|
|
56
|
+
"newLine": false
|
|
57
|
+
},
|
|
58
|
+
"canIntActivated": {
|
|
59
|
+
"type": "checkbox",
|
|
60
|
+
"label": "Connect to Adapter",
|
|
61
|
+
"tooltip": "Check, if this adapter shall be used.",
|
|
62
|
+
"default" : false,
|
|
63
|
+
"newLine": false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"tabUdsDevices": {
|
|
68
|
+
"type": "panel",
|
|
69
|
+
"label": "List of UDS devices",
|
|
70
|
+
"hidden": "if (!data.canExtActivated) { return true; } else {return false; }",
|
|
71
|
+
"items": {
|
|
72
|
+
"tableUdsDevicesHdr": {
|
|
73
|
+
"type": "header",
|
|
74
|
+
"text": "List of available devices",
|
|
75
|
+
"size": 2
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
"tableUdsDevicesWarning": {
|
|
79
|
+
"type": "staticText",
|
|
80
|
+
"text": "Configuration requires a running adapter instance!",
|
|
81
|
+
"hidden": "_alive",
|
|
82
|
+
"newLine": true,
|
|
83
|
+
"style": {
|
|
84
|
+
"color": "red"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"introTabUdsDevicesSaveTxt": {
|
|
88
|
+
"type": "staticText",
|
|
89
|
+
"text": "Please press button 'Save', when you're done on this tab.",
|
|
90
|
+
"newLine": true,
|
|
91
|
+
"hidden": "!_changed",
|
|
92
|
+
"style": {
|
|
93
|
+
"color": "red"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"introtableUdsDevicesTxt": {
|
|
97
|
+
"type": "staticText",
|
|
98
|
+
"text": "You may edit 2nd column to set name of state for the device (visible in object tree).",
|
|
99
|
+
"hidden": "if ((data.tableUdsDevices) && (data.tableUdsDevices.length > 0)) { return true; } else {return false; }",
|
|
100
|
+
"newLine": true
|
|
101
|
+
},
|
|
102
|
+
"introTableScanIsActiveTxt": {
|
|
103
|
+
"type": "staticText",
|
|
104
|
+
"text": "UDS device scan is ongoing. This may take up to 20 seconds.",
|
|
105
|
+
"newLine": true,
|
|
106
|
+
"hidden": "if ((data.tableUdsDevices) && (data.tableUdsDevices.length > 0)) { return true; } else {return false; }",
|
|
107
|
+
"style": {
|
|
108
|
+
"color": "red"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"introTableNoEmptyDevNameTxt": {
|
|
112
|
+
"type": "staticText",
|
|
113
|
+
"text": "'Device state name' must not be blank!",
|
|
114
|
+
"newLine": true,
|
|
115
|
+
"hidden": "if ( (data.tableUdsDevices) && (data.tableUdsDevices.length > 0) ) {for (const c of data.tableUdsDevices) {if (c.devStateName === '') return false;}; return true;} else return true;",
|
|
116
|
+
"style": {
|
|
117
|
+
"color": "red"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"introTableNoDotInDevNameTxt": {
|
|
121
|
+
"type": "staticText",
|
|
122
|
+
"text": "Symbol '.' not allowed in 'Device state name'!",
|
|
123
|
+
"newLine": true,
|
|
124
|
+
"hidden": "if ( (data.tableUdsDevices) && (data.tableUdsDevices.length > 0) ) {for (const c of data.tableUdsDevices) {if (c.devStateName.includes('.')) return false;}; return true;} else return true;",
|
|
125
|
+
"style": {
|
|
126
|
+
"color": "red"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
"tableUdsDevices": {
|
|
131
|
+
"type": "table",
|
|
132
|
+
"defaultSendTo": "getUdsDevices",
|
|
133
|
+
"jsonData": "${JSON.stringify(data.tableUdsDevices)}",
|
|
134
|
+
"uniqueColumns": ["devStateName"],
|
|
135
|
+
"newLine": true,
|
|
136
|
+
"sm": 12,
|
|
137
|
+
"md": 12,
|
|
138
|
+
"lg": 12,
|
|
139
|
+
"label": "List of available devices",
|
|
140
|
+
"hidden": "!_alive",
|
|
141
|
+
"noDelete": true,
|
|
142
|
+
"import": true,
|
|
143
|
+
"export": true,
|
|
144
|
+
"items": [
|
|
145
|
+
{
|
|
146
|
+
"type": "text",
|
|
147
|
+
"attr": "devName",
|
|
148
|
+
"width": "15% ",
|
|
149
|
+
"title": "Device name (Viessmann)",
|
|
150
|
+
"tooltip": "Device ECU name (fixed)",
|
|
151
|
+
"filter": false,
|
|
152
|
+
"sort": false,
|
|
153
|
+
"readOnly": true
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"type": "text",
|
|
157
|
+
"attr": "devStateName",
|
|
158
|
+
"width": "15% ",
|
|
159
|
+
"title": "Device state name",
|
|
160
|
+
"tooltip": "Device name in object tree. Must not contain dots.",
|
|
161
|
+
"filter": false,
|
|
162
|
+
"sort": false,
|
|
163
|
+
"validator": "if ( (data.devStateName === '') || (data.devStateName.includes('.')) ) { return false; } else { return true; }",
|
|
164
|
+
"validatorNoSaveOnError": true
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"type": "text",
|
|
168
|
+
"attr": "devAddr",
|
|
169
|
+
"width": "10% ",
|
|
170
|
+
"title": "Device Address",
|
|
171
|
+
"tooltip": "Device ECU address (fixed)",
|
|
172
|
+
"filter": false,
|
|
173
|
+
"sort": false,
|
|
174
|
+
"readOnly": true
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"type": "text",
|
|
178
|
+
"attr": "collectCanId",
|
|
179
|
+
"width": "10% ",
|
|
180
|
+
"title": "CAN id for collecting data",
|
|
181
|
+
"tooltip": "CAN id - still experimental. Leave blank for deactivation.",
|
|
182
|
+
"filter": false,
|
|
183
|
+
"sort": false,
|
|
184
|
+
"readOnly": false
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"tabUdsDids": {
|
|
191
|
+
"type": "panel",
|
|
192
|
+
"label": "List of datapoints",
|
|
193
|
+
"hidden": "if ((data.tableUdsDevices) && (data.tableUdsDevices.length == 0)) { return true; } else {return false; }",
|
|
194
|
+
"items": {
|
|
195
|
+
"tableUdsDidsWarning": {
|
|
196
|
+
"type": "staticText",
|
|
197
|
+
"text": "Configuration requires a running adapter instance!",
|
|
198
|
+
"hidden": "_alive",
|
|
199
|
+
"newLine": true,
|
|
200
|
+
"style": {
|
|
201
|
+
"color": "red"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"tableUdsDidsStartScan": {
|
|
205
|
+
"type": "sendTo",
|
|
206
|
+
"label": "Start scan for datapoints of all devices",
|
|
207
|
+
"variant": "outlined",
|
|
208
|
+
"showProcess": true,
|
|
209
|
+
"style": {
|
|
210
|
+
"align": "right"
|
|
211
|
+
},
|
|
212
|
+
"jsonData": "{}",
|
|
213
|
+
"command": "startDidScan",
|
|
214
|
+
"confirm": {
|
|
215
|
+
"condition": "true",
|
|
216
|
+
"title": "Confirm scan for datapoints",
|
|
217
|
+
"text": "Scan will take up to 5 minutes. Plaese 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.",
|
|
218
|
+
"ok": "OK",
|
|
219
|
+
"cancel": "Cancel"
|
|
220
|
+
},
|
|
221
|
+
"hidden": "!_alive",
|
|
222
|
+
"newLine": true,
|
|
223
|
+
"sm": 12,
|
|
224
|
+
"md": 12,
|
|
225
|
+
"lg": 12
|
|
226
|
+
},
|
|
227
|
+
"tableUdsDidsSelDev": {
|
|
228
|
+
"type": "selectSendTo",
|
|
229
|
+
"label": "Select device",
|
|
230
|
+
"jsonData": "{}",
|
|
231
|
+
"command": "getUdsDidsDevSelect",
|
|
232
|
+
"sm": 8,
|
|
233
|
+
"md": 6,
|
|
234
|
+
"lg": 4,
|
|
235
|
+
"default": "Select device",
|
|
236
|
+
"hidden": "!_alive",
|
|
237
|
+
"alsoDependsOn": ["udsSchedule","tableUdsDevices"],
|
|
238
|
+
"newLine": true
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
"tableUdsDidsButton": {
|
|
242
|
+
"type": "sendTo",
|
|
243
|
+
"command": "getUdsDids",
|
|
244
|
+
"jsonData": "${JSON.stringify(data.tableUdsDidsSelDev)}",
|
|
245
|
+
"label": "Update list of datapoints",
|
|
246
|
+
"variant": "outlined",
|
|
247
|
+
"hidden": "if ( (_alive) && (data.tableUdsDidsSelDev) ) { return false; }; return true;",
|
|
248
|
+
"useNative": true,
|
|
249
|
+
"showProcess": true,
|
|
250
|
+
"newLine": true,
|
|
251
|
+
"sm": 12,
|
|
252
|
+
"md": 12,
|
|
253
|
+
"lg": 12
|
|
254
|
+
},
|
|
255
|
+
|
|
256
|
+
"tableUdsDids": {
|
|
257
|
+
"type": "table",
|
|
258
|
+
"newLine": true,
|
|
259
|
+
"sm": 12,
|
|
260
|
+
"md": 12,
|
|
261
|
+
"lg": 12,
|
|
262
|
+
"label": "List of device specific datapoints",
|
|
263
|
+
"hidden": "if ( (_alive) && (data.tableUdsDidsSelDev) ) { return false; }; return true;",
|
|
264
|
+
"noDelete": true,
|
|
265
|
+
"import": true,
|
|
266
|
+
"export": true,
|
|
267
|
+
"items": [
|
|
268
|
+
{
|
|
269
|
+
"type": "number",
|
|
270
|
+
"attr": "didId",
|
|
271
|
+
"doNotSave": true,
|
|
272
|
+
"width": "10% ",
|
|
273
|
+
"title": "ID",
|
|
274
|
+
"tooltip": "Id of datapoint",
|
|
275
|
+
"filter": false,
|
|
276
|
+
"sort": false
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"type": "number",
|
|
280
|
+
"attr": "didLen",
|
|
281
|
+
"doNotSave": true,
|
|
282
|
+
"width": "10% ",
|
|
283
|
+
"title": "Length",
|
|
284
|
+
"tooltip": "Length of datapoint",
|
|
285
|
+
"filter": false,
|
|
286
|
+
"sort": false
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"type": "text",
|
|
290
|
+
"attr": "didName",
|
|
291
|
+
"doNotSave": true,
|
|
292
|
+
"width": "55% ",
|
|
293
|
+
"title": "Name",
|
|
294
|
+
"tooltip": "Name of datapoint",
|
|
295
|
+
"filter": true,
|
|
296
|
+
"sort": false,
|
|
297
|
+
"readOnly": true
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"type": "text",
|
|
301
|
+
"attr": "didCodec",
|
|
302
|
+
"doNotSave": true,
|
|
303
|
+
"width": "25% ",
|
|
304
|
+
"title": "Codec",
|
|
305
|
+
"tooltip": "Codec used for datapoint",
|
|
306
|
+
"filter": true,
|
|
307
|
+
"sort": false,
|
|
308
|
+
"readOnly": true
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"tabCanAdapterExt": {
|
|
315
|
+
"type": "panel",
|
|
316
|
+
"label": "Assignments to External CAN Adapter",
|
|
317
|
+
"hidden": "if ((data.tableUdsDevices) && (data.tableUdsDevices.length == 0)) { return true; } else {return false; }",
|
|
318
|
+
"items": {
|
|
319
|
+
"tableCanAdapterExtWarning": {
|
|
320
|
+
"type": "staticText",
|
|
321
|
+
"text": "Configuration requires a running adapter instance!",
|
|
322
|
+
"hidden": "_alive",
|
|
323
|
+
"newLine": true,
|
|
324
|
+
"style": {
|
|
325
|
+
"color": "red"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"e380Header": {
|
|
329
|
+
"type": "header",
|
|
330
|
+
"text": "Energy Meter E380",
|
|
331
|
+
"size": 2,
|
|
332
|
+
"newLine": true
|
|
333
|
+
},
|
|
334
|
+
"e380WarnUpdateTime": {
|
|
335
|
+
"type": "staticText",
|
|
336
|
+
"text": "WARNING: Values below 2 seconds may cause heavy system load!",
|
|
337
|
+
"newLine": true,
|
|
338
|
+
"hidden": "if (data.e380Delay < 2) { return false; }; return true;",
|
|
339
|
+
"style": {
|
|
340
|
+
"color": "red"
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"e380Active": {
|
|
344
|
+
"type": "checkbox",
|
|
345
|
+
"label": "active",
|
|
346
|
+
"tooltip": "Activate communication",
|
|
347
|
+
"default" : false,
|
|
348
|
+
"newLine": true
|
|
349
|
+
},
|
|
350
|
+
"e380Name": {
|
|
351
|
+
"type": "text",
|
|
352
|
+
"label": "Device state name",
|
|
353
|
+
"tooltip": "This text will be used as base for object tree",
|
|
354
|
+
"default" : "e380",
|
|
355
|
+
"newLine": false
|
|
356
|
+
},
|
|
357
|
+
"e380Delay": {
|
|
358
|
+
"type": "number",
|
|
359
|
+
"label": "Min. update time (s)",
|
|
360
|
+
"tooltip": "Minumum update time for states. 0 for immediate update.",
|
|
361
|
+
"default" : 5,
|
|
362
|
+
"min": 0,
|
|
363
|
+
"newLine": false
|
|
364
|
+
},
|
|
365
|
+
"tableHdrCol": {
|
|
366
|
+
"type": "header",
|
|
367
|
+
"text": "Collecting Data on External CAN Adapter",
|
|
368
|
+
"size": 2
|
|
369
|
+
},
|
|
370
|
+
|
|
371
|
+
"introTableColExt": {
|
|
372
|
+
"type": "staticText",
|
|
373
|
+
"text": "Devices for collecting data. No writing to CAN bus. Press '+' to add device.",
|
|
374
|
+
"hidden": "if (data.tableUdsDevices) {for(let i=0; i<data.tableUdsDevices.length; i++){if (data.tableUdsDevices[i].collectCanId != '') return false;}; return true;} else {return true;}",
|
|
375
|
+
"newLine": true
|
|
376
|
+
},
|
|
377
|
+
|
|
378
|
+
"introTableColExtNoDevs": {
|
|
379
|
+
"type": "staticText",
|
|
380
|
+
"text": "No device for collecting available (missing CAN ID).",
|
|
381
|
+
"hidden": "if (data.tableUdsDevices) {for(let i=0; i<data.tableUdsDevices.length; i++){if (data.tableUdsDevices[i].collectCanId != '') return true;}; return false;} else {return false;}",
|
|
382
|
+
"newLine": true
|
|
383
|
+
},
|
|
384
|
+
|
|
385
|
+
"tableColExtErrDevName": {
|
|
386
|
+
"type": "staticText",
|
|
387
|
+
"text": "ERROR: column 'Device state name' must contain unique text.",
|
|
388
|
+
"newLine": true,
|
|
389
|
+
"hidden": "const x={}; for(let ii=0; data.tableCollectCanExt && ii<data.tableCollectCanExt.length; ii++){const t=data.tableCollectCanExt[ii].collectCanId; if (x[t]==='x') return false; x[t]='x';}; return true;",
|
|
390
|
+
"style": {
|
|
391
|
+
"color": "red"
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
|
|
395
|
+
"tableCollectCanExt": {
|
|
396
|
+
"type": "table",
|
|
397
|
+
"newLine": true,
|
|
398
|
+
"sm": 12,
|
|
399
|
+
"md": 12,
|
|
400
|
+
"lg": 12,
|
|
401
|
+
"label": "",
|
|
402
|
+
"hidden": "if (data.tableUdsDevices) {for(let i=0; i<data.tableUdsDevices.length; i++){if (data.tableUdsDevices[i].collectCanId != '') return false;}; return true;} else {return true;}",
|
|
403
|
+
"showSecondAddAt": 5,
|
|
404
|
+
"items": [
|
|
405
|
+
{
|
|
406
|
+
"type": "checkbox",
|
|
407
|
+
"attr": "collectActive",
|
|
408
|
+
"width": "5% ",
|
|
409
|
+
"title": "active",
|
|
410
|
+
"tooltip": "Activate communication",
|
|
411
|
+
"filter": false,
|
|
412
|
+
"sort": false,
|
|
413
|
+
"default": true
|
|
414
|
+
},
|
|
415
|
+
{ "type": "selectSendTo",
|
|
416
|
+
"title": "Select device",
|
|
417
|
+
"command": "getExtColDeviceSelect",
|
|
418
|
+
"attr": "collectCanId",
|
|
419
|
+
"jsonData": "${JSON.stringify(globalData.tableUdsDevices)}",
|
|
420
|
+
"width": "15%",
|
|
421
|
+
"default": "Select device",
|
|
422
|
+
"alsoDependsOn": ["collectActive","tableUdsDevices"],
|
|
423
|
+
"newLine": false,
|
|
424
|
+
"validator": "if (data.collectCanId === 'Select device') { return false; } else { return true; }",
|
|
425
|
+
"validatorNoSaveOnError": true
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"type": "number",
|
|
429
|
+
"attr": "collectDelayTime",
|
|
430
|
+
"width": "15% ",
|
|
431
|
+
"title": "Min. update time (s)",
|
|
432
|
+
"tooltip": "Minumum update time for states. 0 for immediate update.",
|
|
433
|
+
"filter": false,
|
|
434
|
+
"sort": false,
|
|
435
|
+
"min": 0,
|
|
436
|
+
"step": 1,
|
|
437
|
+
"default": 5
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
"tableHdrUds": {
|
|
442
|
+
"type": "header",
|
|
443
|
+
"text": "Requesting data on external CAN Adapter via UDSonCAN",
|
|
444
|
+
"size": 2
|
|
445
|
+
},
|
|
446
|
+
|
|
447
|
+
"introTableUds": {
|
|
448
|
+
"type": "staticText",
|
|
449
|
+
"text": "Specify schedules for devices, press '+' to begin.",
|
|
450
|
+
"newLine": true
|
|
451
|
+
},
|
|
452
|
+
"tableUdsSchedules": {
|
|
453
|
+
"type": "table",
|
|
454
|
+
"newLine": true,
|
|
455
|
+
"sm": 12,
|
|
456
|
+
"md": 12,
|
|
457
|
+
"lg": 12,
|
|
458
|
+
"label": "",
|
|
459
|
+
"showSecondAddAt": 5,
|
|
460
|
+
"items": [
|
|
461
|
+
{
|
|
462
|
+
"type": "checkbox",
|
|
463
|
+
"attr": "udsScheduleActive",
|
|
464
|
+
"width": "5% ",
|
|
465
|
+
"title": "active",
|
|
466
|
+
"tooltip": "Activate communication",
|
|
467
|
+
"filter": false,
|
|
468
|
+
"sort": false,
|
|
469
|
+
"default": true
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"type": "number",
|
|
473
|
+
"attr": "udsSchedule",
|
|
474
|
+
"width": "10% ",
|
|
475
|
+
"title": "Schedule (s)",
|
|
476
|
+
"tooltip": "Schedule for requesting given datapoints. 0 for one time request on start of adapter instance.",
|
|
477
|
+
"filter": false,
|
|
478
|
+
"sort": false,
|
|
479
|
+
"min": 0,
|
|
480
|
+
"step": 1,
|
|
481
|
+
"default": 0
|
|
482
|
+
},
|
|
483
|
+
{ "type": "selectSendTo",
|
|
484
|
+
"title": "Select device",
|
|
485
|
+
"command": "getUdsDeviceSelect",
|
|
486
|
+
"attr": "udsSelectDevAddr",
|
|
487
|
+
"jsonData": "${JSON.stringify(globalData.tableUdsDevices)}",
|
|
488
|
+
"width": "15%",
|
|
489
|
+
"default": "Select device",
|
|
490
|
+
"alsoDependsOn": ["udsSchedule","tableUdsDevices"],
|
|
491
|
+
"newLine": false,
|
|
492
|
+
"validator": "if (data.udsSelectDevAddr === 'Select device') { return false; } else { return true; }",
|
|
493
|
+
"validatorNoSaveOnError": true
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"type": "text",
|
|
497
|
+
"attr": "udsScheduleDids",
|
|
498
|
+
"width": "30% ",
|
|
499
|
+
"title": "List of datapoints",
|
|
500
|
+
"tooltip": "Separate by comma! All given datapoints will be requested with specified schedule and ECU address.",
|
|
501
|
+
"filter": false,
|
|
502
|
+
"sort": false,
|
|
503
|
+
"default": "256"
|
|
504
|
+
}
|
|
505
|
+
]
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
"tabCanAdapterInt": {
|
|
511
|
+
"type": "panel",
|
|
512
|
+
"label": "Assignments to Internal CAN Adapter",
|
|
513
|
+
"hidden": "return !data.canIntActivated;",
|
|
514
|
+
"items": {
|
|
515
|
+
"tableHdr": {
|
|
516
|
+
"type": "header",
|
|
517
|
+
"text": "Collecting Data on Internal CAN Adapter",
|
|
518
|
+
"size": 2
|
|
519
|
+
},
|
|
520
|
+
|
|
521
|
+
"introTableColInt": {
|
|
522
|
+
"type": "staticText",
|
|
523
|
+
"text": "Devices for collecting data. No writing to CAN bus. Press '+' to add device.",
|
|
524
|
+
"newLine": true
|
|
525
|
+
},
|
|
526
|
+
|
|
527
|
+
"tableCanAdapterIntWarning": {
|
|
528
|
+
"type": "staticText",
|
|
529
|
+
"text": "Configuration requires a running adapter instance!",
|
|
530
|
+
"hidden": "_alive",
|
|
531
|
+
"newLine": true,
|
|
532
|
+
"style": {
|
|
533
|
+
"color": "red"
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
"tableColIntErrDevName": {
|
|
537
|
+
"type": "staticText",
|
|
538
|
+
"text": "ERROR: column 'Device state name' must contain unique text.",
|
|
539
|
+
"newLine": true,
|
|
540
|
+
"hidden": "const x={}; for(let ii=0; data.tableCollectCanInt && ii<data.tableCollectCanInt.length; ii++){const t=data.tableCollectCanInt[ii].collectCanId; if (x[t]==='x') return false; x[t]='x';}; return true;",
|
|
541
|
+
"style": {
|
|
542
|
+
"color": "red"
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
"tableCollectCanInt": {
|
|
546
|
+
"type": "table",
|
|
547
|
+
"newLine": true,
|
|
548
|
+
"sm": 12,
|
|
549
|
+
"md": 12,
|
|
550
|
+
"lg": 12,
|
|
551
|
+
"label": "",
|
|
552
|
+
"showSecondAddAt": 5,
|
|
553
|
+
|
|
554
|
+
"items": [
|
|
555
|
+
{
|
|
556
|
+
"type": "checkbox",
|
|
557
|
+
"attr": "collectActive",
|
|
558
|
+
"width": "5% ",
|
|
559
|
+
"title": "active",
|
|
560
|
+
"tooltip": "Activate communication",
|
|
561
|
+
"filter": false,
|
|
562
|
+
"sort": false,
|
|
563
|
+
"default": false
|
|
564
|
+
},
|
|
565
|
+
{ "type": "selectSendTo",
|
|
566
|
+
"title": "Select device",
|
|
567
|
+
"command": "getIntColDeviceSelect",
|
|
568
|
+
"attr": "collectCanId",
|
|
569
|
+
"jsonData": "${JSON.stringify(globalData.tableUdsDevices)}",
|
|
570
|
+
"width": "15%",
|
|
571
|
+
"default": "Select device",
|
|
572
|
+
"alsoDependsOn": ["collectActive","tableUdsDevices"],
|
|
573
|
+
"newLine": false,
|
|
574
|
+
"validator": "if (data.collectCanId === 'Select device') { return false; } else { return true; }",
|
|
575
|
+
"validatorNoSaveOnError": true
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"type": "number",
|
|
579
|
+
"attr": "collectDelayTime",
|
|
580
|
+
"width": "15% ",
|
|
581
|
+
"title": "Min. update time (s)",
|
|
582
|
+
"tooltip": "Minumum update time for states. 0 for immediate update.",
|
|
583
|
+
"filter": false,
|
|
584
|
+
"sort": false,
|
|
585
|
+
"min": 0,
|
|
586
|
+
"step": 1,
|
|
587
|
+
"default": 5
|
|
588
|
+
}
|
|
589
|
+
]
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"0x680": {
|
|
3
|
+
"tx": "0x680",
|
|
4
|
+
"dpList": "Open3Edatapoints_680.py",
|
|
5
|
+
"prop": "HPMUMASTER"
|
|
6
|
+
},
|
|
7
|
+
"0x684": {
|
|
8
|
+
"tx": "0x684",
|
|
9
|
+
"dpList": "Open3Edatapoints_684.py",
|
|
10
|
+
"prop": "HMI"
|
|
11
|
+
},
|
|
12
|
+
"0x68c": {
|
|
13
|
+
"tx": "0x68c",
|
|
14
|
+
"dpList": "Open3Edatapoints_68c.py",
|
|
15
|
+
"prop": "VCMU"
|
|
16
|
+
},
|
|
17
|
+
"0x6a1": {
|
|
18
|
+
"tx": "0x6a1",
|
|
19
|
+
"dpList": "Open3Edatapoints_6a1.py",
|
|
20
|
+
"prop": "EMCUMASTER"
|
|
21
|
+
},
|
|
22
|
+
"0x6c3": {
|
|
23
|
+
"tx": "0x6c3",
|
|
24
|
+
"dpList": "Open3Edatapoints_6c3.py",
|
|
25
|
+
"prop": "BACKENDGATEWAY"
|
|
26
|
+
},
|
|
27
|
+
"0x6c5": {
|
|
28
|
+
"tx": "0x6c5",
|
|
29
|
+
"dpList": "Open3Edatapoints_6c5.py",
|
|
30
|
+
"prop": "BACKENDGATEWAY"
|
|
31
|
+
},
|
|
32
|
+
"0x6cf": {
|
|
33
|
+
"tx": "0x6cf",
|
|
34
|
+
"dpList": "Open3Edatapoints_6cf.py",
|
|
35
|
+
"prop": "EHCU"
|
|
36
|
+
}
|
|
37
|
+
}
|