iobroker.lorawan 1.22.0 → 1.22.2
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 -0
- package/admin/jsonConfig.json +0 -1
- package/io-package.json +27 -27
- package/lib/modules/assignhandler.js +2 -2
- package/lib/modules/bridgeDeviceHandler.js +10 -13
- package/lib/modules/deviceManager/bridgeDevices.js +3 -3
- package/lib/modules/deviceManager/lorawanDevices.js +1 -1
- package/lib/modules/deviceManager/toIobDevices.js +2 -2
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -24,6 +24,12 @@ For now there is documentation in English here: https://wiki.hafenmeister.de
|
|
|
24
24
|
Placeholder for the next version (at the beginning of the line):
|
|
25
25
|
### **WORK IN PROGRESS**
|
|
26
26
|
-->
|
|
27
|
+
### 1.22.2 (2026-04-07)
|
|
28
|
+
* (BenAhrdt) remove readOnly flag from jsonEditor
|
|
29
|
+
|
|
30
|
+
### 1.22.1 (2026-04-02)
|
|
31
|
+
* (BenAhrdt) add more roles to toIob devices
|
|
32
|
+
|
|
27
33
|
### 1.22.0 (2026-04-01)
|
|
28
34
|
* (BenAhrdt) new Design in device Manager Cards
|
|
29
35
|
|
package/admin/jsonConfig.json
CHANGED
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "lorawan",
|
|
4
|
-
"version": "1.22.
|
|
4
|
+
"version": "1.22.2",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.22.2": {
|
|
7
|
+
"en": "remove readOnly flag from jsonEditor",
|
|
8
|
+
"de": "readOnly flag von jsonEditor entfernen",
|
|
9
|
+
"ru": "удалить только флаг jsonEditor",
|
|
10
|
+
"pt": "remove readOnly flag do jsonEditor",
|
|
11
|
+
"nl": "readOnly-vlag verwijderen uit jsonEditor",
|
|
12
|
+
"fr": "supprimer readOnly drapeau de jsonEditor",
|
|
13
|
+
"it": "rimuovere readOnly flag da jsonEditor",
|
|
14
|
+
"es": "eliminar readOnly flag de jsonEditor",
|
|
15
|
+
"pl": "usuń flagę readOnly z jsonEditor",
|
|
16
|
+
"uk": "remove readOnly прапорець з jsonEditor",
|
|
17
|
+
"zh-cn": "从json编辑器中删除只读的旗"
|
|
18
|
+
},
|
|
19
|
+
"1.22.1": {
|
|
20
|
+
"en": "add more roles to toIob devices",
|
|
21
|
+
"de": "weitere Rollen zu Iob-Geräten hinzufügen",
|
|
22
|
+
"ru": "добавьте больше ролей в устройства Iob",
|
|
23
|
+
"pt": "adicionar mais funções aos dispositivos toIob",
|
|
24
|
+
"nl": "meer rollen toevoegen aan Iob-apparaten",
|
|
25
|
+
"fr": "ajouter plus de rôles aux périphériques toIob",
|
|
26
|
+
"it": "aggiungere più ruoli ai dispositivi toIob",
|
|
27
|
+
"es": "añadir más roles a los dispositivos",
|
|
28
|
+
"pl": "dodaj więcej ról do urządzeń tolob",
|
|
29
|
+
"uk": "додати більше ролей до пристроїв",
|
|
30
|
+
"zh-cn": "向 toIob 设备添加更多角色"
|
|
31
|
+
},
|
|
6
32
|
"1.22.0": {
|
|
7
33
|
"en": "new Design in device Manager Cards",
|
|
8
34
|
"de": "neues Design in Gerätemanagerkarten",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "dodaj enum query do jakości powietrza",
|
|
68
94
|
"uk": "додати конвертер для якості повітря",
|
|
69
95
|
"zh-cn": "在空气质量中添加enum查询"
|
|
70
|
-
},
|
|
71
|
-
"1.21.27": {
|
|
72
|
-
"en": "bugfix airqulity",
|
|
73
|
-
"de": "bugfix luftmenge",
|
|
74
|
-
"ru": "багфикс airlity",
|
|
75
|
-
"pt": "errorfix airqulity",
|
|
76
|
-
"nl": "bugfix airqulity",
|
|
77
|
-
"fr": "bugfix airqulity",
|
|
78
|
-
"it": "bugfix airqulity",
|
|
79
|
-
"es": "bugfix airqulity",
|
|
80
|
-
"pl": "bugfix airquality",
|
|
81
|
-
"uk": "български, english, українська..",
|
|
82
|
-
"zh-cn": "错误修正空格"
|
|
83
|
-
},
|
|
84
|
-
"1.21.26": {
|
|
85
|
-
"en": "add airquilty for toIob devices\nadd functionality off native card",
|
|
86
|
-
"de": "airquilty für Iob-Geräte hinzufügen\ndie funktionalität der nativen karte hinzufügen",
|
|
87
|
-
"ru": "добавить Airquilty для устройств Iob\nдобавьте функциональность с родной карты",
|
|
88
|
-
"pt": "adicionar arquivamento para dispositivos toIob\nadicionar funcionalidade fora do cartão nativo",
|
|
89
|
-
"nl": "airquilty voor toIob-apparaten toevoegen\nfunctionaliteit toevoegen aan native card",
|
|
90
|
-
"fr": "ajouter de l'airquilty pour les appareils toIob\najouter des fonctionnalités hors carte native",
|
|
91
|
-
"it": "aggiungere airquilty per dispositivi toIob\naggiungere funzionalità dalla scheda madre",
|
|
92
|
-
"es": "añadir airquilty para dispositivos toIob\nañadir funcionalidad de tarjeta nativa",
|
|
93
|
-
"pl": "dodaj airquilty dla urządzeń tolob\ndodać funkcjonalność z rodzimej karty",
|
|
94
|
-
"uk": "додати повітряну опалубку для пристроїв\nдодати функціональність на рідній карті",
|
|
95
|
-
"zh-cn": "添加 ToIob 设备的空平\n从本地卡中添加功能"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -549,7 +549,7 @@ class assignhandlerClass {
|
|
|
549
549
|
},
|
|
550
550
|
},
|
|
551
551
|
},
|
|
552
|
-
TempC_DS: {
|
|
552
|
+
/*TempC_DS: { outcommented 02.04.2026
|
|
553
553
|
approvedFolders: {
|
|
554
554
|
'uplink.decoded': {
|
|
555
555
|
assignfunction: this.commonAssign,
|
|
@@ -559,7 +559,7 @@ class assignhandlerClass {
|
|
|
559
559
|
},
|
|
560
560
|
},
|
|
561
561
|
},
|
|
562
|
-
}
|
|
562
|
+
},*/
|
|
563
563
|
TempC_SHT: {
|
|
564
564
|
approvedFolders: {
|
|
565
565
|
'uplink.decoded': {
|
|
@@ -352,7 +352,7 @@ class bridgeDeviceHandlerClass {
|
|
|
352
352
|
id: `${channel.id}.on`,
|
|
353
353
|
name: clearStatename || stateId,
|
|
354
354
|
type: 'boolean',
|
|
355
|
-
role:
|
|
355
|
+
role: 'switch.light',
|
|
356
356
|
read: true,
|
|
357
357
|
write: true,
|
|
358
358
|
val: entity.state,
|
|
@@ -362,7 +362,7 @@ class bridgeDeviceHandlerClass {
|
|
|
362
362
|
id: `${channel.id}.brightness`,
|
|
363
363
|
name: clearStatename || stateId,
|
|
364
364
|
type: 'number',
|
|
365
|
-
role:
|
|
365
|
+
role: 'level.brightness',
|
|
366
366
|
read: true,
|
|
367
367
|
write: true,
|
|
368
368
|
val: entity.attributes.brightness,
|
|
@@ -387,7 +387,7 @@ class bridgeDeviceHandlerClass {
|
|
|
387
387
|
id: `${channel.id}.color`,
|
|
388
388
|
name: clearStatename || stateId,
|
|
389
389
|
type: 'string',
|
|
390
|
-
role:
|
|
390
|
+
role: 'level.color.hex',
|
|
391
391
|
read: true,
|
|
392
392
|
write: true,
|
|
393
393
|
val: this.adapter.bridge?.rgbToHex(colorObject),
|
|
@@ -402,7 +402,7 @@ class bridgeDeviceHandlerClass {
|
|
|
402
402
|
id: `${channel.id}.colorTempKelvin`,
|
|
403
403
|
name: clearStatename || stateId,
|
|
404
404
|
type: 'number',
|
|
405
|
-
role:
|
|
405
|
+
role: 'level.color.temperature',
|
|
406
406
|
read: true,
|
|
407
407
|
write: true,
|
|
408
408
|
val: entity.attributes.color_temp_kelvin,
|
|
@@ -448,7 +448,7 @@ class bridgeDeviceHandlerClass {
|
|
|
448
448
|
id: `${channel.id}.currentPosition`,
|
|
449
449
|
name: clearStatename || stateId,
|
|
450
450
|
type: 'number',
|
|
451
|
-
role:
|
|
451
|
+
role: 'level.blind',
|
|
452
452
|
read: true,
|
|
453
453
|
write: false,
|
|
454
454
|
val: entity.attributes.current_position,
|
|
@@ -479,7 +479,7 @@ class bridgeDeviceHandlerClass {
|
|
|
479
479
|
id: `${channel.id}.currentTemperature`,
|
|
480
480
|
name: clearStatename || stateId,
|
|
481
481
|
type: 'number',
|
|
482
|
-
role:
|
|
482
|
+
role: 'value.temperature',
|
|
483
483
|
unit: entity.unit_of_measurement || undefined,
|
|
484
484
|
read: true,
|
|
485
485
|
write: false,
|
|
@@ -492,7 +492,7 @@ class bridgeDeviceHandlerClass {
|
|
|
492
492
|
id: `${channel.id}.temperature`,
|
|
493
493
|
name: clearStatename || stateId,
|
|
494
494
|
type: 'number',
|
|
495
|
-
role:
|
|
495
|
+
role: 'level.temperature',
|
|
496
496
|
unit: entity.unit_of_measurement || undefined,
|
|
497
497
|
read: true,
|
|
498
498
|
write: true,
|
|
@@ -511,7 +511,7 @@ class bridgeDeviceHandlerClass {
|
|
|
511
511
|
id: `${channel.id}.on`,
|
|
512
512
|
name: clearStatename || stateId,
|
|
513
513
|
type: 'boolean',
|
|
514
|
-
role:
|
|
514
|
+
role: 'switch.power',
|
|
515
515
|
read: true,
|
|
516
516
|
write: true,
|
|
517
517
|
val: entity.state,
|
|
@@ -521,7 +521,7 @@ class bridgeDeviceHandlerClass {
|
|
|
521
521
|
id: `${channel.id}.currentHumidity`,
|
|
522
522
|
name: clearStatename || stateId,
|
|
523
523
|
type: 'number',
|
|
524
|
-
role:
|
|
524
|
+
role: 'value.humidity',
|
|
525
525
|
unit: entity.unit_of_measurement || undefined,
|
|
526
526
|
read: true,
|
|
527
527
|
write: false,
|
|
@@ -534,7 +534,7 @@ class bridgeDeviceHandlerClass {
|
|
|
534
534
|
id: `${channel.id}.humidity`,
|
|
535
535
|
name: clearStatename || stateId,
|
|
536
536
|
type: 'number',
|
|
537
|
-
role:
|
|
537
|
+
role: 'level.humidity',
|
|
538
538
|
unit: entity.unit_of_measurement || undefined,
|
|
539
539
|
read: true,
|
|
540
540
|
write: true,
|
|
@@ -690,9 +690,6 @@ class bridgeDeviceHandlerClass {
|
|
|
690
690
|
if (entity.domain === 'switch') {
|
|
691
691
|
return 'switch';
|
|
692
692
|
}
|
|
693
|
-
if (entity.domain === 'light') {
|
|
694
|
-
return 'light';
|
|
695
|
-
}
|
|
696
693
|
if (entity.domain === 'button') {
|
|
697
694
|
return 'button';
|
|
698
695
|
}
|
|
@@ -33,9 +33,9 @@ class bridgeDevicesClass {
|
|
|
33
33
|
icon: await this.getIcon(deviceValue),
|
|
34
34
|
manufacturer:
|
|
35
35
|
deviceValue.discovery[0].from === 'lorawanDevices'
|
|
36
|
-
? 'LoRaWAN
|
|
36
|
+
? 'LoRaWAN → Bridge'
|
|
37
37
|
: deviceValue.discovery[0].from === 'foreignDevices'
|
|
38
|
-
? '
|
|
38
|
+
? 'IoBroker → Bridge'
|
|
39
39
|
: 'LoRaWAN-Info',
|
|
40
40
|
model: undefined,
|
|
41
41
|
status: await this.getStatus(deviceValue),
|
|
@@ -388,7 +388,7 @@ class bridgeDevicesClass {
|
|
|
388
388
|
type: 'text',
|
|
389
389
|
readOnly: true,
|
|
390
390
|
minRows: 10,
|
|
391
|
-
maxRows:
|
|
391
|
+
maxRows: 30,
|
|
392
392
|
};
|
|
393
393
|
const sortedDiscovery = [...this.adapter.objectStore.bridge.devices[id].discovery].sort(
|
|
394
394
|
(a, b) => b.lastDiscover.ts - a.lastDiscover.ts,
|
|
@@ -418,7 +418,7 @@ class lorawanDevicesClass {
|
|
|
418
418
|
type: 'text',
|
|
419
419
|
readOnly: true,
|
|
420
420
|
minRows: 10,
|
|
421
|
-
maxRows:
|
|
421
|
+
maxRows: 30,
|
|
422
422
|
};
|
|
423
423
|
const sortedUplinkDecoded = this.sortObjectDeep(this.adapter.objectStore.lorawan.devices[id].uplink.decoded);
|
|
424
424
|
data.uplinkDecoded = JSON.stringify(this.extractStateValues(sortedUplinkDecoded), null, 2);
|
|
@@ -31,7 +31,7 @@ class toIobDevicesClass {
|
|
|
31
31
|
id: deviceId,
|
|
32
32
|
name: deviceValue.object.common.name,
|
|
33
33
|
icon: await this.getIcon(deviceValue),
|
|
34
|
-
manufacturer: '
|
|
34
|
+
manufacturer: 'Bridge → IoBroker',
|
|
35
35
|
model: undefined,
|
|
36
36
|
status: await this.getStatus(deviceValue),
|
|
37
37
|
hasDetails: true,
|
|
@@ -378,7 +378,7 @@ class toIobDevicesClass {
|
|
|
378
378
|
type: 'text',
|
|
379
379
|
readOnly: true,
|
|
380
380
|
minRows: 10,
|
|
381
|
-
maxRows:
|
|
381
|
+
maxRows: 30,
|
|
382
382
|
};
|
|
383
383
|
data.DeviceObject = JSON.stringify(this.adapter.objectStore.toIob.devices[id], null, 2);
|
|
384
384
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.lorawan",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.2",
|
|
4
4
|
"description": "converts the desired lora gateway data to a ioBroker structure",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "BenAhrdt",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@iobroker/dm-utils": "^3.0.9",
|
|
30
30
|
"easy-crc": "^1.1.0",
|
|
31
31
|
"lodash": "^4.17.21",
|
|
32
|
-
"mqtt": "^5.
|
|
32
|
+
"mqtt": "^5.15.1",
|
|
33
33
|
"node-schedule": "^2.1.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
41
41
|
"@iobroker/eslint-config": "^2.2.0",
|
|
42
42
|
"@iobroker/testing": "^5.2.2",
|
|
43
|
-
"@tsconfig/node20": "^20.1.
|
|
43
|
+
"@tsconfig/node20": "^20.1.9",
|
|
44
44
|
"@types/lodash": "^4.17.24",
|
|
45
|
-
"@types/node": "^25.0
|
|
45
|
+
"@types/node": "^25.5.0",
|
|
46
46
|
"typescript": "~5.9.3"
|
|
47
47
|
},
|
|
48
48
|
"main": "main.js",
|