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 +6 -0
- package/admin/i18n/de/translations.json +11 -8
- package/admin/i18n/en/translations.json +5 -2
- package/admin/i18n/es/translations.json +12 -1
- package/admin/i18n/fr/translations.json +12 -1
- package/admin/i18n/it/translations.json +12 -1
- package/admin/i18n/nl/translations.json +12 -1
- package/admin/i18n/pl/translations.json +12 -1
- package/admin/i18n/pt/translations.json +12 -1
- package/admin/i18n/ru/translations.json +12 -1
- package/admin/i18n/uk/translations.json +12 -1
- package/admin/i18n/zh-cn/translations.json +12 -1
- package/admin/jsonTab.json +24 -8
- package/io-package.json +27 -27
- package/lib/modules/bridge.js +16 -1
- package/main.js +37 -4
- package/package.json +1 -1
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
"
|
|
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
|
}
|
package/admin/jsonTab.json
CHANGED
|
@@ -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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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.
|
|
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": {
|
package/lib/modules/bridge.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|