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 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",
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
- let stateCommonType = typeof obj[elementName];
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
- stateCommonType = obj[elementName].stateCommonType? obj[elementName].stateCommonType : typeof stateVal;
255
- stateCommonName = obj[elementName].stateCommonName ? obj[elementName].stateCommonName : stateCommonName;
256
- stateCommonWrite = obj[elementName].stateCommonWrite ? obj[elementName].stateCommonWrite : stateCommonWrite;
257
- stateCommonRole = obj[elementName].stateCommonRole ? obj[elementName].stateCommonRole : stateCommonRole;
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
- stateCommonRole = this.uplinkRoles[elementName];
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"){
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lorawan",
3
- "version": "0.5.4",
3
+ "version": "0.5.5",
4
4
  "description": "converts the desired lora gateway data to a ioBroker structure",
5
5
  "author": {
6
6
  "name": "BenAhrdt",