iobroker.lorawan 1.5.4 → 1.5.6

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.5.6 (2024-11-26)
27
+ * (BenAhrdt) add folder "uplink.remaining.version_ids" to writecommands
28
+
29
+ ### 1.5.5 (2024-11-23)
30
+ * (BenAhrdt) add CRC-8
31
+
26
32
  ### 1.5.4 (2024-11-15)
27
33
  * (BenAhrdt) add roles and fix responsive issues
28
34
 
@@ -513,6 +513,7 @@
513
513
  "tooltip": "crcTooltip",
514
514
  "options": [
515
515
  {"label":"no crc","value":"noCrc"},
516
+ {"label":"CRC-8","value":"CRC-8"},
516
517
  {"label":"KERMIT","value":"KERMIT"},
517
518
  {"label":"KERMIT (Little Endian)","value":"KERMIT.LittleEndian"}
518
519
  ],
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "lorawan",
4
- "version": "1.5.4",
4
+ "version": "1.5.6",
5
5
  "news": {
6
+ "1.5.6": {
7
+ "en": "add folder \"uplink.remaining.version_ids\" to writecommands",
8
+ "de": "ordner \"uplink.remaining.version_ids\" zu schreibenbefehlen hinzufügen",
9
+ "ru": "добавить папку \"uplink.remaining.version_ids\" в написание",
10
+ "pt": "adicionar pasta \"uplink.remaining.version_ids\" para writecommands",
11
+ "nl": "map \"uplink.resting.version_ids\" toevoegen aan schrijfopdrachten",
12
+ "fr": "ajouter le dossier \"uplink.remaining.version_ids\" aux commandes d'écriture",
13
+ "it": "aggiungere la cartella \"uplink.remaining.version_ids\" per scriverecomandi",
14
+ "es": "añadir carpeta \"uplink.remaining.version_ids\" para escribircommands",
15
+ "pl": "dodaj folder \"uplink.revening.version _ ids\" do writecommands",
16
+ "uk": "додати папку \"uplink.remaining.version_ids\" для записукоманд",
17
+ "zh-cn": "添加文件夹“ uplink. remaining.version_ ids” 以写入命令"
18
+ },
19
+ "1.5.5": {
20
+ "en": "add CRC-8",
21
+ "de": "cRC-8 hinzufügen",
22
+ "ru": "добавить CRC-8",
23
+ "pt": "adicionar CRC-8",
24
+ "nl": "cRC-8 toevoegen",
25
+ "fr": "ajouter CRC-8",
26
+ "it": "aggiungere CRC-8",
27
+ "es": "añadir CRC-8",
28
+ "pl": "dodaj CRC- 8",
29
+ "uk": "додати CRC-8",
30
+ "zh-cn": "添加CRC-8"
31
+ },
6
32
  "1.5.4": {
7
33
  "en": "add roles and fix responsive issues",
8
34
  "de": "rollen hinzufügen und reaktionsprobleme beheben",
@@ -67,32 +93,6 @@
67
93
  "pl": "dodaj kilka powiadomień dla urządzeń online",
68
94
  "uk": "додати деякі повідомлення для пристроїв назад онлайн",
69
95
  "zh-cn": "在线添加设备的一些通知"
70
- },
71
- "1.4.2": {
72
- "en": "add informations about delete an custom entry in config",
73
- "de": "fügen sie informationen zum löschen eines benutzerdefinierten eintrags in config hinzu",
74
- "ru": "добавить информацию об удалении пользовательской записи в настройке",
75
- "pt": "adicionar informações sobre excluir uma entrada personalizada em config",
76
- "nl": "toe te voegen informatie over verwijderen van een aangepaste ingang in configuratie",
77
- "fr": "ajouter des informations sur supprimer une entrée personnalisée dans config",
78
- "it": "aggiungere informazioni su cancellare una voce personalizzata in configurazione",
79
- "es": "añadir información sobre eliminar una entrada personalizada en config",
80
- "pl": "dodaj informacje o usunięciu niestandardowego wpisu w konfiguratorze",
81
- "uk": "додати інформацію про видалення користувацького входу в налаштування",
82
- "zh-cn": "在配置中添加关于删除自定义项的信息"
83
- },
84
- "1.4.1": {
85
- "en": "remove timestamp from role date (ttn timestamp im µs)",
86
- "de": "zeitstempel aus rollendatum entfernen (ttn timestamp im μs)",
87
- "ru": "удалить таймстам от даты роли (ttn timestamp im μs)",
88
- "pt": "remove timestamp da data de função (ttn timestamp im μs)",
89
- "nl": "tijdstempel verwijderen van roldatum (ttn tijdstempel im μs)",
90
- "fr": "enlever l'horodatage à partir de la date du rôle (ttn horodatage im μs)",
91
- "it": "rimuovere timestamp dalla data di ruolo (tn timestamp im μs)",
92
- "es": "eliminar el timetamp de la fecha de función (ttn timestamp im μs)",
93
- "pl": "usunąć znacznik czasu z daty odtworzenia (ttn timestamp im µs)",
94
- "uk": "видалення мітки часу від дати ролі (tn timestamp im μs)",
95
- "zh-cn": "从角色日期中删除时间戳 (ttn timestamp im μs)"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -18,7 +18,7 @@
18
18
  "end": "11",
19
19
  "lengthInByte": 2,
20
20
  "on": "C101B1",
21
- "off": "C101B1",
21
+ "off": "C100B1",
22
22
  "onClick": "030111",
23
23
  "multiplyfaktor": 1,
24
24
  "decimalPlaces": 0,
@@ -98,7 +98,7 @@ class directorieshandlerClass {
98
98
  const activeFunction = "writeCommandDeviceType";
99
99
  this.adapter.log.debug(`Function ${activeFunction} started.`);
100
100
  try{
101
- const writecommand = {destination:"configuration.devicetype",releaseValue:"",approvedFolders:{"uplink.decoded":true}};
101
+ const writecommand = {destination:"configuration.devicetype",releaseValue:"",approvedFolders:{"uplink.decoded":true, "uplink.remaining.version_ids": true}};
102
102
  return await this.executeWritecommand(writecommand,elementName,sourceId,value);
103
103
  }
104
104
  catch(error){
@@ -112,7 +112,8 @@ class directorieshandlerClass {
112
112
  Device: this.writeCommandDeviceType,
113
113
  device: this.writeCommandDeviceType,
114
114
  Hardware_mode: this.writeCommandDeviceType,
115
- Hardware_Mode: this.writeCommandDeviceType
115
+ Hardware_Mode: this.writeCommandDeviceType,
116
+ model_id : this.writeCommandDeviceType
116
117
  };
117
118
 
118
119
  // declare the directory structre
@@ -1,6 +1,6 @@
1
1
  const fs = require("fs");
2
2
  const { isDeepStrictEqual } = require("util");
3
- const {crc16} = require("easy-crc");
3
+ const {crc8, crc16} = require("easy-crc");
4
4
 
5
5
  class downlinkConfighandlerClass {
6
6
  constructor(adapter) {
@@ -339,7 +339,15 @@ class downlinkConfighandlerClass {
339
339
  }
340
340
  }
341
341
  if(crcAlgorithm && crcAlgorithm !== "noCrc"){
342
- let crc = crc16(crcAlgorithm,Buffer.from(payloadInHex,"hex")).toString(16);
342
+ let crc = null;
343
+ if(crcAlgorithm === "CRC-8"){
344
+ crc = crc8(crcAlgorithm,Buffer.from(payloadInHex,"hex")).toString(16);
345
+ }
346
+ else{
347
+ crc = crc16(crcAlgorithm,Buffer.from(payloadInHex,"hex")).toString(16);
348
+ }
349
+
350
+ // Check for swap if little endian is selected
343
351
  if(crcSwap){
344
352
  crc = Buffer.from(crc,"hex").reverse().toString("hex");
345
353
  }
package/main.js CHANGED
@@ -90,6 +90,10 @@ class Lorawan extends utils.Adapter {
90
90
  //const topic ="v3/hafi-ttn-lorawan@ttn/devices/Meins/up";
91
91
  //const message = {"end_device_ids":{"device_id":"eui-lobaro-modbus","application_ids":{"application_id":"hafi-ttn-lorawan"},"dev_eui":"70B3D5E050013950","join_eui":"D55B58C0DDC074DE","dev_addr":"260B5972"},"correlation_ids":["gs:uplink:01HMQZVSCX4D7JRDNFA7GJ9D4W"],"received_at":"2024-01-22T07:06:25.260676101Z","uplink_message":{"session_key_id":"AY0v/ZirzRkpNW0Cgjdhig==","f_port":20,"f_cnt":2,"frm_payload":"AA5BAf0AxwIAAQ==","decoded_payload":{"airhumidity":50.9,"airtemperature":19.9,"port":20,"relais1":0,"relais2":1,"relais3":null,"relais5":null,"volt":3.649,"zisternenpegel":2},"rx_metadata":[{"gateway_ids":{"gateway_id":"hafenmeister-port2ttn-ng","eui":"50313953530A4750"},"time":"2024-01-22T07:06:25.013878Z","timestamp":995696116,"rssi":-37,"channel_rssi":-37,"snr":8.5,"location":{"latitude":53.5548443059465,"longitude":9.92155426743724,"altitude":10,"source":"SOURCE_REGISTRY"},"uplink_token":"CiYKJAoYaGFmZW5tZWlzdGVyLXBvcnQydHRuLW5nEghQMTlTUwpHUBD0u+TaAxoLCPGnuK0GEM3uvhkgoIL0oP24Sg==","channel_index":5,"received_at":"2024-01-22T07:06:25.032492359Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000,"spreading_factor":9,"coding_rate":"4/5"}},"frequency":"867500000","timestamp":995696116,"time":"2024-01-22T07:06:25.013878Z"},"received_at":"2024-01-22T07:06:25.054442349Z","consumed_airtime":"0.205824s","network_ids":{"net_id":"000013","ns_id":"EC656E0000000181","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}};
92
92
 
93
+ const topic = "v3/hafi-ttn-lorawan@ttn/devices/eui-00137A1000044DF5/up";
94
+ const message = {"end_device_ids":{"device_id":"shlm-luxsensor-001","application_ids":{"application_id":"shlm-clima"},"dev_eui":"00137A1000044DF5","join_eui":"00137A1000000002","dev_addr":"260B60D9"},"correlation_ids":["gs:uplink:01JDM7QFYGPF09F2NK2YW5GW78"],"received_at":"2024-11-26T12:39:20.993583474Z","uplink_message":{"session_key_id":"AZNi5dvTa96t7M6UDHLcnw==","f_port":6,"f_cnt":107,"frm_payload":"AR4BJAAAAQIAAAA=","decoded_payload":{"BatV":3.6,"Illuminance":258},"rx_metadata":[{"gateway_ids":{"gateway_id":"shlmgw03","eui":"A84041FDFE291238"},"time":"2024-11-26T12:39:20.769507Z","timestamp":184317371,"rssi":-29,"channel_rssi":-29,"snr":14,"frequency_offset":"9922","location":{"latitude":54.51076410677215,"longitude":9.540317058563234,"source":"SOURCE_REGISTRY"},"uplink_token":"ChYKFAoIc2hsbWd3MDMSCKhAQf3+KRI4ELvr8VcaDAj4gpe6BhCWuPL1AiD4xK/RrrNE","channel_index":1,"received_at":"2024-11-26T12:39:20.784112662Z"},{"gateway_ids":{"gateway_id":"shlmgw01","eui":"A84041FDFE276220"},"time":"2024-11-26T12:39:20.764831Z","timestamp":304678548,"rssi":-105,"channel_rssi":-105,"snr":-1.8,"frequency_offset":"10121","location":{"latitude":54.5128326197047,"longitude":9.54245877441114,"source":"SOURCE_REGISTRY"},"uplink_token":"ChYKFAoIc2hsbWd3MDESCKhAQf3+J2IgEJSNpJEBGgwI+IKXugYQ9bnS+QIgoOSGgu/qhgE=","channel_index":1,"received_at":"2024-11-26T12:39:20.791977205Z"},{"gateway_ids":{"gateway_id":"eui-7076ff0056070bc0","eui":"7076FF0056070BC0"},"time":"2024-11-26T12:39:20.756Z","timestamp":2848353700,"rssi":-120,"channel_rssi":-120,"snr":-8.2,"uplink_token":"CiIKIAoUZXVpLTcwNzZmZjAwNTYwNzBiYzASCHB2/wBWBwvAEKTbmc4KGgwI+IKXugYQiY/egwMgoJHx+PLsngEqDAj4gpe6BhCAyr7oAg==","channel_index":6,"gps_time":"2024-11-26T12:39:20.756Z","received_at":"2024-11-26T12:39:20.813139849Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000,"spreading_factor":7,"coding_rate":"4/5"}},"frequency":"868300000","timestamp":184317371,"time":"2024-11-26T12:39:20.769507Z"},"received_at":"2024-11-26T12:39:20.785204683Z","consumed_airtime":"0.061696s","version_ids":{"brand_id":"netvox","model_id":"r718g","hardware_version":"2","firmware_version":"10","band_id":"EU_863_870"},"network_ids":{"net_id":"000013","ns_id":"EC656E0000000181","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}};
95
+
96
+
93
97
  // ACK
94
98
  //const topic = "v3/hafi-ttn-lorawan@ttn/devices/eui-a84041162183f8fb/down/ack";
95
99
  //const message = {"end_device_ids":{"device_id":"eui-a84041162183f8fb","application_ids":{"application_id":"hafi-ttn-lorawan"},"dev_eui":"A84041162183F8FB","join_eui":"A840410000000101","dev_addr":"260B141A"},"correlation_ids":["as:downlink:01HP6D18MQXJN90J5B07DC11HY","gs:uplink:01HP6D1A9X4WAA3SFMXH4ESSMV"],"received_at":"2024-02-09T07:41:41.776887672Z","downlink_ack":{"session_key_id":"AY2MUrmnuovS8DCZAfYmsA==","f_port":1,"f_cnt":21,"frm_payload":"AQAAeA==","confirmed":true,"priority":"NORMAL","correlation_ids":["as:downlink:01HP6D18MQXJN90J5B07DC11HY"],"confirmed_retry":{"attempt":1}}};
@@ -119,8 +123,8 @@ class Lorawan extends utils.Adapter {
119
123
  //const message = {"deduplicationId":"4a91b00d-b5e1-4955-b085-ba21b9318213","time":"2024-01-26T20:18:45.299871+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"ChirpStack","applicationId":"59bcc5a7-59e2-4481-9615-fc4e58791915","applicationName":"Mclimate_Vicki","deviceProfileId":"3a9bc28f-3664-4bdf-b3be-a20d1eb32dc8","deviceProfileName":"Mclimate_Vicki","deviceName":"MClimate_Vicki_Heizkoerperventil_001","devEui":"70b3d52dd300ed31","deviceClassEnabled":"CLASS_A","tags":{}},"margin":7,"externalPowerSource":false,"batteryLevelUnavailable":false,"batteryLevel":85.826775};
120
124
 
121
125
  // UP
122
- const topic = "application/e91e66ba-1aa7-4bdf-af88-f1246e0b8d75/device/a84041263188b787/event/up";
123
- const message = {"deduplicationId":"ce1ca35d-35c7-4f60-844c-c2b2810fd74b","time":"2024-08-25T07:10:47.758298+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"ChirpStack","applicationId":"e91e66ba-1aa7-4bdf-af88-f1246e0b8d75","applicationName":"Türen","deviceProfileId":"431c5895-68e2-478d-945f-f0e9a6f5f9f5","deviceProfileName":"Dragino Türsensoren / Fenstersensoren","deviceName":"Flurtüre","devEui":"a84041263188b787","deviceClassEnabled":"CLASS_A","tags":{}},"devAddr":"0061ebd4","adr":true,"dr":5,"fCnt":8264,"fPort":10,"confirmed":false,"data":"DAYBAA+IAAAAAA==","object":{"ALARM":0.0,"BAT_V":3.078,"CONTACT":true,"OPEN_TIMES":3976.0,"MOD":1.0,"LAST_OPEN_DURATION":0.0,"OPEN":false,"devicetype":"Dragino"},"rxInfo":[{"gatewayId":"503035416e314750","uplinkId":64001,"gwTime":"2024-08-25T07:10:47.758298+00:00","nsTime":"2024-08-25T07:11:29.787667701+00:00","rssi":-68,"snr":9.25,"channel":6,"location":{"latitude":50.69350130173554,"longitude":8.476821184158327},"context":"fp1WbA==","metadata":{"region_common_name":"EU868","region_config_id":"eu868"},"crcStatus":"CRC_OK"}],"txInfo":{"frequency":867700000,"modulation":{"lora":{"bandwidth":125000,"spreadingFactor":7,"codeRate":"CR_4_5"}}}};
126
+ //const topic = "application/e91e66ba-1aa7-4bdf-af88-f1246e0b8d75/device/a84041263188b787/event/up";
127
+ //const message = {"deduplicationId":"ce1ca35d-35c7-4f60-844c-c2b2810fd74b","time":"2024-08-25T07:10:47.758298+00:00","deviceInfo":{"tenantId":"52f14cd4-c6f1-4fbd-8f87-4025e1d49242","tenantName":"ChirpStack","applicationId":"e91e66ba-1aa7-4bdf-af88-f1246e0b8d75","applicationName":"Türen","deviceProfileId":"431c5895-68e2-478d-945f-f0e9a6f5f9f5","deviceProfileName":"Dragino Türsensoren / Fenstersensoren","deviceName":"Flurtüre","devEui":"a84041263188b787","deviceClassEnabled":"CLASS_A","tags":{}},"devAddr":"0061ebd4","adr":true,"dr":5,"fCnt":8264,"fPort":10,"confirmed":false,"data":"DAYBAA+IAAAAAA==","object":{"ALARM":0.0,"BAT_V":3.078,"CONTACT":true,"OPEN_TIMES":3976.0,"MOD":1.0,"LAST_OPEN_DURATION":0.0,"OPEN":false,"devicetype":"Dragino"},"rxInfo":[{"gatewayId":"503035416e314750","uplinkId":64001,"gwTime":"2024-08-25T07:10:47.758298+00:00","nsTime":"2024-08-25T07:11:29.787667701+00:00","rssi":-68,"snr":9.25,"channel":6,"location":{"latitude":50.69350130173554,"longitude":8.476821184158327},"context":"fp1WbA==","metadata":{"region_common_name":"EU868","region_config_id":"eu868"},"crcStatus":"CRC_OK"}],"txInfo":{"frequency":867700000,"modulation":{"lora":{"bandwidth":125000,"spreadingFactor":7,"codeRate":"CR_4_5"}}}};
124
128
 
125
129
  // LOG
126
130
  //const topic = "application/59bcc5a7-59e2-4481-9615-fc4e58791915/device/70b3d52dd300ed31/event/up";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lorawan",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "description": "converts the desired lora gateway data to a ioBroker structure",
5
5
  "author": {
6
6
  "name": "BenAhrdt",