iobroker.lorawan 1.18.1 → 1.18.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 -0
- package/admin/i18n/de/translations.json +1 -0
- package/admin/i18n/en/translations.json +1 -0
- package/admin/i18n/es/translations.json +1 -0
- package/admin/i18n/fr/translations.json +1 -0
- package/admin/i18n/it/translations.json +1 -0
- package/admin/i18n/nl/translations.json +1 -0
- package/admin/i18n/pl/translations.json +1 -0
- package/admin/i18n/pt/translations.json +1 -0
- package/admin/i18n/ru/translations.json +1 -0
- package/admin/i18n/uk/translations.json +1 -0
- package/admin/i18n/zh-cn/translations.json +1 -0
- package/admin/jsonConfig.json +1 -0
- package/io-package.json +27 -27
- package/lib/modules/bridge.js +28 -24
- package/lib/modules/bridgeMqttclient.js +1 -1
- package/main.js +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -23,6 +23,12 @@ For now there is documentation in English here: https://wiki.hafenmeister.de
|
|
|
23
23
|
Placeholder for the next version (at the beginning of the line):
|
|
24
24
|
### **WORK IN PROGRESS**
|
|
25
25
|
-->
|
|
26
|
+
### 1.18.3 (2025-11-06)
|
|
27
|
+
* (BenAhrdt) Add possibility to switch the LoraWAN communication off (origin)
|
|
28
|
+
|
|
29
|
+
### 1.18.2 (2025-11-04)
|
|
30
|
+
* (BenAhrdt) Change Topicformat from device_state to device/state
|
|
31
|
+
|
|
26
32
|
### 1.18.1 (2025-11-03)
|
|
27
33
|
* (BenAhrdt) Add Bridge Type Smarthome
|
|
28
34
|
* (BenAhrdt) Bugfix subscribed Topics
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Der Lorawan Netzwerkdienst ist getrennt",
|
|
53
53
|
"LoRaWAN device is back online": "Folgendes Lorawan Gerät ist wieder online",
|
|
54
54
|
"LoRaWAN device is offline": "Folgendes Lorawan Gerät ist offline",
|
|
55
|
+
"LorawanOff": "Aus",
|
|
55
56
|
"MQTTInstance": "MQTT -Instanz",
|
|
56
57
|
"NoBridgeConfiged": "Es wurde keine Bridge Konfiguriert !!!",
|
|
57
58
|
"OriginHeader": "Ursprungseinstellungen",
|
|
@@ -128,6 +128,7 @@
|
|
|
128
128
|
"BridgeTypeOff": "off",
|
|
129
129
|
"BridgeTypeHA": "Home Assistant",
|
|
130
130
|
"BridgeTypeSH": "Smart Home",
|
|
131
|
+
"LorawanOff": "off",
|
|
131
132
|
"RefreshDiscoveryCronJob": "Discover Cycle",
|
|
132
133
|
"RefreshDiscoveryCronJobTooltip": "insert the cronjob for refreshing the discovery",
|
|
133
134
|
"ClimateHeader": "Define States for Climate Entity",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "El servicio de la red Lorawan está desconectado",
|
|
53
53
|
"LoRaWAN device is back online": "El siguiente dispositivo Lorawan está en línea",
|
|
54
54
|
"LoRaWAN device is offline": "El siguiente dispositivo Lorawan está fuera de línea",
|
|
55
|
+
"LorawanOff": "apagado",
|
|
55
56
|
"MQTTInstance": "Instancia mqtt",
|
|
56
57
|
"NoBridgeConfiged": "¡No hay puente configurado!",
|
|
57
58
|
"OriginHeader": "Origensettings",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Le service réseau Lorawan est déconnecté",
|
|
53
53
|
"LoRaWAN device is back online": "L'appareil Lorawan suivant est de retour en ligne",
|
|
54
54
|
"LoRaWAN device is offline": "Le dispositif Lorawan suivant est hors ligne",
|
|
55
|
+
"LorawanOff": "désactivé",
|
|
55
56
|
"MQTTInstance": "Instance MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Il n'y a pas de pont confié !!!",
|
|
57
58
|
"OriginHeader": "Origine",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Il servizio di rete Lorawan è disconnesso",
|
|
53
53
|
"LoRaWAN device is back online": "Il seguente dispositivo Lorawan è tornato online",
|
|
54
54
|
"LoRaWAN device is offline": "Il seguente dispositivo Lorawan è offline",
|
|
55
|
+
"LorawanOff": "spento",
|
|
55
56
|
"MQTTInstance": "Istanza MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Non c'è bridge configurato !!!",
|
|
57
58
|
"OriginHeader": "Originsettings",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Lorawan Network Service is losgekoppeld",
|
|
53
53
|
"LoRaWAN device is back online": "Het volgende Lorawan -apparaat is weer online",
|
|
54
54
|
"LoRaWAN device is offline": "Het volgende Lorawan -apparaat is offline",
|
|
55
|
+
"LorawanOff": "uit",
|
|
55
56
|
"MQTTInstance": "MQTT -instantie",
|
|
56
57
|
"NoBridgeConfiged": "Er is geen brug geconfigureerd !!!",
|
|
57
58
|
"OriginHeader": "Origensettings",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Lorawan Network Service jest odłączona",
|
|
53
53
|
"LoRaWAN device is back online": "Następujące urządzenie Lorawan powraca do Internetu",
|
|
54
54
|
"LoRaWAN device is offline": "Następujące urządzenie Lorawan jest offline",
|
|
55
|
+
"LorawanOff": "wyłączony",
|
|
55
56
|
"MQTTInstance": "Instancja MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Nie ma skonfigurowanego mostu !!!",
|
|
57
58
|
"OriginHeader": "Origensettings",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "O serviço de rede de Lorawan está desconectado",
|
|
53
53
|
"LoRaWAN device is back online": "O seguinte dispositivo Lorawan está novamente online",
|
|
54
54
|
"LoRaWAN device is offline": "O seguinte dispositivo Lorawan está offline",
|
|
55
|
+
"LorawanOff": "desligado",
|
|
55
56
|
"MQTTInstance": "Instância MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Não há ponte configurada !!!",
|
|
57
58
|
"OriginHeader": "Origens",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Сетевая служба Lorawan отключена",
|
|
53
53
|
"LoRaWAN device is back online": "Следующее устройство Lorawan возвращается в Интернет",
|
|
54
54
|
"LoRaWAN device is offline": "Следующее устройство Lorawan в автономном режиме",
|
|
55
|
+
"LorawanOff": "выключенный",
|
|
55
56
|
"MQTTInstance": "Экземпляр MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Там нет моста, настроенного !!!",
|
|
57
58
|
"OriginHeader": "Origensettings",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Служба мережі Lorawan відключена",
|
|
53
53
|
"LoRaWAN device is back online": "Наступний пристрій Lorawan повернувся в Інтернет",
|
|
54
54
|
"LoRaWAN device is offline": "Наступний пристрій Lorawan є в режимі офлайн",
|
|
55
|
+
"LorawanOff": "вимкнено",
|
|
55
56
|
"MQTTInstance": "Екземпляр MQTT",
|
|
56
57
|
"NoBridgeConfiged": "Немає мосту конфігурації !!!",
|
|
57
58
|
"OriginHeader": "Орієнтації",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"LoRaWAN Network Service is disconnected": "Lorawan网络服务已断开连接",
|
|
53
53
|
"LoRaWAN device is back online": "以下Lorawan设备返回在线",
|
|
54
54
|
"LoRaWAN device is offline": "以下Lorawan设备离线",
|
|
55
|
+
"LorawanOff": "离开",
|
|
55
56
|
"MQTTInstance": "MQTT实例",
|
|
56
57
|
"NoBridgeConfiged": "没有桥梁配置!!!",
|
|
57
58
|
"OriginHeader": "起源",
|
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.18.
|
|
4
|
+
"version": "1.18.3",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.18.3": {
|
|
7
|
+
"en": "Add possibility to switch the LoraWAN communication off (origin)",
|
|
8
|
+
"de": "Möglichkeit hinzufügen, die LoraWAN-Kommunikation auszuschalten (Ursprung)",
|
|
9
|
+
"ru": "Добавить возможность отключения связи LoraWAN (оригинал)",
|
|
10
|
+
"pt": "Adicionar possibilidade de desligar a comunicação LoraWAN (origem)",
|
|
11
|
+
"nl": "Mogelijkheid toevoegen om de LoraWAN communicatie uit te schakelen (origine)",
|
|
12
|
+
"fr": "Ajouter la possibilité d'éteindre la communication LoraWAN (origine)",
|
|
13
|
+
"it": "Aggiungi la possibilità di spegnere la comunicazione LoraWAN (origine)",
|
|
14
|
+
"es": "Añadir posibilidad de apagar la comunicación LoraWAN (origin)",
|
|
15
|
+
"pl": "Dodaj możliwość wyłączenia komunikacji LoraWAN (pochodzenie)",
|
|
16
|
+
"uk": "Додати можливість переключити LoraWAN зв'язок (рігін)",
|
|
17
|
+
"zh-cn": "添加切换 LoraWAN 通讯( 来源) 的可能性"
|
|
18
|
+
},
|
|
19
|
+
"1.18.2": {
|
|
20
|
+
"en": "Change Topicformat from device_state to device/state",
|
|
21
|
+
"de": "Topicformat von device_state zu device/state ändern",
|
|
22
|
+
"ru": "Изменить Тематический формат с device_state на device/state",
|
|
23
|
+
"pt": "Alterar o formato do tópico do dispositivo_ estado para o dispositivo/estado",
|
|
24
|
+
"nl": "Topicformat van device_state naar apparaat/staat wijzigen",
|
|
25
|
+
"fr": "Changer le format du sujet de device_state vers device/state",
|
|
26
|
+
"it": "Cambia formato di argomento da dispositivo_stato a dispositivo/stato",
|
|
27
|
+
"es": "Cambiar Topicformat de dispositivo_state a dispositivo/estado",
|
|
28
|
+
"pl": "Zmień format tematu z urządzenia _ state na urządzenie / stan",
|
|
29
|
+
"uk": "Зміна Themeformat від device_state до пристрою/state",
|
|
30
|
+
"zh-cn": "将主题格式从设备_状态更改为设备/状态"
|
|
31
|
+
},
|
|
6
32
|
"1.18.1": {
|
|
7
33
|
"en": "Add Bridge Type Smarthome\nBugfix subscribed Topics\nBugfix on case of objectid starts with '.'",
|
|
8
34
|
"de": "Bridge Type Smarthome hinzufügen\nBugfix abonniert Themen\nBugfix auf Fall von objectid beginnt mit '. '",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "serializuj przypisywanie danych na nextSend\naktualizuj urządzenie sterujące (SensorTemperatura)",
|
|
68
94
|
"uk": "сертифікувати дані додатків на NextSend\nоновлення assignhandler (SensorTemperature)",
|
|
69
95
|
"zh-cn": "序列化下一端的数据\n更新指派手( 传感器)"
|
|
70
|
-
},
|
|
71
|
-
"1.17.16": {
|
|
72
|
-
"en": "bring state_off topic to humidifier",
|
|
73
|
-
"de": "state_off-thema zur befeuchtung bringen",
|
|
74
|
-
"ru": "скачать игру state_off для humidifier",
|
|
75
|
-
"pt": "trazer o tópico state_off para o umidificador",
|
|
76
|
-
"nl": "status_off onderwerp naar bevochtiger brengen",
|
|
77
|
-
"fr": "apporter le sujet état_off à l'humidificateur",
|
|
78
|
-
"it": "portare argomento state_off a umidificatore",
|
|
79
|
-
"es": "traer el tema state_off a humidificador",
|
|
80
|
-
"pl": "przynieść state _ off temat do nawilżacza",
|
|
81
|
-
"uk": "принести стан_вимкнути тему для зволоження",
|
|
82
|
-
"zh-cn": "将状态切换为潮湿器"
|
|
83
|
-
},
|
|
84
|
-
"1.17.15": {
|
|
85
|
-
"en": "notifi new discover in case of oldDiscoveredDevices\nbugfix debug logging",
|
|
86
|
-
"de": "notifi neu entdecken bei oldDiscoveredDevices\nbugfix debug protokollierung",
|
|
87
|
-
"ru": "уведомить новое открытие в случае старых обнаруженных устройств\nрегистрация отладчиков",
|
|
88
|
-
"pt": "notifi nova descoberta no caso de dispositivos antigosdescoberta\nregistro de depuração de bugfix",
|
|
89
|
-
"nl": "notifi nieuwe ontdekking in het geval van oudeDiscoverdDevices\nbugfix debug logging",
|
|
90
|
-
"fr": "notifi nouveau découverte en cas d'ancienDiscoveredDevices\nbugfix debug loging",
|
|
91
|
-
"it": "notifi nuova scoperta in caso di vecchiDiscoveredDevices\nbugfix debug logging",
|
|
92
|
-
"es": "notifi new discover in case of oldDiscoveredDevices\nbugfix debug logging",
|
|
93
|
-
"pl": "notifi nowe odkrycie w przypadku old DiscoveredDevices\nlogowanie debugfix",
|
|
94
|
-
"uk": "неідентифікувати нове відкриття у разі виникнення застарілих\nзареєструватися",
|
|
95
|
-
"zh-cn": "旧发现器的新发现\n调试日志"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/lib/modules/bridge.js
CHANGED
|
@@ -371,7 +371,7 @@ class bridgeClass {
|
|
|
371
371
|
);
|
|
372
372
|
target.normalizedDeficeIdentifier = this.normalizeString(target.DeviceIdentifier);
|
|
373
373
|
target.uniqueString = await this.getUniqueString(config.climateIds.target, target.DeviceIdentifier);
|
|
374
|
-
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString}`.toLowerCase();
|
|
374
|
+
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString?.path}`.toLowerCase();
|
|
375
375
|
|
|
376
376
|
//Min und Max holen
|
|
377
377
|
const targetObject = await this.adapter.getObjectAsync(config.climateIds.target);
|
|
@@ -391,7 +391,7 @@ class bridgeClass {
|
|
|
391
391
|
);
|
|
392
392
|
act.normalizedDeficeIndetifier = this.normalizeString(act.DeviceIdentifier);
|
|
393
393
|
act.uniqueString = await this.getUniqueString(config.climateIds.act, act.DeviceIdentifier);
|
|
394
|
-
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString}`.toLowerCase();
|
|
394
|
+
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString?.path}`.toLowerCase();
|
|
395
395
|
|
|
396
396
|
// Mode
|
|
397
397
|
const mode = {};
|
|
@@ -402,19 +402,19 @@ class bridgeClass {
|
|
|
402
402
|
);
|
|
403
403
|
mode.normalizedDeviceIdentifier = this.normalizeString(mode.DeviceIdentifier);
|
|
404
404
|
mode.uniqueString = await this.getUniqueString(config.climateIds.mode, mode.DeviceIdentifier);
|
|
405
|
-
mode.Topic = `${this.bridgeMqttClient.BridgePrefix}${mode.uniqueString}`.toLowerCase();
|
|
405
|
+
mode.Topic = `${this.bridgeMqttClient.BridgePrefix}${mode.uniqueString?.path}`.toLowerCase();
|
|
406
406
|
|
|
407
|
-
const
|
|
407
|
+
const climateUniqueString = await this.getUniqueString(
|
|
408
408
|
`${this.adapter.namespace}.${config.ClimateName}`,
|
|
409
409
|
target.DeviceIdentifier,
|
|
410
410
|
);
|
|
411
411
|
const DiscoveryTopic =
|
|
412
|
-
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.ClimateEntityType}/${
|
|
412
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.ClimateEntityType}/${climateUniqueString?.path}/config`.toLowerCase();
|
|
413
413
|
const indexLastDotTarget = config.climateIds.target.lastIndexOf('.');
|
|
414
414
|
const Id = config.climateIds.target.substring(0, indexLastDotTarget) + this.EndingVirtualClimate;
|
|
415
415
|
const DiscoveryPayload = {
|
|
416
416
|
name: config.ClimateName,
|
|
417
|
-
unique_id: `${
|
|
417
|
+
unique_id: `${climateUniqueString?.flat}`.toLowerCase(),
|
|
418
418
|
device: {
|
|
419
419
|
identifiers: [target.normalizedDeficeIdentifier.toLowerCase()],
|
|
420
420
|
name: target.DeviceIdentifier,
|
|
@@ -916,12 +916,12 @@ class bridgeClass {
|
|
|
916
916
|
`${this.adapter.namespace}.${changeInfo.id}`,
|
|
917
917
|
DeviceIdentifier,
|
|
918
918
|
);
|
|
919
|
-
const Topic = `${this.bridgeMqttClient.BridgePrefix}${uniqueString}`.toLowerCase();
|
|
919
|
+
const Topic = `${this.bridgeMqttClient.BridgePrefix}${uniqueString?.path}`.toLowerCase();
|
|
920
920
|
|
|
921
921
|
const EntityType = await this.getEntityType(options);
|
|
922
922
|
const AdditionalAttributes = await this.getStateAttributes(options.common, EntityType);
|
|
923
923
|
const DiscoveryTopic =
|
|
924
|
-
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${EntityType}/${uniqueString}/config`.toLowerCase();
|
|
924
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${EntityType}/${uniqueString?.path}/config`.toLowerCase();
|
|
925
925
|
const DiscoveryPayload = {
|
|
926
926
|
name: StateName,
|
|
927
927
|
unique_id: `${normalizedDeviceIdentifier}_${normalizedStateName}`.toLowerCase(),
|
|
@@ -1573,7 +1573,7 @@ class bridgeClass {
|
|
|
1573
1573
|
const target = {};
|
|
1574
1574
|
target.DeviceIdentifier = (await this.getParentNameing(config.climateIds.target))?.parentName;
|
|
1575
1575
|
target.uniqueString = await this.getUniqueString(config.climateIds.target, target.DeviceIdentifier);
|
|
1576
|
-
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString}`.toLowerCase();
|
|
1576
|
+
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString?.path}`.toLowerCase();
|
|
1577
1577
|
|
|
1578
1578
|
//Min und Max holen
|
|
1579
1579
|
const targetObject = await this.adapter.getForeignObjectAsync(config.climateIds.target);
|
|
@@ -1588,26 +1588,26 @@ class bridgeClass {
|
|
|
1588
1588
|
const act = {};
|
|
1589
1589
|
act.DeviceIdentifier = (await this.getParentNameing(config.climateIds.act))?.parentName;
|
|
1590
1590
|
act.uniqueString = await this.getUniqueString(config.climateIds.act, act.DeviceIdentifier);
|
|
1591
|
-
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString}`.toLowerCase();
|
|
1591
|
+
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString?.path}`.toLowerCase();
|
|
1592
1592
|
|
|
1593
1593
|
// Mode
|
|
1594
1594
|
const mode = {};
|
|
1595
1595
|
mode.DeviceIdentifier = (await this.getParentNameing(config.climateIds.mode))?.parentName;
|
|
1596
1596
|
mode.uniqueString = await this.getUniqueString(config.climateIds.mode, mode.DeviceIdentifier);
|
|
1597
|
-
mode.Topic = `${this.bridgeMqttClient.BridgePrefix}${mode.uniqueString}`.toLowerCase();
|
|
1597
|
+
mode.Topic = `${this.bridgeMqttClient.BridgePrefix}${mode.uniqueString?.path}`.toLowerCase();
|
|
1598
1598
|
|
|
1599
|
-
const
|
|
1599
|
+
const climateUniqueString = await this.getUniqueString(
|
|
1600
1600
|
`${this.adapter.namespace}.${config.ClimateName}`,
|
|
1601
1601
|
target.DeviceIdentifier,
|
|
1602
1602
|
);
|
|
1603
1603
|
const DiscoveryTopic =
|
|
1604
|
-
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.ClimateEntityType}/${
|
|
1604
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.ClimateEntityType}/${climateUniqueString?.path}/config`.toLowerCase();
|
|
1605
1605
|
const indexLastDotTarget = config.climateIds.target.lastIndexOf('.');
|
|
1606
1606
|
const Id = config.climateIds.target.substring(0, indexLastDotTarget) + this.EndingVirtualClimate;
|
|
1607
1607
|
|
|
1608
1608
|
const DiscoveryPayload = {
|
|
1609
1609
|
name: config.ClimateName,
|
|
1610
|
-
unique_id: `${
|
|
1610
|
+
unique_id: `${climateUniqueString?.flat}`.toLowerCase(),
|
|
1611
1611
|
device: {
|
|
1612
1612
|
identifiers: [this.normalizeString(target.DeviceIdentifier).toLowerCase()],
|
|
1613
1613
|
name: target.DeviceIdentifier,
|
|
@@ -1801,13 +1801,13 @@ class bridgeClass {
|
|
|
1801
1801
|
const onOff = {};
|
|
1802
1802
|
onOff.DeviceIdentifier = (await this.getParentNameing(config.HumidifierIds.onOff))?.parentName;
|
|
1803
1803
|
onOff.uniqueString = await this.getUniqueString(config.HumidifierIds.onOff, onOff.DeviceIdentifier);
|
|
1804
|
-
onOff.Topic = `${this.bridgeMqttClient.BridgePrefix}${onOff.uniqueString}`.toLowerCase();
|
|
1804
|
+
onOff.Topic = `${this.bridgeMqttClient.BridgePrefix}${onOff.uniqueString?.path}`.toLowerCase();
|
|
1805
1805
|
|
|
1806
1806
|
// Target
|
|
1807
1807
|
const target = {};
|
|
1808
1808
|
target.DeviceIdentifier = (await this.getParentNameing(config.HumidifierIds.target))?.parentName;
|
|
1809
1809
|
target.uniqueString = await this.getUniqueString(config.HumidifierIds.target, target.DeviceIdentifier);
|
|
1810
|
-
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString}`.toLowerCase();
|
|
1810
|
+
target.Topic = `${this.bridgeMqttClient.BridgePrefix}${target.uniqueString?.path}`.toLowerCase();
|
|
1811
1811
|
|
|
1812
1812
|
//Min und Max holen
|
|
1813
1813
|
const targetObject = await this.adapter.getForeignObjectAsync(config.HumidifierIds.target);
|
|
@@ -1822,21 +1822,21 @@ class bridgeClass {
|
|
|
1822
1822
|
const act = {};
|
|
1823
1823
|
act.DeviceIdentifier = (await this.getParentNameing(config.HumidifierIds.act))?.parentName;
|
|
1824
1824
|
act.uniqueString = await this.getUniqueString(config.HumidifierIds.act, act.DeviceIdentifier);
|
|
1825
|
-
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString}`.toLowerCase();
|
|
1825
|
+
act.Topic = `${this.bridgeMqttClient.BridgePrefix}${act.uniqueString?.path}`.toLowerCase();
|
|
1826
1826
|
|
|
1827
|
-
const
|
|
1827
|
+
const humidifierUniqueString = await this.getUniqueString(
|
|
1828
1828
|
`${this.adapter.namespace}.${config.HumidifierName}`,
|
|
1829
1829
|
target.DeviceIdentifier,
|
|
1830
1830
|
);
|
|
1831
1831
|
const entityType = config.Humidifier ? this.HumidifierEntityType : this.DeHumidifierEntityType;
|
|
1832
1832
|
const DiscoveryTopic =
|
|
1833
|
-
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.HumidifierEntityType}/${
|
|
1833
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.HumidifierEntityType}/${humidifierUniqueString?.path}/config`.toLowerCase();
|
|
1834
1834
|
const indexLastDotTarget = config.HumidifierIds.target.lastIndexOf('.');
|
|
1835
1835
|
const Id = config.HumidifierIds.target.substring(0, indexLastDotTarget) + this.EndingVirtualHumidifier;
|
|
1836
1836
|
|
|
1837
1837
|
const DiscoveryPayload = {
|
|
1838
1838
|
name: config.HumidifierName,
|
|
1839
|
-
unique_id: `${
|
|
1839
|
+
unique_id: `${humidifierUniqueString?.flat}`.toLowerCase(),
|
|
1840
1840
|
device: {
|
|
1841
1841
|
identifiers: [this.normalizeString(target.DeviceIdentifier).toLowerCase()],
|
|
1842
1842
|
name: target.DeviceIdentifier,
|
|
@@ -2138,16 +2138,16 @@ class bridgeClass {
|
|
|
2138
2138
|
const uniqueString = await this.getUniqueString(id, deviceIdentifier);
|
|
2139
2139
|
/*const topic =
|
|
2140
2140
|
`${this.bridgeMqttClient.BridgePrefix}${normalizedDeviceIdentifier}/${normalizedStateName}`.toLowerCase();*/
|
|
2141
|
-
const topic = `${this.bridgeMqttClient.BridgePrefix}${uniqueString}`.toLowerCase();
|
|
2141
|
+
const topic = `${this.bridgeMqttClient.BridgePrefix}${uniqueString?.path}`.toLowerCase();
|
|
2142
2142
|
const EntityType = await this.getEntityType(options);
|
|
2143
2143
|
const AdditionalAttributes = await this.getStateAttributes(options.common, EntityType);
|
|
2144
2144
|
/*const discoveryTopic =
|
|
2145
2145
|
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${EntityType}/${normalizedDeviceIdentifier}/${normalizedStateName}/config`.toLowerCase();*/
|
|
2146
2146
|
const discoveryTopic =
|
|
2147
|
-
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${EntityType}/${uniqueString}/config`.toLowerCase();
|
|
2147
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${EntityType}/${uniqueString?.path}/config`.toLowerCase();
|
|
2148
2148
|
const discoveryPayload = {
|
|
2149
2149
|
name: statename,
|
|
2150
|
-
unique_id: `${uniqueString}`.toLowerCase(),
|
|
2150
|
+
unique_id: `${uniqueString?.flat}`.toLowerCase(),
|
|
2151
2151
|
device: { identifiers: [normalizedDeviceIdentifier.toLowerCase()], name: deviceIdentifier },
|
|
2152
2152
|
};
|
|
2153
2153
|
// Add Topics
|
|
@@ -2211,7 +2211,11 @@ class bridgeClass {
|
|
|
2211
2211
|
const activeFunction = 'bridge.js - getUniqueString';
|
|
2212
2212
|
this.adapter.log.debug(`Function ${activeFunction} started.`);
|
|
2213
2213
|
try {
|
|
2214
|
-
|
|
2214
|
+
const unique = {
|
|
2215
|
+
flat: `${this.normalizeString(deviceidentifier)}_${this.normalizeString(id)}`,
|
|
2216
|
+
path: `${this.normalizeString(deviceidentifier)}/${this.normalizeString(id)}`,
|
|
2217
|
+
};
|
|
2218
|
+
return unique;
|
|
2215
2219
|
} catch (error) {
|
|
2216
2220
|
this.adapter.log.error(`error at ${activeFunction}: ${error}`);
|
|
2217
2221
|
}
|
|
@@ -131,7 +131,7 @@ class bridgeMqttClientClass {
|
|
|
131
131
|
*/
|
|
132
132
|
getSubscribtionArray() {
|
|
133
133
|
// Subscribe to the ending of set (with different counts of sublevels 2 -10)
|
|
134
|
-
return [`${this.BridgePrefix}+/set`];
|
|
134
|
+
return [`${this.BridgePrefix}+/set`, `${this.BridgePrefix}+/+/set`];
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
|
package/main.js
CHANGED
|
@@ -75,7 +75,7 @@ class Lorawan extends utils.Adapter {
|
|
|
75
75
|
this.messagehandler = new messagehandlerClass(this);
|
|
76
76
|
|
|
77
77
|
// Set mqtt client => just declare, if a url is set
|
|
78
|
-
if (this.config.
|
|
78
|
+
if (this.config.origin !== 'off') {
|
|
79
79
|
this.mqttClient = new mqttClientClass(this, this.config);
|
|
80
80
|
}
|
|
81
81
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.lorawan",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.3",
|
|
4
4
|
"description": "converts the desired lora gateway data to a ioBroker structure",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "BenAhrdt",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"node-schedule": "^2.1.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@alcalzone/release-script": "^
|
|
36
|
-
"@alcalzone/release-script-plugin-iobroker": "^
|
|
37
|
-
"@alcalzone/release-script-plugin-license": "^
|
|
38
|
-
"@alcalzone/release-script-plugin-manual-review": "^
|
|
35
|
+
"@alcalzone/release-script": "^5.0.0",
|
|
36
|
+
"@alcalzone/release-script-plugin-iobroker": "^4.0.0",
|
|
37
|
+
"@alcalzone/release-script-plugin-license": "^4.0.0",
|
|
38
|
+
"@alcalzone/release-script-plugin-manual-review": "^4.0.0",
|
|
39
39
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
40
40
|
"@iobroker/eslint-config": "^2.2.0",
|
|
41
41
|
"@iobroker/testing": "^5.1.1",
|