iobroker-ucl 1.1.9 → 1.1.10

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.
@@ -0,0 +1,778 @@
1
+ const {ShellyLampeWeiss, ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme, ShellyDimmer, ShellyRGBAlexaScheme, ShellyRGBTasterScheme, ShellyLampeRGB, ShellySteckdose, ShellyRollladen,ShellySensor,
2
+ deviceShellyLampeWeiss, deviceShellyDimmer, deviceShellyLampeRGB, deviceShellySteckdose, deviceShellyRollladen, deviceShellySensor } = require('./shellyClasses.js');
3
+
4
+ const attributeRawID = "rawId";
5
+ const attributeBaseState = "baseState";
6
+ const attributeEtage = "etage";
7
+ const attributeRaum = "raum";
8
+ const attributeDevice = "device";
9
+ const attributeCategory = "category";
10
+
11
+ // Datenpunkttyp:
12
+ const attributeTypeNumber = "number";
13
+ const attributeTypeString = "string";
14
+ const attributeTypeBoolean = "boolean";
15
+
16
+ // Alexa:
17
+ const attribute_AlexaSmartNamesForOn = "alexaSmartNamesForOn";
18
+ const attribute_AlexaActionNamesForOn = "alexaActionNamesForOn";
19
+ const attribute_AlexaSmartNamesForOff = "alexaSmartNamesForOff";
20
+ const attribute_AlexaActionNamesForOff = "alexaActionNamesForOff";
21
+
22
+ // Lampen/Steckdosen allgemein:
23
+ const attribute_TasterBooleanOn = "tasterBooleanOn";
24
+ const attribute_TasterBooleanOff = "tasterBooleanOff";
25
+ const attribute_Nachtbeleuchtung = "nachtbeleuchtung";
26
+ const attribute_TurnOffExitHouseSummer = "turnOffExitHouseSummer";
27
+ const attribute_TurnOffExitHouseWinter = "turnOffExitHouseWinter";
28
+ const attribute_TurnOnEnterHouseSummer = "turnOnEnterHouseSummer";
29
+ const attribute_TurnOnEnterHouseWinter = "turnOnEnterHouseWinter";
30
+
31
+ // Scheme Dimmer:
32
+ const attributeDimmer_alexaScheme_aktiv = "alexaScheme_aktiv";
33
+ const attributeDimmer_alexaScheme_name = "alexaScheme_name";
34
+ const attributeDimmer_alexaScheme_level = "alexaScheme_level";
35
+
36
+ // Scheme Dimmer 1:
37
+ const attributeDimmer_alexaScheme_aktiv1 = "alexaScheme1_aktiv";
38
+ const attributeDimmer_alexaScheme_name1 = "alexaScheme1_name";
39
+ const attributeDimmer_alexaScheme_level1 = "alexaScheme1_level";
40
+
41
+ // Scheme Dimmer 2:
42
+ const attributeDimmer_alexaScheme_aktiv2 = "alexaScheme2_aktiv";
43
+ const attributeDimmer_alexaScheme_name2 = "alexaScheme2_name";
44
+ const attributeDimmer_alexaScheme_level2 = "alexaScheme2_level";
45
+
46
+ // Scheme Dimmer 3:
47
+ const attributeDimmer_alexaScheme_aktiv3 = "alexaScheme3_aktiv";
48
+ const attributeDimmer_alexaScheme_name3 = "alexaScheme3_name";
49
+ const attributeDimmer_alexaScheme_level3 = "alexaScheme3_level";
50
+
51
+ // Scheme Dimmer 4:
52
+ const attributeDimmer_alexaScheme_aktiv4 = "alexaScheme4_aktiv";
53
+ const attributeDimmer_alexaScheme_name4 = "alexaScheme4_name";
54
+ const attributeDimmer_alexaScheme_level4 = "alexaScheme4_level";
55
+
56
+ // Taster Scheme Dimmer 1:
57
+ const attributeDimmer_tasterScheme_aktiv1 = "tasterScheme1_aktiv";
58
+ const attributeDimmer_tasterScheme_name1 = "tasterScheme1_name";
59
+ const attributeDimmer_tasterScheme_level1 = "tasterScheme1_level";
60
+
61
+ // Taster Scheme Dimmer 2:
62
+ const attributeDimmer_tasterScheme_aktiv2 = "tasterScheme2_aktiv";
63
+ const attributeDimmer_tasterScheme_name2 = "tasterScheme2_name";
64
+ const attributeDimmer_tasterScheme_level2 = "tasterScheme2_level";
65
+
66
+ // Taster Scheme Dimmer 3:
67
+ const attributeDimmer_tasterScheme_aktiv3 = "tasterScheme3_aktiv";
68
+ const attributeDimmer_tasterScheme_name3 = "tasterScheme3_name";
69
+ const attributeDimmer_tasterScheme_level3 = "tasterScheme3_level";
70
+
71
+ // Taster Scheme Dimmer 4:
72
+ const attributeDimmer_tasterScheme_aktiv4 = "tasterScheme4_aktiv";
73
+ const attributeDimmer_tasterScheme_name4 = "tasterScheme4_name";
74
+ const attributeDimmer_tasterScheme_level4 = "tasterScheme4_level";
75
+
76
+ export function createShellyDevice(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string, category: string) {
77
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeRawID, rawId, category);
78
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeCategory, category, category);
79
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeBaseState, baseState, category);
80
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeEtage, etage, category);
81
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeRaum, raum, category);
82
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDevice, device, category);
83
+ }
84
+
85
+ function createDatenpunktSingle(adapter: any, deviceRawId, attributeType, attributeName, attributeValue, category) {
86
+ var stateDatenpunkt = "0_userdata.0.devices.shelly." + category + "." + deviceRawId + "." + attributeName;
87
+ adapter.createState(stateDatenpunkt, attributeValue, {
88
+ name: "S" + deviceRawId.toString().padStart(2, '0'),
89
+ desc: "",
90
+ type: attributeType,
91
+ read: true,
92
+ write: true
93
+ });
94
+ }
95
+
96
+ // Sensor:
97
+ export function createShellySensor(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string) {
98
+
99
+ // Allgemein:
100
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellySensor);
101
+ }
102
+
103
+ // Lampe RGB:
104
+ export function createShellyLampeRGB(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string) {
105
+
106
+ // Allgemein:
107
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellyLampeRGB);
108
+ }
109
+
110
+ // Rollladen:
111
+ export function createShellyRollladen(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string) {
112
+
113
+ // Allgemein:
114
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellyRollladen);
115
+ }
116
+
117
+ // Dimmer:
118
+ export function createShellyDimmer(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string,
119
+ alexaSmartNamesForOn:string[], alexaActionNamesForOn:string[],
120
+ alexaLevelSchemeForOn: InstanceType<typeof ShellyDimmerAlexaScheme>,
121
+ alexaSmartNamesForOff: string[], alexaActionNamesForOff: string[],
122
+ levelScheme1: InstanceType<typeof ShellyDimmerAlexaScheme>, levelScheme2: InstanceType<typeof ShellyDimmerAlexaScheme>, levelScheme3: InstanceType<typeof ShellyDimmerAlexaScheme>, levelScheme4: InstanceType<typeof ShellyDimmerAlexaScheme>,
123
+ tasterBooleanOn1: InstanceType<typeof ShellyDimmerTasterScheme>, tasterBooleanOn2: InstanceType<typeof ShellyDimmerTasterScheme>, tasterBooleanOn3: InstanceType<typeof ShellyDimmerTasterScheme>, tasterBooleanOn4: InstanceType<typeof ShellyDimmerTasterScheme>,
124
+ tasterBooleanOff: string[],
125
+ nachtbeleuchtung:boolean, turnOffExitHouseSummer:boolean, turnOffExitHouseWinter:boolean, turnOnEnterHouseSummer:boolean, turnOnEnterHouseWinter:boolean) {
126
+
127
+ // Allgemein:
128
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellyDimmer);
129
+
130
+ // alexaLevelSchemeForOn: InstanceType<typeof ShellyDimmerAlexaScheme>
131
+ if (alexaLevelSchemeForOn != null) {
132
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, true, deviceShellyDimmer);
133
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name, alexaLevelSchemeForOn.getAlexaName(), deviceShellyDimmer);
134
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level, alexaLevelSchemeForOn.getLevel(), deviceShellyDimmer);
135
+ } else {
136
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, false, deviceShellyDimmer);
137
+ }
138
+
139
+ // levelScheme1: InstanceType<typeof ShellyDimmerAlexaScheme>
140
+ if (levelScheme1 != null) {
141
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv1, true, deviceShellyDimmer);
142
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name1, levelScheme1.getAlexaName(), deviceShellyDimmer);
143
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level1, levelScheme1.getLevel(), deviceShellyDimmer);
144
+ } else {
145
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv1, false, deviceShellyDimmer);
146
+ }
147
+
148
+ // levelScheme2: InstanceType<typeof ShellyDimmerAlexaScheme>
149
+ if (levelScheme2 != null) {
150
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv2, true, deviceShellyDimmer);
151
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name2, levelScheme2.getAlexaName(), deviceShellyDimmer);
152
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level2, levelScheme2.getLevel(), deviceShellyDimmer);
153
+ } else {
154
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv2, false, deviceShellyDimmer);
155
+ }
156
+
157
+ // levelScheme3: InstanceType<typeof ShellyDimmerAlexaScheme>
158
+ if (levelScheme3 != null) {
159
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv3, true, deviceShellyDimmer);
160
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name3, levelScheme3.getAlexaName(), deviceShellyDimmer);
161
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level3, levelScheme3.getLevel(), deviceShellyDimmer);
162
+ } else {
163
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv3, false, deviceShellyDimmer);
164
+ }
165
+
166
+ // levelScheme4: InstanceType<typeof ShellyDimmerAlexaScheme>
167
+ if (levelScheme4 != null) {
168
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv4, true, deviceShellyDimmer);
169
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name4, levelScheme4.getAlexaName(), deviceShellyDimmer);
170
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level4, levelScheme4.getLevel(), deviceShellyDimmer);
171
+ } else {
172
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv4, false, deviceShellyDimmer);
173
+ }
174
+
175
+ // tasterBooleanOn1: InstanceType<typeof ShellyDimmerTasterScheme>
176
+ if (tasterBooleanOn1 != null) {
177
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv1, true, deviceShellyDimmer);
178
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme_name1, tasterBooleanOn1.getTasterBooleanOnName(), deviceShellyDimmer);
179
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme_level1, tasterBooleanOn1.getLevel(), deviceShellyDimmer);
180
+ } else {
181
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv1, false, deviceShellyDimmer);
182
+ }
183
+
184
+ // tasterBooleanOn2: InstanceType<typeof ShellyDimmerTasterScheme>
185
+ if (tasterBooleanOn2 != null) {
186
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv2, true, deviceShellyDimmer);
187
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme_name2, tasterBooleanOn1.getTasterBooleanOnName(), deviceShellyDimmer);
188
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme_level2, tasterBooleanOn1.getLevel(), deviceShellyDimmer);
189
+ } else {
190
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv2, false, deviceShellyDimmer);
191
+ }
192
+
193
+ // tasterBooleanOn3: InstanceType<typeof ShellyDimmerTasterScheme>
194
+ if (tasterBooleanOn3 != null) {
195
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv3, true, deviceShellyDimmer);
196
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme_name3, tasterBooleanOn1.getTasterBooleanOnName(), deviceShellyDimmer);
197
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme_level3, tasterBooleanOn1.getLevel(), deviceShellyDimmer);
198
+ } else {
199
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv3, false, deviceShellyDimmer);
200
+ }
201
+
202
+ // tasterBooleanOn4: InstanceType<typeof ShellyDimmerTasterScheme>
203
+ if (tasterBooleanOn4 != null) {
204
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv4, true, deviceShellyDimmer);
205
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme_name4, tasterBooleanOn1.getTasterBooleanOnName(), deviceShellyDimmer);
206
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme_level4, tasterBooleanOn1.getLevel(), deviceShellyDimmer);
207
+ } else {
208
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme_aktiv4, false, deviceShellyDimmer);
209
+ }
210
+
211
+ // alexaSmartNamesForOn:string[]
212
+ var db_alexaSmartNamesForOn = null;
213
+ alexaSmartNamesForOn.forEach(value => {
214
+ if (db_alexaSmartNamesForOn == null) {
215
+ // @ts-ignore
216
+ db_alexaSmartNamesForOn = value;
217
+ } else {
218
+ // @ts-ignore
219
+ db_alexaSmartNamesForOn += "|" + value;
220
+ }
221
+ });
222
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceShellyDimmer);
223
+
224
+ // alexaActionNamesForOn:string[]
225
+ var db_alexaActionNamesForOn = null;
226
+ alexaActionNamesForOn.forEach(value => {
227
+ if (db_alexaActionNamesForOn == null) {
228
+ // @ts-ignore
229
+ db_alexaActionNamesForOn = value;
230
+ } else {
231
+ // @ts-ignore
232
+ db_alexaActionNamesForOn += "|" + value;
233
+ }
234
+ });
235
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceShellyDimmer);
236
+
237
+ // alexaSmartNamesForOff:string[]
238
+ var db_alexaSmartNamesForOff = null;
239
+ alexaSmartNamesForOff.forEach(value => {
240
+ if (db_alexaSmartNamesForOff == null) {
241
+ // @ts-ignore
242
+ db_alexaSmartNamesForOff = value;
243
+ } else {
244
+ // @ts-ignore
245
+ db_alexaSmartNamesForOff += "|" + value;
246
+ }
247
+ });
248
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceShellyDimmer);
249
+
250
+ // alexaActionNamesForOff:string[]
251
+ var db_alexaActionNamesForOff = null;
252
+ alexaActionNamesForOff.forEach(value => {
253
+ if (db_alexaActionNamesForOff == null) {
254
+ // @ts-ignore
255
+ db_alexaActionNamesForOff = value;
256
+ } else {
257
+ // @ts-ignore
258
+ db_alexaActionNamesForOff += "|" + value;
259
+ }
260
+ });
261
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceShellyDimmer);
262
+
263
+ // additionalStates4TurnOff: string[]
264
+ var db_additionalStates4TurnOff = null;
265
+ tasterBooleanOff.forEach(value => {
266
+ if (db_additionalStates4TurnOff == null) {
267
+ // @ts-ignore
268
+ db_additionalStates4TurnOff = value;
269
+ } else {
270
+ // @ts-ignore
271
+ db_additionalStates4TurnOff += "|" + value;
272
+ }
273
+ });
274
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOff, db_additionalStates4TurnOff, deviceShellyDimmer);
275
+
276
+ // Weitere:
277
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceShellyDimmer);
278
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceShellyDimmer);
279
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceShellyDimmer);
280
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceShellyDimmer);
281
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceShellyDimmer);
282
+ }
283
+
284
+ // Lampe Weiss:
285
+ export function createShellyLampe(adapter:any, rawId: number, etage: string, raum: string, device: string, baseState: string, alexaSmartNamesForOn:string[],
286
+ alexaActionNamesForOn:string[], alexaSmartNamesForOff: string[],alexaActionNamesForOff: string[], additionalStates4TurnOn:string[], additionalStates4TurnOff:string[],
287
+ nachtbeleuchtung:boolean, turnOffExitHouseSummer:boolean, turnOffExitHouseWinter:boolean, turnOnEnterHouseSummer:boolean, turnOnEnterHouseWinter:boolean) {
288
+
289
+ // Allgemein:
290
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellyLampeWeiss);
291
+
292
+ // alexaSmartNamesForOn:string[]
293
+ var db_alexaSmartNamesForOn = null;
294
+ alexaSmartNamesForOn.forEach(value => {
295
+ if (db_alexaSmartNamesForOn == null) {
296
+ // @ts-ignore
297
+ db_alexaSmartNamesForOn = value;
298
+ } else {
299
+ // @ts-ignore
300
+ db_alexaSmartNamesForOn += "|" + value;
301
+ }
302
+ });
303
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceShellyLampeWeiss);
304
+
305
+ // alexaActionNamesForOn:string[]
306
+ var db_alexaActionNamesForOn = null;
307
+ alexaActionNamesForOn.forEach(value => {
308
+ if (db_alexaActionNamesForOn == null) {
309
+ // @ts-ignore
310
+ db_alexaActionNamesForOn = value;
311
+ } else {
312
+ // @ts-ignore
313
+ db_alexaActionNamesForOn += "|" + value;
314
+ }
315
+ });
316
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceShellyLampeWeiss);
317
+
318
+ // alexaSmartNamesForOff:string[]
319
+ var db_alexaSmartNamesForOff = null;
320
+ alexaSmartNamesForOff.forEach(value => {
321
+ if (db_alexaSmartNamesForOff == null) {
322
+ // @ts-ignore
323
+ db_alexaSmartNamesForOff = value;
324
+ } else {
325
+ // @ts-ignore
326
+ db_alexaSmartNamesForOff += "|" + value;
327
+ }
328
+ });
329
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceShellyLampeWeiss);
330
+
331
+ // alexaActionNamesForOff:string[]
332
+ var db_alexaActionNamesForOff = null;
333
+ alexaActionNamesForOff.forEach(value => {
334
+ if (db_alexaActionNamesForOff == null) {
335
+ // @ts-ignore
336
+ db_alexaActionNamesForOff = value;
337
+ } else {
338
+ // @ts-ignore
339
+ db_alexaActionNamesForOff += "|" + value;
340
+ }
341
+ });
342
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceShellyLampeWeiss);
343
+
344
+ // additionalStates4TurnOn: string[]
345
+ var db_additionalStates4TurnOn = null;
346
+ additionalStates4TurnOn.forEach(value => {
347
+ if (db_additionalStates4TurnOn == null) {
348
+ // @ts-ignore
349
+ db_additionalStates4TurnOn = value;
350
+ } else {
351
+ // @ts-ignore
352
+ db_additionalStates4TurnOn += "|" + value;
353
+ }
354
+ });
355
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOn, db_additionalStates4TurnOn, deviceShellyLampeWeiss);
356
+
357
+ // additionalStates4TurnOff: string[]
358
+ var db_additionalStates4TurnOff = null;
359
+ additionalStates4TurnOff.forEach(value => {
360
+ if (db_additionalStates4TurnOff == null) {
361
+ // @ts-ignore
362
+ db_additionalStates4TurnOff = value;
363
+ } else {
364
+ // @ts-ignore
365
+ db_additionalStates4TurnOff += "|" + value;
366
+ }
367
+ });
368
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOff, db_additionalStates4TurnOff, deviceShellyLampeWeiss);
369
+
370
+ // Weitere:
371
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceShellyLampeWeiss);
372
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceShellyLampeWeiss);
373
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceShellyLampeWeiss);
374
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceShellyLampeWeiss);
375
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceShellyLampeWeiss);
376
+ }
377
+
378
+ // Steckdose:
379
+ export function createShellySteckdose(adapter:any, rawId: number, etage: string, raum: string, device: string, baseState: string, channel: number, alexaSmartNamesForOn:string[],
380
+ alexaActionNamesForOn:string[], alexaSmartNamesForOff: string[],alexaActionNamesForOff: string[], additionalStates4TurnOn:string[], additionalStates4TurnOff:string[],
381
+ nachtbeleuchtung:boolean, turnOffExitHouseSummer:boolean, turnOffExitHouseWinter:boolean, turnOnEnterHouseSummer:boolean, turnOnEnterHouseWinter:boolean) {
382
+
383
+ // Allgemein:
384
+ this.createShellyDevice(adapter, baseState, etage, raum, device, deviceShellySteckdose);
385
+
386
+ // alexaSmartNamesForOn:string[]
387
+ var db_alexaSmartNamesForOn = null;
388
+ alexaSmartNamesForOn.forEach(value => {
389
+ if (db_alexaSmartNamesForOn == null) {
390
+ // @ts-ignore
391
+ db_alexaSmartNamesForOn = value;
392
+ } else {
393
+ // @ts-ignore
394
+ db_alexaSmartNamesForOn += "|" + value;
395
+ }
396
+ });
397
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceShellySteckdose);
398
+
399
+ // alexaActionNamesForOn:string[]
400
+ var db_alexaActionNamesForOn = null;
401
+ alexaActionNamesForOn.forEach(value => {
402
+ if (db_alexaActionNamesForOn == null) {
403
+ // @ts-ignore
404
+ db_alexaActionNamesForOn = value;
405
+ } else {
406
+ // @ts-ignore
407
+ db_alexaActionNamesForOn += "|" + value;
408
+ }
409
+ });
410
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceShellySteckdose);
411
+
412
+ // alexaSmartNamesForOff:string[]
413
+ var db_alexaSmartNamesForOff = null;
414
+ alexaSmartNamesForOff.forEach(value => {
415
+ if (db_alexaSmartNamesForOff == null) {
416
+ // @ts-ignore
417
+ db_alexaSmartNamesForOff = value;
418
+ } else {
419
+ // @ts-ignore
420
+ db_alexaSmartNamesForOff += "|" + value;
421
+ }
422
+ });
423
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceShellySteckdose);
424
+
425
+ // alexaActionNamesForOff:string[]
426
+ var db_alexaActionNamesForOff = null;
427
+ alexaActionNamesForOff.forEach(value => {
428
+ if (db_alexaActionNamesForOff == null) {
429
+ // @ts-ignore
430
+ db_alexaActionNamesForOff = value;
431
+ } else {
432
+ // @ts-ignore
433
+ db_alexaActionNamesForOff += "|" + value;
434
+ }
435
+ });
436
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceShellySteckdose);
437
+
438
+ // additionalStates4TurnOn: string[]
439
+ var db_additionalStates4TurnOn = null;
440
+ additionalStates4TurnOn.forEach(value => {
441
+ if (db_additionalStates4TurnOn == null) {
442
+ // @ts-ignore
443
+ db_additionalStates4TurnOn = value;
444
+ } else {
445
+ // @ts-ignore
446
+ db_additionalStates4TurnOn += "|" + value;
447
+ }
448
+ });
449
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOn, db_additionalStates4TurnOn, deviceShellySteckdose);
450
+
451
+ // additionalStates4TurnOff: string[]
452
+ var db_additionalStates4TurnOff = null;
453
+ additionalStates4TurnOff.forEach(value => {
454
+ if (db_additionalStates4TurnOff == null) {
455
+ // @ts-ignore
456
+ db_additionalStates4TurnOff = value;
457
+ } else {
458
+ // @ts-ignore
459
+ db_additionalStates4TurnOff += "|" + value;
460
+ }
461
+ });
462
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOff, db_additionalStates4TurnOff, deviceShellySteckdose);
463
+
464
+ // Weitere:
465
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceShellySteckdose);
466
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceShellySteckdose);
467
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceShellySteckdose);
468
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceShellySteckdose);
469
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceShellySteckdose);
470
+ }
471
+
472
+ var cacheRollladenArray = null;
473
+ export function loadShellyRollladen(adapter: any) {
474
+ if (cacheRollladenArray != null) {
475
+ return cacheRollladenArray;
476
+ }
477
+ // @ts-ignore
478
+ cacheRollladenArray = [];
479
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
480
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
481
+ if (adapter.getState(datenpunktKey).val == deviceShellyRollladen) {
482
+ // @ts-ignore
483
+ cacheRollladenArray.push(new ShellyRollladen(adapter,
484
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
485
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
486
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
487
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
488
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
489
+ ));
490
+ }
491
+ });
492
+ return cacheRollladenArray;
493
+ }
494
+
495
+ var cacheSensorenArray = null;
496
+ export function loadShellySensoren(adapter: any) {
497
+ if (cacheSensorenArray != null) {
498
+ return cacheSensorenArray;
499
+ }
500
+ // @ts-ignore
501
+ cacheSensorenArray = [];
502
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
503
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
504
+ if (adapter.getState(datenpunktKey).val == deviceShellySensor) {
505
+ // @ts-ignore
506
+ cacheSensorenArray.push(new ShellySensor(adapter,
507
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
508
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
509
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
510
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
511
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
512
+ ));
513
+ }
514
+ });
515
+ return cacheSensorenArray;
516
+ }
517
+
518
+ /*var cacheLampenRGBArray = null;
519
+ export function loadShellyLampenRGB(adapter: any) {
520
+ if (cacheLampenRGBArray != null) {
521
+ return cacheLampenRGBArray;
522
+ }
523
+ // @ts-ignore
524
+ cacheLampenRGBArray = [];
525
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
526
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
527
+ if (adapter.getState(datenpunktKey).val == deviceShellyLampeRGB) {
528
+ // @ts-ignore
529
+ cacheLampenRGBArray.push(new ShellySensor(adapter,
530
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
531
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
532
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
533
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
534
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
535
+ ));
536
+ }
537
+ });
538
+ return cacheLampenRGBArray;
539
+ }*/
540
+
541
+ var cacheDimmerArray = null;
542
+ export function loadShellyDimmer(adapter: any) {
543
+ if (cacheDimmerArray != null) {
544
+ return cacheDimmerArray;
545
+ }
546
+ // @ts-ignore
547
+ cacheDimmerArray = [];
548
+
549
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
550
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
551
+ if (adapter.getState(datenpunktKey).val == deviceShellyDimmer) {
552
+
553
+ // Einschalt-Scheme:
554
+ var alexaOnScheme = null;
555
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_aktiv ).val == true) {
556
+ // @ts-ignore
557
+ alexaOnScheme = new ShellyDimmerAlexaScheme>(null,
558
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_level ).val
559
+ );
560
+ }
561
+
562
+ // Weitere Schemes als Array:
563
+ var schemeArray = [];
564
+
565
+ // alexaScheme1: InstanceType<typeof ShellyDimmerAlexaScheme>
566
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_aktiv1 ).val == true) {
567
+ // @ts-ignore
568
+ schemeArray.push(new ShellyDimmerAlexaScheme(
569
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_name1).val,
570
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_level1).val
571
+ ));
572
+ }
573
+
574
+ // alexaScheme2: InstanceType<typeof ShellyDimmerAlexaScheme>
575
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_aktiv2 ).val == true) {
576
+ // @ts-ignore
577
+ schemeArray.push(new ShellyDimmerAlexaScheme(
578
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_name2).val,
579
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_level2).val
580
+ ));
581
+ }
582
+
583
+ // alexaScheme3: InstanceType<typeof ShellyDimmerAlexaScheme>
584
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_aktiv3 ).val == true) {
585
+ // @ts-ignore
586
+ schemeArray.push(new ShellyDimmerAlexaScheme(
587
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_name3).val,
588
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_level3).val
589
+ ));
590
+ }
591
+
592
+ // alexaScheme4: InstanceType<typeof ShellyDimmerAlexaScheme>
593
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_aktiv4 ).val == true) {
594
+ // @ts-ignore
595
+ schemeArray.push(new ShellyDimmerAlexaScheme(
596
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_name4).val,
597
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_alexaScheme_level4).val
598
+ ));
599
+ }
600
+
601
+ // Weitere Schemes als Array:
602
+ var tasterSchemeArray = [];
603
+
604
+ // tasterScheme1: InstanceType<typeof ShellyDimmerTasterScheme>
605
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_aktiv1 ).val == true) {
606
+ // @ts-ignore
607
+ tasterSchemeArray.push(new ShellyDimmerTasterScheme(
608
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_name1).val,
609
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_level1).val
610
+ ));
611
+ }
612
+
613
+ // tasterScheme2: InstanceType<typeof ShellyDimmerTasterScheme>
614
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_aktiv2 ).val == true) {
615
+ // @ts-ignore
616
+ tasterSchemeArray.push(new ShellyDimmerTasterScheme(
617
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_name2).val,
618
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_level2).val
619
+ ));
620
+ }
621
+
622
+ // tasterScheme3: InstanceType<typeof ShellyDimmerTasterScheme>
623
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_aktiv3 ).val == true) {
624
+ // @ts-ignore
625
+ tasterSchemeArray.push(new ShellyDimmerTasterScheme(
626
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_name3).val,
627
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_level3).val
628
+ ));
629
+ }
630
+
631
+ // tasterScheme4: InstanceType<typeof ShellyDimmerTasterScheme>
632
+ if (adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_aktiv4 ).val == true) {
633
+ // @ts-ignore
634
+ tasterSchemeArray.push(new ShellyDimmerTasterScheme(
635
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_name4).val,
636
+ adapter.getState(datenpunktPraefix + "." + attributeDimmer_tasterScheme_level4).val
637
+ ));
638
+ }
639
+
640
+ // @ts-ignore
641
+ cacheDimmerArray.push(new ShellyDimmer(adapter,
642
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
643
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
644
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
645
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
646
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val, // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
647
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOn).val), // 08 Alexa-Ein
648
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOn).val), // Alexa-Action-Ein, z.B. "Guten morgen" (Würde auch funktionieren, wenn dies bei [06] eingetragen ist)
649
+ alexaOnScheme, // 08] A.-Ein-Schem
650
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOff).val), // 09 Alexa-Aus
651
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOff).val), // [10] Alexa-Action Aus, z.B. "Gute Nacht". Wir müssen hier zu [09] unterscheiden, da wir über "Gute Nacht" und isActionTurnedOn=true informiert werden.
652
+ schemeArray, // [11] Alexa-Schemes
653
+ tasterSchemeArray, // [12 Level-Schemes]
654
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_TasterBooleanOff).val), // 14 TasterBoolOff
655
+ adapter.getState(datenpunktPraefix + "." + attribute_Nachtbeleuchtung).val, // Gehört zur Nachtbeleuchtung ja/nein
656
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseSummer).val, // turnOffExitHouseSummer (Ausschalten, wenn Haus verlassen - Sommer)
657
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseWinter).val, // turnOffExitHouseWinter (Ausschalten, wenn Haus verlassen - Winter)
658
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseSummer).val, // turnOnEnterHouseSummer (Einschalten, wenn Haus betreten - Sommer)
659
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseWinter).val // turnOnEnterHouseWinter (Einschalten, wenn Haus betreten - Winter)
660
+ ));
661
+ }
662
+ });
663
+ return cacheDimmerArray;
664
+ }
665
+
666
+
667
+ var cacheLampenWeissArray = null;
668
+ export function loadShellyLampenWeiss(adapter: any) {
669
+ if (cacheLampenWeissArray != null) {
670
+ return cacheLampenWeissArray;
671
+ }
672
+ // @ts-ignore
673
+ cacheLampenWeissArray = [];
674
+
675
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
676
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
677
+ if (adapter.getState(datenpunktKey).val == deviceShellyLampeWeiss) {
678
+
679
+ // @ts-ignore
680
+ cacheLampenWeissArray.push(new ShellyLampeWeiss(adapter,
681
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
682
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
683
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
684
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
685
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val, // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
686
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOn).val), // 08 Alexa-Ein
687
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOn).val), // Alexa-Action-Ein, z.B. "Guten morgen" (Würde auch funktionieren, wenn dies bei [06] eingetragen ist)
688
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOff).val), // 09 Alexa-Aus
689
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOff).val), // [10] Alexa-Action Aus, z.B. "Gute Nacht". Wir müssen hier zu [09] unterscheiden, da wir über "Gute Nacht" und isActionTurnedOn=true informiert werden.
690
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_TasterBooleanOff).val), // 14 TasterBoolOff
691
+ adapter.getState(datenpunktPraefix + "." + attribute_Nachtbeleuchtung).val, // Gehört zur Nachtbeleuchtung ja/nein
692
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseSummer).val, // turnOffExitHouseSummer (Ausschalten, wenn Haus verlassen - Sommer)
693
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseWinter).val, // turnOffExitHouseWinter (Ausschalten, wenn Haus verlassen - Winter)
694
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseSummer).val, // turnOnEnterHouseSummer (Einschalten, wenn Haus betreten - Sommer)
695
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseWinter).val // turnOnEnterHouseWinter (Einschalten, wenn Haus betreten - Winter)
696
+ ));
697
+ }
698
+ });
699
+ return cacheLampenWeissArray;
700
+ }
701
+
702
+ var cacheSteckdosenArray = null;
703
+ export function loadShellySteckdosen(adapter: any) {
704
+ if (cacheSteckdosenArray != null) {
705
+ return cacheSteckdosenArray;
706
+ }
707
+ // @ts-ignore
708
+ cacheSteckdosenArray = [];
709
+
710
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
711
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
712
+ if (adapter.getState(datenpunktKey).val == deviceShellySteckdose) {
713
+
714
+ // @ts-ignore
715
+ cacheLampenWeissArray.push(new ShellySteckdose(adapter,
716
+ adapter.cacheSteckdosenArray(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
717
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
718
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
719
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
720
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val, // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
721
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOn).val), // 08 Alexa-Ein
722
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOn).val), // Alexa-Action-Ein, z.B. "Guten morgen" (Würde auch funktionieren, wenn dies bei [06] eingetragen ist)
723
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaSmartNamesForOff).val), // 09 Alexa-Aus
724
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_AlexaActionNamesForOff).val), // [10] Alexa-Action Aus, z.B. "Gute Nacht". Wir müssen hier zu [09] unterscheiden, da wir über "Gute Nacht" und isActionTurnedOn=true informiert werden.
725
+ toStringArray(adapter.getState(datenpunktPraefix + "." + attribute_TasterBooleanOff).val), // 14 TasterBoolOff
726
+ adapter.getState(datenpunktPraefix + "." + attribute_Nachtbeleuchtung).val, // Gehört zur Nachtbeleuchtung ja/nein
727
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseSummer).val, // turnOffExitHouseSummer (Ausschalten, wenn Haus verlassen - Sommer)
728
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOffExitHouseWinter).val, // turnOffExitHouseWinter (Ausschalten, wenn Haus verlassen - Winter)
729
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseSummer).val, // turnOnEnterHouseSummer (Einschalten, wenn Haus betreten - Sommer)
730
+ adapter.getState(datenpunktPraefix + "." + attribute_TurnOnEnterHouseWinter).val // turnOnEnterHouseWinter (Einschalten, wenn Haus betreten - Winter)
731
+ ));
732
+ }
733
+ });
734
+ return cacheSteckdosenArray;
735
+ }
736
+
737
+ var shellyAllArray = null;
738
+ export function loadShellyDevicesAll(adapter: any) {
739
+ if (shellyAllArray != null) {
740
+ return shellyAllArray;
741
+ }
742
+
743
+ // @ts-ignore
744
+ shellyAllArray = [];
745
+
746
+ adapter.loadShellyLampenWeiss(adapter).forEach(shelly => {
747
+ // @ts-ignore
748
+ shellyAllArray.push(shelly);
749
+ });
750
+ adapter.loadShellyDimmer(adapter).forEach(shelly => {
751
+ // @ts-ignore
752
+ shellyAllArray.push(shelly);
753
+ });
754
+ adapter.loadShellyRollladen(adapter).forEach(shelly => {
755
+ // @ts-ignore
756
+ shellyAllArray.push(shelly);
757
+ });
758
+ adapter.loadShellySensoren(adapter).forEach(shelly => {
759
+ // @ts-ignore
760
+ shellyAllArray.push(shelly);
761
+ });
762
+ adapter.loadShellySteckdosen(adapter).forEach(shelly => {
763
+ // @ts-ignore
764
+ shellyAllArray.push(shelly);
765
+ });
766
+ return shellyAllArray;
767
+ }
768
+
769
+ function toStringArray(databaseValue) { // z.B. "Werkbank|Arbeiten|Keller"
770
+ var stringArray = [];
771
+ if (databaseValue == null) {
772
+ return stringArray;
773
+ } else {
774
+ return databaseValue.split('|');
775
+ }
776
+ }
777
+
778
+ module.exports = { createShellySensor, createShellyLampeRGB, createShellyRollladen, createShellyDimmer, createShellyLampe, createShellySteckdose, loadShellyRollladen, loadShellySensoren, loadShellyDimmer, loadShellyLampenWeiss, loadShellySteckdosen, loadShellyDevicesAll };