iobroker-ucl 1.3.4 → 1.4.1

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.
@@ -67,9 +67,7 @@ const attributeDimmer_tasterScheme4_aktiv = "tasterScheme4_aktiv";
67
67
  const attributeDimmer_tasterScheme4_name = "tasterScheme4_name";
68
68
  const attributeDimmer_tasterScheme4_level = "tasterScheme4_level";
69
69
 
70
-
71
-
72
- export function createHomematicDevice(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string, category: string) {
70
+ function createHomematicDevice(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string, category: string) {
73
71
  createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeRawID, rawId, category);
74
72
  createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeCategory, category, category);
75
73
  createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeBaseState, baseState, category);
@@ -78,6 +76,230 @@ export function createHomematicDevice(adapter: any, rawId: number, baseState: st
78
76
  createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDevice, device, category);
79
77
  }
80
78
 
79
+ // Praesenzmelder
80
+ export function createHomematicPraesenzmelder(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
81
+
82
+ // Bei Update alte States löschen:
83
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicPraesenzmelder + "." + rawId;
84
+ if (adapter.existsState(stateFolderDatenpunkt)) {
85
+ adapter.deleteState(stateFolderDatenpunkt);
86
+ }
87
+
88
+ // Neue States anlegen:
89
+ setTimeout(function() {
90
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicPraesenzmelder);
91
+ cachePraesenzmelderArray = null;
92
+ }, 200);
93
+ }
94
+
95
+ // Wetterstation
96
+ export function createHomematicWetterstation(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
97
+
98
+ // Bei Update alte States löschen:
99
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicWetterstation + "." + rawId;
100
+ if (adapter.existsState(stateFolderDatenpunkt)) {
101
+ adapter.deleteState(stateFolderDatenpunkt);
102
+ }
103
+
104
+ // Neue States anlegen:
105
+ setTimeout(function() {
106
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWetterstation);
107
+ cacheWetterstationenArray = null;
108
+ }, 200);
109
+ }
110
+
111
+ // Door
112
+ export function createHomematicDoor(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
113
+
114
+ // Bei Update alte States löschen:
115
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicDoor + "." + rawId;
116
+ if (adapter.existsState(stateFolderDatenpunkt)) {
117
+ adapter.deleteState(stateFolderDatenpunkt);
118
+ }
119
+
120
+ // Neue States anlegen:
121
+ setTimeout(function() {
122
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicDoor);
123
+ cacheDoorsArray = null;
124
+ }, 200);
125
+ }
126
+
127
+ // Rollladen
128
+ export function createHomematicRollladen(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
129
+
130
+ // Bei Update alte States löschen:
131
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicRollladen + "." + rawId;
132
+ if (adapter.existsState(stateFolderDatenpunkt)) {
133
+ adapter.deleteState(stateFolderDatenpunkt);
134
+ }
135
+
136
+ // Neue States anlegen:
137
+ setTimeout(function() {
138
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicRollladen);
139
+ cacheRollladenArray = null;
140
+ }, 200);
141
+ }
142
+
143
+ // Fussbodenheizung
144
+ export function createHomematicFussbodenheizung(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
145
+
146
+ // Bei Update alte States löschen:
147
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicFussbodenheizung + "." + rawId;
148
+ if (adapter.existsState(stateFolderDatenpunkt)) {
149
+ adapter.deleteState(stateFolderDatenpunkt);
150
+ }
151
+
152
+ // Neue States anlegen:
153
+ setTimeout(function() {
154
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicFussbodenheizung);
155
+ cacheFussbodenheizungenArray = null;
156
+ }, 200);
157
+ }
158
+
159
+ // Wandtaster
160
+ export function createHomematicWandtaster(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
161
+
162
+ // Bei Update alte States löschen:
163
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicWandtaster + "." + rawId;
164
+ if (adapter.existsState(stateFolderDatenpunkt)) {
165
+ adapter.deleteState(stateFolderDatenpunkt);
166
+ }
167
+
168
+ // Neue States anlegen:
169
+ setTimeout(function() {
170
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWandtaster);
171
+ cacheWandtasterArray = null;
172
+ }, 200);
173
+ }
174
+
175
+ // AccessPoint
176
+ export function createHomematicAccessPoint(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
177
+
178
+ // Bei Update alte States löschen:
179
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicAccessPoint + "." + rawId;
180
+ if (adapter.existsState(stateFolderDatenpunkt)) {
181
+ adapter.deleteState(stateFolderDatenpunkt);
182
+ }
183
+
184
+ // Neue States anlegen:
185
+ setTimeout(function() {
186
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicAccessPoint);
187
+ cacheAccessPointsArray = null;
188
+ }, 200);
189
+ }
190
+
191
+ // Temperatursensor
192
+ export function createHomematicTemperatursensor(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
193
+
194
+ // Bei Update alte States löschen:
195
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicTemperatursensor + "." + rawId;
196
+ if (adapter.existsState(stateFolderDatenpunkt)) {
197
+ adapter.deleteState(stateFolderDatenpunkt);
198
+ }
199
+
200
+ // Neue States anlegen:
201
+ setTimeout(function() {
202
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicTemperatursensor);
203
+ cacheTemperatursensorenArray = null;
204
+ }, 200);
205
+ }
206
+
207
+ // Rauchmelder
208
+ export function createHomematicRauchmelder(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
209
+
210
+ // Bei Update alte States löschen:
211
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicRauchmelder + "." + rawId;
212
+ if (adapter.existsState(stateFolderDatenpunkt)) {
213
+ adapter.deleteState(stateFolderDatenpunkt);
214
+ }
215
+
216
+ // Neue States anlegen:
217
+ setTimeout(function() {
218
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicRauchmelder);
219
+ cacheRauchmelderArray = null;
220
+ }, 200);
221
+ }
222
+
223
+ // FunkSchaltaktor
224
+ export function createHomematicFunkSchaltaktor(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
225
+
226
+ // Bei Update alte States löschen:
227
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicFunkSchaltaktor + "." + rawId;
228
+ if (adapter.existsState(stateFolderDatenpunkt)) {
229
+ adapter.deleteState(stateFolderDatenpunkt);
230
+ }
231
+
232
+ // Neue States anlegen:
233
+ setTimeout(function() {
234
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicFunkSchaltaktor);
235
+ cacheFunkschaltaktorenArray = null;
236
+ }, 200);
237
+ }
238
+
239
+ // Window
240
+ export function createHomematicWindow(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
241
+
242
+ // Bei Update alte States löschen:
243
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicWindow + "." + rawId;
244
+ if (adapter.existsState(stateFolderDatenpunkt)) {
245
+ adapter.deleteState(stateFolderDatenpunkt);
246
+ }
247
+
248
+ // Neue States anlegen:
249
+ setTimeout(function() {
250
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWindow);
251
+ cacheWindowsArray = null;
252
+ }, 200);
253
+ }
254
+
255
+ // Steckdose
256
+ export function createHomematicSteckdose(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
257
+
258
+ // Bei Update alte States löschen:
259
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicSteckdose + "." + rawId;
260
+ if (adapter.existsState(stateFolderDatenpunkt)) {
261
+ adapter.deleteState(stateFolderDatenpunkt);
262
+ }
263
+
264
+ // Neue States anlegen:
265
+ setTimeout(function() {
266
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicSteckdose);
267
+ cacheSteckdosenArray = null;
268
+ }, 200);
269
+ }
270
+
271
+ // Heizkoerper
272
+ export function createHomematicHeizkoerper(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
273
+
274
+ // Bei Update alte States löschen:
275
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicHeizkoerper + "." + rawId;
276
+ if (adapter.existsState(stateFolderDatenpunkt)) {
277
+ adapter.deleteState(stateFolderDatenpunkt);
278
+ }
279
+
280
+ // Neue States anlegen:
281
+ setTimeout(function() {
282
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicHeizkoerper);
283
+ cacheHeizkoerperArray = null;
284
+ }, 200);
285
+ }
286
+
287
+ // Wandthermostat
288
+ export function createHomematicWandthermostat(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string) {
289
+
290
+ // Bei Update alte States löschen:
291
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicWandthermostat + "." + rawId;
292
+ if (adapter.existsState(stateFolderDatenpunkt)) {
293
+ adapter.deleteState(stateFolderDatenpunkt);
294
+ }
295
+
296
+ // Neue States anlegen:
297
+ setTimeout(function() {
298
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWandthermostat);
299
+ cacheWandthermostateArray = null;
300
+ }, 200);
301
+ }
302
+
81
303
  // Dimmer:
82
304
  export function createHomeaticDimmer(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string,
83
305
  alexaSmartNamesForOn:string[], alexaActionNamesForOn:string[], alexaLevelSchemeForOn: InstanceType<typeof DimmerAlexaScheme>, alexaSmartNamesForOff: string[],alexaActionNamesForOff: string[],
@@ -85,158 +307,168 @@ export function createHomeaticDimmer(adapter: any, rawId: number, baseState: str
85
307
  tasterBooleanOnScheme1: InstanceType<typeof DimmerTasterScheme>, tasterBooleanOnScheme2: InstanceType<typeof DimmerTasterScheme>, tasterBooleanOnScheme3: InstanceType<typeof DimmerTasterScheme>, tasterBooleanOnScheme4: InstanceType<typeof DimmerTasterScheme>,
86
308
  tasterBooleanOff: string[], nachtbeleuchtung:boolean, turnOffExitHouseSummer:boolean, turnOffExitHouseWinter:boolean, turnOnEnterHouseSummer:boolean, turnOnEnterHouseWinter:boolean) {
87
309
 
88
- // Allgemein:
89
- createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicDimmer);
90
-
91
- // alexaScheme1: InstanceType<typeof DimmerAlexaScheme>
92
- if (alexaScheme1 != null) {
93
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme1_aktiv, true, deviceHomematicDimmer);
94
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme1_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
95
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme1_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
96
- } else {
97
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme1_aktiv, false, deviceHomematicDimmer);
98
- }
99
-
100
- // alexaScheme2: InstanceType<typeof DimmerAlexaScheme>
101
- if (alexaScheme2 != null) {
102
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme2_aktiv, true, deviceHomematicDimmer);
103
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme2_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
104
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme2_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
105
- } else {
106
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme2_aktiv, false, deviceHomematicDimmer);
107
- }
108
-
109
- // alexaScheme3: InstanceType<typeof DimmerAlexaScheme>
110
- if (alexaScheme3 != null) {
111
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme3_aktiv, true, deviceHomematicDimmer);
112
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme3_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
113
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme3_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
114
- } else {
115
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme3_aktiv, false, deviceHomematicDimmer);
116
- }
117
-
118
- // alexaScheme4: InstanceType<typeof DimmerAlexaScheme>
119
- if (alexaScheme4 != null) {
120
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme4_aktiv, true, deviceHomematicDimmer);
121
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme4_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
122
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme4_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
123
- } else {
124
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme4_aktiv, false, deviceHomematicDimmer);
125
- }
126
-
127
- if (tasterBooleanOnScheme1 != null) {
128
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme1_aktiv, true, deviceHomematicDimmer);
129
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme1_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
130
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme1_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
131
- } else {
132
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme1_aktiv, false, deviceHomematicDimmer);
133
- }
134
-
135
- if (tasterBooleanOnScheme2 != null) {
136
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme2_aktiv, true, deviceHomematicDimmer);
137
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme2_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
138
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme2_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
139
- } else {
140
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme2_aktiv, false, deviceHomematicDimmer);
141
- }
142
-
143
- if (tasterBooleanOnScheme3 != null) {
144
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme3_aktiv, true, deviceHomematicDimmer);
145
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme3_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
146
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme3_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
147
- } else {
148
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme3_aktiv, false, deviceHomematicDimmer);
149
- }
150
-
151
- if (tasterBooleanOnScheme4 != null) {
152
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme4_aktiv, true, deviceHomematicDimmer);
153
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme4_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
154
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme4_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
155
- } else {
156
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme4_aktiv, false, deviceHomematicDimmer);
157
- }
158
-
159
- // alexaLevelSchemeForOn: InstanceType<typeof DimmerAlexaScheme>
160
- if (alexaLevelSchemeForOn != null) {
161
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, true, deviceHomematicDimmer);
162
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name, alexaLevelSchemeForOn.getAlexaName(), deviceHomematicDimmer);
163
- createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level, alexaLevelSchemeForOn.getLevel(), deviceHomematicDimmer);
164
- } else {
165
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, false, deviceHomematicDimmer);
310
+ // Bei Update alte States löschen:
311
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicDimmer + "." + rawId;
312
+ if (adapter.existsState(stateFolderDatenpunkt)) {
313
+ adapter.deleteState(stateFolderDatenpunkt);
166
314
  }
167
315
 
168
- // additionalStates4TurnOff: string[]
169
- let db_additionalStates4TurnOff = null;
170
- tasterBooleanOff.forEach(value => {
171
- if (db_additionalStates4TurnOff == null) {
172
- // @ts-ignore
173
- db_additionalStates4TurnOff = value;
316
+ // Neue States anlegen:
317
+ setTimeout(function() {
318
+ // Allgemein:
319
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicDimmer);
320
+
321
+ // alexaScheme1: InstanceType<typeof DimmerAlexaScheme>
322
+ if (alexaScheme1 != null) {
323
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme1_aktiv, true, deviceHomematicDimmer);
324
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme1_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
325
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme1_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
174
326
  } else {
175
- // @ts-ignore
176
- db_additionalStates4TurnOff += "|" + value;
177
- }
178
- });
179
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOff, db_additionalStates4TurnOff, deviceHomematicDimmer);
327
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme1_aktiv, false, deviceHomematicDimmer);
328
+ }
329
+
330
+ // alexaScheme2: InstanceType<typeof DimmerAlexaScheme>
331
+ if (alexaScheme2 != null) {
332
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme2_aktiv, true, deviceHomematicDimmer);
333
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme2_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
334
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme2_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
335
+ } else {
336
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme2_aktiv, false, deviceHomematicDimmer);
337
+ }
338
+
339
+ // alexaScheme3: InstanceType<typeof DimmerAlexaScheme>
340
+ if (alexaScheme3 != null) {
341
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme3_aktiv, true, deviceHomematicDimmer);
342
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme3_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
343
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme3_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
344
+ } else {
345
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme3_aktiv, false, deviceHomematicDimmer);
346
+ }
347
+
348
+ // alexaScheme4: InstanceType<typeof DimmerAlexaScheme>
349
+ if (alexaScheme4 != null) {
350
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme4_aktiv, true, deviceHomematicDimmer);
351
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme4_name, alexaScheme1.getAlexaName(), deviceHomematicDimmer);
352
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme4_level, alexaScheme1.getLevel(), deviceHomematicDimmer);
353
+ } else {
354
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme4_aktiv, false, deviceHomematicDimmer);
355
+ }
180
356
 
181
- // alexaSmartNamesForOn:string[]
182
- let db_alexaSmartNamesForOn = null;
183
- alexaSmartNamesForOn.forEach(value => {
184
- if (db_alexaSmartNamesForOn == null) {
185
- // @ts-ignore
186
- db_alexaSmartNamesForOn = value;
357
+ if (tasterBooleanOnScheme1 != null) {
358
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme1_aktiv, true, deviceHomematicDimmer);
359
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme1_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
360
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme1_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
187
361
  } else {
188
- // @ts-ignore
189
- db_alexaSmartNamesForOn += "|" + value;
190
- }
191
- });
192
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceHomematicDimmer);
362
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme1_aktiv, false, deviceHomematicDimmer);
363
+ }
193
364
 
194
- // alexaActionNamesForOn:string[]
195
- let db_alexaActionNamesForOn = null;
196
- alexaActionNamesForOn.forEach(value => {
197
- if (db_alexaActionNamesForOn == null) {
198
- // @ts-ignore
199
- db_alexaActionNamesForOn = value;
365
+ if (tasterBooleanOnScheme2 != null) {
366
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme2_aktiv, true, deviceHomematicDimmer);
367
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme2_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
368
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme2_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
200
369
  } else {
201
- // @ts-ignore
202
- db_alexaActionNamesForOn += "|" + value;
203
- }
204
- });
205
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceHomematicDimmer);
370
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme2_aktiv, false, deviceHomematicDimmer);
371
+ }
206
372
 
207
- // alexaSmartNamesForOff:string[]
208
- let db_alexaSmartNamesForOff = null;
209
- alexaSmartNamesForOff.forEach(value => {
210
- if (db_alexaSmartNamesForOff == null) {
211
- // @ts-ignore
212
- db_alexaSmartNamesForOff = value;
373
+ if (tasterBooleanOnScheme3 != null) {
374
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme3_aktiv, true, deviceHomematicDimmer);
375
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme3_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
376
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme3_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
213
377
  } else {
214
- // @ts-ignore
215
- db_alexaSmartNamesForOff += "|" + value;
216
- }
217
- });
218
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceHomematicDimmer);
378
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme3_aktiv, false, deviceHomematicDimmer);
379
+ }
219
380
 
220
- // alexaActionNamesForOff:string[]
221
- let db_alexaActionNamesForOff = null;
222
- alexaActionNamesForOff.forEach(value => {
223
- if (db_alexaActionNamesForOff == null) {
224
- // @ts-ignore
225
- db_alexaActionNamesForOff = value;
381
+ if (tasterBooleanOnScheme4 != null) {
382
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme4_aktiv, true, deviceHomematicDimmer);
383
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_tasterScheme4_name, tasterBooleanOnScheme1.getTasterBooleanOnName(), deviceHomematicDimmer);
384
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_tasterScheme4_level, tasterBooleanOnScheme1.getLevel(), deviceHomematicDimmer);
385
+ } else {
386
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_tasterScheme4_aktiv, false, deviceHomematicDimmer);
387
+ }
388
+
389
+ // alexaLevelSchemeForOn: InstanceType<typeof DimmerAlexaScheme>
390
+ if (alexaLevelSchemeForOn != null) {
391
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, true, deviceHomematicDimmer);
392
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attributeDimmer_alexaScheme_name, alexaLevelSchemeForOn.getAlexaName(), deviceHomematicDimmer);
393
+ createDatenpunktSingle(adapter, rawId, attributeTypeNumber, attributeDimmer_alexaScheme_level, alexaLevelSchemeForOn.getLevel(), deviceHomematicDimmer);
226
394
  } else {
227
- // @ts-ignore
228
- db_alexaActionNamesForOff += "|" + value;
395
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attributeDimmer_alexaScheme_aktiv, false, deviceHomematicDimmer);
229
396
  }
230
- });
231
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceHomematicDimmer);
232
397
 
233
- // Weitere:
234
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceHomematicDimmer);
235
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceHomematicDimmer);
236
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceHomematicDimmer);
237
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceHomematicDimmer);
238
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceHomematicDimmer);
239
- clearHomematicCaches(adapter);
398
+ // additionalStates4TurnOff: string[]
399
+ let db_additionalStates4TurnOff = null;
400
+ tasterBooleanOff.forEach(value => {
401
+ if (db_additionalStates4TurnOff == null) {
402
+ // @ts-ignore
403
+ db_additionalStates4TurnOff = value;
404
+ } else {
405
+ // @ts-ignore
406
+ db_additionalStates4TurnOff += "|" + value;
407
+ }
408
+ });
409
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_TasterBooleanOff, db_additionalStates4TurnOff, deviceHomematicDimmer);
410
+
411
+ // alexaSmartNamesForOn:string[]
412
+ let db_alexaSmartNamesForOn = null;
413
+ alexaSmartNamesForOn.forEach(value => {
414
+ if (db_alexaSmartNamesForOn == null) {
415
+ // @ts-ignore
416
+ db_alexaSmartNamesForOn = value;
417
+ } else {
418
+ // @ts-ignore
419
+ db_alexaSmartNamesForOn += "|" + value;
420
+ }
421
+ });
422
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceHomematicDimmer);
423
+
424
+ // alexaActionNamesForOn:string[]
425
+ let db_alexaActionNamesForOn = null;
426
+ alexaActionNamesForOn.forEach(value => {
427
+ if (db_alexaActionNamesForOn == null) {
428
+ // @ts-ignore
429
+ db_alexaActionNamesForOn = value;
430
+ } else {
431
+ // @ts-ignore
432
+ db_alexaActionNamesForOn += "|" + value;
433
+ }
434
+ });
435
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceHomematicDimmer);
436
+
437
+ // alexaSmartNamesForOff:string[]
438
+ let db_alexaSmartNamesForOff = null;
439
+ alexaSmartNamesForOff.forEach(value => {
440
+ if (db_alexaSmartNamesForOff == null) {
441
+ // @ts-ignore
442
+ db_alexaSmartNamesForOff = value;
443
+ } else {
444
+ // @ts-ignore
445
+ db_alexaSmartNamesForOff += "|" + value;
446
+ }
447
+ });
448
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceHomematicDimmer);
449
+
450
+ // alexaActionNamesForOff:string[]
451
+ let db_alexaActionNamesForOff = null;
452
+ alexaActionNamesForOff.forEach(value => {
453
+ if (db_alexaActionNamesForOff == null) {
454
+ // @ts-ignore
455
+ db_alexaActionNamesForOff = value;
456
+ } else {
457
+ // @ts-ignore
458
+ db_alexaActionNamesForOff += "|" + value;
459
+ }
460
+ });
461
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceHomematicDimmer);
462
+
463
+ // Weitere:
464
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceHomematicDimmer);
465
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceHomematicDimmer);
466
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceHomematicDimmer);
467
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceHomematicDimmer);
468
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceHomematicDimmer);
469
+ cacheDimmerArray = null;
470
+ }, 200);
471
+
240
472
  }
241
473
 
242
474
  // Wandschalter:
@@ -244,69 +476,77 @@ export function createHomeaticWandschalter(adapter:any, rawId: number, baseState
244
476
  alexaSmartNamesForOn:string[], alexaActionNamesForOn:string[], alexaSmartNamesForOff: string[],alexaActionNamesForOff: string[],
245
477
  nachtbeleuchtung:boolean, turnOffExitHouseSummer:boolean, turnOffExitHouseWinter:boolean, turnOnEnterHouseSummer:boolean, turnOnEnterHouseWinter:boolean) {
246
478
 
247
- // Allgemein:
248
- //export function createHomematicDevice(adapter: any, rawId: number, baseState: string, etage: string, raum: string, device: string, category: string) {
249
- createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWandschalter);
250
-
251
- // alexaSmartNamesForOn:string[]
252
- let db_alexaSmartNamesForOn = null;
253
- alexaSmartNamesForOn.forEach(value => {
254
- if (db_alexaSmartNamesForOn == null) {
255
- // @ts-ignore
256
- db_alexaSmartNamesForOn = value;
257
- } else {
258
- // @ts-ignore
259
- db_alexaSmartNamesForOn += "|" + value;
260
- }
261
- });
262
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceHomematicWandschalter);
263
-
264
- // alexaActionNamesForOn:string[]
265
- let db_alexaActionNamesForOn = null;
266
- alexaActionNamesForOn.forEach(value => {
267
- if (db_alexaActionNamesForOn == null) {
268
- // @ts-ignore
269
- db_alexaActionNamesForOn = value;
270
- } else {
271
- // @ts-ignore
272
- db_alexaActionNamesForOn += "|" + value;
273
- }
274
- });
275
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceHomematicWandschalter);
276
-
277
- // alexaSmartNamesForOff:string[]
278
- let db_alexaSmartNamesForOff = null;
279
- alexaSmartNamesForOff.forEach(value => {
280
- if (db_alexaSmartNamesForOff == null) {
281
- // @ts-ignore
282
- db_alexaSmartNamesForOff = value;
283
- } else {
284
- // @ts-ignore
285
- db_alexaSmartNamesForOff += "|" + value;
286
- }
287
- });
288
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceHomematicWandschalter);
289
-
290
- // alexaActionNamesForOff:string[]
291
- let db_alexaActionNamesForOff = null;
292
- alexaActionNamesForOff.forEach(value => {
293
- if (db_alexaActionNamesForOff == null) {
294
- // @ts-ignore
295
- db_alexaActionNamesForOff = value;
296
- } else {
297
- // @ts-ignore
298
- db_alexaActionNamesForOff += "|" + value;
299
- }
300
- });
301
- createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceHomematicWandschalter);
479
+ // Bei Update alte States löschen:
480
+ let stateFolderDatenpunkt = "0_userdata.0.devices.homematic." + deviceHomematicWandschalter + "." + rawId;
481
+ if (adapter.existsState(stateFolderDatenpunkt)) {
482
+ adapter.deleteState(stateFolderDatenpunkt);
483
+ }
302
484
 
303
- // Weitere:
304
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceHomematicWandschalter);
305
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceHomematicWandschalter);
306
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceHomematicWandschalter);
307
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceHomematicWandschalter);
308
- createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceHomematicWandschalter);
309
- clearHomematicCaches(adapter);
485
+ // Neue States anlegen:
486
+ setTimeout(function() {
487
+ // Allgemein:
488
+ createHomematicDevice(adapter, rawId, baseState, etage, raum, device, deviceHomematicWandschalter);
489
+
490
+ // alexaSmartNamesForOn:string[]
491
+ let db_alexaSmartNamesForOn = null;
492
+ alexaSmartNamesForOn.forEach(value => {
493
+ if (db_alexaSmartNamesForOn == null) {
494
+ // @ts-ignore
495
+ db_alexaSmartNamesForOn = value;
496
+ } else {
497
+ // @ts-ignore
498
+ db_alexaSmartNamesForOn += "|" + value;
499
+ }
500
+ });
501
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOn, db_alexaSmartNamesForOn, deviceHomematicWandschalter);
502
+
503
+ // alexaActionNamesForOn:string[]
504
+ let db_alexaActionNamesForOn = null;
505
+ alexaActionNamesForOn.forEach(value => {
506
+ if (db_alexaActionNamesForOn == null) {
507
+ // @ts-ignore
508
+ db_alexaActionNamesForOn = value;
509
+ } else {
510
+ // @ts-ignore
511
+ db_alexaActionNamesForOn += "|" + value;
512
+ }
513
+ });
514
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOn, db_alexaActionNamesForOn, deviceHomematicWandschalter);
515
+
516
+ // alexaSmartNamesForOff:string[]
517
+ let db_alexaSmartNamesForOff = null;
518
+ alexaSmartNamesForOff.forEach(value => {
519
+ if (db_alexaSmartNamesForOff == null) {
520
+ // @ts-ignore
521
+ db_alexaSmartNamesForOff = value;
522
+ } else {
523
+ // @ts-ignore
524
+ db_alexaSmartNamesForOff += "|" + value;
525
+ }
526
+ });
527
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaSmartNamesForOff, db_alexaSmartNamesForOff, deviceHomematicWandschalter);
528
+
529
+ // alexaActionNamesForOff:string[]
530
+ let db_alexaActionNamesForOff = null;
531
+ alexaActionNamesForOff.forEach(value => {
532
+ if (db_alexaActionNamesForOff == null) {
533
+ // @ts-ignore
534
+ db_alexaActionNamesForOff = value;
535
+ } else {
536
+ // @ts-ignore
537
+ db_alexaActionNamesForOff += "|" + value;
538
+ }
539
+ });
540
+ createDatenpunktSingle(adapter, rawId, attributeTypeString, attribute_AlexaActionNamesForOff, db_alexaActionNamesForOff, deviceHomematicWandschalter);
541
+
542
+ // Weitere:
543
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_Nachtbeleuchtung, nachtbeleuchtung, deviceHomematicWandschalter);
544
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseSummer, turnOffExitHouseSummer, deviceHomematicWandschalter);
545
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOffExitHouseWinter, turnOffExitHouseWinter, deviceHomematicWandschalter);
546
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseSummer, turnOnEnterHouseSummer, deviceHomematicWandschalter);
547
+ createDatenpunktSingle(adapter, rawId, attributeTypeBoolean, attribute_TurnOnEnterHouseWinter, turnOnEnterHouseWinter, deviceHomematicWandschalter);
548
+ cacheWandschalterArray = null;
549
+ }, 200);
310
550
  }
311
551
 
312
552
  function createDatenpunktSingle(adapter: any, deviceRawId, attributeType, attributeName, attributeValue, category) {
@@ -969,5 +1209,4 @@ function getEtageSortIndex(etage: string) {
969
1209
 
970
1210
 
971
1211
 
972
-
973
- module.exports = { createHomematicDevice, createHomeaticDimmer, createHomeaticWandschalter, loadHomematicWandthermostate, loadHomematicPraesenzmelder, loadHomematicWetterstationen, loadHomematicDoors, loadHomematicRollladen, loadHomematicWandschalter, loadHomematicFussbodenheizungen, loadHomematicWandtaster, loadHomematicAccessPoints, loadHomematicTemperatursensoren, loadHomematicRauchmelder, loadHomematicFunktschaltaktoren, loadHomematicWindows, loadHomematicSteckdosen, loadHomematicHeizkoerper, loadHomematicDimmer, loadHomematicDevicesAll, clearHomematicCaches };
1212
+ module.exports = { createHomematicHeizkoerper, createHomematicWindow, createHomematicFunkSchaltaktor, createHomematicRauchmelder, createHomematicTemperatursensor, createHomematicAccessPoint, createHomematicWandtaster, createHomematicPraesenzmelder, createHomematicWandthermostat, createHomematicWetterstation, createHomematicDoor, createHomematicRollladen, createHomematicFussbodenheizung, createHomeaticDimmer, createHomeaticWandschalter, loadHomematicWandthermostate, loadHomematicPraesenzmelder, loadHomematicWetterstationen, loadHomematicDoors, loadHomematicRollladen, loadHomematicWandschalter, loadHomematicFussbodenheizungen, loadHomematicWandtaster, loadHomematicAccessPoints, loadHomematicTemperatursensoren, loadHomematicRauchmelder, loadHomematicFunktschaltaktoren, loadHomematicWindows, loadHomematicSteckdosen, loadHomematicHeizkoerper, loadHomematicDimmer, loadHomematicDevicesAll, clearHomematicCaches };