iobroker.lorawan 0.5.4 → 0.5.5
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 +3 -0
- package/io-package.json +14 -14
- package/lib/modules/directorieshandler.js +51 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,9 @@ For now there is documentation in English here: http://www.hafenmeister.com/Lora
|
|
|
22
22
|
Placeholder for the next version (at the beginning of the line):
|
|
23
23
|
### **WORK IN PROGRESS**
|
|
24
24
|
-->
|
|
25
|
+
### 0.5.5 (2024-03-01)
|
|
26
|
+
* (BenAhrdt) first step of handling with date
|
|
27
|
+
|
|
25
28
|
### 0.5.4 (2024-03-01)
|
|
26
29
|
* (BenAhrdt) implement ther approvedFolder conzept for writecommands from message
|
|
27
30
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "lorawan",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.5",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.5.5": {
|
|
7
|
+
"en": "first step of handling with date",
|
|
8
|
+
"de": "erster schritt der handhabung mit datum",
|
|
9
|
+
"ru": "первый шаг обработки с датой",
|
|
10
|
+
"pt": "primeiro passo de manuseio com data",
|
|
11
|
+
"nl": "eerste stap van verwerking met datum",
|
|
12
|
+
"fr": "première étape de la manipulation avec date",
|
|
13
|
+
"it": "primo passo di gestione con data",
|
|
14
|
+
"es": "primer paso de manejo con fecha",
|
|
15
|
+
"pl": "pierwszy etap postępowania z datą",
|
|
16
|
+
"uk": "перший крок обробки з датою",
|
|
17
|
+
"zh-cn": "处理日期的第一步"
|
|
18
|
+
},
|
|
6
19
|
"0.5.4": {
|
|
7
20
|
"en": "implement ther approvedFolder conzept for writecommands from message",
|
|
8
21
|
"de": "den genehmigten Ordner-Konzept für Schreibbefehle aus der Nachricht",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "wdrożenienowych profili projektowych",
|
|
81
94
|
"uk": "впроваджувати нові пристрої",
|
|
82
95
|
"zh-cn": "执行新设备配置"
|
|
83
|
-
},
|
|
84
|
-
"0.4.0": {
|
|
85
|
-
"en": "searchallgorythm improoved, defaultvalues changed, remove query for \"all\"",
|
|
86
|
-
"de": "searchallgorythm improoved, standardwerte geändert, entfernen abfrage für \"all\"",
|
|
87
|
-
"ru": "searchallgorythm сброшен, изменены значения по умолчанию, удален запрос \"все\"",
|
|
88
|
-
"pt": "searchallgorythm improoved, defaultvalues alterado, remover consulta para \"all\"",
|
|
89
|
-
"nl": "searchallgorythm improoved, defaultvalues veranderd, query verwijderen voor \"all\"",
|
|
90
|
-
"fr": "searchallgorythm improoved, valeurs par défaut changé, supprimer la requête pour \"all\"",
|
|
91
|
-
"it": "ricercaallgorythm improoved, valori di default modificati, rimuovere la query per \"tutti\"",
|
|
92
|
-
"es": "searchallgorythm improvisado, valores predeterminados cambiaron, eliminar la consulta para \"todo\"",
|
|
93
|
-
"pl": "searchogorythm improused, defaultvalues changed, remove query for \"all\"",
|
|
94
|
-
"uk": "searchallgorythm improoved, типові значення змінені, видалення запиту для \"all\"",
|
|
95
|
-
"zh-cn": "搜索所有未启动的理论, 默认值已更改, 删除“ 所有” 的查询"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"title": "LoRaWAN",
|
|
@@ -29,6 +29,22 @@ class directorieshandlerClass {
|
|
|
29
29
|
joinRaw: "join.raw"
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
// Assign definitions for special states
|
|
33
|
+
this.assigns = {
|
|
34
|
+
time: (value,common)=>{
|
|
35
|
+
return this.timestringToDate(value,common);
|
|
36
|
+
},
|
|
37
|
+
gwTime: (value,common)=>{
|
|
38
|
+
return this.timestringToDate(value,common);
|
|
39
|
+
},
|
|
40
|
+
nsTime: (value,common)=>{
|
|
41
|
+
return this.timestringToDate(value,common);
|
|
42
|
+
},
|
|
43
|
+
timestamp: (value,common)=>{
|
|
44
|
+
return this.timestringToDate(value,common);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
32
48
|
//define path for uplink roles
|
|
33
49
|
this.uplinkRolesPath = "/lib/modules/roles/uplinks.json";
|
|
34
50
|
|
|
@@ -125,6 +141,18 @@ class directorieshandlerClass {
|
|
|
125
141
|
* *************************** General ******************************
|
|
126
142
|
* ******************************************************************/
|
|
127
143
|
|
|
144
|
+
// Caclculation of timestring into number (role = date)
|
|
145
|
+
timestringToDate(value,common){
|
|
146
|
+
common.role = "date";
|
|
147
|
+
common.type = "number";
|
|
148
|
+
if(typeof value === "string"){
|
|
149
|
+
return new Date(value).valueOf();
|
|
150
|
+
}
|
|
151
|
+
else{
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
128
156
|
/*********************************************************************
|
|
129
157
|
* **************************** Roles ********************************
|
|
130
158
|
* ******************************************************************/
|
|
@@ -241,20 +269,27 @@ class directorieshandlerClass {
|
|
|
241
269
|
await this.generateRekursivObjects(obj[elementName],objectId,topic,message);
|
|
242
270
|
}
|
|
243
271
|
else{
|
|
244
|
-
|
|
272
|
+
const common = {
|
|
273
|
+
type: typeof obj[elementName],
|
|
274
|
+
name: "",
|
|
275
|
+
role: "value",
|
|
276
|
+
unit: obj[elementName]? obj[elementName].CommonStateUnit? obj[elementName].CommonStateUnit : "" : "",
|
|
277
|
+
write: false
|
|
278
|
+
};
|
|
279
|
+
/*let stateCommonType = typeof obj[elementName];
|
|
245
280
|
let stateCommonName = "";
|
|
246
281
|
let stateCommonWrite = false;
|
|
247
|
-
let stateCommonRole = "value"
|
|
282
|
+
let stateCommonRole = "value";*/
|
|
248
283
|
let stateVal = obj[elementName];
|
|
249
284
|
let objectId = `${startDirectory}.${elementName}`;
|
|
250
285
|
let internalObjectId = elementName;
|
|
251
286
|
if(obj[elementName]){
|
|
252
287
|
if(obj[elementName].isState){
|
|
253
288
|
stateVal = obj[elementName].stateVal !== undefined? obj[elementName].stateVal: undefined;
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
289
|
+
common.type = obj[elementName].stateCommonType? obj[elementName].stateCommonType : typeof stateVal;
|
|
290
|
+
common.name = obj[elementName].stateCommonName ? obj[elementName].stateCommonName : common.name;
|
|
291
|
+
common.write = obj[elementName].stateCommonWrite ? obj[elementName].stateCommonWrite : common.write;
|
|
292
|
+
common.role = obj[elementName].stateCommonRole ? obj[elementName].stateCommonRole : common.role;
|
|
258
293
|
}
|
|
259
294
|
if(obj[elementName].objectId){
|
|
260
295
|
internalObjectId = `${obj[elementName].objectId(topic,message)}`;
|
|
@@ -262,24 +297,22 @@ class directorieshandlerClass {
|
|
|
262
297
|
}
|
|
263
298
|
}
|
|
264
299
|
// Check for roles
|
|
265
|
-
if(this.uplinkRoles[elementName]){
|
|
266
|
-
|
|
267
|
-
}
|
|
300
|
+
/*if(this.uplinkRoles[elementName]){
|
|
301
|
+
common.role = this.uplinkRoles[elementName];
|
|
302
|
+
}*/
|
|
268
303
|
// Check for id dont starts with "."
|
|
269
304
|
if(objectId.indexOf(".") === 0){
|
|
270
305
|
objectId.substring(1,objectId.length);
|
|
271
306
|
}
|
|
307
|
+
// Check for an assign definition (calculation and / or role assignment)
|
|
308
|
+
if(this.assigns[elementName]){
|
|
309
|
+
stateVal = this.assigns[elementName](stateVal,common);
|
|
310
|
+
}
|
|
311
|
+
common.read = common.role !== "button";
|
|
312
|
+
common.def = obj[elementName] || typeof obj[elementName] === "boolean" ? obj[elementName].stateCommonDef? obj[elementName].stateCommonDef: common.type === "boolean"? false : common.type === "number"? 0: "": common.type === "number"? 0: "";
|
|
272
313
|
await this.adapter.setObjectNotExistsAsync(objectId,{
|
|
273
314
|
type: "state",
|
|
274
|
-
common:
|
|
275
|
-
type: stateCommonType !== undefined? stateCommonType!== "object"? stateCommonType: "mixed": "mixed",
|
|
276
|
-
name: stateCommonName,
|
|
277
|
-
role: stateCommonRole,
|
|
278
|
-
read: stateCommonRole !== "button",
|
|
279
|
-
unit: obj[elementName]? obj[elementName].CommonStateUnit? obj[elementName].CommonStateUnit : "" : "",
|
|
280
|
-
def: obj[elementName] || typeof obj[elementName] === "boolean" ? obj[elementName].stateCommonDef? obj[elementName].stateCommonDef: stateCommonType === "boolean"? false : stateCommonType === "number"? 0: "": stateCommonType === "number"? 0: "",
|
|
281
|
-
write: stateCommonWrite
|
|
282
|
-
},
|
|
315
|
+
common: common,
|
|
283
316
|
native: {},
|
|
284
317
|
});
|
|
285
318
|
if(typeof stateVal === "object"){
|