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,171 +1,171 @@
|
|
|
1
|
-
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
-
import { DeviceInfo } from '../DeviceInfo';
|
|
3
|
-
import { ZigbeeDevice } from './zigbeeDevice';
|
|
4
|
-
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
5
|
-
import { ServerLogService } from '../../services/log-service';
|
|
6
|
-
import { SonosService } from '../../services/Sonos/sonos-service';
|
|
7
|
-
import { Utils } from '../../services/utils/utils';
|
|
8
|
-
import { PollyService } from '../../services/Sonos/polly-service';
|
|
9
|
-
|
|
10
|
-
export class ZigbeeAquaraVibra extends ZigbeeDevice {
|
|
11
|
-
public sensitivity: string = '';
|
|
12
|
-
public tiltAngle: number = 0;
|
|
13
|
-
public tiltAngleX: number = 0;
|
|
14
|
-
public tiltAngleXAbs: number = 0;
|
|
15
|
-
public tiltAngleY: number = 0;
|
|
16
|
-
public tiltAngleYAbs: number = 0;
|
|
17
|
-
public tiltAngleZ: number = 0;
|
|
18
|
-
public tilt: boolean = false;
|
|
19
|
-
public vibration: boolean = false;
|
|
20
|
-
public vibrationBlockedTimeStamp: number = 0;
|
|
21
|
-
private _idSensitivity: string = '';
|
|
22
|
-
private _vibrationBlocked: boolean = false;
|
|
23
|
-
private _alarmMessage: string;
|
|
24
|
-
// TODO Set Sensitivity
|
|
25
|
-
|
|
26
|
-
public constructor(pInfo: DeviceInfo) {
|
|
27
|
-
super(pInfo, ZigbeeDeviceType.ZigbeeAquaraVibra);
|
|
28
|
-
this._alarmMessage = `Alarm bei ${this.info.customName}. Ich wiederhole: Alarm bei ${this.info.customName}`;
|
|
29
|
-
PollyService.preloadTTS(this._alarmMessage);
|
|
30
|
-
this._idSensitivity = `${this.info.fullID}.sensitivity`;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public set vibrationBlocked(pVal: boolean) {
|
|
34
|
-
ServerLogService.writeLog(
|
|
35
|
-
LogLevel.Debug,
|
|
36
|
-
`${pVal ? 'Dea' : 'A'}ktiviere Vibrationsalarm für ${this.info.customName}`,
|
|
37
|
-
);
|
|
38
|
-
if (pVal) {
|
|
39
|
-
this.vibrationBlockedTimeStamp = new Date().getTime();
|
|
40
|
-
}
|
|
41
|
-
this._vibrationBlocked = pVal;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
45
|
-
ServerLogService.writeLog(
|
|
46
|
-
LogLevel.DeepTrace,
|
|
47
|
-
`Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
48
|
-
);
|
|
49
|
-
super.update(idSplit, state, initial, true);
|
|
50
|
-
switch (idSplit[3]) {
|
|
51
|
-
case 'sensitivity':
|
|
52
|
-
ServerLogService.writeLog(
|
|
53
|
-
LogLevel.Trace,
|
|
54
|
-
`Vibrationssensor Update für ${this.info.customName} auf Sensitivity: ${state.val}`,
|
|
55
|
-
);
|
|
56
|
-
this.tiltAngleZ = state.val as number;
|
|
57
|
-
break;
|
|
58
|
-
case 'tilt_angle_z':
|
|
59
|
-
ServerLogService.writeLog(
|
|
60
|
-
LogLevel.Trace,
|
|
61
|
-
`Vibrationssensor Update für ${this.info.customName} auf Winkel Z: ${state.val}`,
|
|
62
|
-
);
|
|
63
|
-
this.tiltAngleZ = state.val as number;
|
|
64
|
-
break;
|
|
65
|
-
case 'tilt_angle_y':
|
|
66
|
-
ServerLogService.writeLog(
|
|
67
|
-
LogLevel.Trace,
|
|
68
|
-
`Vibrationssensor Update für ${this.info.customName} auf Winkel Y: ${state.val}`,
|
|
69
|
-
);
|
|
70
|
-
this.tiltAngleY = state.val as number;
|
|
71
|
-
break;
|
|
72
|
-
case 'tilt_angle_x':
|
|
73
|
-
ServerLogService.writeLog(
|
|
74
|
-
LogLevel.Trace,
|
|
75
|
-
`Vibrationssensor Update für ${this.info.customName} auf Winkel X: ${state.val}`,
|
|
76
|
-
);
|
|
77
|
-
this.tiltAngleX = state.val as number;
|
|
78
|
-
break;
|
|
79
|
-
case 'vibration':
|
|
80
|
-
ServerLogService.writeLog(
|
|
81
|
-
LogLevel.Trace,
|
|
82
|
-
`Vibrationssensor Update für ${this.info.customName} auf Vibration erkannt: ${state.val}`,
|
|
83
|
-
);
|
|
84
|
-
this.vibration = state.val as boolean;
|
|
85
|
-
if (this.vibration) {
|
|
86
|
-
Utils.guardedTimeout(
|
|
87
|
-
() => {
|
|
88
|
-
this.alarmCheck();
|
|
89
|
-
},
|
|
90
|
-
8500,
|
|
91
|
-
this,
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
break;
|
|
95
|
-
case 'tilt_angle_y_abs':
|
|
96
|
-
ServerLogService.writeLog(
|
|
97
|
-
LogLevel.Trace,
|
|
98
|
-
`Vibrationssensor Update für ${this.info.customName} auf absoluten Winkel Y: ${state.val}`,
|
|
99
|
-
);
|
|
100
|
-
this.tiltAngleYAbs = state.val as number;
|
|
101
|
-
break;
|
|
102
|
-
case 'tilt_angle_X_abs':
|
|
103
|
-
ServerLogService.writeLog(
|
|
104
|
-
LogLevel.Trace,
|
|
105
|
-
`Vibrationssensor Update für ${this.info.customName} auf absoluten Winkel X: ${state.val}`,
|
|
106
|
-
);
|
|
107
|
-
this.tiltAngleXAbs = state.val as number;
|
|
108
|
-
break;
|
|
109
|
-
case 'tilt_angle':
|
|
110
|
-
ServerLogService.writeLog(
|
|
111
|
-
LogLevel.Trace,
|
|
112
|
-
`Vibrationssensor Update für ${this.info.customName} auf Winkel: ${state.val}`,
|
|
113
|
-
);
|
|
114
|
-
this.tiltAngle = state.val as number;
|
|
115
|
-
break;
|
|
116
|
-
case 'tilt':
|
|
117
|
-
ServerLogService.writeLog(
|
|
118
|
-
LogLevel.Trace,
|
|
119
|
-
`Vibrationssensor Update für ${this.info.customName} auf Winkel: ${state.val}`,
|
|
120
|
-
);
|
|
121
|
-
this.tilt = state.val as boolean;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
public setSensitivity(pVal: number): void {
|
|
127
|
-
let result = 'high';
|
|
128
|
-
switch (pVal) {
|
|
129
|
-
case 0:
|
|
130
|
-
result = 'low';
|
|
131
|
-
break;
|
|
132
|
-
case 1:
|
|
133
|
-
result = 'medium';
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
if (this._idSensitivity === '') {
|
|
137
|
-
ServerLogService.writeLog(LogLevel.Error, `Keine Switch ID für "${this.info.customName}" bekannt.`);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (!this.ioConn) {
|
|
142
|
-
ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
ServerLogService.writeLog(
|
|
147
|
-
LogLevel.Debug,
|
|
148
|
-
`Vibration Sensitivität schalten: "${this.info.customName}" Wert: ${result}`,
|
|
149
|
-
);
|
|
150
|
-
this.ioConn.setState(this._idSensitivity, result, (err) => {
|
|
151
|
-
if (err) {
|
|
152
|
-
console.log(`Stecker schalten ergab Fehler: ${err}`);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
private alarmCheck(): void {
|
|
158
|
-
ServerLogService.writeLog(
|
|
159
|
-
LogLevel.Debug,
|
|
160
|
-
`Alarmcheck für ${this.info.customName} Alarmblock Wert: ${this._vibrationBlocked}`,
|
|
161
|
-
);
|
|
162
|
-
if (this._vibrationBlocked) {
|
|
163
|
-
ServerLogService.writeLog(LogLevel.Debug, `Fenster offen, ignoriere Vibrationsalarm bei ${this.info.customName}`);
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const message = this._alarmMessage;
|
|
168
|
-
SonosService.speakOnAll(message);
|
|
169
|
-
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
1
|
+
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
3
|
+
import { ZigbeeDevice } from './zigbeeDevice';
|
|
4
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
5
|
+
import { ServerLogService } from '../../services/log-service';
|
|
6
|
+
import { SonosService } from '../../services/Sonos/sonos-service';
|
|
7
|
+
import { Utils } from '../../services/utils/utils';
|
|
8
|
+
import { PollyService } from '../../services/Sonos/polly-service';
|
|
9
|
+
|
|
10
|
+
export class ZigbeeAquaraVibra extends ZigbeeDevice {
|
|
11
|
+
public sensitivity: string = '';
|
|
12
|
+
public tiltAngle: number = 0;
|
|
13
|
+
public tiltAngleX: number = 0;
|
|
14
|
+
public tiltAngleXAbs: number = 0;
|
|
15
|
+
public tiltAngleY: number = 0;
|
|
16
|
+
public tiltAngleYAbs: number = 0;
|
|
17
|
+
public tiltAngleZ: number = 0;
|
|
18
|
+
public tilt: boolean = false;
|
|
19
|
+
public vibration: boolean = false;
|
|
20
|
+
public vibrationBlockedTimeStamp: number = 0;
|
|
21
|
+
private _idSensitivity: string = '';
|
|
22
|
+
private _vibrationBlocked: boolean = false;
|
|
23
|
+
private _alarmMessage: string;
|
|
24
|
+
// TODO Set Sensitivity
|
|
25
|
+
|
|
26
|
+
public constructor(pInfo: DeviceInfo) {
|
|
27
|
+
super(pInfo, ZigbeeDeviceType.ZigbeeAquaraVibra);
|
|
28
|
+
this._alarmMessage = `Alarm bei ${this.info.customName}. Ich wiederhole: Alarm bei ${this.info.customName}`;
|
|
29
|
+
PollyService.preloadTTS(this._alarmMessage);
|
|
30
|
+
this._idSensitivity = `${this.info.fullID}.sensitivity`;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public set vibrationBlocked(pVal: boolean) {
|
|
34
|
+
ServerLogService.writeLog(
|
|
35
|
+
LogLevel.Debug,
|
|
36
|
+
`${pVal ? 'Dea' : 'A'}ktiviere Vibrationsalarm für ${this.info.customName}`,
|
|
37
|
+
);
|
|
38
|
+
if (pVal) {
|
|
39
|
+
this.vibrationBlockedTimeStamp = new Date().getTime();
|
|
40
|
+
}
|
|
41
|
+
this._vibrationBlocked = pVal;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
45
|
+
ServerLogService.writeLog(
|
|
46
|
+
LogLevel.DeepTrace,
|
|
47
|
+
`Stecker Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
48
|
+
);
|
|
49
|
+
super.update(idSplit, state, initial, true);
|
|
50
|
+
switch (idSplit[3]) {
|
|
51
|
+
case 'sensitivity':
|
|
52
|
+
ServerLogService.writeLog(
|
|
53
|
+
LogLevel.Trace,
|
|
54
|
+
`Vibrationssensor Update für ${this.info.customName} auf Sensitivity: ${state.val}`,
|
|
55
|
+
);
|
|
56
|
+
this.tiltAngleZ = state.val as number;
|
|
57
|
+
break;
|
|
58
|
+
case 'tilt_angle_z':
|
|
59
|
+
ServerLogService.writeLog(
|
|
60
|
+
LogLevel.Trace,
|
|
61
|
+
`Vibrationssensor Update für ${this.info.customName} auf Winkel Z: ${state.val}`,
|
|
62
|
+
);
|
|
63
|
+
this.tiltAngleZ = state.val as number;
|
|
64
|
+
break;
|
|
65
|
+
case 'tilt_angle_y':
|
|
66
|
+
ServerLogService.writeLog(
|
|
67
|
+
LogLevel.Trace,
|
|
68
|
+
`Vibrationssensor Update für ${this.info.customName} auf Winkel Y: ${state.val}`,
|
|
69
|
+
);
|
|
70
|
+
this.tiltAngleY = state.val as number;
|
|
71
|
+
break;
|
|
72
|
+
case 'tilt_angle_x':
|
|
73
|
+
ServerLogService.writeLog(
|
|
74
|
+
LogLevel.Trace,
|
|
75
|
+
`Vibrationssensor Update für ${this.info.customName} auf Winkel X: ${state.val}`,
|
|
76
|
+
);
|
|
77
|
+
this.tiltAngleX = state.val as number;
|
|
78
|
+
break;
|
|
79
|
+
case 'vibration':
|
|
80
|
+
ServerLogService.writeLog(
|
|
81
|
+
LogLevel.Trace,
|
|
82
|
+
`Vibrationssensor Update für ${this.info.customName} auf Vibration erkannt: ${state.val}`,
|
|
83
|
+
);
|
|
84
|
+
this.vibration = state.val as boolean;
|
|
85
|
+
if (this.vibration) {
|
|
86
|
+
Utils.guardedTimeout(
|
|
87
|
+
() => {
|
|
88
|
+
this.alarmCheck();
|
|
89
|
+
},
|
|
90
|
+
8500,
|
|
91
|
+
this,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
case 'tilt_angle_y_abs':
|
|
96
|
+
ServerLogService.writeLog(
|
|
97
|
+
LogLevel.Trace,
|
|
98
|
+
`Vibrationssensor Update für ${this.info.customName} auf absoluten Winkel Y: ${state.val}`,
|
|
99
|
+
);
|
|
100
|
+
this.tiltAngleYAbs = state.val as number;
|
|
101
|
+
break;
|
|
102
|
+
case 'tilt_angle_X_abs':
|
|
103
|
+
ServerLogService.writeLog(
|
|
104
|
+
LogLevel.Trace,
|
|
105
|
+
`Vibrationssensor Update für ${this.info.customName} auf absoluten Winkel X: ${state.val}`,
|
|
106
|
+
);
|
|
107
|
+
this.tiltAngleXAbs = state.val as number;
|
|
108
|
+
break;
|
|
109
|
+
case 'tilt_angle':
|
|
110
|
+
ServerLogService.writeLog(
|
|
111
|
+
LogLevel.Trace,
|
|
112
|
+
`Vibrationssensor Update für ${this.info.customName} auf Winkel: ${state.val}`,
|
|
113
|
+
);
|
|
114
|
+
this.tiltAngle = state.val as number;
|
|
115
|
+
break;
|
|
116
|
+
case 'tilt':
|
|
117
|
+
ServerLogService.writeLog(
|
|
118
|
+
LogLevel.Trace,
|
|
119
|
+
`Vibrationssensor Update für ${this.info.customName} auf Winkel: ${state.val}`,
|
|
120
|
+
);
|
|
121
|
+
this.tilt = state.val as boolean;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
public setSensitivity(pVal: number): void {
|
|
127
|
+
let result = 'high';
|
|
128
|
+
switch (pVal) {
|
|
129
|
+
case 0:
|
|
130
|
+
result = 'low';
|
|
131
|
+
break;
|
|
132
|
+
case 1:
|
|
133
|
+
result = 'medium';
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
if (this._idSensitivity === '') {
|
|
137
|
+
ServerLogService.writeLog(LogLevel.Error, `Keine Switch ID für "${this.info.customName}" bekannt.`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (!this.ioConn) {
|
|
142
|
+
ServerLogService.writeLog(LogLevel.Error, `Keine Connection für "${this.info.customName}" bekannt.`);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
ServerLogService.writeLog(
|
|
147
|
+
LogLevel.Debug,
|
|
148
|
+
`Vibration Sensitivität schalten: "${this.info.customName}" Wert: ${result}`,
|
|
149
|
+
);
|
|
150
|
+
this.ioConn.setState(this._idSensitivity, result, (err) => {
|
|
151
|
+
if (err) {
|
|
152
|
+
console.log(`Stecker schalten ergab Fehler: ${err}`);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private alarmCheck(): void {
|
|
158
|
+
ServerLogService.writeLog(
|
|
159
|
+
LogLevel.Debug,
|
|
160
|
+
`Alarmcheck für ${this.info.customName} Alarmblock Wert: ${this._vibrationBlocked}`,
|
|
161
|
+
);
|
|
162
|
+
if (this._vibrationBlocked) {
|
|
163
|
+
ServerLogService.writeLog(LogLevel.Debug, `Fenster offen, ignoriere Vibrationsalarm bei ${this.info.customName}`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const message = this._alarmMessage;
|
|
168
|
+
SonosService.speakOnAll(message);
|
|
169
|
+
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
-
import { DeviceInfo } from '../DeviceInfo';
|
|
3
|
-
import { ZigbeeDevice } from './zigbeeDevice';
|
|
4
|
-
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
5
|
-
import { ServerLogService } from '../../services/log-service';
|
|
6
|
-
import { SonosService } from '../../services/Sonos/sonos-service';
|
|
7
|
-
import { Utils } from '../../services/utils/utils';
|
|
8
|
-
import { PollyService } from '../../services/Sonos/polly-service';
|
|
9
|
-
|
|
10
|
-
export class ZigbeeAquaraWater extends ZigbeeDevice {
|
|
11
|
-
public water: boolean = false;
|
|
12
|
-
private _roomName: string = '';
|
|
13
|
-
public iAlarm: NodeJS.Timeout | undefined = undefined;
|
|
14
|
-
private _messageAlarmFirst: string = '';
|
|
15
|
-
private _messageAlarm: string = '';
|
|
16
|
-
private _messageAlarmEnd: string = '';
|
|
17
|
-
|
|
18
|
-
public set roomName(val: string) {
|
|
19
|
-
this._roomName = val;
|
|
20
|
-
this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
|
|
21
|
-
this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
|
|
22
|
-
this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
|
|
23
|
-
PollyService.preloadTTS(this._messageAlarmFirst);
|
|
24
|
-
PollyService.preloadTTS(this._messageAlarm);
|
|
25
|
-
PollyService.preloadTTS(this._messageAlarmEnd);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public constructor(pInfo: DeviceInfo) {
|
|
29
|
-
super(pInfo, ZigbeeDeviceType.ZigbeeAquaraWater);
|
|
30
|
-
this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
|
|
31
|
-
this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
|
|
32
|
-
this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
36
|
-
ServerLogService.writeLog(
|
|
37
|
-
LogLevel.DeepTrace,
|
|
38
|
-
`Water Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
39
|
-
);
|
|
40
|
-
super.update(idSplit, state, initial, true);
|
|
41
|
-
switch (idSplit[3]) {
|
|
42
|
-
case 'detected':
|
|
43
|
-
ServerLogService.writeLog(LogLevel.Debug, `Wasser Update für ${this.info.customName} auf Wasser: ${state.val}`);
|
|
44
|
-
const newVal: boolean = state.val === true;
|
|
45
|
-
if (this.water === true && !newVal) {
|
|
46
|
-
this.stopAlarm();
|
|
47
|
-
} else if (newVal) {
|
|
48
|
-
this.startAlarm();
|
|
49
|
-
}
|
|
50
|
-
this.water = newVal;
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private startAlarm(): void {
|
|
56
|
-
if (this.iAlarm !== undefined) {
|
|
57
|
-
clearInterval(this.iAlarm);
|
|
58
|
-
}
|
|
59
|
-
this.iAlarm = Utils.guardedInterval(
|
|
60
|
-
() => {
|
|
61
|
-
this.alarm();
|
|
62
|
-
},
|
|
63
|
-
15000,
|
|
64
|
-
this,
|
|
65
|
-
);
|
|
66
|
-
this.alarm(true);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
public stopAlarm(quiet: boolean = false): void {
|
|
70
|
-
if (this.iAlarm) {
|
|
71
|
-
clearInterval(this.iAlarm);
|
|
72
|
-
}
|
|
73
|
-
if (quiet) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const message = this._messageAlarmEnd;
|
|
77
|
-
Utils.guardedNewThread(() => {
|
|
78
|
-
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
79
|
-
});
|
|
80
|
-
Utils.guardedNewThread(() => {
|
|
81
|
-
SonosService.speakOnAll(message);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private alarm(first: boolean = false): void {
|
|
86
|
-
const message = first ? this._messageAlarmFirst : this._messageAlarm;
|
|
87
|
-
Utils.guardedNewThread(() => {
|
|
88
|
-
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
89
|
-
});
|
|
90
|
-
Utils.guardedNewThread(() => {
|
|
91
|
-
SonosService.speakOnAll(message, 80);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
1
|
+
import { LogLevel } from '../../../models/logLevel';
|
|
2
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
3
|
+
import { ZigbeeDevice } from './zigbeeDevice';
|
|
4
|
+
import { ZigbeeDeviceType } from './zigbeeDeviceType';
|
|
5
|
+
import { ServerLogService } from '../../services/log-service';
|
|
6
|
+
import { SonosService } from '../../services/Sonos/sonos-service';
|
|
7
|
+
import { Utils } from '../../services/utils/utils';
|
|
8
|
+
import { PollyService } from '../../services/Sonos/polly-service';
|
|
9
|
+
|
|
10
|
+
export class ZigbeeAquaraWater extends ZigbeeDevice {
|
|
11
|
+
public water: boolean = false;
|
|
12
|
+
private _roomName: string = '';
|
|
13
|
+
public iAlarm: NodeJS.Timeout | undefined = undefined;
|
|
14
|
+
private _messageAlarmFirst: string = '';
|
|
15
|
+
private _messageAlarm: string = '';
|
|
16
|
+
private _messageAlarmEnd: string = '';
|
|
17
|
+
|
|
18
|
+
public set roomName(val: string) {
|
|
19
|
+
this._roomName = val;
|
|
20
|
+
this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
|
|
21
|
+
this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
|
|
22
|
+
this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
|
|
23
|
+
PollyService.preloadTTS(this._messageAlarmFirst);
|
|
24
|
+
PollyService.preloadTTS(this._messageAlarm);
|
|
25
|
+
PollyService.preloadTTS(this._messageAlarmEnd);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public constructor(pInfo: DeviceInfo) {
|
|
29
|
+
super(pInfo, ZigbeeDeviceType.ZigbeeAquaraWater);
|
|
30
|
+
this._messageAlarmFirst = `${this.info.customName} erkennt Wasser. Möglicher Rohrbruch in ${this._roomName}`;
|
|
31
|
+
this._messageAlarm = `${this.info.customName} hat ausgelöst. Poolparty in ${this._roomName}`;
|
|
32
|
+
this._messageAlarmEnd = `Wasser Alarm Ende: Überflutung in ${this._roomName} zu Ende.`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public update(idSplit: string[], state: ioBroker.State, initial: boolean = false): void {
|
|
36
|
+
ServerLogService.writeLog(
|
|
37
|
+
LogLevel.DeepTrace,
|
|
38
|
+
`Water Update für "${this.info.customName}": ID: ${idSplit.join('.')} JSON: ${JSON.stringify(state)}`,
|
|
39
|
+
);
|
|
40
|
+
super.update(idSplit, state, initial, true);
|
|
41
|
+
switch (idSplit[3]) {
|
|
42
|
+
case 'detected':
|
|
43
|
+
ServerLogService.writeLog(LogLevel.Debug, `Wasser Update für ${this.info.customName} auf Wasser: ${state.val}`);
|
|
44
|
+
const newVal: boolean = state.val === true;
|
|
45
|
+
if (this.water === true && !newVal) {
|
|
46
|
+
this.stopAlarm();
|
|
47
|
+
} else if (newVal) {
|
|
48
|
+
this.startAlarm();
|
|
49
|
+
}
|
|
50
|
+
this.water = newVal;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private startAlarm(): void {
|
|
56
|
+
if (this.iAlarm !== undefined) {
|
|
57
|
+
clearInterval(this.iAlarm);
|
|
58
|
+
}
|
|
59
|
+
this.iAlarm = Utils.guardedInterval(
|
|
60
|
+
() => {
|
|
61
|
+
this.alarm();
|
|
62
|
+
},
|
|
63
|
+
15000,
|
|
64
|
+
this,
|
|
65
|
+
);
|
|
66
|
+
this.alarm(true);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public stopAlarm(quiet: boolean = false): void {
|
|
70
|
+
if (this.iAlarm) {
|
|
71
|
+
clearInterval(this.iAlarm);
|
|
72
|
+
}
|
|
73
|
+
if (quiet) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const message = this._messageAlarmEnd;
|
|
77
|
+
Utils.guardedNewThread(() => {
|
|
78
|
+
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
79
|
+
});
|
|
80
|
+
Utils.guardedNewThread(() => {
|
|
81
|
+
SonosService.speakOnAll(message);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private alarm(first: boolean = false): void {
|
|
86
|
+
const message = first ? this._messageAlarmFirst : this._messageAlarm;
|
|
87
|
+
Utils.guardedNewThread(() => {
|
|
88
|
+
ServerLogService.writeLog(LogLevel.Alert, message);
|
|
89
|
+
});
|
|
90
|
+
Utils.guardedNewThread(() => {
|
|
91
|
+
SonosService.speakOnAll(message, 80);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|