iobroker.lorawan 1.13.7 → 1.13.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/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.13.9 (2025-09-07)
27
+ * (BenAhrdt) Add time to State Information and improov translations.
28
+
29
+ ### 1.13.8 (2025-09-07)
30
+ * (BenAhrdt) Add Tabfunctionality to Adapter (info to some states)
31
+
26
32
  ### 1.13.7 (2025-09-07)
27
33
  * (BenAhrdt) More Informations in Tab
28
34
  * (BenAhrdt) Additionals States for published ids & subscribed topics
@@ -129,12 +129,15 @@
129
129
  "BridgeTypeHA": "Home Assistant",
130
130
  "RefreshDiscoveryCronJob": "Discovery Zyklus",
131
131
  "RefreshDiscoveryCronJobTooltip": "Stellen Sie den Cronjob für das Discovery ein",
132
- "ClimateHeader": "Definieren Sie Zustände für eine Klima ENtität",
133
- "ClimateInformation": "Hier können Sie ein Array von Klimaentitäten definieren",
134
- "ClimateTargetTemperatureText": "Solltemperatur",
135
- "ClimateActTemperatureText": "Isttemperatur",
136
- "ClimateActModeText": "Mode",
137
- "_DiscoveredIds": "Discoverd Ids",
138
- "_PublishedIds": "Published Ids",
139
- "_SubscribedTopics": "Subscribed Topics"
132
+ "ClimateHeader": "Definieren Sie Zustände für eine Klima Entität",
133
+ "ClimateInformation": "Hier können Sie ein Array von Klimaentitäten definieren",
134
+ "ClimateNameText": "Entitätsname",
135
+ "ClimateTargetTemperatureText": "Solltemperatur",
136
+ "ClimateActTemperatureText": "Isttemperatur",
137
+ "ClimateModeTemperatureText": "Modus",
138
+ "_DiscoveredIds": "Discoverd Ids",
139
+ "_PublishedIds": "Veröffentlichte Ids",
140
+ "_SubscribedTopics": "Abonnierte Topics",
141
+ "_Deviceinformations": "Geräteinformationen",
142
+ "NoBridgeConfiged": "Es wurde keine Bridge Konfiguriert !!!"
140
143
  }
@@ -131,10 +131,13 @@
131
131
  "RefreshDiscoveryCronJobTooltip": "insert the cronjob for refreshing the discovery",
132
132
  "ClimateHeader": "Define States for Climate Entity",
133
133
  "ClimateInformation": "Here you can define an array of Climate definitions",
134
+ "ClimateNameText": "Entityname",
134
135
  "ClimateTargetTemperatureText": "Target Temperature",
135
136
  "ClimateActTemperatureText": "Target Temperature",
136
- "ClimateActModeText": "Target Temperature",
137
+ "ClimateModeTemperatureText": "Mode",
137
138
  "_DiscoveredIds": "Discoverd Ids",
138
139
  "_PublishedIds": "Published Ids",
139
- "_SubscribedTopics": "Subscribed Topics"
140
+ "_SubscribedTopics": "Subscribed Topics",
141
+ "_Deviceinformations": "Deviceinformations",
142
+ "NoBridgeConfiged": "There is no bridge configed !!!"
140
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "apagado",
129
129
  "BridgeTypeHA": "Asistente de casa",
130
130
  "RefreshDiscoveryCronJob": "Descubrir ciclo",
131
- "RefreshDiscoveryCronJobTooltip": "Inserte el cronjob para actualizar el descubrimiento"
131
+ "RefreshDiscoveryCronJobTooltip": "Inserte el cronjob para actualizar el descubrimiento",
132
+ "ClimateHeader": "Definir estados para la entidad climática",
133
+ "ClimateInformation": "Aquí puedes definir una variedad de definiciones climáticas",
134
+ "ClimateNameText": "Entidad",
135
+ "ClimateTargetTemperatureText": "Temperatura objetivo",
136
+ "ClimateActTemperatureText": "Temperatura objetivo",
137
+ "ClimateModeTemperatureText": "Modo",
138
+ "_DiscoveredIds": "IDS descubridos",
139
+ "_PublishedIds": "IDS publicados",
140
+ "_SubscribedTopics": "Temas suscritos",
141
+ "_Deviceinformations": "Información de dispositivos",
142
+ "NoBridgeConfiged": "¡No hay puente configurado!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "désactivé",
129
129
  "BridgeTypeHA": "Assistant à domicile",
130
130
  "RefreshDiscoveryCronJob": "Cycle de découverte",
131
- "RefreshDiscoveryCronJobTooltip": "insérer le cronjob pour rafraîchir la découverte"
131
+ "RefreshDiscoveryCronJobTooltip": "insérer le cronjob pour rafraîchir la découverte",
132
+ "ClimateHeader": "Définir les États de l'entité climatique",
133
+ "ClimateInformation": "Ici, vous pouvez définir un tableau de définitions climatiques",
134
+ "ClimateNameText": "Entité",
135
+ "ClimateTargetTemperatureText": "Température cible",
136
+ "ClimateActTemperatureText": "Température cible",
137
+ "ClimateModeTemperatureText": "Mode",
138
+ "_DiscoveredIds": "IDS de découverte",
139
+ "_PublishedIds": "IDS publiés",
140
+ "_SubscribedTopics": "Sujets abonnés",
141
+ "_Deviceinformations": "Dispositif d'informations",
142
+ "NoBridgeConfiged": "Il n'y a pas de pont confié !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "spento",
129
129
  "BridgeTypeHA": "Assistente di casa",
130
130
  "RefreshDiscoveryCronJob": "Scopri il ciclo",
131
- "RefreshDiscoveryCronJobTooltip": "Inserire il Cronjob per aver rinfrescato la scoperta"
131
+ "RefreshDiscoveryCronJobTooltip": "Inserire il Cronjob per aver rinfrescato la scoperta",
132
+ "ClimateHeader": "Definire gli stati per l'entità climatica",
133
+ "ClimateInformation": "Qui puoi definire una serie di definizioni climatiche",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "Temperatura target",
136
+ "ClimateActTemperatureText": "Temperatura target",
137
+ "ClimateModeTemperatureText": "Modalità",
138
+ "_DiscoveredIds": "Discoverd IDS",
139
+ "_PublishedIds": "ID pubblicati",
140
+ "_SubscribedTopics": "Argomenti abbonati",
141
+ "_Deviceinformations": "DEVIVENZIONI",
142
+ "NoBridgeConfiged": "Non c'è bridge configurato !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "uit",
129
129
  "BridgeTypeHA": "Thuisassistent",
130
130
  "RefreshDiscoveryCronJob": "Ontdek cyclus",
131
- "RefreshDiscoveryCronJobTooltip": "Plaats de Cronjob voor het vernieuwen van de ontdekking"
131
+ "RefreshDiscoveryCronJobTooltip": "Plaats de Cronjob voor het vernieuwen van de ontdekking",
132
+ "ClimateHeader": "Definieer staten voor klimaat entiteit",
133
+ "ClimateInformation": "Hier kunt u een scala aan klimaatdefinities definiëren",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "Doeltemperatuur",
136
+ "ClimateActTemperatureText": "Doeltemperatuur",
137
+ "ClimateModeTemperatureText": "Modus",
138
+ "_DiscoveredIds": "Discoverd ID's",
139
+ "_PublishedIds": "Gepubliceerde ID's",
140
+ "_SubscribedTopics": "Abonneerde onderwerpen",
141
+ "_Deviceinformations": "Apparaatinformaties",
142
+ "NoBridgeConfiged": "Er is geen brug geconfigureerd !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "wyłączony",
129
129
  "BridgeTypeHA": "Asystent domu",
130
130
  "RefreshDiscoveryCronJob": "Odkryj cykl",
131
- "RefreshDiscoveryCronJobTooltip": "Włóż cronjob do odświeżenia odkrycia"
131
+ "RefreshDiscoveryCronJobTooltip": "Włóż cronjob do odświeżenia odkrycia",
132
+ "ClimateHeader": "Zdefiniuj stany dla jednostki klimatycznej",
133
+ "ClimateInformation": "Tutaj możesz zdefiniować szereg definicji klimatycznych",
134
+ "ClimateNameText": "Nazwa EntityName",
135
+ "ClimateTargetTemperatureText": "Temperatura docelowa",
136
+ "ClimateActTemperatureText": "Temperatura docelowa",
137
+ "ClimateModeTemperatureText": "Tryb",
138
+ "_DiscoveredIds": "Odkryj identyfikatory",
139
+ "_PublishedIds": "Opublikowane identyfikatory",
140
+ "_SubscribedTopics": "Subskrybowane tematy",
141
+ "_Deviceinformations": "Informacje urządzeń",
142
+ "NoBridgeConfiged": "Nie ma skonfigurowanego mostu !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "desligado",
129
129
  "BridgeTypeHA": "Assistente de casa",
130
130
  "RefreshDiscoveryCronJob": "Descubra o ciclo",
131
- "RefreshDiscoveryCronJobTooltip": "Insira o Cronjob para refrescar a descoberta"
131
+ "RefreshDiscoveryCronJobTooltip": "Insira o Cronjob para refrescar a descoberta",
132
+ "ClimateHeader": "Definir estados para a entidade climática",
133
+ "ClimateInformation": "Aqui você pode definir uma variedade de definições climáticas",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "Temperatura alvo",
136
+ "ClimateActTemperatureText": "Temperatura alvo",
137
+ "ClimateModeTemperatureText": "Modo",
138
+ "_DiscoveredIds": "Discoverd IDs",
139
+ "_PublishedIds": "IDs publicados",
140
+ "_SubscribedTopics": "Tópicos inscritos",
141
+ "_Deviceinformations": "DeviceInformations",
142
+ "NoBridgeConfiged": "Não há ponte configurada !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "выключенный",
129
129
  "BridgeTypeHA": "Домашний помощник",
130
130
  "RefreshDiscoveryCronJob": "Откройте для себя цикл",
131
- "RefreshDiscoveryCronJobTooltip": "Вставьте Cronjob для освежения открытия"
131
+ "RefreshDiscoveryCronJobTooltip": "Вставьте Cronjob для освежения открытия",
132
+ "ClimateHeader": "Определить состояния для климатической сущности",
133
+ "ClimateInformation": "Здесь вы можете определить множество климатических определений",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "Целевая температура",
136
+ "ClimateActTemperatureText": "Целевая температура",
137
+ "ClimateModeTemperatureText": "Режим",
138
+ "_DiscoveredIds": "Откройте для себя идентификаторы",
139
+ "_PublishedIds": "Опубликованные удостоверения личности",
140
+ "_SubscribedTopics": "Подписываемые темы",
141
+ "_Deviceinformations": "DeviceInformations",
142
+ "NoBridgeConfiged": "Там нет моста, настроенного !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "не вистачати",
129
129
  "BridgeTypeHA": "Домашній помічник",
130
130
  "RefreshDiscoveryCronJob": "Відкрийте цикл",
131
- "RefreshDiscoveryCronJobTooltip": "Вставте Кронжоб для освіжаючого відкриття"
131
+ "RefreshDiscoveryCronJobTooltip": "Вставте Кронжоб для освіжаючого відкриття",
132
+ "ClimateHeader": "Визначте стани клімату",
133
+ "ClimateInformation": "Тут ви можете визначити безліч визначення клімату",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "Цільова температура",
136
+ "ClimateActTemperatureText": "Цільова температура",
137
+ "ClimateModeTemperatureText": "Режим",
138
+ "_DiscoveredIds": "Discoverd IDS",
139
+ "_PublishedIds": "Опубліковані посвідчення особи",
140
+ "_SubscribedTopics": "Підписані теми",
141
+ "_Deviceinformations": "Пристроїінформації",
142
+ "NoBridgeConfiged": "Немає мосту конфігурації !!!"
132
143
  }
@@ -128,5 +128,16 @@
128
128
  "BridgeTypeOff": "离开",
129
129
  "BridgeTypeHA": "家庭助理",
130
130
  "RefreshDiscoveryCronJob": "发现周期",
131
- "RefreshDiscoveryCronJobTooltip": "插入Cronjob以刷新发现"
131
+ "RefreshDiscoveryCronJobTooltip": "插入Cronjob以刷新发现",
132
+ "ClimateHeader": "定义气候实体的国家",
133
+ "ClimateInformation": "在这里您可以定义一系列气候定义",
134
+ "ClimateNameText": "EntityName",
135
+ "ClimateTargetTemperatureText": "目标温度",
136
+ "ClimateActTemperatureText": "目标温度",
137
+ "ClimateModeTemperatureText": "模式",
138
+ "_DiscoveredIds": "Discoverd ID",
139
+ "_PublishedIds": "已发布的ID",
140
+ "_SubscribedTopics": "订阅主题",
141
+ "_Deviceinformations": "设备信息",
142
+ "NoBridgeConfiged": "没有桥梁配置!!!"
132
143
  }
@@ -11,7 +11,6 @@
11
11
  "items": {
12
12
  "_DiscoveredIds":{
13
13
  "type": "text",
14
- "label": "_DiscoveredIds",
15
14
  "defaultSendTo": "getDiscoveredIds",
16
15
  "minRows": 10,
17
16
  "readOnly": true,
@@ -31,7 +30,6 @@
31
30
  "items": {
32
31
  "_PublishedIds":{
33
32
  "type": "text",
34
- "label": "_PublishedIds",
35
33
  "defaultSendTo": "getPublishedIds",
36
34
  "minRows": 10,
37
35
  "readOnly": true,
@@ -45,13 +43,12 @@
45
43
  }
46
44
  }
47
45
  },
48
- "_SubscribedTopics":{
49
- "type": "panel",
50
- "label": "_SubscribedTopics",
46
+ "_SubscribedTopics":{
47
+ "type": "panel",
48
+ "label": "_SubscribedTopics",
51
49
  "items": {
52
50
  "_SubscribedTopics":{
53
51
  "type": "text",
54
- "label": "_SubscribedTopics",
55
52
  "defaultSendTo": "getSubscribedTopics",
56
53
  "minRows": 10,
57
54
  "readOnly": true,
@@ -63,7 +60,26 @@
63
60
  "lg": 12,
64
61
  "xl": 12
65
62
  }
66
- }
67
- }
63
+ }
64
+ },
65
+ "_Deviceinformations":{
66
+ "type": "panel",
67
+ "label": "_Deviceinformations",
68
+ "items": {
69
+ "_Deviceinformations":{
70
+ "type": "text",
71
+ "defaultSendTo": "getDeviceinformations",
72
+ "minRows": 10,
73
+ "readOnly": true,
74
+ "trim": false,
75
+ "noClearButton": true,
76
+ "xs": 12,
77
+ "sm": 12,
78
+ "md": 12,
79
+ "lg": 12,
80
+ "xl": 12
81
+ }
82
+ }
83
+ }
68
84
  }
69
85
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "lorawan",
4
- "version": "1.13.7",
4
+ "version": "1.13.9",
5
5
  "news": {
6
+ "1.13.9": {
7
+ "en": "Add time to State Information and improov translations.",
8
+ "de": "Fügen Sie Zeit zu staatlichen Informationen und improov Übersetzungen.",
9
+ "ru": "Добавьте время к государственной информации и импровизированным переводам.",
10
+ "pt": "Adicione tempo para Informações do Estado e traduções improvisadas.",
11
+ "nl": "Voeg tijd toe aan State Information en improov vertalingen.",
12
+ "fr": "Ajouter du temps à l'information d'état et improov traductions.",
13
+ "it": "Aggiungi tempo a Informazioni di Stato e traduzioni improvvisate.",
14
+ "es": "Añadir tiempo a Información Estatal y traducciones improvistas.",
15
+ "pl": "Dodaj czas do informacji państwowej i tłumaczenia improov.",
16
+ "uk": "Додати час до Державної інформації та імпровських перекладів.",
17
+ "zh-cn": "在州情资料和即兴翻译中添加时间."
18
+ },
19
+ "1.13.8": {
20
+ "en": "Add Tabfunctionality to Adapter (info to some states)",
21
+ "de": "Fügen Sie Tabfunktionalität auf Adapter (info zu einigen Staaten) hinzu",
22
+ "ru": "Добавить Tabfunctionality в адаптер (информация для некоторых состояний)",
23
+ "pt": "Adicionar tabfuncionalidade ao adaptador (info para alguns estados)",
24
+ "nl": "Tabfunctionaliteit toevoegen aan adapter (info naar sommige staten)",
25
+ "fr": "Ajouter Tabfonctionnalité à l'adaptateur (info à certains états)",
26
+ "it": "Aggiungi Tabfunzionalità ad Adattatore (info ad alcuni stati)",
27
+ "es": "Añadir Tabfunctionality to Adapter (info to some states)",
28
+ "pl": "Dodaj funkcje tabletu do adaptera (info do niektórych stanów)",
29
+ "uk": "Додати табфункцію до адаптера",
30
+ "zh-cn": "将 Tab 功能添加到适配器( 向一些状态信息)"
31
+ },
6
32
  "1.13.7": {
7
33
  "en": "More Informations in Tab\nAdditionals States for published ids & subscribed topics",
8
34
  "de": "Weitere Informationen in Tab\nZusätzliche Staaten für veröffentlichte ids & abonnierte Themen",
@@ -67,32 +93,6 @@
67
93
  "pl": "Dodaj obrazy do nowych państw",
68
94
  "uk": "Додати зображення до нових держав",
69
95
  "zh-cn": "向新国家添加图像"
70
- },
71
- "1.13.2": {
72
- "en": "Dont check connection to Bridge if not selected\nAdd the State discovered Ids",
73
- "de": "Überprüfen Sie die Verbindung zur Brücke, wenn nicht ausgewählt\nFügen Sie den Staat entdeckt Ids",
74
- "ru": "Не проверяйте соединение с мостом, если оно не выбрано\nОбнаруженные государством Ids",
75
- "pt": "Não verificar a ligação à Ponte se não estiver seleccionada\nAdicionar os IDs do Estado descobertos",
76
- "nl": "Verbinding met brug niet controleren indien niet geselecteerd\nVoeg de Staat ontdekt Ids",
77
- "fr": "Ne pas vérifier la connexion à Bridge si elle n'est pas sélectionnée\nAjouter l'État découvert Ids",
78
- "it": "Non controllare la connessione a Bridge se non selezionata\nAggiungi lo Stato scoperto Ids",
79
- "es": "No comprueba la conexión con Bridge si no se selecciona\nAñadir el Estado descubrió Ids",
80
- "pl": "Nie sprawdzaj połączenia z mostkiem jeśli nie jest zaznaczone\nDodać Państwo odkryte Ids",
81
- "uk": "Не перевірте підключення до мосту, якщо не вибрано\nДодати Державні відкриті Ids",
82
- "zh-cn": "未选中时不要检查连接到桥\n添加国家发现的IDs"
83
- },
84
- "1.13.1": {
85
- "en": "More Debuglogging\nGeneral Nameing in the functions\nPerformance update fpr rediscover on cron.",
86
- "de": "Mehr zum Debuglogging\nAllgemeine Bezeichnung in den Funktionen\nPerformance Update fpr rediscover auf cron.",
87
- "ru": "Больше Debuglogging\nОбщее наименование в функциях\nОбновление производительности fpr вновь открывается на cron.",
88
- "pt": "Mais Depuração\nNomeação Geral nas funções\nAtualização de desempenho fpr redescobrir no cron.",
89
- "nl": "Meer debuggen\nAlgemene naamgeving in de functies\nPrestatie-update fpr herontdekken op cron.",
90
- "fr": "Plus de débogage\nNom général dans les fonctions\nMise à jour de performance fpr redécouvrir sur cron.",
91
- "it": "Altre informazioni\nNome generale nelle funzioni\nAggiornamento delle prestazioni fpr riscoprire su cron.",
92
- "es": "Más Debuglogging\nNombre general en las funciones\nActualización de rendimiento fpr redescover en cron.",
93
- "pl": "Więcej Debuglogging\nOgólne Napisywanie w funkcjach\nAktualizacja wydajności fpr ponownie odkryć na cron.",
94
- "uk": "Детальніше Debuglog\nЗагальна назва функції\nОновлення продуктивності fpr rediscover на cron.",
95
- "zh-cn": "更多调试日志\n函数中的名称\n性能更新 fpr 重新发现于 cron."
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -55,6 +55,7 @@ class bridgeClass {
55
55
  ) {
56
56
  this.SubscribedTopics[topic].val = message;
57
57
  this.SubscribedTopics[topic].ts = Date.now();
58
+ this.SubscribedTopics[topic].time = new Date(Date.now()).toLocaleString();
58
59
  if (this.SubscribedTopics[topic].id.endsWith(this.EndingVirtualMode)) {
59
60
  this.adapter.log.debug(
60
61
  `The value ${message} is assigned to virtual id: ${this.SubscribedTopics[topic].id}`,
@@ -213,6 +214,7 @@ class bridgeClass {
213
214
  this.SubscribedTopics[target.Topic].id = config.climateIds.target;
214
215
  this.SubscribedTopics[target.Topic].val = await this.adapter.getState(config.climateIds.target).val;
215
216
  this.SubscribedTopics[target.Topic].ts = Date.now() - this.MinTime;
217
+ this.SubscribedTopics[target.Topic].time = new Date(Date.now() - this.MinTime).toLocaleString();
216
218
  this.SubscribedTopics[target.Topic].informations = {
217
219
  applicationName: target.changeInfo.applicationName,
218
220
  usedApplicationName: target.changeInfo.usedApplicationName,
@@ -229,6 +231,7 @@ class bridgeClass {
229
231
  this.SubscribedTopics[mode.Topic].val = await this.adapter.getState(config.climateIds.mode).val;
230
232
  }
231
233
  this.SubscribedTopics[mode.Topic].ts = Date.now() - this.MinTime;
234
+ this.SubscribedTopics[mode.Topic].time = new Date(Date.now() - this.MinTime).toLocaleString();
232
235
  this.SubscribedTopics[mode.Topic].informations = {
233
236
  applicationName: mode.changeInfo.applicationName,
234
237
  usedApplicationName: mode.changeInfo.usedApplicationName,
@@ -254,6 +257,7 @@ class bridgeClass {
254
257
  });
255
258
  this.PublishedIds[config.climateIds.target].val = 0;
256
259
  this.PublishedIds[config.climateIds.target].ts = Date.now();
260
+ this.PublishedIds[config.climateIds.target].time = new Date(Date.now()).toLocaleString();
257
261
  this.PublishedIds[config.climateIds.target].informations = {
258
262
  applicationName: target.changeInfo.applicationName,
259
263
  usedApplicationName: target.changeInfo.usedApplicationName,
@@ -272,6 +276,7 @@ class bridgeClass {
272
276
  });
273
277
  this.PublishedIds[config.climateIds.act].val = 0;
274
278
  this.PublishedIds[config.climateIds.act].ts = Date.now();
279
+ this.PublishedIds[config.climateIds.act].time = new Date(Date.now()).toLocaleString();
275
280
  this.PublishedIds[config.climateIds.act].informations = {
276
281
  applicationName: act.changeInfo.applicationName,
277
282
  usedApplicationName: act.changeInfo.usedApplicationName,
@@ -290,6 +295,7 @@ class bridgeClass {
290
295
  });
291
296
  this.PublishedIds[config.climateIds.mode].val = 0;
292
297
  this.PublishedIds[config.climateIds.mode].ts = Date.now();
298
+ this.PublishedIds[config.climateIds.mode].time = new Date(Date.now()).toLocaleString();
293
299
  this.PublishedIds[config.climateIds.mode].informations = {
294
300
  applicationName: mode.changeInfo.applicationName,
295
301
  usedApplicationName: mode.changeInfo.usedApplicationName,
@@ -395,6 +401,7 @@ class bridgeClass {
395
401
  Date.now() - this.SubscribedTopics[this.PublishedIds[id].Topic].ts >= this.MinTime
396
402
  ) {
397
403
  this.PublishedIds[id].ts = Date.now();
404
+ this.PublishedIds[id].time = new Date(Date.now()).toLocaleString();
398
405
  this.PublishedIds[id].val = val;
399
406
  if (typeof val !== 'string') {
400
407
  val = JSON.stringify(val);
@@ -405,7 +412,7 @@ class bridgeClass {
405
412
  await this.adapter.setState('info.publishedIds', JSON.stringify(this.PublishedIds), true);
406
413
  }
407
414
  } else {
408
- this.adapter.log.debug(`Id not for publish used.`);
415
+ this.adapter.log.debug(`Id ${id} is not set for publish.`);
409
416
  }
410
417
  } catch (error) {
411
418
  this.adapter.log.error(`error at ${activeFunction}: ${error}`);
@@ -461,6 +468,7 @@ class bridgeClass {
461
468
  });
462
469
  this.PublishedIds[id].val = 0;
463
470
  this.PublishedIds[id].ts = Date.now();
471
+ this.PublishedIds[id].time = new Date(Date.now()).toLocaleString();
464
472
  this.PublishedIds[id].informations = {
465
473
  applicationName: changeInfo.applicationName,
466
474
  usedApplicationName: changeInfo.usedApplicationName,
@@ -473,6 +481,9 @@ class bridgeClass {
473
481
  this.SubscribedTopics[DiscoveryObject?.Topic].id = id;
474
482
  this.SubscribedTopics[DiscoveryObject?.Topic].val = 0;
475
483
  this.SubscribedTopics[DiscoveryObject?.Topic].ts = Date.now() - this.MinTime;
484
+ this.SubscribedTopics[DiscoveryObject?.Topic].time = new Date(
485
+ Date.now() - this.MinTime,
486
+ ).toLocaleString();
476
487
  }
477
488
  await this.publishDiscovery(id, {
478
489
  topic: DiscoveryObject?.topic,
@@ -531,6 +542,7 @@ class bridgeClass {
531
542
  });
532
543
  this.PublishedIds[id].val = 0;
533
544
  this.PublishedIds[id].ts = Date.now();
545
+ this.PublishedIds[id].time = new Date(Date.now()).toLocaleString();
534
546
  this.PublishedIds[id].informations = {
535
547
  applicationName: changeInfo.applicationName,
536
548
  usedApplicationName: changeInfo.usedApplicationName,
@@ -543,6 +555,9 @@ class bridgeClass {
543
555
  this.SubscribedTopics[DiscoveryObject?.Topic].id = id;
544
556
  this.SubscribedTopics[DiscoveryObject?.Topic].val = 0;
545
557
  this.SubscribedTopics[DiscoveryObject?.Topic].ts = Date.now() - this.MinTime;
558
+ this.SubscribedTopics[DiscoveryObject?.Topic].time = new Date(
559
+ Date.now() - this.MinTime,
560
+ ).toLocaleString();
546
561
  }
547
562
  await this.publishDiscovery(id, {
548
563
  topic: DiscoveryObject?.topic,
package/main.js CHANGED
@@ -47,6 +47,9 @@ class Lorawan extends utils.Adapter {
47
47
  async onReady() {
48
48
  const activeFunction = 'onReady';
49
49
  try {
50
+ // read system translation out of i18n translation
51
+ this.i18nTranslation = await this.geti18nTranslation();
52
+
50
53
  // create downlinkConfigs
51
54
  this.downlinkConfighandler = new downlinkConfighandlerClass(this);
52
55
 
@@ -98,6 +101,19 @@ class Lorawan extends utils.Adapter {
98
101
  }
99
102
  }
100
103
 
104
+ async geti18nTranslation() {
105
+ const systemConfig = await this.getForeignObjectAsync('system.config');
106
+ if (systemConfig) {
107
+ let lang = systemConfig.common.language;
108
+ if (!lang) {
109
+ lang = 'en';
110
+ }
111
+ const translationsPath = `./admin/i18n/${lang}/translations.json`;
112
+ return require(translationsPath);
113
+ }
114
+ return {};
115
+ }
116
+
101
117
  async startSimulation() {
102
118
  // TTN
103
119
  //const topic ="v3/hafi-ttn-lorawan@ttn/devices/Meins/up";
@@ -524,7 +540,7 @@ class Lorawan extends utils.Adapter {
524
540
  this.setState(id, state.val, true);
525
541
  }
526
542
  } else {
527
- await this.bridge?.publishId(id, state.val);
543
+ await this.bridge?.publishId(await this.removeNamespace(id), state.val);
528
544
  }
529
545
  } else {
530
546
  // The state was deleted
@@ -1059,7 +1075,9 @@ class Lorawan extends utils.Adapter {
1059
1075
  this.sendTo(
1060
1076
  obj.from,
1061
1077
  obj.command,
1062
- JSON.stringify(this.bridge?.DiscoveredIds, null, 2),
1078
+ this.config.BridgeType !== 'off'
1079
+ ? JSON.stringify(this.bridge?.DiscoveredIds, null, 2)
1080
+ : this.i18nTranslation['NoBridgeConfiged'],
1063
1081
  obj.callback,
1064
1082
  );
1065
1083
  } catch (error) {
@@ -1070,7 +1088,9 @@ class Lorawan extends utils.Adapter {
1070
1088
  this.sendTo(
1071
1089
  obj.from,
1072
1090
  obj.command,
1073
- JSON.stringify(this.bridge?.PublishedIds, null, 2),
1091
+ this.config.BridgeType !== 'off'
1092
+ ? JSON.stringify(this.bridge?.PublishedIds, null, 2)
1093
+ : this.i18nTranslation['NoBridgeConfiged'],
1074
1094
  obj.callback,
1075
1095
  );
1076
1096
  } catch (error) {
@@ -1081,7 +1101,20 @@ class Lorawan extends utils.Adapter {
1081
1101
  this.sendTo(
1082
1102
  obj.from,
1083
1103
  obj.command,
1084
- JSON.stringify(this.bridge?.SubscribedTopics, null, 2),
1104
+ this.config.BridgeType !== 'off'
1105
+ ? JSON.stringify(this.bridge?.SubscribedTopics, null, 2)
1106
+ : this.i18nTranslation['NoBridgeConfiged'],
1107
+ obj.callback,
1108
+ );
1109
+ } catch (error) {
1110
+ this.log.error(error);
1111
+ }
1112
+ } else if (obj.command === 'getDeviceinformations') {
1113
+ try {
1114
+ this.sendTo(
1115
+ obj.from,
1116
+ obj.command,
1117
+ JSON.stringify(this.messagehandler?.deviceinformations, null, 2),
1085
1118
  obj.callback,
1086
1119
  );
1087
1120
  } catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lorawan",
3
- "version": "1.13.7",
3
+ "version": "1.13.9",
4
4
  "description": "converts the desired lora gateway data to a ioBroker structure",
5
5
  "author": {
6
6
  "name": "BenAhrdt",