iobroker.lorawan 1.9.0 → 1.10.0
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 +4 -0
- package/io-package.json +14 -14
- package/lib/modules/deviceProfiles/16ASPM.json +284 -123
- package/lib/modules/deviceProfiles/internal/internalBaseDevice.json +4 -0
- package/main.js +29 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,6 +23,10 @@ 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.10.0 (2025-04-17)
|
|
27
|
+
* (BenAhrdt) Add CustomSend to Control folder
|
|
28
|
+
* (BenAhrdt) update Profile for 16ASPM
|
|
29
|
+
|
|
26
30
|
### 1.9.0 (2025-04-15)
|
|
27
31
|
* (BenAhrdt) Change default fpr push and replace
|
|
28
32
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "lorawan",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.10.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.10.0": {
|
|
7
|
+
"en": "Add CustomSend to Control folder\nupdate Profile for 16ASPM",
|
|
8
|
+
"de": "Fügen Sie CustomSend in Kontrollordner\nupdate Profil für 16ASPM",
|
|
9
|
+
"ru": "Добавить CustomSend в папку Control\nобновление профиля для 16ASPM",
|
|
10
|
+
"pt": "Adicionar CustomSend à pasta de controle\natualização Perfil para 16ASPM",
|
|
11
|
+
"nl": "Aangepaste verzenden toevoegen aan de controlemap\nprofiel voor 16ASPM bijwerken",
|
|
12
|
+
"fr": "Ajouter CustomSend au dossier de contrôle\nmettre à jour le profil de 16ASPM",
|
|
13
|
+
"it": "Aggiungi CustomSend alla cartella Controllo\naggiornamento Profilo per 16ASPM",
|
|
14
|
+
"es": "Añadir CustomSend a la carpeta Control\nperfil de actualización para 16ASPM",
|
|
15
|
+
"pl": "Dodaj folder Własny Wyślij do sterowania\naktualizacja profilu dla 16ASPM",
|
|
16
|
+
"uk": "Додати налаштування\nпрофіль оновлення для 16ASPM",
|
|
17
|
+
"zh-cn": "添加自定义发送到控制文件夹\n16ASPM 的更新配置"
|
|
18
|
+
},
|
|
6
19
|
"1.9.0": {
|
|
7
20
|
"en": "Change default fpr push and replace",
|
|
8
21
|
"de": "Ändern Sie Standard-Fpr-Push und ersetzen",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "dodać Volt do assignhandlera z jednostką \"V\"\naktualizacja zależności dla administratora i kontrolera js-\nupdate release script dependecie to 3.8",
|
|
81
94
|
"uk": "додати Волт до приставки з блоком \"В\"\nоновлення залежності для адміністратора та js-controller\nоновити сценарій релізу залежно від 3,8",
|
|
82
95
|
"zh-cn": "添加Volt 以指定“ V” 单元的手列\n更新管理员和js控制器的依赖性\n将发布脚本依赖性更新到 3. 8"
|
|
83
|
-
},
|
|
84
|
-
"1.6.6": {
|
|
85
|
-
"en": "start with known profiles",
|
|
86
|
-
"de": "beginnen mit bekannten profilen",
|
|
87
|
-
"ru": "начать с известных профилей",
|
|
88
|
-
"pt": "começar com perfis conhecidos",
|
|
89
|
-
"nl": "beginnen met bekende profielen",
|
|
90
|
-
"fr": "commencer par des profils connus",
|
|
91
|
-
"it": "iniziare con i profili noti",
|
|
92
|
-
"es": "empezar con perfiles conocidos",
|
|
93
|
-
"pl": "zacząć od znanych profili",
|
|
94
|
-
"uk": "початок з відомих профілів",
|
|
95
|
-
"zh-cn": "以已知配置文件开始"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -1,125 +1,286 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"name":
|
|
11
|
-
"port":
|
|
12
|
-
"priority":
|
|
13
|
-
"type":
|
|
14
|
-
"swap":
|
|
15
|
-
"_statciText":
|
|
16
|
-
"confirmed":
|
|
17
|
-
"front":
|
|
18
|
-
"end":
|
|
19
|
-
"lengthInByte":
|
|
20
|
-
"on":
|
|
21
|
-
"off":
|
|
22
|
-
"onClick":
|
|
23
|
-
"multiplyfaktor":
|
|
24
|
-
"decimalPlaces":
|
|
25
|
-
"unit":
|
|
26
|
-
"crc":
|
|
27
|
-
"limitMin":
|
|
28
|
-
"limitMinValue":
|
|
29
|
-
"limitMax":
|
|
30
|
-
"limitMaxValue":
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"name":
|
|
34
|
-
"port":
|
|
35
|
-
"priority":
|
|
36
|
-
"type":
|
|
37
|
-
"swap":
|
|
38
|
-
"_statciText":
|
|
39
|
-
"confirmed":
|
|
40
|
-
"front":
|
|
41
|
-
"end":
|
|
42
|
-
"lengthInByte":
|
|
43
|
-
"on":
|
|
44
|
-
"off":
|
|
45
|
-
"onClick":
|
|
46
|
-
"multiplyfaktor":
|
|
47
|
-
"decimalPlaces":
|
|
48
|
-
"unit":
|
|
49
|
-
"crc":
|
|
50
|
-
"limitMin":
|
|
51
|
-
"limitMinValue":
|
|
52
|
-
"limitMax":
|
|
53
|
-
"limitMaxValue":
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"name":
|
|
57
|
-
"port":
|
|
58
|
-
"priority":
|
|
59
|
-
"type":
|
|
60
|
-
"swap":
|
|
61
|
-
"_statciText":
|
|
62
|
-
"confirmed":
|
|
63
|
-
"front":
|
|
64
|
-
"end":
|
|
65
|
-
"lengthInByte":
|
|
66
|
-
"on":
|
|
67
|
-
"off":
|
|
68
|
-
"onClick":
|
|
69
|
-
"multiplyfaktor":
|
|
70
|
-
"decimalPlaces":
|
|
71
|
-
"unit":
|
|
72
|
-
"crc":
|
|
73
|
-
"limitMin":
|
|
74
|
-
"limitMinValue":
|
|
75
|
-
"limitMax":
|
|
76
|
-
"limitMaxValue":
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
"name":
|
|
80
|
-
"port":
|
|
81
|
-
"priority":
|
|
82
|
-
"type":
|
|
83
|
-
"swap":
|
|
84
|
-
"_statciText":
|
|
85
|
-
"confirmed":
|
|
86
|
-
"front":
|
|
87
|
-
"end":
|
|
88
|
-
"lengthInByte":
|
|
89
|
-
"on":
|
|
90
|
-
"off":
|
|
91
|
-
"onClick":
|
|
92
|
-
"multiplyfaktor":
|
|
93
|
-
"decimalPlaces":
|
|
94
|
-
"unit":
|
|
95
|
-
"crc":
|
|
96
|
-
"limitMin":
|
|
97
|
-
"limitMinValue":
|
|
98
|
-
"limitMax":
|
|
99
|
-
"limitMaxValue":
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"name":
|
|
103
|
-
"port":
|
|
104
|
-
"priority":
|
|
105
|
-
"type":
|
|
106
|
-
"swap":
|
|
107
|
-
"_statciText":
|
|
108
|
-
"confirmed":
|
|
109
|
-
"front":
|
|
110
|
-
"end":
|
|
111
|
-
"lengthInByte":
|
|
112
|
-
"on":
|
|
113
|
-
"off":
|
|
114
|
-
"onClick":
|
|
115
|
-
"multiplyfaktor":
|
|
116
|
-
"decimalPlaces":
|
|
117
|
-
"unit":
|
|
118
|
-
"crc":
|
|
119
|
-
"limitMin":
|
|
120
|
-
"limitMinValue":
|
|
121
|
-
"limitMax":
|
|
122
|
-
"limitMaxValue":
|
|
123
|
-
|
|
124
|
-
|
|
2
|
+
"deviceType":"16ASPM",
|
|
3
|
+
"sendWithUplink":"disabled",
|
|
4
|
+
"port":1,
|
|
5
|
+
"priority":"NORMAL",
|
|
6
|
+
"confirmed":false,
|
|
7
|
+
"_header2":null,
|
|
8
|
+
"downlinkParameter":[
|
|
9
|
+
{
|
|
10
|
+
"name":"Power",
|
|
11
|
+
"port":1,
|
|
12
|
+
"priority":"NORMAL",
|
|
13
|
+
"type":"boolean",
|
|
14
|
+
"swap":false,
|
|
15
|
+
"_statciText":null,
|
|
16
|
+
"confirmed":true,
|
|
17
|
+
"front":"03",
|
|
18
|
+
"end":"11",
|
|
19
|
+
"lengthInByte":2,
|
|
20
|
+
"on":"C101B1",
|
|
21
|
+
"off":"C100B1",
|
|
22
|
+
"onClick":"030111",
|
|
23
|
+
"multiplyfaktor":1,
|
|
24
|
+
"decimalPlaces":0,
|
|
25
|
+
"unit":"",
|
|
26
|
+
"crc":"noCrc",
|
|
27
|
+
"limitMin":false,
|
|
28
|
+
"limitMinValue":0,
|
|
29
|
+
"limitMax":false,
|
|
30
|
+
"limitMaxValue":0
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name":"Intervall",
|
|
34
|
+
"port":1,
|
|
35
|
+
"priority":"NORMAL",
|
|
36
|
+
"type":"number",
|
|
37
|
+
"swap":false,
|
|
38
|
+
"_statciText":null,
|
|
39
|
+
"confirmed":true,
|
|
40
|
+
"front":"02",
|
|
41
|
+
"end":"12",
|
|
42
|
+
"lengthInByte":1,
|
|
43
|
+
"on":"01",
|
|
44
|
+
"off":"11",
|
|
45
|
+
"onClick":"030111",
|
|
46
|
+
"multiplyfaktor":1,
|
|
47
|
+
"decimalPlaces":0,
|
|
48
|
+
"unit":"min",
|
|
49
|
+
"crc":"noCrc",
|
|
50
|
+
"limitMin":true,
|
|
51
|
+
"limitMinValue":5,
|
|
52
|
+
"limitMax":false,
|
|
53
|
+
"limitMaxValue":0
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name":"Clear accumulated energy",
|
|
57
|
+
"port":1,
|
|
58
|
+
"priority":"NORMAL",
|
|
59
|
+
"type":"button",
|
|
60
|
+
"swap":false,
|
|
61
|
+
"_statciText":null,
|
|
62
|
+
"confirmed":true,
|
|
63
|
+
"front":"03",
|
|
64
|
+
"end":"11",
|
|
65
|
+
"lengthInByte":2,
|
|
66
|
+
"on":"01",
|
|
67
|
+
"off":"11",
|
|
68
|
+
"onClick":"2601",
|
|
69
|
+
"multiplyfaktor":1,
|
|
70
|
+
"decimalPlaces":0,
|
|
71
|
+
"unit":"",
|
|
72
|
+
"crc":"noCrc",
|
|
73
|
+
"limitMin":false,
|
|
74
|
+
"limitMinValue":0,
|
|
75
|
+
"limitMax":false,
|
|
76
|
+
"limitMaxValue":0
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name":"LED indication of Joining",
|
|
80
|
+
"port":1,
|
|
81
|
+
"priority":"NORMAL",
|
|
82
|
+
"type":"boolean",
|
|
83
|
+
"swap":false,
|
|
84
|
+
"_statciText":null,
|
|
85
|
+
"confirmed":true,
|
|
86
|
+
"front":"03",
|
|
87
|
+
"end":"11",
|
|
88
|
+
"lengthInByte":2,
|
|
89
|
+
"on":"5B01",
|
|
90
|
+
"off":"5B00",
|
|
91
|
+
"onClick":"030111",
|
|
92
|
+
"multiplyfaktor":1,
|
|
93
|
+
"decimalPlaces":0,
|
|
94
|
+
"unit":"",
|
|
95
|
+
"crc":"noCrc",
|
|
96
|
+
"limitMin":false,
|
|
97
|
+
"limitMinValue":0,
|
|
98
|
+
"limitMax":false,
|
|
99
|
+
"limitMaxValue":0
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name":"PowerOnTimer_ms",
|
|
103
|
+
"port":1,
|
|
104
|
+
"priority":"NORMAL",
|
|
105
|
+
"type":"number",
|
|
106
|
+
"swap":false,
|
|
107
|
+
"_statciText":null,
|
|
108
|
+
"confirmed":true,
|
|
109
|
+
"front":"5501",
|
|
110
|
+
"end":"",
|
|
111
|
+
"lengthInByte":2,
|
|
112
|
+
"on":"01",
|
|
113
|
+
"off":"11",
|
|
114
|
+
"onClick":"030111",
|
|
115
|
+
"multiplyfaktor":1,
|
|
116
|
+
"decimalPlaces":0,
|
|
117
|
+
"unit":"ms",
|
|
118
|
+
"crc":"noCrc",
|
|
119
|
+
"limitMin":true,
|
|
120
|
+
"limitMinValue":50,
|
|
121
|
+
"limitMax":true,
|
|
122
|
+
"limitMaxValue":65535
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name":"PowerOnTimer_s",
|
|
126
|
+
"port":1,
|
|
127
|
+
"priority":"NORMAL",
|
|
128
|
+
"type":"number",
|
|
129
|
+
"swap":false,
|
|
130
|
+
"_statciText":null,
|
|
131
|
+
"confirmed":true,
|
|
132
|
+
"front":"5701",
|
|
133
|
+
"end":"",
|
|
134
|
+
"lengthInByte":2,
|
|
135
|
+
"on":"01",
|
|
136
|
+
"off":"11",
|
|
137
|
+
"onClick":"030111",
|
|
138
|
+
"multiplyfaktor":1,
|
|
139
|
+
"decimalPlaces":0,
|
|
140
|
+
"unit":"Sec",
|
|
141
|
+
"crc":"noCrc",
|
|
142
|
+
"limitMin":true,
|
|
143
|
+
"limitMinValue":1,
|
|
144
|
+
"limitMax":true,
|
|
145
|
+
"limitMaxValue":65535
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name":"PowerOnTimer_min",
|
|
149
|
+
"port":1,
|
|
150
|
+
"priority":"NORMAL",
|
|
151
|
+
"type":"number",
|
|
152
|
+
"swap":false,
|
|
153
|
+
"_statciText":null,
|
|
154
|
+
"confirmed":true,
|
|
155
|
+
"front":"5701",
|
|
156
|
+
"end":"",
|
|
157
|
+
"lengthInByte":2,
|
|
158
|
+
"on":"01",
|
|
159
|
+
"off":"11",
|
|
160
|
+
"onClick":"030111",
|
|
161
|
+
"multiplyfaktor":60,
|
|
162
|
+
"decimalPlaces":0,
|
|
163
|
+
"unit":"min",
|
|
164
|
+
"crc":"noCrc",
|
|
165
|
+
"limitMin":true,
|
|
166
|
+
"limitMinValue":1,
|
|
167
|
+
"limitMax":true,
|
|
168
|
+
"limitMaxValue":1092
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"name":"PowerOnTimer_h",
|
|
172
|
+
"port":1,
|
|
173
|
+
"priority":"NORMAL",
|
|
174
|
+
"type":"number",
|
|
175
|
+
"swap":false,
|
|
176
|
+
"_statciText":null,
|
|
177
|
+
"confirmed":true,
|
|
178
|
+
"front":"5701",
|
|
179
|
+
"end":"",
|
|
180
|
+
"lengthInByte":2,
|
|
181
|
+
"on":"01",
|
|
182
|
+
"off":"11",
|
|
183
|
+
"onClick":"030111",
|
|
184
|
+
"multiplyfaktor":3600,
|
|
185
|
+
"decimalPlaces":0,
|
|
186
|
+
"unit":"h",
|
|
187
|
+
"crc":"noCrc",
|
|
188
|
+
"limitMin":true,
|
|
189
|
+
"limitMinValue":1,
|
|
190
|
+
"limitMax":true,
|
|
191
|
+
"limitMaxValue":24
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name":"PowerOffTimer_s",
|
|
195
|
+
"port":1,
|
|
196
|
+
"priority":"NORMAL",
|
|
197
|
+
"type":"number",
|
|
198
|
+
"swap":false,
|
|
199
|
+
"_statciText":null,
|
|
200
|
+
"confirmed":true,
|
|
201
|
+
"front":"5700",
|
|
202
|
+
"end":"",
|
|
203
|
+
"lengthInByte":2,
|
|
204
|
+
"on":"01",
|
|
205
|
+
"off":"11",
|
|
206
|
+
"onClick":"030111",
|
|
207
|
+
"multiplyfaktor":1,
|
|
208
|
+
"decimalPlaces":0,
|
|
209
|
+
"unit":"Sec",
|
|
210
|
+
"crc":"noCrc",
|
|
211
|
+
"limitMin":true,
|
|
212
|
+
"limitMinValue":1,
|
|
213
|
+
"limitMax":true,
|
|
214
|
+
"limitMaxValue":65535
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name":"Restart",
|
|
218
|
+
"port":1,
|
|
219
|
+
"priority":"NORMAL",
|
|
220
|
+
"type":"button",
|
|
221
|
+
"swap":false,
|
|
222
|
+
"_statciText":null,
|
|
223
|
+
"confirmed":true,
|
|
224
|
+
"front":"03",
|
|
225
|
+
"end":"11",
|
|
226
|
+
"lengthInByte":2,
|
|
227
|
+
"on":"01",
|
|
228
|
+
"off":"11",
|
|
229
|
+
"onClick":"A5",
|
|
230
|
+
"multiplyfaktor":1,
|
|
231
|
+
"decimalPlaces":0,
|
|
232
|
+
"unit":"",
|
|
233
|
+
"crc":"noCrc",
|
|
234
|
+
"limitMin":false,
|
|
235
|
+
"limitMinValue":0,
|
|
236
|
+
"limitMax":false,
|
|
237
|
+
"limitMaxValue":0
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name":"OnAfterPower",
|
|
241
|
+
"port":1,
|
|
242
|
+
"priority":"NORMAL",
|
|
243
|
+
"type":"boolean",
|
|
244
|
+
"swap":false,
|
|
245
|
+
"_statciText":null,
|
|
246
|
+
"confirmed":true,
|
|
247
|
+
"front":"03",
|
|
248
|
+
"end":"11",
|
|
249
|
+
"lengthInByte":2,
|
|
250
|
+
"on":"5E015F",
|
|
251
|
+
"off":"5E005F",
|
|
252
|
+
"onClick":"030111",
|
|
253
|
+
"multiplyfaktor":1,
|
|
254
|
+
"decimalPlaces":0,
|
|
255
|
+
"unit":"",
|
|
256
|
+
"crc":"noCrc",
|
|
257
|
+
"limitMin":false,
|
|
258
|
+
"limitMinValue":0,
|
|
259
|
+
"limitMax":false,
|
|
260
|
+
"limitMaxValue":0
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"name":"OffAfterPower",
|
|
264
|
+
"port":1,
|
|
265
|
+
"priority":"NORMAL",
|
|
266
|
+
"type":"boolean",
|
|
267
|
+
"swap":false,
|
|
268
|
+
"_statciText":null,
|
|
269
|
+
"confirmed":true,
|
|
270
|
+
"front":"03",
|
|
271
|
+
"end":"11",
|
|
272
|
+
"lengthInByte":2,
|
|
273
|
+
"on":"5E025F",
|
|
274
|
+
"off":"5E005F",
|
|
275
|
+
"onClick":"030111",
|
|
276
|
+
"multiplyfaktor":1,
|
|
277
|
+
"decimalPlaces":0,
|
|
278
|
+
"unit":"",
|
|
279
|
+
"crc":"noCrc",
|
|
280
|
+
"limitMin":false,
|
|
281
|
+
"limitMinValue":0,
|
|
282
|
+
"limitMax":false,
|
|
283
|
+
"limitMaxValue":0
|
|
284
|
+
}
|
|
285
|
+
]
|
|
125
286
|
}
|
package/main.js
CHANGED
|
@@ -353,6 +353,35 @@ class Lorawan extends utils.Adapter {
|
|
|
353
353
|
} catch (error) {
|
|
354
354
|
this.log.warn(`Cant send invalid downlinks. Error: ${error}`);
|
|
355
355
|
}
|
|
356
|
+
} else if (changeInfo?.changedState === 'CustomSend') {
|
|
357
|
+
if (state.val !== '') {
|
|
358
|
+
const downlinkTopic = this.downlinkConfighandler?.getDownlinkTopic(changeInfo, suffix);
|
|
359
|
+
const downlinkConfig =
|
|
360
|
+
this.downlinkConfighandler?.activeDownlinkConfigs[
|
|
361
|
+
changeInfo.bestMatchForDeviceType
|
|
362
|
+
];
|
|
363
|
+
const Statevalues = state.val.split(',');
|
|
364
|
+
const PayloadInHex = Statevalues[0];
|
|
365
|
+
const Port = Statevalues[1] ? Statevalues[1] : downlinkConfig.port;
|
|
366
|
+
const Priority = Statevalues[2] ? Statevalues[2] : downlinkConfig.priority;
|
|
367
|
+
|
|
368
|
+
await this.writeNextSend(changeInfo, PayloadInHex);
|
|
369
|
+
if (
|
|
370
|
+
!changeInfo?.bestMatchForDeviceType ||
|
|
371
|
+
this.downlinkConfighandler?.activeDownlinkConfigs[changeInfo.bestMatchForDeviceType]
|
|
372
|
+
.sendWithUplink === 'disabled'
|
|
373
|
+
) {
|
|
374
|
+
const downlink = this.downlinkConfighandler?.getDownlink(
|
|
375
|
+
{ port: Port, priority: Priority },
|
|
376
|
+
PayloadInHex,
|
|
377
|
+
changeInfo,
|
|
378
|
+
);
|
|
379
|
+
if (downlink !== undefined) {
|
|
380
|
+
await this.sendDownlink(downlinkTopic, JSON.stringify(downlink), changeInfo);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
this.setState(id, state.val, true);
|
|
356
385
|
} else {
|
|
357
386
|
const downlinkTopic = this.downlinkConfighandler?.getDownlinkTopic(changeInfo, suffix);
|
|
358
387
|
const downlinkParameter = this.downlinkConfighandler?.getDownlinkParameter(changeInfo, {});
|