iobroker.lorawan 1.18.51 → 1.18.53

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 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.53 (2025-12-29)
27
+ * (BenAhrdt) add possibility to add folders to
28
+
29
+ ### 1.18.52 (2025-12-29)
30
+ * (BenAhrdt) add possibility to set Devicesuffix in LoraWAN States
31
+
26
32
  ### 1.18.51 (2025-12-20)
27
33
  * (BenAhrdt) add "Temperatur" to autmatic assign
28
34
 
@@ -178,6 +178,7 @@
178
178
  "device online offline": "Gerätezustandsmeldungen",
179
179
  "deviceEUI": "Geräte EUI",
180
180
  "deviceId": "Geräte Id",
181
+ "deviceSuffix": "Gerätesuffix",
181
182
  "deviceType": "Gerätetyp",
182
183
  "deviceTypeTooltip": "Geben Sie den Namen des Gerätetyps ein. Diese Konfiguration ist gültig. (z. B. Dragino XY passt auch zu Dragino)",
183
184
  "downlinkConfig": "Donwlink-Konfiguration",
@@ -257,5 +257,6 @@
257
257
  "CoverGate": "gate",
258
258
  "CoverShade": "shade",
259
259
  "CoverShutter": "shutter",
260
- "CoverWindow": "window"
260
+ "CoverWindow": "window",
261
+ "deviceSuffix": "device Suffix"
261
262
  }
@@ -178,6 +178,7 @@
178
178
  "device online offline": "notificaciones de estado del dispositivo",
179
179
  "deviceEUI": "IUE del dispositivo",
180
180
  "deviceId": "Identificación del dispositivo",
181
+ "deviceSuffix": "dispositivo sufijo",
181
182
  "deviceType": "tipo de dispositivo",
182
183
  "deviceTypeTooltip": "inserte el nombre del tipo de dispositivo, esta configuración es válida. (por ejemplo, Dragino XY también coincide con Dragino)",
183
184
  "downlinkConfig": "Configuración de enlace donwlink",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "notifications d'état de l'appareil",
179
179
  "deviceEUI": "Interface utilisateur de l'appareil",
180
180
  "deviceId": "Identifiant de l'appareil",
181
+ "deviceSuffix": "Suffixe de l'appareil",
181
182
  "deviceType": "type d'appareil",
182
183
  "deviceTypeTooltip": "insérez le nom du type d'appareil, cette configuration est valide. (par exemple, Dragino XY correspond également à Dragino)",
183
184
  "downlinkConfig": "Configuration du lien de téléchargement",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "notifiche sullo stato del dispositivo",
179
179
  "deviceEUI": "IUE del dispositivo",
180
180
  "deviceId": "ID dispositivo",
181
+ "deviceSuffix": "Suffisso dispositivo",
181
182
  "deviceType": "tipo di dispositivo",
182
183
  "deviceTypeTooltip": "inserire il nome del tipo di dispositivo, questa configurazione è valida. (es. Dragino XY corrisponde anche a Dragino)",
183
184
  "downlinkConfig": "Configurazione downloadlink",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "meldingen over de apparaatstatus",
179
179
  "deviceEUI": "Apparaat-EUI",
180
180
  "deviceId": "Apparaat-ID",
181
+ "deviceSuffix": "apparaat Achtervoegsel",
181
182
  "deviceType": "apparaattype",
182
183
  "deviceTypeTooltip": "voer de naam van het apparaattype in, deze configuratie is geldig. (bijv. Dragino XY komt ook overeen met Dragino)",
183
184
  "downlinkConfig": "Donwlink-configuratie",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "powiadomienia o stanie urządzenia",
179
179
  "deviceEUI": "EUI urządzenia",
180
180
  "deviceId": "Identyfikator urządzenia",
181
+ "deviceSuffix": "urządzenie Sufiks",
181
182
  "deviceType": "typ urządzenia",
182
183
  "deviceTypeTooltip": "wstaw nazwę typu urządzenia, ta konfiguracja jest prawidłowa. (np. Dragino XY pasuje również do Dragino)",
183
184
  "downlinkConfig": "Konfiguracja Donwlink",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "notificações de estado do dispositivo",
179
179
  "deviceEUI": "EUI do dispositivo",
180
180
  "deviceId": "ID do dispositivo",
181
+ "deviceSuffix": "Sufixo do dispositivo",
181
182
  "deviceType": "tipo de dispositivo",
182
183
  "deviceTypeTooltip": "insira o nome do tipo de dispositivo, esta configuração é válida. (por exemplo, Dragino XY também corresponde a Dragino)",
183
184
  "downlinkConfig": "Configuração Donwlink",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "уведомления о состоянии устройства",
179
179
  "deviceEUI": "Интерфейс пользовательского интерфейса устройства",
180
180
  "deviceId": "Идентификатор устройства",
181
+ "deviceSuffix": "Суффикс устройства",
181
182
  "deviceType": "тип устройства",
182
183
  "deviceTypeTooltip": "вставьте название типа устройства, этот конфиг действителен. (например, Dragino XY также соответствует Dragino)",
183
184
  "downlinkConfig": "Donwlink-конфигурация",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "сповіщення про стан пристрою",
179
179
  "deviceEUI": "Пристрій EUI",
180
180
  "deviceId": "Ідентифікатор пристрою",
181
+ "deviceSuffix": "суфікс пристрою",
181
182
  "deviceType": "тип пристрою",
182
183
  "deviceTypeTooltip": "вставте назву типу пристрою, ця конфігурація дійсна. (наприклад, Dragino XY також відповідає Dragino)",
183
184
  "downlinkConfig": "Конфігурація Donwlink",
@@ -178,6 +178,7 @@
178
178
  "device online offline": "设备状态通知",
179
179
  "deviceEUI": "设备用户界面",
180
180
  "deviceId": "设备 ID",
181
+ "deviceSuffix": "设备后缀",
181
182
  "deviceType": "设备类型",
182
183
  "deviceTypeTooltip": "插入设备类型的名称,此配置有效。 (例如,Dragino XY 也匹配 Dragino)",
183
184
  "downlinkConfig": "下行链路配置",
@@ -1165,6 +1165,13 @@
1165
1165
  ],
1166
1166
  "width": "25%"
1167
1167
  },
1168
+ {
1169
+ "type": "text",
1170
+ "attr": "deviceSuffix",
1171
+ "label": "deviceSuffix",
1172
+ "default": "",
1173
+ "width": "10%"
1174
+ },
1168
1175
  {
1169
1176
  "type": "checkbox",
1170
1177
  "attr": "publish",
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "lorawan",
4
- "version": "1.18.51",
4
+ "version": "1.18.53",
5
5
  "news": {
6
+ "1.18.53": {
7
+ "en": "add possibility to add folders to",
8
+ "de": "die möglichkeit hinzufügen von ordnern",
9
+ "ru": "добавить возможность добавления папок в",
10
+ "pt": "adicionar a possibilidade de adicionar pastas",
11
+ "nl": "mogelijkheid toevoegen om mappen toe te voegen aan",
12
+ "fr": "ajouter la possibilité d'ajouter des dossiers à",
13
+ "it": "aggiungere la possibilità di aggiungere cartelle a",
14
+ "es": "añadir la posibilidad de añadir carpetas para",
15
+ "pl": "dodać możliwość dodawania folderów do",
16
+ "uk": "додати можливість додати папки до",
17
+ "zh-cn": "添加文件夹到"
18
+ },
19
+ "1.18.52": {
20
+ "en": "add possibility to set Devicesuffix in LoraWAN States",
21
+ "de": "möglichkeit hinzufügen, Devicesuffix in LoraWAN-Staaten einzustellen",
22
+ "ru": "добавить возможность установки Devicesuffix в штатах LoraWAN",
23
+ "pt": "adicionar possibilidade de definir Dispositivosuffix nos Estados de LoraWAN",
24
+ "nl": "voeg mogelijkheid toe om Devicesuffix in LoraWAN Staten in te stellen",
25
+ "fr": "ajouter la possibilité de définir Devicesuffix dans les États de LoraWAN",
26
+ "it": "aggiungere la possibilità di impostare Devicesuffix in LoraWAN States",
27
+ "es": "añadir posibilidad para establecer Dispositivosuffix en Estados LoraWAN",
28
+ "pl": "dodać możliwość ustawienia Devicesuffix w państwach LoraWAN",
29
+ "uk": "додати можливість встановити Devicesuffix в LoraWAN",
30
+ "zh-cn": "添加在 LoraWAN 州设置设备后缀的可能性"
31
+ },
6
32
  "1.18.51": {
7
33
  "en": "add \"Temperatur\" to autmatic assign",
8
34
  "de": "\"Temperatur\" zu autmatic assign hinzufügen",
@@ -67,32 +93,6 @@
67
93
  "pl": "* CustomSend staje się możliwością dla różnych kolejności parametrów.\nładowność InHex, port, potwierdzone, priorytet, push (push jest zapisany jako ciąg 'push')",
68
94
  "uk": "* Користувальницька робота на різних параметрах.\nзавантажити InHex, порт, підтверджений, пріоритет, штовхач (подушка написана як рядок 'push')",
69
95
  "zh-cn": "* CustomSend成为不同参数顺序的可能.\n有效载荷 InHex, 端口, 确认, 优先级, 推( 推为字符串“ push” )"
70
- },
71
- "1.18.46": {
72
- "en": "CustomSend has been extended to include the option of direct push.",
73
- "de": "CustomSend wurde erweitert, um die Möglichkeit der direkten Push.",
74
- "ru": "CustomSend был расширен, чтобы включить возможность прямого толчка.",
75
- "pt": "O CustomSend foi estendido para incluir a opção de push direto.",
76
- "nl": "AangepastVerzenden is uitgebreid met de optie van directe push.",
77
- "fr": "CustomSend a été étendu pour inclure l'option de poussée directe.",
78
- "it": "CustomSend è stato esteso per includere l'opzione di spinta diretta.",
79
- "es": "CustomSend se ha ampliado para incluir la opción de empuje directo.",
80
- "pl": "CustomSend został rozszerzony o opcję bezpośredniego pchnięcia.",
81
- "uk": "CustomSend було розширено, щоб включити опцію прямого натискання.",
82
- "zh-cn": "CustomSend已被扩展,以包括直接推动的选择."
83
- },
84
- "1.18.45": {
85
- "en": "improve showing Adapter state (yellw / green)",
86
- "de": "verbesserung des Adapterzustands (gelb / grün)",
87
- "ru": "улучшение отображения состояния адаптера (yellw / green)",
88
- "pt": "melhorar mostrando o estado do adaptador (Yellw / verde)",
89
- "nl": "verbetering van de stand van de adapter (geel / groen)",
90
- "fr": "améliorer l'état de l'adaptateur (yellw / vert)",
91
- "it": "migliorare lo stato dell'adattatore di visualizzazione (yellw / green)",
92
- "es": "mejorar la visualización del estado del adaptador (yellw / verde)",
93
- "pl": "poprawić wyświetlanie stanu Adapter (yellw / green)",
94
- "uk": "поліпшення демонстрації стану адаптера (жовтий / зелений)",
95
- "zh-cn": "改进显示适配器状态( yallw / 绿色)"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -984,6 +984,8 @@ class bridgeClass {
984
984
  publish: false,
985
985
  subscribe: false,
986
986
  };
987
+ let deviceSuffix = '';
988
+
987
989
  // Query for Stateconfig
988
990
  if (this.adapter.config.BridgeStateConfig) {
989
991
  for (const config of this.adapter.config.BridgeStateConfig) {
@@ -991,10 +993,11 @@ class bridgeClass {
991
993
  (changeInfo.applicationId === config.Application || config.Application === '*') &&
992
994
  (changeInfo.deviceEUI === config.Device || config.Device === '*') &&
993
995
  (id.includes(`.${config.Folder}.`) || config.Folder === '*') &&
994
- (id.endsWith(`.decoded.${config.State}`) || config.State === '*')
996
+ (id.includes(`.decoded.${config.State}`) || config.State === '*')
995
997
  ) {
996
998
  Bridgestate.discover = !config.exclude;
997
999
  Bridgestate.publish = true;
1000
+ deviceSuffix = config.deviceSuffix;
998
1001
  if (config.exclude) {
999
1002
  this.adapter.log.debug(
1000
1003
  `The Id: ${id} matches the exclude of the config: ${JSON.stringify(config)}`,
@@ -1008,6 +1011,7 @@ class bridgeClass {
1008
1011
  }
1009
1012
  }
1010
1013
  if (Bridgestate.discover) {
1014
+ options.deviceSuffix = deviceSuffix;
1011
1015
  options.Bridgestate = Bridgestate;
1012
1016
  const DiscoveryObject = await this.getDiscoveryObject(changeInfo, options);
1013
1017
  if (Bridgestate.publish) {
@@ -1053,6 +1057,7 @@ class bridgeClass {
1053
1057
  publish: false,
1054
1058
  subscribe: false,
1055
1059
  };
1060
+ let deviceSuffix = '';
1056
1061
  // Query for Stateconfig
1057
1062
  if (this.adapter.config.BridgeStateConfig) {
1058
1063
  for (const config of this.adapter.config.BridgeStateConfig) {
@@ -1060,7 +1065,7 @@ class bridgeClass {
1060
1065
  (changeInfo.applicationId === config.Application || config.Application === '*') &&
1061
1066
  (changeInfo.deviceEUI === config.Device || config.Device === '*') &&
1062
1067
  (id.includes(`.${config.Folder}.`) || config.Folder === '*') &&
1063
- (id.endsWith(`.control.${config.State}`) || config.State === '*')
1068
+ (id.includes(`.control.${config.State}`) || config.State === '*')
1064
1069
  ) {
1065
1070
  Bridgestate.discover = !config.exclude;
1066
1071
  Bridgestate.publish = config.publish;
@@ -1071,6 +1076,8 @@ class bridgeClass {
1071
1076
  }
1072
1077
  }
1073
1078
  if (Bridgestate.discover) {
1079
+ options.deviceSuffix = deviceSuffix;
1080
+ options.Bridgestate = Bridgestate;
1074
1081
  options.Bridgestate = Bridgestate;
1075
1082
  const DiscoveryObject = await this.getDiscoveryObject(changeInfo, options);
1076
1083
  if (Bridgestate.publish) {
@@ -1237,6 +1244,10 @@ class bridgeClass {
1237
1244
  } else {
1238
1245
  DeviceIdentifier = this.getDeviceIdentifier(changeInfo, this.adapter.config.DeviceIdentifiers);
1239
1246
  }
1247
+ // Add Suffix, if present
1248
+ if (options && options.deviceSuffix) {
1249
+ DeviceIdentifier += options.deviceSuffix;
1250
+ }
1240
1251
  const normalizedDeviceIdentifier = this.normalizeString(DeviceIdentifier);
1241
1252
  const uniqueString = await this.getUniqueString(
1242
1253
  `${this.adapter.namespace}.${changeInfo.id}`,
package/main.js CHANGED
@@ -1429,15 +1429,17 @@ class Lorawan extends utils.Adapter {
1429
1429
  try {
1430
1430
  let myCount = 0;
1431
1431
  const states = [];
1432
+ const possibleTypes = { state: true };
1432
1433
  if (obj.command === 'getStatesForConfig') {
1433
1434
  states[myCount] = { label: '* (Wildcard)', value: '*' };
1434
1435
  myCount++;
1436
+ possibleTypes.folder = true;
1435
1437
  }
1436
1438
  const currentStates = {};
1437
1439
  const adapterObjects = await this.getAdapterObjectsAsync();
1438
1440
  for (const adapterObject of Object.values(adapterObjects)) {
1439
1441
  if (
1440
- adapterObject.type === 'state' &&
1442
+ possibleTypes[adapterObject.type] === true &&
1441
1443
  (adapterObject._id.includes(obj.message.application) ||
1442
1444
  obj.message.application === '*') &&
1443
1445
  (adapterObject._id.includes(obj.message.device) || obj.message.device === '*') &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lorawan",
3
- "version": "1.18.51",
3
+ "version": "1.18.53",
4
4
  "description": "converts the desired lora gateway data to a ioBroker structure",
5
5
  "author": {
6
6
  "name": "BenAhrdt",