hoffmation-base 1.1.4 → 1.1.7
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/lib/models/persistence/DesiredShutterPosition.d.ts +4 -0
- package/lib/models/persistence/DesiredShutterPosition.js +9 -0
- package/lib/models/persistence/index.d.ts +1 -0
- package/lib/models/persistence/index.js +1 -0
- package/lib/models/rooms/RoomBase.d.ts +2 -2
- package/lib/models/rooms/RoomBase.js +5 -5
- package/lib/server/devices/Griffe.js +2 -2
- package/lib/server/devices/baseDeviceInterfaces/iHandleSensor.d.ts +2 -2
- package/lib/server/devices/baseDeviceInterfaces/iShutter.d.ts +3 -3
- package/lib/server/devices/groups/{Fenster.d.ts → Window.d.ts} +3 -3
- package/lib/server/devices/groups/{Fenster.js → Window.js} +8 -8
- package/lib/server/devices/groups/index.d.ts +2 -2
- package/lib/server/devices/groups/index.js +2 -2
- package/lib/server/devices/groups/praesenzGroup.js +3 -3
- package/lib/server/devices/groups/tasterGroup.js +4 -4
- package/lib/server/devices/groups/{fensterGroup.d.ts → windowGroup.d.ts} +4 -4
- package/lib/server/devices/groups/{fensterGroup.js → windowGroup.js} +15 -15
- package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +6 -6
- package/lib/server/devices/hmIPDevices/hmIpGriff.js +11 -11
- package/lib/server/devices/hmIPDevices/hmIpRoll.d.ts +5 -5
- package/lib/server/devices/hmIPDevices/hmIpRoll.js +23 -15
- package/lib/server/devices/models/{FensterPosition.d.ts → WindowPosition.d.ts} +1 -1
- package/lib/server/devices/models/WindowPosition.js +9 -0
- package/lib/server/devices/models/index.d.ts +1 -1
- package/lib/server/devices/models/index.js +1 -1
- package/lib/server/devices/zigbee/BaseDevices/ZigbeeActuator.js +1 -0
- package/lib/server/devices/zigbee/BaseDevices/zigbeeShutter.d.ts +5 -5
- package/lib/server/devices/zigbee/BaseDevices/zigbeeShutter.js +22 -16
- package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +2 -2
- package/lib/server/devices/zigbee/zigbeeIlluLampe.js +0 -1
- package/lib/server/devices/zigbee/zigbeeIlluShutter.js +0 -1
- package/lib/server/services/ShutterService.d.ts +5 -5
- package/lib/server/services/ShutterService.js +3 -3
- package/lib/server/services/Telegram/telegram-Commands.js +2 -2
- package/lib/server/services/dbo/iPersist.d.ts +2 -1
- package/lib/server/services/dbo/postgreSqlPersist.d.ts +2 -1
- package/lib/server/services/dbo/postgreSqlPersist.js +18 -2
- package/lib/server/services/room-service/room-service.js +2 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/lib/server/devices/models/FensterPosition.js +0 -9
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WindowPosition = void 0;
|
|
4
|
+
var WindowPosition;
|
|
5
|
+
(function (WindowPosition) {
|
|
6
|
+
WindowPosition[WindowPosition["geschlossen"] = 0] = "geschlossen";
|
|
7
|
+
WindowPosition[WindowPosition["kipp"] = 1] = "kipp";
|
|
8
|
+
WindowPosition[WindowPosition["offen"] = 2] = "offen";
|
|
9
|
+
})(WindowPosition = exports.WindowPosition || (exports.WindowPosition = {}));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './WindowPosition';
|
|
2
2
|
export * from './MagnetPosition';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./WindowPosition"), exports);
|
|
18
18
|
__exportStar(require("./MagnetPosition"), exports);
|
|
@@ -4,7 +4,7 @@ import { DeviceType } from '../../deviceType';
|
|
|
4
4
|
import { ShutterCalibration, ShutterSettings } from '../../../../models';
|
|
5
5
|
import { ZigbeeDevice } from './zigbeeDevice';
|
|
6
6
|
import { iShutter } from '../../baseDeviceInterfaces';
|
|
7
|
-
import {
|
|
7
|
+
import { Window } from '../../groups';
|
|
8
8
|
import { IoBrokerBaseDevice } from '../../IoBrokerBaseDevice';
|
|
9
9
|
import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
|
|
10
10
|
export declare class ZigbeeShutter extends ZigbeeDevice implements iShutter {
|
|
@@ -18,10 +18,10 @@ export declare class ZigbeeShutter extends ZigbeeDevice implements iShutter {
|
|
|
18
18
|
protected _currentLevel: number;
|
|
19
19
|
get currentLevel(): number;
|
|
20
20
|
set currentLevel(value: number);
|
|
21
|
-
protected
|
|
22
|
-
get
|
|
23
|
-
set
|
|
24
|
-
get
|
|
21
|
+
protected _window?: Window;
|
|
22
|
+
get window(): Window | undefined;
|
|
23
|
+
set window(value: Window | undefined);
|
|
24
|
+
get desiredWindowShutterLevel(): number;
|
|
25
25
|
persist(): void;
|
|
26
26
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean, pOverride?: boolean): void;
|
|
27
27
|
setLevel(pPosition: number, initial?: boolean, skipOpenWarning?: boolean): void;
|
|
@@ -12,7 +12,7 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
12
12
|
const DeviceCapability_1 = require("../../DeviceCapability");
|
|
13
13
|
class ZigbeeShutter extends zigbeeDevice_1.ZigbeeDevice {
|
|
14
14
|
constructor(pInfo, pType) {
|
|
15
|
-
var _a;
|
|
15
|
+
var _a, _b;
|
|
16
16
|
super(pInfo, pType);
|
|
17
17
|
this.settings = new models_1.ShutterSettings();
|
|
18
18
|
this._iMovementFinishTimeout = null;
|
|
@@ -29,6 +29,12 @@ class ZigbeeShutter extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
29
29
|
var _a;
|
|
30
30
|
this.log(models_1.LogLevel.Warn, `Failed to initialize Calibration data, err ${(_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err}`);
|
|
31
31
|
});
|
|
32
|
+
(_b = services_1.Utils.dbo) === null || _b === void 0 ? void 0 : _b.getLastDesiredPosition(this).then((val) => {
|
|
33
|
+
var _a;
|
|
34
|
+
if (val.desiredPosition >= -1) {
|
|
35
|
+
(_a = this._window) === null || _a === void 0 ? void 0 : _a.setDesiredPosition(val.desiredPosition);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
32
38
|
}
|
|
33
39
|
get currentLevel() {
|
|
34
40
|
if (this._setLevel !== -1 && this._currentLevel !== this._setLevel) {
|
|
@@ -40,26 +46,26 @@ class ZigbeeShutter extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
40
46
|
if (value !== this._setLevel && services_1.Utils.nowMS() - this._setLevelTime < 60 * 10000) {
|
|
41
47
|
value = this._setLevel;
|
|
42
48
|
}
|
|
43
|
-
if (value !== this._currentLevel && this.
|
|
49
|
+
if (value !== this._currentLevel && this._window) {
|
|
44
50
|
services_1.Utils.guardedNewThread(() => {
|
|
45
51
|
var _a;
|
|
46
|
-
(_a = this.
|
|
52
|
+
(_a = this._window) === null || _a === void 0 ? void 0 : _a.rolloPositionChange(value);
|
|
47
53
|
}, this);
|
|
48
54
|
this.persist();
|
|
49
55
|
}
|
|
50
56
|
this._currentLevel = value;
|
|
51
57
|
}
|
|
52
|
-
get
|
|
53
|
-
return this.
|
|
58
|
+
get window() {
|
|
59
|
+
return this._window;
|
|
54
60
|
}
|
|
55
|
-
set
|
|
56
|
-
this.
|
|
61
|
+
set window(value) {
|
|
62
|
+
this._window = value;
|
|
57
63
|
}
|
|
58
|
-
get
|
|
59
|
-
if (this.
|
|
64
|
+
get desiredWindowShutterLevel() {
|
|
65
|
+
if (this._window === undefined) {
|
|
60
66
|
return -1;
|
|
61
67
|
}
|
|
62
|
-
return this.
|
|
68
|
+
return this._window.desiredPosition;
|
|
63
69
|
}
|
|
64
70
|
persist() {
|
|
65
71
|
var _a;
|
|
@@ -80,17 +86,17 @@ class ZigbeeShutter extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
80
86
|
this.log(models_1.LogLevel.Debug, `Skip Rollo command to Position ${pPosition} as this is the current one`, services_1.LogDebugType.SkipUnchangedRolloPosition);
|
|
81
87
|
return;
|
|
82
88
|
}
|
|
83
|
-
if (this.
|
|
84
|
-
if (this.
|
|
89
|
+
if (this._window !== undefined) {
|
|
90
|
+
if (this._window.griffeInPosition(models_2.WindowPosition.offen) > 0 && pPosition < 100) {
|
|
85
91
|
if (!skipOpenWarning) {
|
|
86
|
-
this.log(models_1.LogLevel.Alert, `
|
|
92
|
+
this.log(models_1.LogLevel.Alert, `Not closing the shutter, as the window is open!`);
|
|
87
93
|
}
|
|
88
94
|
return;
|
|
89
95
|
}
|
|
90
|
-
if (this.
|
|
96
|
+
if (this._window.griffeInPosition(models_2.WindowPosition.kipp) > 0 && pPosition < 50) {
|
|
91
97
|
pPosition = 50;
|
|
92
98
|
if (!skipOpenWarning) {
|
|
93
|
-
this.log(models_1.LogLevel.Alert, `
|
|
99
|
+
this.log(models_1.LogLevel.Alert, `Not closing the shutter, as the window is half open!`);
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
102
|
}
|
|
@@ -99,7 +105,7 @@ class ZigbeeShutter extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
99
105
|
this.moveToPosition(pPosition);
|
|
100
106
|
}
|
|
101
107
|
toJSON() {
|
|
102
|
-
return lodash_1.default.omit(super.toJSON(), ['
|
|
108
|
+
return lodash_1.default.omit(super.toJSON(), ['_window']);
|
|
103
109
|
}
|
|
104
110
|
moveToPosition(pPosition) {
|
|
105
111
|
this.log(models_1.LogLevel.Error, `Implement own moveToPosition(${pPosition}) Function`);
|
|
@@ -35,7 +35,7 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
|
|
|
35
35
|
return this._vibrationBlockedByGriff;
|
|
36
36
|
}
|
|
37
37
|
set vibrationBlockedByGriff(pVal) {
|
|
38
|
-
this.log(models_1.LogLevel.Debug, `${pVal ? '
|
|
38
|
+
this.log(models_1.LogLevel.Debug, `${pVal ? 'disa' : 'a'}rming vibration alarm for ${this.info.customName} due to handle`);
|
|
39
39
|
if (pVal) {
|
|
40
40
|
this.vibrationBlockedByGriffTimeStamp = new Date().getTime();
|
|
41
41
|
}
|
|
@@ -126,7 +126,7 @@ class ZigbeeAquaraVibra extends BaseDevices_1.ZigbeeDevice {
|
|
|
126
126
|
alarmCheck() {
|
|
127
127
|
this.log(models_1.LogLevel.Debug, `Alarmcheck für ${this.info.customName} Alarmblock Wert: ${this._vibrationBlockedByGriff}`);
|
|
128
128
|
if (this._vibrationBlockedByGriff) {
|
|
129
|
-
this.log(models_1.LogLevel.Debug, `
|
|
129
|
+
this.log(models_1.LogLevel.Debug, `Window is open; ignoring vibration alarm.`);
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
132
|
if (this._vibrationBlockedByMotion) {
|
|
@@ -18,7 +18,6 @@ class ZigbeeIlluShutter extends BaseDevices_1.ZigbeeShutter {
|
|
|
18
18
|
this._movementStartMs = -1;
|
|
19
19
|
this._movementStartPos = -1;
|
|
20
20
|
this._movementStateId = `${this.info.fullID}.position`;
|
|
21
|
-
// this.presenceStateID = `${this.info.fullID}.1.${HmIpPraezenz.PRESENCE_DETECTION}`;
|
|
22
21
|
}
|
|
23
22
|
update(idSplit, state, initial = false) {
|
|
24
23
|
switch (idSplit[3]) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { iShutter, Window } from '../devices';
|
|
2
2
|
export declare class ShutterService {
|
|
3
3
|
static anyRolloDown(rollo: iShutter[]): boolean;
|
|
4
4
|
static getRolladenPosition(): string;
|
|
@@ -6,8 +6,8 @@ export declare class ShutterService {
|
|
|
6
6
|
static down(shutter: iShutter, initial?: boolean): void;
|
|
7
7
|
static middle(shutter: iShutter): void;
|
|
8
8
|
static up(shutter: iShutter, initial?: boolean): void;
|
|
9
|
-
static windowAllDown(f:
|
|
10
|
-
static windowAllMiddle(f:
|
|
11
|
-
static windowAllUp(f:
|
|
12
|
-
static windowAllToPosition(f:
|
|
9
|
+
static windowAllDown(f: Window, initial?: boolean): void;
|
|
10
|
+
static windowAllMiddle(f: Window, initial?: boolean): void;
|
|
11
|
+
static windowAllUp(f: Window, initial?: boolean): void;
|
|
12
|
+
static windowAllToPosition(f: Window, position: number, initial?: boolean, skipOpenWarning?: boolean): void;
|
|
13
13
|
}
|
|
@@ -19,15 +19,15 @@ class ShutterService {
|
|
|
19
19
|
});
|
|
20
20
|
const response = [`Dies sind die aktuellen Rollo Positionen:`];
|
|
21
21
|
for (const r of rollos) {
|
|
22
|
-
response.push(`${r.currentLevel}% Rollo: "${r.info.customName}" Gewünschte Position: ${r.
|
|
22
|
+
response.push(`${r.currentLevel}% Rollo: "${r.info.customName}" Gewünschte Position: ${r.desiredWindowShutterLevel}`);
|
|
23
23
|
}
|
|
24
24
|
response.push(`\nDie nächsten Zeiten zum Hochfahren:`);
|
|
25
25
|
const down = [`\nDie nächsten Zeiten zum Runterfahren:`];
|
|
26
26
|
for (const r of api_1.API.getRooms().values()) {
|
|
27
|
-
if (!r.
|
|
27
|
+
if (!r.WindowGroup) {
|
|
28
28
|
continue;
|
|
29
29
|
}
|
|
30
|
-
for (const f of r.
|
|
30
|
+
for (const f of r.WindowGroup.windows) {
|
|
31
31
|
f.getShutter().forEach((shutter) => {
|
|
32
32
|
var _a, _b, _c, _d;
|
|
33
33
|
response.push(`Rollo: "${shutter.info.customName}"\t${f.noRolloOnSunrise ? 'Hochfahren inaktiv' : (_b = (_a = r.sonnenAufgangCallback) === null || _a === void 0 ? void 0 : _a.nextToDo) === null || _b === void 0 ? void 0 : _b.toLocaleTimeString()}`);
|
|
@@ -54,12 +54,12 @@ class TelegramCommands {
|
|
|
54
54
|
telegram_service_1.TelegramService.sendMessage([m.chat.id], ShutterService_1.ShutterService.getRolladenPosition());
|
|
55
55
|
return true;
|
|
56
56
|
}, 'Gibt die Positionen der Rollos aus, warnt über offene Rollos und nennt die nächsten Fahrten'));
|
|
57
|
-
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('
|
|
57
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('WindowCheck', /\/check_windows/, async (m) => {
|
|
58
58
|
if (m.from === undefined)
|
|
59
59
|
return false;
|
|
60
60
|
telegram_service_1.TelegramService.sendMessage([m.chat.id], devices_1.Griffe.getGriffPosition());
|
|
61
61
|
return true;
|
|
62
|
-
}, '
|
|
62
|
+
}, 'Returns the handle positions and warns about open windows.'));
|
|
63
63
|
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('BatteryCheck', /\/check_battery/, async (m) => {
|
|
64
64
|
if (m.from === undefined)
|
|
65
65
|
return Promise.resolve(false);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iButtonSwitch, iHeater, iMotionSensor, IoBrokerBaseDevice, iShutter } from '../../devices';
|
|
2
|
-
import { CountToday, CurrentIlluminationDataPoint, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
|
|
2
|
+
import { CountToday, CurrentIlluminationDataPoint, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
|
|
3
3
|
export interface iPersist {
|
|
4
4
|
initialized: boolean;
|
|
5
5
|
addTemperaturDataPoint(heater: iHeater): void;
|
|
6
6
|
addRoom(room: RoomBase): void;
|
|
7
7
|
addDevice(device: iBaseDevice): void;
|
|
8
8
|
motionSensorTodayCount(device: iMotionSensor): Promise<CountToday>;
|
|
9
|
+
getLastDesiredPosition(device: iShutter): Promise<DesiredShutterPosition>;
|
|
9
10
|
getShutterCalibration(device: IoBrokerBaseDevice): Promise<ShutterCalibration>;
|
|
10
11
|
initialize(): Promise<void>;
|
|
11
12
|
persistShutterCalibration(data: ShutterCalibration): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { iPersist } from './iPersist';
|
|
2
|
-
import { CountToday, CurrentIlluminationDataPoint, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
|
|
2
|
+
import { CountToday, CurrentIlluminationDataPoint, DesiredShutterPosition, EnergyCalculation, RoomBase, ShutterCalibration, TemperaturDataPoint } from '../../../models';
|
|
3
3
|
import { ButtonPressType, iAcDevice, iActuator, iBaseDevice, iButtonSwitch, iHeater, iMotionSensor, IoBrokerBaseDevice, iShutter } from '../../devices';
|
|
4
4
|
import { iPersistenceSettings } from '../../config';
|
|
5
5
|
export declare class PostgreSqlPersist implements iPersist {
|
|
@@ -9,6 +9,7 @@ export declare class PostgreSqlPersist implements iPersist {
|
|
|
9
9
|
addRoom(room: RoomBase): void;
|
|
10
10
|
addDevice(device: iBaseDevice): void;
|
|
11
11
|
addTemperaturDataPoint(heater: iHeater): void;
|
|
12
|
+
getLastDesiredPosition(device: iShutter): Promise<DesiredShutterPosition>;
|
|
12
13
|
motionSensorTodayCount(device: iMotionSensor): Promise<CountToday>;
|
|
13
14
|
getShutterCalibration(_device: IoBrokerBaseDevice): Promise<ShutterCalibration>;
|
|
14
15
|
initialize(): Promise<void>;
|
|
@@ -52,6 +52,19 @@ values ('${new Date().toISOString()}',${heater.humidity},${heater.iTemperature},
|
|
|
52
52
|
;
|
|
53
53
|
`);
|
|
54
54
|
}
|
|
55
|
+
async getLastDesiredPosition(device) {
|
|
56
|
+
const dbResult = await this.query(`SELECT position
|
|
57
|
+
from hoffmation_schema."ShutterDeviceData"
|
|
58
|
+
WHERE "deviceID" = '${device.id}'
|
|
59
|
+
and date >= CURRENT_DATE AND date < CURRENT_DATE + INTERVAL '1 DAY'
|
|
60
|
+
ORDER BY date desc
|
|
61
|
+
Limit 1`);
|
|
62
|
+
if (dbResult !== null && dbResult.length > 0) {
|
|
63
|
+
return dbResult[0];
|
|
64
|
+
}
|
|
65
|
+
log_service_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `Es gibt noch keine persistierten Bewegungen für ${device.info.fullName}`);
|
|
66
|
+
return new models_1.DesiredShutterPosition(-1);
|
|
67
|
+
}
|
|
55
68
|
async motionSensorTodayCount(device) {
|
|
56
69
|
const dbResult = await this.query(`SELECT Count(*)
|
|
57
70
|
from hoffmation_schema."MotionSensorDeviceData"
|
|
@@ -236,6 +249,7 @@ IF (SELECT to_regclass('hoffmation_schema."ShutterDeviceData"') IS NULL) Then
|
|
|
236
249
|
on delete set null,
|
|
237
250
|
"position" double precision,
|
|
238
251
|
date timestamp not null,
|
|
252
|
+
"desiredPosition" double precision,
|
|
239
253
|
constraint shutterdevicedata_pk
|
|
240
254
|
primary key ("deviceID", date)
|
|
241
255
|
);
|
|
@@ -294,9 +308,11 @@ values ('${device.id}', ${device.movementDetected}, '${new Date().toISOString()}
|
|
|
294
308
|
`);
|
|
295
309
|
}
|
|
296
310
|
persistShutter(device) {
|
|
311
|
+
const currentLevel = device.currentLevel >= 0 ? device.currentLevel : null;
|
|
312
|
+
const desiredLevel = device.desiredWindowShutterLevel >= 0 ? device.desiredWindowShutterLevel : null;
|
|
297
313
|
this.query(`
|
|
298
|
-
insert into hoffmation_schema."ShutterDeviceData" ("deviceID", "position", "date")
|
|
299
|
-
values ('${device.id}', ${
|
|
314
|
+
insert into hoffmation_schema."ShutterDeviceData" ("deviceID", "position", "date", "desiredPosition")
|
|
315
|
+
values ('${device.id}', ${currentLevel}, '${new Date().toISOString()}', ${desiredLevel});
|
|
300
316
|
`);
|
|
301
317
|
}
|
|
302
318
|
persistCurrentIllumination(data) {
|
|
@@ -24,7 +24,7 @@ class RoomService {
|
|
|
24
24
|
var _a;
|
|
25
25
|
const rooms = floor > -1 ? this.getAllRoomsOfFloor(floor) : this.Rooms.entries();
|
|
26
26
|
for (const [_name, room] of rooms) {
|
|
27
|
-
(_a = room.
|
|
27
|
+
(_a = room.WindowGroup) === null || _a === void 0 ? void 0 : _a.allRolloToLevel(position, true);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -181,7 +181,7 @@ class RoomService {
|
|
|
181
181
|
static restoreRolloPosition() {
|
|
182
182
|
var _a;
|
|
183
183
|
for (const room of this.Rooms.values()) {
|
|
184
|
-
(_a = room.
|
|
184
|
+
(_a = room.WindowGroup) === null || _a === void 0 ? void 0 : _a.restoreRolloPosition();
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
static restoreLight() {
|