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
|
|
package/admin/jsonConfig.json
CHANGED
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "lorawan",
|
|
4
|
-
"version": "1.5.
|
|
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": {
|
|
@@ -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 =
|
|
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";
|