hoffmation-base 0.1.1 → 0.1.5
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/.eslintrc.js +27 -27
- package/.github/workflows/npm-publish.yml +50 -0
- package/.prettierrc.js +9 -9
- package/LICENSE +21 -21
- package/index.js +1 -1
- package/models/connectionCallbacks.ts +13 -13
- package/models/daytime.ts +3 -3
- package/models/deviceConfig.ts +8 -8
- package/models/dimmerSettings.ts +5 -5
- package/models/iTemperaturDataPoint.ts +9 -9
- package/models/lampSettings.ts +5 -5
- package/models/ledSettings.ts +19 -19
- package/models/logLevel.ts +9 -9
- package/models/persistence/BasicRoomInfo.ts +3 -3
- package/models/persistence/DailyMovementCount.ts +3 -3
- package/models/persistence/RoomDetailInfo.ts +4 -4
- package/models/persistence/temperaturDataPoint.ts +12 -12
- package/models/persistence/todaysCount.ts +3 -3
- package/models/rooms/RoomBase.ts +357 -357
- package/models/rooms/RoomSettings/RoomSettings.ts +159 -159
- package/models/rooms/RoomSettings/hmIPRoomSettings.ts +53 -53
- package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +17 -17
- package/models/rooms/RoomSettings/readme.md +17 -17
- package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +51 -51
- package/models/rooms/iRoomImportEnforcer.ts +3 -3
- package/models/rooms/readme.md +11 -11
- package/models/temperaturSettings.ts +22 -22
- package/models/timeCallback.ts +90 -90
- package/package.json +1 -1
- package/server/config/config-readme.md +19 -19
- package/server/config/iConfig.ts +53 -53
- package/server/config/private/mainConfig.json +64 -64
- package/server/devices/DeviceInfo.ts +66 -66
- package/server/devices/Griffe.ts +31 -31
- package/server/devices/Heizgruppen.ts +91 -91
- package/server/devices/Rollos.ts +48 -48
- package/server/devices/deviceUpdater.ts +72 -72
- package/server/devices/devices.ts +189 -189
- package/server/devices/groups/fensterGroup.ts +175 -175
- package/server/devices/groups/heatGroup.ts +32 -32
- package/server/devices/groups/lampenGroup.ts +88 -88
- package/server/devices/groups/praesenzGroup.ts +182 -182
- package/server/devices/groups/smokeGroup.ts +16 -16
- package/server/devices/groups/sonosGroup.ts +33 -33
- package/server/devices/groups/tasterGroup.ts +48 -48
- package/server/devices/groups/waterGroup.ts +16 -16
- package/server/devices/hmIPDevices/Fenster.ts +114 -114
- package/server/devices/hmIPDevices/FensterPosition.ts +5 -5
- package/server/devices/hmIPDevices/TuerPosition.ts +4 -4
- package/server/devices/hmIPDevices/hmIpBewegung.ts +126 -126
- package/server/devices/hmIPDevices/hmIpDevice.ts +90 -90
- package/server/devices/hmIPDevices/hmIpDeviceType.ts +14 -14
- package/server/devices/hmIPDevices/hmIpGriff.ts +143 -143
- package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +172 -172
- package/server/devices/hmIPDevices/hmIpHeizung.ts +69 -69
- package/server/devices/hmIPDevices/hmIpLampe.ts +119 -119
- package/server/devices/hmIPDevices/hmIpPraezenz.ts +99 -99
- package/server/devices/hmIPDevices/hmIpRoll.ts +133 -133
- package/server/devices/hmIPDevices/hmIpTaster.ts +82 -73
- package/server/devices/hmIPDevices/hmIpTherm.ts +19 -19
- package/server/devices/hmIPDevices/hmIpTuer.ts +115 -115
- package/server/devices/hmIPDevices/hmIpWippe.ts +55 -55
- package/server/devices/iDeviceUpdater.ts +4 -4
- package/server/devices/iIoBrokerDevice.ts +44 -44
- package/server/devices/iTaster.ts +6 -0
- package/server/devices/{hmIPDevices/hmIpTaste.ts → taste.ts} +84 -72
- package/server/devices/wledDevice.ts +124 -124
- package/server/devices/zigbee/ZigbeeActuator.ts +113 -113
- package/server/devices/zigbee/zigbeeAquaraVibra.ts +171 -171
- package/server/devices/zigbee/zigbeeAquaraWater.ts +94 -94
- package/server/devices/zigbee/zigbeeBlitzShp.ts +77 -77
- package/server/devices/zigbee/zigbeeDevice.ts +115 -115
- package/server/devices/zigbee/zigbeeDeviceType.ts +13 -13
- package/server/devices/zigbee/zigbeeHeimanSmoke.ts +99 -99
- package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +31 -31
- package/server/devices/zigbee/zigbeeIlluActuator.ts +37 -37
- package/server/devices/zigbee/zigbeeIlluDimmer.ts +165 -165
- package/server/devices/zigbee/zigbeeIlluLampe.ts +33 -33
- package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +137 -137
- package/server/ioBroker/connection.ts +1655 -1655
- package/server/ioBroker/ioBroker.main.ts +99 -99
- package/server/ioBroker/socketIOAuthInfo.ts +5 -5
- package/server/ioBroker/socketIOConnectOptions.ts +6 -6
- package/server/ioBroker/socketIOLogging.ts +29 -29
- package/server/ioBroker/socketIOVisCommand.ts +11 -11
- package/server/services/HTTPSOptions.ts +14 -14
- package/server/services/Sonos/OwnSonosDevices.ts +9 -0
- package/server/services/Sonos/mp3-server.ts +75 -75
- package/server/services/Sonos/polly-service.ts +100 -100
- package/server/services/Sonos/sonos-service.ts +194 -199
- package/server/services/Telegram/telegram-Commands.ts +237 -215
- package/server/services/Telegram/telegram-service.ts +171 -171
- package/server/services/Telegram/telegramMessageCalback.ts +11 -11
- package/server/services/calendar/muell-tonne.ts +82 -83
- package/server/services/calendar/m/303/274ll-service.ts +147 -146
- package/server/services/dbo/persist.ts +125 -125
- package/server/services/https-service.ts +71 -71
- package/server/services/log-service.ts +69 -69
- package/server/services/news-service.ts +81 -81
- package/server/services/settings-service.ts +15 -15
- package/server/services/time-callback-service.ts +223 -223
- package/server/services/utils/ringstorage.ts +24 -24
- package/server/services/utils/utils.ts +52 -52
- package/server/services/weather/weather-alert.ts +7 -7
- package/server/services/weather/weather-current.ts +26 -26
- package/server/services/weather/weather-daily.ts +22 -22
- package/server/services/weather/weather-feelsLike.ts +6 -6
- package/server/services/weather/weather-hourly.ts +17 -17
- package/server/services/weather/weather-item.ts +6 -6
- package/server/services/weather/weather-minutes.ts +4 -4
- package/server/services/weather/weather-service.ts +277 -277
- package/server/services/weather/weather-temp.ts +8 -8
- package/tsconfig.json +58 -58
|
@@ -1,189 +1,189 @@
|
|
|
1
|
-
import { LogLevel } from '../../models/logLevel';
|
|
2
|
-
import { HmIpDeviceType } from './hmIPDevices/hmIpDeviceType';
|
|
3
|
-
import { ZigbeeDeviceType } from './zigbee/zigbeeDeviceType';
|
|
4
|
-
import { IOBrokerConnection } from '../ioBroker/connection';
|
|
5
|
-
import { ServerLogService } from '../services/log-service';
|
|
6
|
-
import { HmIPDevice } from './hmIPDevices/hmIpDevice';
|
|
7
|
-
import { ZigbeeDevice } from './zigbee/zigbeeDevice';
|
|
8
|
-
import { HmIpGriff } from './hmIPDevices/hmIpGriff';
|
|
9
|
-
import { HmIpHeizung } from './hmIPDevices/hmIpHeizung';
|
|
10
|
-
import { DeviceInfo } from './DeviceInfo';
|
|
11
|
-
import { HmIpLampe } from './hmIPDevices/hmIpLampe';
|
|
12
|
-
import { HmIpPraezenz } from './hmIPDevices/hmIpPraezenz';
|
|
13
|
-
import { HmIpRoll } from './hmIPDevices/hmIpRoll';
|
|
14
|
-
import { HmIpTaster } from './hmIPDevices/hmIpTaster';
|
|
15
|
-
import { HmIpTherm } from './hmIPDevices/hmIpTherm';
|
|
16
|
-
import { HmIpTuer } from './hmIPDevices/hmIpTuer';
|
|
17
|
-
import { HmIpWippe } from './hmIPDevices/hmIpWippe';
|
|
18
|
-
import { deviceConfig } from '../../models/deviceConfig';
|
|
19
|
-
import { HmIpHeizgruppe } from './hmIPDevices/hmIpHeizgruppe';
|
|
20
|
-
import { HmIpBewegung } from './hmIPDevices/hmIpBewegung';
|
|
21
|
-
import { ZigbeeIkeaSteckdose } from './zigbee/zigbeeIkeaSteckdose';
|
|
22
|
-
import { ZigbeeIlluLedRGBCCT } from './zigbee/zigbeeIlluLedRGBCCT';
|
|
23
|
-
import { ZigbeeAquaraVibra } from './zigbee/zigbeeAquaraVibra';
|
|
24
|
-
import { ZigbeeIlluDimmer } from './zigbee/zigbeeIlluDimmer';
|
|
25
|
-
import { ZigbeeHeimanSmoke } from './zigbee/zigbeeHeimanSmoke';
|
|
26
|
-
import { ZigbeeAquaraWater } from './zigbee/zigbeeAquaraWater';
|
|
27
|
-
import { ZigbeeBlitzShp } from './zigbee/zigbeeBlitzShp';
|
|
28
|
-
import { ZigbeeIlluLampe } from './zigbee/zigbeeIlluLampe';
|
|
29
|
-
import { ZigbeeIlluActuator } from './zigbee/zigbeeIlluActuator';
|
|
30
|
-
import { iRoomImportEnforcer } from '../../models/rooms/iRoomImportEnforcer';
|
|
31
|
-
|
|
32
|
-
export class Devices {
|
|
33
|
-
public static hmIP: { [id: string]: HmIPDevice } = {};
|
|
34
|
-
public static Zigbee: { [id: string]: ZigbeeDevice } = {};
|
|
35
|
-
|
|
36
|
-
public constructor(pDeviceData: { [id: string]: deviceConfig }, pRoomImportEnforcer: iRoomImportEnforcer) {
|
|
37
|
-
// This forces import of rooms at correct timing, to allow devices to land in proper rooms.
|
|
38
|
-
pRoomImportEnforcer.addRoomConstructor();
|
|
39
|
-
|
|
40
|
-
for (const cID in pDeviceData) {
|
|
41
|
-
const cDevConf: deviceConfig = pDeviceData[cID];
|
|
42
|
-
if (
|
|
43
|
-
!cDevConf.common ||
|
|
44
|
-
!cDevConf.common.name ||
|
|
45
|
-
typeof cDevConf.common.name === 'object' ||
|
|
46
|
-
!cDevConf.type ||
|
|
47
|
-
cDevConf.type === 'channel'
|
|
48
|
-
) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const cName: string = cDevConf.common.name;
|
|
53
|
-
|
|
54
|
-
if (cName.indexOf('00-HmIP') === 0) {
|
|
55
|
-
this.processHMIPDevice(cDevConf);
|
|
56
|
-
} else if (cName.indexOf('00-Zigbee') === 0) {
|
|
57
|
-
this.processZigbeeDevice(cDevConf);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
HmIPDevice.checkMissing();
|
|
62
|
-
ZigbeeDevice.checkMissing();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
public static addIoConnection(pIoConnection: IOBrokerConnection): void {
|
|
66
|
-
for (const id in Devices.hmIP) {
|
|
67
|
-
Devices.hmIP[id].ioConn = pIoConnection;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
for (const id in Devices.Zigbee) {
|
|
71
|
-
Devices.Zigbee[id].ioConn = pIoConnection;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
public static midnightReset(): void {
|
|
76
|
-
// Nothing yet
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
public static resetPraesenzCount(): void {
|
|
80
|
-
ServerLogService.writeLog(LogLevel.Info, `3 Uhr Reset der Präsenzmelder`);
|
|
81
|
-
for (const dID in Devices.hmIP) {
|
|
82
|
-
const d = Devices.hmIP[dID];
|
|
83
|
-
if (d.deviceType === HmIpDeviceType.HmIpPraezenz) {
|
|
84
|
-
ServerLogService.writeLog(LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
85
|
-
(d as HmIpPraezenz).detectionsToday = 0;
|
|
86
|
-
} else if (d.deviceType === HmIpDeviceType.HmIpBewegung) {
|
|
87
|
-
ServerLogService.writeLog(LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
88
|
-
(d as HmIpBewegung).detectionsToday = 0;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
private processZigbeeDevice(cDevConf: deviceConfig) {
|
|
94
|
-
const zigbeeInfo: DeviceInfo = new DeviceInfo(cDevConf);
|
|
95
|
-
|
|
96
|
-
if (typeof Devices.Zigbee[zigbeeInfo.devID] !== 'undefined') {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
ServerLogService.writeLog(
|
|
101
|
-
LogLevel.Trace,
|
|
102
|
-
`${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`,
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
switch (zigbeeInfo.deviceType) {
|
|
106
|
-
case 'AquaraVibra':
|
|
107
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeAquaraVibra(zigbeeInfo);
|
|
108
|
-
break;
|
|
109
|
-
case 'IkeaStecker':
|
|
110
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIkeaSteckdose(zigbeeInfo);
|
|
111
|
-
break;
|
|
112
|
-
case 'LedRGBCCT':
|
|
113
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluLedRGBCCT(zigbeeInfo);
|
|
114
|
-
break;
|
|
115
|
-
case 'IlluDimmer':
|
|
116
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluDimmer(zigbeeInfo);
|
|
117
|
-
break;
|
|
118
|
-
case 'HeimanSmoke':
|
|
119
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeHeimanSmoke(zigbeeInfo);
|
|
120
|
-
break;
|
|
121
|
-
case 'AquaraWater':
|
|
122
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeAquaraWater(zigbeeInfo);
|
|
123
|
-
break;
|
|
124
|
-
case 'BlitzShp':
|
|
125
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeBlitzShp(zigbeeInfo);
|
|
126
|
-
break;
|
|
127
|
-
case 'IlluLampe':
|
|
128
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluLampe(zigbeeInfo);
|
|
129
|
-
break;
|
|
130
|
-
case 'IlluActuator':
|
|
131
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluActuator(zigbeeInfo);
|
|
132
|
-
break;
|
|
133
|
-
default:
|
|
134
|
-
ServerLogService.writeLog(LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
|
|
135
|
-
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeDevice(zigbeeInfo, ZigbeeDeviceType.unknown);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
private processHMIPDevice(cDevConf: deviceConfig) {
|
|
140
|
-
const hmIPInfo: DeviceInfo = new DeviceInfo(cDevConf);
|
|
141
|
-
|
|
142
|
-
if (typeof Devices.hmIP[hmIPInfo.devID] !== 'undefined') {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
ServerLogService.writeLog(
|
|
146
|
-
LogLevel.Trace,
|
|
147
|
-
`${hmIPInfo.devID} with Type "${hmIPInfo.deviceType}" doesn't exists --> create it`,
|
|
148
|
-
);
|
|
149
|
-
switch (hmIPInfo.deviceType) {
|
|
150
|
-
case 'Lampe':
|
|
151
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpLampe(hmIPInfo);
|
|
152
|
-
break;
|
|
153
|
-
case 'Roll':
|
|
154
|
-
case 'Broll':
|
|
155
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpRoll(hmIPInfo);
|
|
156
|
-
break;
|
|
157
|
-
case 'Beweg':
|
|
158
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpBewegung(hmIPInfo);
|
|
159
|
-
break;
|
|
160
|
-
case 'Taster':
|
|
161
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpTaster(hmIPInfo);
|
|
162
|
-
break;
|
|
163
|
-
case 'Wippe':
|
|
164
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpWippe(hmIPInfo);
|
|
165
|
-
break;
|
|
166
|
-
case 'Praezenz':
|
|
167
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpPraezenz(hmIPInfo);
|
|
168
|
-
break;
|
|
169
|
-
case 'Griff':
|
|
170
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpGriff(hmIPInfo);
|
|
171
|
-
break;
|
|
172
|
-
case 'Thermostat':
|
|
173
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpTherm(hmIPInfo);
|
|
174
|
-
break;
|
|
175
|
-
case 'Heizung':
|
|
176
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpHeizung(hmIPInfo);
|
|
177
|
-
break;
|
|
178
|
-
case 'Tuer':
|
|
179
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpTuer(hmIPInfo);
|
|
180
|
-
break;
|
|
181
|
-
case 'HeizGr':
|
|
182
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIpHeizgruppe(hmIPInfo);
|
|
183
|
-
break;
|
|
184
|
-
default:
|
|
185
|
-
ServerLogService.writeLog(LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
|
|
186
|
-
Devices.hmIP[hmIPInfo.devID] = new HmIPDevice(hmIPInfo, HmIpDeviceType.unknown);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
1
|
+
import { LogLevel } from '../../models/logLevel';
|
|
2
|
+
import { HmIpDeviceType } from './hmIPDevices/hmIpDeviceType';
|
|
3
|
+
import { ZigbeeDeviceType } from './zigbee/zigbeeDeviceType';
|
|
4
|
+
import { IOBrokerConnection } from '../ioBroker/connection';
|
|
5
|
+
import { ServerLogService } from '../services/log-service';
|
|
6
|
+
import { HmIPDevice } from './hmIPDevices/hmIpDevice';
|
|
7
|
+
import { ZigbeeDevice } from './zigbee/zigbeeDevice';
|
|
8
|
+
import { HmIpGriff } from './hmIPDevices/hmIpGriff';
|
|
9
|
+
import { HmIpHeizung } from './hmIPDevices/hmIpHeizung';
|
|
10
|
+
import { DeviceInfo } from './DeviceInfo';
|
|
11
|
+
import { HmIpLampe } from './hmIPDevices/hmIpLampe';
|
|
12
|
+
import { HmIpPraezenz } from './hmIPDevices/hmIpPraezenz';
|
|
13
|
+
import { HmIpRoll } from './hmIPDevices/hmIpRoll';
|
|
14
|
+
import { HmIpTaster } from './hmIPDevices/hmIpTaster';
|
|
15
|
+
import { HmIpTherm } from './hmIPDevices/hmIpTherm';
|
|
16
|
+
import { HmIpTuer } from './hmIPDevices/hmIpTuer';
|
|
17
|
+
import { HmIpWippe } from './hmIPDevices/hmIpWippe';
|
|
18
|
+
import { deviceConfig } from '../../models/deviceConfig';
|
|
19
|
+
import { HmIpHeizgruppe } from './hmIPDevices/hmIpHeizgruppe';
|
|
20
|
+
import { HmIpBewegung } from './hmIPDevices/hmIpBewegung';
|
|
21
|
+
import { ZigbeeIkeaSteckdose } from './zigbee/zigbeeIkeaSteckdose';
|
|
22
|
+
import { ZigbeeIlluLedRGBCCT } from './zigbee/zigbeeIlluLedRGBCCT';
|
|
23
|
+
import { ZigbeeAquaraVibra } from './zigbee/zigbeeAquaraVibra';
|
|
24
|
+
import { ZigbeeIlluDimmer } from './zigbee/zigbeeIlluDimmer';
|
|
25
|
+
import { ZigbeeHeimanSmoke } from './zigbee/zigbeeHeimanSmoke';
|
|
26
|
+
import { ZigbeeAquaraWater } from './zigbee/zigbeeAquaraWater';
|
|
27
|
+
import { ZigbeeBlitzShp } from './zigbee/zigbeeBlitzShp';
|
|
28
|
+
import { ZigbeeIlluLampe } from './zigbee/zigbeeIlluLampe';
|
|
29
|
+
import { ZigbeeIlluActuator } from './zigbee/zigbeeIlluActuator';
|
|
30
|
+
import { iRoomImportEnforcer } from '../../models/rooms/iRoomImportEnforcer';
|
|
31
|
+
|
|
32
|
+
export class Devices {
|
|
33
|
+
public static hmIP: { [id: string]: HmIPDevice } = {};
|
|
34
|
+
public static Zigbee: { [id: string]: ZigbeeDevice } = {};
|
|
35
|
+
|
|
36
|
+
public constructor(pDeviceData: { [id: string]: deviceConfig }, pRoomImportEnforcer: iRoomImportEnforcer) {
|
|
37
|
+
// This forces import of rooms at correct timing, to allow devices to land in proper rooms.
|
|
38
|
+
pRoomImportEnforcer.addRoomConstructor();
|
|
39
|
+
|
|
40
|
+
for (const cID in pDeviceData) {
|
|
41
|
+
const cDevConf: deviceConfig = pDeviceData[cID];
|
|
42
|
+
if (
|
|
43
|
+
!cDevConf.common ||
|
|
44
|
+
!cDevConf.common.name ||
|
|
45
|
+
typeof cDevConf.common.name === 'object' ||
|
|
46
|
+
!cDevConf.type ||
|
|
47
|
+
cDevConf.type === 'channel'
|
|
48
|
+
) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const cName: string = cDevConf.common.name;
|
|
53
|
+
|
|
54
|
+
if (cName.indexOf('00-HmIP') === 0) {
|
|
55
|
+
this.processHMIPDevice(cDevConf);
|
|
56
|
+
} else if (cName.indexOf('00-Zigbee') === 0) {
|
|
57
|
+
this.processZigbeeDevice(cDevConf);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
HmIPDevice.checkMissing();
|
|
62
|
+
ZigbeeDevice.checkMissing();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public static addIoConnection(pIoConnection: IOBrokerConnection): void {
|
|
66
|
+
for (const id in Devices.hmIP) {
|
|
67
|
+
Devices.hmIP[id].ioConn = pIoConnection;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
for (const id in Devices.Zigbee) {
|
|
71
|
+
Devices.Zigbee[id].ioConn = pIoConnection;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public static midnightReset(): void {
|
|
76
|
+
// Nothing yet
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public static resetPraesenzCount(): void {
|
|
80
|
+
ServerLogService.writeLog(LogLevel.Info, `3 Uhr Reset der Präsenzmelder`);
|
|
81
|
+
for (const dID in Devices.hmIP) {
|
|
82
|
+
const d = Devices.hmIP[dID];
|
|
83
|
+
if (d.deviceType === HmIpDeviceType.HmIpPraezenz) {
|
|
84
|
+
ServerLogService.writeLog(LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
85
|
+
(d as HmIpPraezenz).detectionsToday = 0;
|
|
86
|
+
} else if (d.deviceType === HmIpDeviceType.HmIpBewegung) {
|
|
87
|
+
ServerLogService.writeLog(LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
88
|
+
(d as HmIpBewegung).detectionsToday = 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
private processZigbeeDevice(cDevConf: deviceConfig) {
|
|
94
|
+
const zigbeeInfo: DeviceInfo = new DeviceInfo(cDevConf);
|
|
95
|
+
|
|
96
|
+
if (typeof Devices.Zigbee[zigbeeInfo.devID] !== 'undefined') {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
ServerLogService.writeLog(
|
|
101
|
+
LogLevel.Trace,
|
|
102
|
+
`${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`,
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
switch (zigbeeInfo.deviceType) {
|
|
106
|
+
case 'AquaraVibra':
|
|
107
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeAquaraVibra(zigbeeInfo);
|
|
108
|
+
break;
|
|
109
|
+
case 'IkeaStecker':
|
|
110
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIkeaSteckdose(zigbeeInfo);
|
|
111
|
+
break;
|
|
112
|
+
case 'LedRGBCCT':
|
|
113
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluLedRGBCCT(zigbeeInfo);
|
|
114
|
+
break;
|
|
115
|
+
case 'IlluDimmer':
|
|
116
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluDimmer(zigbeeInfo);
|
|
117
|
+
break;
|
|
118
|
+
case 'HeimanSmoke':
|
|
119
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeHeimanSmoke(zigbeeInfo);
|
|
120
|
+
break;
|
|
121
|
+
case 'AquaraWater':
|
|
122
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeAquaraWater(zigbeeInfo);
|
|
123
|
+
break;
|
|
124
|
+
case 'BlitzShp':
|
|
125
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeBlitzShp(zigbeeInfo);
|
|
126
|
+
break;
|
|
127
|
+
case 'IlluLampe':
|
|
128
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluLampe(zigbeeInfo);
|
|
129
|
+
break;
|
|
130
|
+
case 'IlluActuator':
|
|
131
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeIlluActuator(zigbeeInfo);
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
134
|
+
ServerLogService.writeLog(LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
|
|
135
|
+
Devices.Zigbee[zigbeeInfo.devID] = new ZigbeeDevice(zigbeeInfo, ZigbeeDeviceType.unknown);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private processHMIPDevice(cDevConf: deviceConfig) {
|
|
140
|
+
const hmIPInfo: DeviceInfo = new DeviceInfo(cDevConf);
|
|
141
|
+
|
|
142
|
+
if (typeof Devices.hmIP[hmIPInfo.devID] !== 'undefined') {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
ServerLogService.writeLog(
|
|
146
|
+
LogLevel.Trace,
|
|
147
|
+
`${hmIPInfo.devID} with Type "${hmIPInfo.deviceType}" doesn't exists --> create it`,
|
|
148
|
+
);
|
|
149
|
+
switch (hmIPInfo.deviceType) {
|
|
150
|
+
case 'Lampe':
|
|
151
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpLampe(hmIPInfo);
|
|
152
|
+
break;
|
|
153
|
+
case 'Roll':
|
|
154
|
+
case 'Broll':
|
|
155
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpRoll(hmIPInfo);
|
|
156
|
+
break;
|
|
157
|
+
case 'Beweg':
|
|
158
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpBewegung(hmIPInfo);
|
|
159
|
+
break;
|
|
160
|
+
case 'Taster':
|
|
161
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpTaster(hmIPInfo);
|
|
162
|
+
break;
|
|
163
|
+
case 'Wippe':
|
|
164
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpWippe(hmIPInfo);
|
|
165
|
+
break;
|
|
166
|
+
case 'Praezenz':
|
|
167
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpPraezenz(hmIPInfo);
|
|
168
|
+
break;
|
|
169
|
+
case 'Griff':
|
|
170
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpGriff(hmIPInfo);
|
|
171
|
+
break;
|
|
172
|
+
case 'Thermostat':
|
|
173
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpTherm(hmIPInfo);
|
|
174
|
+
break;
|
|
175
|
+
case 'Heizung':
|
|
176
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpHeizung(hmIPInfo);
|
|
177
|
+
break;
|
|
178
|
+
case 'Tuer':
|
|
179
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpTuer(hmIPInfo);
|
|
180
|
+
break;
|
|
181
|
+
case 'HeizGr':
|
|
182
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIpHeizgruppe(hmIPInfo);
|
|
183
|
+
break;
|
|
184
|
+
default:
|
|
185
|
+
ServerLogService.writeLog(LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
|
|
186
|
+
Devices.hmIP[hmIPInfo.devID] = new HmIPDevice(hmIPInfo, HmIpDeviceType.unknown);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|