iobroker.e3oncan 1.1.1 → 1.1.3
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.md +6 -12
- package/io-package.json +27 -27
- package/lib/canUds.js +39 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -427,6 +427,12 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
|
|
|
427
427
|
Placeholder for the next version (at the beginning of the line):
|
|
428
428
|
### **WORK IN PROGRESS**
|
|
429
429
|
-->
|
|
430
|
+
### 1.1.3 (2026-09-11)
|
|
431
|
+
* (MyHomeMyData) Fixed CAN connection dropping unexpectedly and never recovering on a healthy bus (updated `socketcan` to 4.3.1, which stops treating a recoverable socket error the same as a real disconnect). Refer to issue #255.
|
|
432
|
+
|
|
433
|
+
### 1.1.2 (2026-07-16)
|
|
434
|
+
* (MyHomeMyData) Fixed missing update of meta data (unit, description) when user changes device specific data point definition
|
|
435
|
+
|
|
430
436
|
### 1.1.1 (2026-07-06)
|
|
431
437
|
* (MyHomeMyData) Update of list of data points for E3 devices to version 20260705 (common)
|
|
432
438
|
* (MyHomeMyData) Fixed duplicate display of variant data points in data point list of WebUI
|
|
@@ -443,18 +449,6 @@ If you enjoyed this project — or just feeling generous, consider buying me a b
|
|
|
443
449
|
* (MyHomeMyData) User-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)
|
|
444
450
|
* (MyHomeMyData) Updated socketcan dependency to 4.2.1 (N-API) — the native CAN module no longer needs to be rebuilt after a Node.js upgrade
|
|
445
451
|
|
|
446
|
-
### 1.0.2 (2026-05-17)
|
|
447
|
-
* (MyHomeMyData) Improved error message when native module socketcan fails to load after a Node.js version upgrade — adapter now logs a clear hint to run `iob rebuild`
|
|
448
|
-
|
|
449
|
-
### 1.0.1 (2026-05-11)
|
|
450
|
-
* (MyHomeMyData) Clicking the green scheduled badge on a device card filters the view to show only its scheduled data points; clicking the badge again or the card header restores the full view
|
|
451
|
-
* (MyHomeMyData) Fixed: saving from the datapoints tab now preserves inactive schedules (disabled in the old config UI) for full backward compatibility
|
|
452
|
-
|
|
453
|
-
### 1.0.0 (2026-05-06)
|
|
454
|
-
* (MyHomeMyData) Adapter requires node.js >= 22 now
|
|
455
|
-
* (MyHomeMyData) Improved scan status detection: uses `udsDidsWritable` instead of `didsMetaDict` to reliably detect whether a data point scan has been performed
|
|
456
|
-
* (MyHomeMyData) Added re-scan recommendation hint in datapoints tab when a scan exists but Collect auto-detection has not yet been run
|
|
457
|
-
|
|
458
452
|
### Older versions
|
|
459
453
|
|
|
460
454
|
Older changelog entries are available in [CHANGELOG_OLD.md](CHANGELOG_OLD.md).
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "e3oncan",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.3",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.1.3": {
|
|
7
|
+
"en": "Fixed CAN connection dropping unexpectedly and never recovering on a healthy bus (updated `socketcan` to 4.3.1, which stops treating a recoverable socket error the same as a real disconnect). Refer to issue #255.",
|
|
8
|
+
"de": "Problem behoben, bei dem die CAN-Verbindung auf einem fehlerfreien Bus unerwartet abbrach (`Socketcan` auf 4.3.1 aktualisiert, behandelt einen Socketfehler nicht mehr wie eine echte Trennung). Siehe Issue #255.",
|
|
9
|
+
"ru": "Исправлено непредвиденное прерывание соединения CAN, которое так и не восстановилось на исправной шине (версия `socketcan` обновлена до версии 4.3.1, в которой исправляемая ошибка разъема перестает рассматриваться как реальное отключение). См. выпуск #255.",
|
|
10
|
+
"pt": "A conexão CAN corrigiu uma queda inesperada e nunca se recuperou em um barramento saudável (atualizou `socketcan` para 4.3.1, que deixa de tratar um erro de soquete como uma desconexão real). Veja a edição #255.",
|
|
11
|
+
"nl": "CAN-verbinding opgelost die onverwachts wegviel en nooit meer herstelt op een gezonde bus (`socketcan` bijgewerkt naar 4.3.1, waardoor een herstelbare socketfout niet meer hetzelfde wordt behandeld als een echte verbroken verbinding). Zie nummer #255.",
|
|
12
|
+
"fr": "Correction d'une interruption inattendue de la connexion CAN sur un bus sain (mise à jour de « Socketcan » vers la version 4.3.1, qui ne traite plus une erreur de socket récupérable comme une vraie déconnexion). Voir le numéro #255.",
|
|
13
|
+
"it": "Risolto il problema con la connessione CAN che si interrompeva e non si ripristinava mai su un bus integro (socketcan aggiornato alla 4.3.1, che non considera un errore recuperabile come una vera disconnessione). Cfri il numero #255.",
|
|
14
|
+
"es": "Se corrigió la caída inesperada de la conexión CAN y no se recuperaba nunca en un bus en buen estado (se actualizó `SocketCan' a la 4.3.1, que deja de tratar un error de enchufe recuperable como una desconexión real). Consulte el número #255.",
|
|
15
|
+
"pl": "Naprawiono nieoczekiwane spadanie połączenia CAN i nigdy nie wracało na zdrowej magistrali (zaktualizowano „socketcan” do 4.3.1, co przestaje traktować odzyskiwalny błąd gniazda tak samo jak prawdziwe rozłączenie). Zapoznaj się z numerem #255.",
|
|
16
|
+
"uk": "Виправлено несподіване відключення CAN-з'єднання і ніколи не відновлюється на здоровій шині (оновлено `socketcan` до 4.3.1, що припиняє обробляти помилку сокету так само, як реальне відключення). Зверніться до випуску #255.",
|
|
17
|
+
"zh-cn": "修复了 CAN 连接意外断开且无法在正常的总线上恢复的问题(将 `socketcan`更新到4.3.1,它不再将可恢复的套接字错误视为实际断开连接)。请参阅问题 #255。"
|
|
18
|
+
},
|
|
19
|
+
"1.1.2": {
|
|
20
|
+
"en": "Fixed missing update of meta data (unit, description) when user changes device specific data point definition",
|
|
21
|
+
"de": "Problem behoben: Fehlende Aktualisierung der Metadaten (Einheit, Beschreibung) bei Änderung der gerätespezifischen Datenpunktdefinition durch den Benutzer.",
|
|
22
|
+
"ru": "Исправлена ошибка, из-за которой отсутствовало обновление метаданных (единица измерения, описание) при изменении пользователем определения параметров конкретного устройства.",
|
|
23
|
+
"pt": "Corrigida a falha na atualização dos metadados (unidade, descrição) quando o usuário altera a definição do ponto de dados específico do dispositivo.",
|
|
24
|
+
"nl": "Het probleem is opgelost waarbij de metadata (eenheid, beschrijving) niet werd bijgewerkt wanneer de gebruiker de apparaatspecifieke datapuntdefinitie wijzigde.",
|
|
25
|
+
"fr": "Correction d'un problème de mise à jour des métadonnées (unité, description) lors de la modification de la définition des points de données spécifiques à l'appareil par l'utilisateur.",
|
|
26
|
+
"it": "Risolto il problema relativo all'aggiornamento mancante dei metadati (unità, descrizione) quando l'utente modifica la definizione del punto dati specifico del dispositivo.",
|
|
27
|
+
"es": "Se corrigió la falta de actualización de metadatos (unidad, descripción) cuando el usuario cambia la definición del punto de datos específico del dispositivo.",
|
|
28
|
+
"pl": "Naprawiono brak aktualizacji metadanych (jednostka, opis), gdy użytkownik zmienia definicję punktu danych konkretnego urządzenia",
|
|
29
|
+
"uk": "Виправлено відсутнє оновлення метаданих (одиниця, опис), коли користувач змінює визначення точки даних для конкретного пристрою",
|
|
30
|
+
"zh-cn": "修复了用户更改设备特定数据点定义时元数据(单位、描述)更新缺失的问题。"
|
|
31
|
+
},
|
|
6
32
|
"1.1.1": {
|
|
7
33
|
"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
34
|
"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",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "Kliknięcie zielonej planowej odznaki na karcie urządzenia filtruje widok, aby wyświetlić tylko swoje zaplanowane punkty danych; kliknięcie ponownie na odznakę lub nagłówek karty przywraca pełny widok\nNaprawiono: zapisywanie z zakładki datapoints teraz zachowuje nieaktywne harmonogramy (wyłączone w starym konfigu interfejsu) dla pełnej kompatybilności wstecznej",
|
|
68
94
|
"uk": "Натискання зеленої запланованої значки на картці пристрою фільтрує вигляд, щоб показати лише свої заплановані дані; натискання значка знову або заголовок картки відновлює повне подання\nВиправлено: збереження з вкладки даних тепер зберігає неактивні графіки (здатні у старій конфігурації UI) для повної сумісності з резервними сторонами",
|
|
69
95
|
"zh-cn": "在设备卡片上单击绿色的预定徽章过滤视图,只显示其预定的数据点;再次点击徽章或卡片头恢复全视图\n固定: 现在从数据点标签中保存不活动调度表( 在旧配置 UI 中已失效) , 完全向后兼容"
|
|
70
|
-
},
|
|
71
|
-
"1.0.0": {
|
|
72
|
-
"en": "Adapter requires node.js >= 22 now\nImproved scan status detection: uses `udsDidsWritable` instead of `didsMetaDict` to reliably detect whether a data point scan has been performed\nAdded re-scan recommendation hint in datapoints tab when a scan exists but Collect auto-detection has not yet been run",
|
|
73
|
-
"de": "Adapter benötigt node.js >= 22\nVerbesserte Scan-Status-Erkennung: verwendet `udsDidsWritable` anstelle von `didsMetaDict`, um sicher zu erkennen, ob ein Datenpunkt-Scan durchgeführt wurde\nZusätzlicher re-scan Hinweis in Datenpunkte Tab, wenn ein Scan existiert, aber Collect Auto-Detektion noch nicht ausgeführt wurde",
|
|
74
|
-
"ru": "Адаптер требует node.js >= 22 сейчас\nУлучшенное обнаружение статуса сканирования: использует «udsDidsWritable» вместо «didsMetaDict», чтобы надежно определить, было ли выполнено сканирование точки данных\nДобавлен намек на рекомендацию повторного сканирования на вкладке точки данных, когда существует сканирование, но автоматическое обнаружение еще не запущено",
|
|
75
|
-
"pt": "Adaptador requer nod.js >= 22 agora\nDetecção de status de digitalização melhorada: usa `udsDidsWritable` em vez de `didsMetaDict` para detectar de forma confiável se uma varredura de ponto de dados foi realizada\nAdicionado re- scan sugestão de recomendação na aba pontos de dados quando uma varredura existe, mas Coletar auto- detecção ainda não foi executado",
|
|
76
|
-
"nl": "Voor de adapter zijn node.js < 22 nu nodig\nVerbeterde scanstatus detectie: maakt gebruik van \nToegevoegd re-scan aanbeveling hint in datapoints tabblad wanneer een scan bestaat, maar verzamelen auto-detectie is nog niet uitgevoerd",
|
|
77
|
-
"fr": "Adaptateur nécessite node.js >= 22 maintenant\nAmélioration de la détection de l'état de l'analyse: utilise `udsDidsWritable` au lieu de `didsMetaDict` pour détecter de manière fiable si une analyse de points de données a été effectuée\nAjout d'un indice de recommandation de re-scan dans l'onglet datapoints lorsqu'un scan existe mais Collecter la détection automatique n'a pas encore été exécuté",
|
|
78
|
-
"it": "Adattatore richiede node.js >= 22 ora\nRilevamento dello stato di scansione migliorato: utilizza `udsDidsWritable` invece di `didsMetaDict` per rilevare in modo affidabile se è stata eseguita una scansione del punto di dati\nAggiunto suggerimento re-scan nella scheda datapoints quando una scansione esiste ma Collect auto-detection non è ancora stato eseguito",
|
|
79
|
-
"es": "Adaptador requiere node.js ю= 22 ahora\nMejora de la detección del estado del escaneo: utiliza `udsDidsWritable` en lugar de `didsMetaDict` para detectar fiablemente si se ha realizado un análisis de puntos de datos\nAñadido re-escan recomendación indirecto en la pestaña puntos de datos cuando existe un escaneo, pero aún no se ha realizado la detección automática",
|
|
80
|
-
"pl": "Adapter wymaga node.js > = 22\nUlepszone wykrywanie statusu skanowania: używa 'udsDidsWritable' zamiast 'didsMetaDict' w celu wiarygodnego wykrycia, czy skan punktowy danych został wykonany\nDodano podpowiedź rekomendacji ponownego skanowania w zakładce datapoints, gdy skanowanie istnieje, ale zbieranie autodetekcji nie zostało jeszcze uruchomione",
|
|
81
|
-
"uk": "Адаптер вимагає node.js >= 22 тепер\nУдосконалено виявлення стану сканування: використовує `udsDidsWritable` замість `didsMetaDict` для надійного виявлення, чи проводиться сканування точок даних\nДодано повторне сканування натиснення в вкладці даних, коли існує сканування, але Збір автодетекції ще не працює",
|
|
82
|
-
"zh-cn": "适配器需要节点.js 现在22\n改进扫描状态检测:使用“didsWriteble”而不是“didsMetaDict”可靠地检测是否已进行数据点扫描\n当扫描已经存在但收集自动检测尚未运行时, 在数据点标签中添加了重新扫描建议提示"
|
|
83
|
-
},
|
|
84
|
-
"1.0.0-beta.2": {
|
|
85
|
-
"en": "Fixed: saving schedules in the datapoints tab could leave stale entries under certain conditions\nAdded Topology button to the datapoints tab; opens the bus topology diagram in a modal dialog",
|
|
86
|
-
"de": "Behoben: Das Speichern von Zeitplänen in der Registerkarte Datenpunkte könnte unter bestimmten Bedingungen doppelte Einträge hinterlassen\nHinzugefügt: Button Topologie auf der Seite Datenpunkte öffnet die Topologie-Übersicht",
|
|
87
|
-
"ru": "Исправлено: сохранение графиков во вкладке «Точки данных» может оставить устаревшие записи при определенных условиях\nДобавлена кнопка «Топология» на вкладке «Точки данных»; открывается диаграмма топологии шины в модальном диалоге",
|
|
88
|
-
"pt": "Corrigido: salvar agendamentos na aba pontos de dados poderia deixar entradas antigas sob certas condições\nAdicionado botão de Topologia à página de pontos de dados; abre o diagrama de topologia de barramento numa janela modal",
|
|
89
|
-
"nl": "Fixed: het opslaan van schema's in het tabblad datapunten kan oude items onder bepaalde voorwaarden verlaten\nTopologieknop toegevoegd aan het tabblad datapunten; opent het bustopologiediagram in een modal dialoogvenster",
|
|
90
|
-
"fr": "Correction : enregistrer des horaires dans l'onglet points de données pourrait laisser des entrées bloquées sous certaines conditions\nAjout du bouton Topologie à l'onglet datapoints; ouverture du diagramme de topologie du bus dans une boîte de dialogue modale",
|
|
91
|
-
"it": "Risolto: gli orari di risparmio nella scheda datapoint potrebbero lasciare le voci stanti in determinate condizioni\nAggiunto Topologia pulsante per i punti di dati scheda; apre il diagramma topologia bus in una finestra di dialogo modale",
|
|
92
|
-
"es": "Fijación: los horarios de ahorro en la pestaña Puntos de datos podrían dejar entradas en ciertas condiciones\nBotón de Topología añadido a la pestaña puntos de datos; abre el diagrama de topología del bus en un diálogo modal",
|
|
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",
|
|
94
|
-
"uk": "Виправлено: Зберегти графіки в вкладці даних може залишити записи за певними умовами\nДодано кнопку Топології до вкладки даних; відкриває схему топології автобуса в модальному діалоговому вікні",
|
|
95
|
-
"zh-cn": "固定:在数据点标签中保存时间表可能会在某些条件下留下呆滞的条目\n添加到数据点标签的地形按钮; 在模式对话框中打开总线地形图"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/lib/canUds.js
CHANGED
|
@@ -566,7 +566,46 @@ class uds {
|
|
|
566
566
|
await ctx.log.info(
|
|
567
567
|
`User requested change of UDS device specific datapoint definition on ${this.config.stateBase}`,
|
|
568
568
|
);
|
|
569
|
+
const oldDidsSpec = JSON.parse(JSON.stringify(this.storage.storageDids.didsDictDevSpec));
|
|
569
570
|
await this.storage.storageDids.readKnownDids(ctx, await this.getWorkerOpMode());
|
|
571
|
+
const unitsStr =
|
|
572
|
+
!this.config.devUnits || this.config.devUnits == 'n/a' ? ctx.udsMasterDevUnits : this.config.devUnits;
|
|
573
|
+
for (const [did, didInfo] of Object.entries(this.storage.storageDids.didsDictDevSpec)) {
|
|
574
|
+
if (did.length > 4) {
|
|
575
|
+
continue;
|
|
576
|
+
}
|
|
577
|
+
const didStr = this.storage.storageDids.getDidStr(did);
|
|
578
|
+
await this.storage.storageDids.setupCodecById(didInfo, `${this.config.stateBase}.${didStr}_`, unitsStr);
|
|
579
|
+
await ctx.log.info(`continue => ${JSON.stringify(oldDidsSpec[did])}`);
|
|
580
|
+
if (did in oldDidsSpec && JSON.stringify(oldDidsSpec[did]) === JSON.stringify(didInfo)) {
|
|
581
|
+
continue;
|
|
582
|
+
}
|
|
583
|
+
const idStr = didInfo.id.replace(ctx.FORBIDDEN_CHARS, '_').replace('.', '_');
|
|
584
|
+
const didStateName = `${didStr}_${idStr}`;
|
|
585
|
+
const raw = await this.storage.storageDids.getObjectVal(
|
|
586
|
+
ctx,
|
|
587
|
+
`${this.config.stateBase}.raw.${didStateName}`,
|
|
588
|
+
);
|
|
589
|
+
if (raw != null) {
|
|
590
|
+
const res = await this.storage.storageDids.decodeDid(
|
|
591
|
+
ctx,
|
|
592
|
+
this,
|
|
593
|
+
did,
|
|
594
|
+
didInfo,
|
|
595
|
+
this.storage.storageDids.toByteArray(raw),
|
|
596
|
+
);
|
|
597
|
+
await ctx.delObjectAsync(`${ctx.namespace}.${this.config.stateBase}.tree.${didStateName}`, {
|
|
598
|
+
recursive: true,
|
|
599
|
+
});
|
|
600
|
+
await this.storage.storageDids.storeObjectTree(
|
|
601
|
+
ctx,
|
|
602
|
+
did,
|
|
603
|
+
res.idStr,
|
|
604
|
+
`${this.config.stateBase}.tree.${didStr}_${res.idStr}`,
|
|
605
|
+
res.val,
|
|
606
|
+
);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
570
609
|
await ctx.setStateAsync(id, { val: state.val, ack: true }); // Acknowlegde user command
|
|
571
610
|
return;
|
|
572
611
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.e3oncan",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "Collect data on CAN bus for Viessmann E3 devices, e.g. Vitocal, Vitocharge, Energy Meters E380CA and E3100CB",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Juergen",
|
|
@@ -28,19 +28,19 @@
|
|
|
28
28
|
"linux"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@iobroker/adapter-core": "^3.4.
|
|
32
|
-
"socketcan": "^4.
|
|
31
|
+
"@iobroker/adapter-core": "^3.4.3",
|
|
32
|
+
"socketcan": "^4.3.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@alcalzone/release-script": "^5.2.1",
|
|
36
36
|
"@alcalzone/release-script-plugin-iobroker": "^5.2.0",
|
|
37
|
-
"@alcalzone/release-script-plugin-license": "^5.2.
|
|
37
|
+
"@alcalzone/release-script-plugin-license": "^5.2.2",
|
|
38
38
|
"@alcalzone/release-script-plugin-manual-review": "^5.2.0",
|
|
39
39
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
40
40
|
"@iobroker/eslint-config": "^2.3.4",
|
|
41
|
-
"@iobroker/testing": "^5.
|
|
41
|
+
"@iobroker/testing": "^5.3.0",
|
|
42
42
|
"@tsconfig/node22": "^22.0.5",
|
|
43
|
-
"@types/node": "^22.
|
|
43
|
+
"@types/node": "^22.20.1",
|
|
44
44
|
"@types/proxyquire": "^1.3.31",
|
|
45
45
|
"proxyquire": "^2.1.3",
|
|
46
46
|
"typescript": "~5.8.3"
|