hoffmation-base 0.1.39 → 0.1.41-10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/models/deviceSettings/actuatorSettings.d.ts +11 -0
- package/lib/models/deviceSettings/actuatorSettings.js +11 -0
- package/lib/models/deviceSettings/shutterSettings.d.ts +6 -0
- package/lib/models/deviceSettings/shutterSettings.js +6 -0
- package/lib/models/rooms/RoomSettings/RoomSettings.js +1 -0
- package/lib/models/timeCallback.js +2 -2
- package/lib/server/devices/device-cluster.d.ts +1 -1
- package/lib/server/devices/device-cluster.js +3 -2
- package/lib/server/devices/deviceType.d.ts +1 -0
- package/lib/server/devices/deviceType.js +1 -0
- package/lib/server/devices/devices.d.ts +4 -5
- package/lib/server/devices/devices.js +78 -102
- package/lib/server/devices/groups/lampenGroup.d.ts +3 -4
- package/lib/server/devices/groups/lampenGroup.js +15 -15
- package/lib/server/devices/hmIPDevices/hmIpLampe.d.ts +5 -14
- package/lib/server/devices/hmIPDevices/hmIpLampe.js +38 -33
- package/lib/server/devices/iEnergyManager.d.ts +19 -0
- package/lib/server/devices/iEnergyManager.js +28 -0
- package/lib/server/devices/iLamp.d.ts +11 -4
- package/lib/server/devices/jsObject/jsObjectEnergyManager.d.ts +38 -11
- package/lib/server/devices/jsObject/jsObjectEnergyManager.js +98 -40
- package/lib/server/devices/zigbee/index.d.ts +1 -0
- package/lib/server/devices/zigbee/index.js +1 -0
- package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +5 -0
- package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +5 -0
- package/lib/server/devices/zigbee/zigbeeIlluLampe.d.ts +4 -3
- package/lib/server/devices/zigbee/zigbeeIlluLampe.js +33 -11
- package/lib/server/devices/zigbee/zigbeeIlluShutter.d.ts +0 -2
- package/lib/server/devices/zigbee/zigbeeIlluShutter.js +26 -24
- package/lib/server/devices/zigbee/zigbeeShutter.d.ts +5 -3
- package/lib/server/devices/zigbee/zigbeeShutter.js +30 -22
- package/lib/server/devices/zigbee/zigbeeUbisysShutter.d.ts +9 -0
- package/lib/server/devices/zigbee/zigbeeUbisysShutter.js +26 -0
- package/lib/server/services/ShutterService.d.ts +1 -2
- package/lib/server/services/ShutterService.js +6 -5
- package/lib/server/services/Telegram/telegram-Commands.js +27 -24
- package/lib/server/services/calendar/m/303/274ll-service.d.ts +4 -4
- package/lib/server/services/calendar/m/303/274ll-service.js +18 -14
- package/lib/server/services/dbo/postgreSqlPersist.d.ts +9 -9
- package/lib/server/services/dbo/postgreSqlPersist.js +14 -14
- package/lib/server/services/room-service/room-service.d.ts +4 -5
- package/lib/server/services/room-service/room-service.js +29 -30
- package/lib/server/services/time-callback-service.d.ts +4 -4
- package/lib/server/services/time-callback-service.js +14 -12
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
|
@@ -3,4 +3,15 @@ export declare class ActuatorSettings extends DeviceSettings {
|
|
|
3
3
|
dawnOn: boolean;
|
|
4
4
|
duskOn: boolean;
|
|
5
5
|
nightOn: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Indicates if this device controls e.g. an Eltako, which has it's own Turn Off Time logic.
|
|
8
|
+
* @type {boolean}
|
|
9
|
+
*/
|
|
10
|
+
isStromStoss: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* If this is an Actuator controling a time based relais,
|
|
13
|
+
* this indicates the time after which we retrigger the relais.
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
stromStossResendTime: number;
|
|
6
17
|
}
|
|
@@ -8,6 +8,17 @@ class ActuatorSettings extends deviceSettings_1.DeviceSettings {
|
|
|
8
8
|
this.dawnOn = true;
|
|
9
9
|
this.duskOn = true;
|
|
10
10
|
this.nightOn = true;
|
|
11
|
+
/**
|
|
12
|
+
* Indicates if this device controls e.g. an Eltako, which has it's own Turn Off Time logic.
|
|
13
|
+
* @type {boolean}
|
|
14
|
+
*/
|
|
15
|
+
this.isStromStoss = false;
|
|
16
|
+
/**
|
|
17
|
+
* If this is an Actuator controling a time based relais,
|
|
18
|
+
* this indicates the time after which we retrigger the relais.
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
this.stromStossResendTime = 180;
|
|
11
22
|
}
|
|
12
23
|
}
|
|
13
24
|
exports.ActuatorSettings = ActuatorSettings;
|
|
@@ -2,4 +2,10 @@ import { DeviceSettings } from './deviceSettings';
|
|
|
2
2
|
export declare class ShutterSettings extends DeviceSettings {
|
|
3
3
|
msTilTop: number;
|
|
4
4
|
msTilBot: number;
|
|
5
|
+
/**
|
|
6
|
+
* Some shutter give no position feedback on their own, so by knowing the durations in either direction,
|
|
7
|
+
* we can programmatically trigger the callbacks.
|
|
8
|
+
* @type {boolean}
|
|
9
|
+
*/
|
|
10
|
+
triggerPositionUpdateByTime: boolean;
|
|
5
11
|
}
|
|
@@ -7,6 +7,12 @@ class ShutterSettings extends deviceSettings_1.DeviceSettings {
|
|
|
7
7
|
super(...arguments);
|
|
8
8
|
this.msTilTop = -1;
|
|
9
9
|
this.msTilBot = -1;
|
|
10
|
+
/**
|
|
11
|
+
* Some shutter give no position feedback on their own, so by knowing the durations in either direction,
|
|
12
|
+
* we can programmatically trigger the callbacks.
|
|
13
|
+
* @type {boolean}
|
|
14
|
+
*/
|
|
15
|
+
this.triggerPositionUpdateByTime = false;
|
|
10
16
|
}
|
|
11
17
|
}
|
|
12
18
|
exports.ShutterSettings = ShutterSettings;
|
|
@@ -42,7 +42,7 @@ class TimeCallback {
|
|
|
42
42
|
case TimeCallbackType.Sunrise:
|
|
43
43
|
let fixedSRDate = new Date(time_callback_service_1.TimeCallbackService.nextSunRise.getTime() + this.minuteOffset * 60 * 1000);
|
|
44
44
|
if (this.sunTimeOffset) {
|
|
45
|
-
const nextMinSR = this.sunTimeOffset.getNextMinimumSunrise();
|
|
45
|
+
const nextMinSR = this.sunTimeOffset.getNextMinimumSunrise(now);
|
|
46
46
|
if (nextMinSR > fixedSRDate && fixedSRDate.getDate() === nextMinSR.getDate()) {
|
|
47
47
|
fixedSRDate = nextMinSR;
|
|
48
48
|
}
|
|
@@ -56,7 +56,7 @@ class TimeCallback {
|
|
|
56
56
|
case TimeCallbackType.SunSet:
|
|
57
57
|
let fixedSSDate = new Date(time_callback_service_1.TimeCallbackService.nextSunSet.getTime() + this.minuteOffset * 60 * 1000);
|
|
58
58
|
if (this.sunTimeOffset) {
|
|
59
|
-
const nextMaxSS = this.sunTimeOffset.getNextMaximumSunset();
|
|
59
|
+
const nextMaxSS = this.sunTimeOffset.getNextMaximumSunset(now);
|
|
60
60
|
if (nextMaxSS < fixedSSDate && fixedSSDate.getDate() === nextMaxSS.getDate()) {
|
|
61
61
|
fixedSSDate = nextMaxSS;
|
|
62
62
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DeviceClusterType } from './device-cluster-type';
|
|
2
2
|
import { DeviceList } from './device-list';
|
|
3
3
|
import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
|
|
4
|
-
import { OwnSonosDevice } from '../services
|
|
4
|
+
import { OwnSonosDevice } from '../services';
|
|
5
5
|
export declare class DeviceCluster {
|
|
6
6
|
deviceMap: Map<DeviceClusterType, DeviceList>;
|
|
7
7
|
constructor(deviceMap?: Map<DeviceClusterType, DeviceList>);
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.DeviceCluster = void 0;
|
|
7
7
|
const device_cluster_type_1 = require("./device-cluster-type");
|
|
8
8
|
const device_list_1 = require("./device-list");
|
|
9
|
-
const
|
|
9
|
+
const services_1 = require("../services");
|
|
10
10
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
11
|
const deviceType_1 = require("./deviceType");
|
|
12
12
|
class DeviceCluster {
|
|
@@ -39,6 +39,7 @@ class DeviceCluster {
|
|
|
39
39
|
break;
|
|
40
40
|
case deviceType_1.DeviceType.HmIpRoll:
|
|
41
41
|
case deviceType_1.DeviceType.ZigbeeIlluShutter:
|
|
42
|
+
case deviceType_1.DeviceType.ZigbeeUbisysShutter:
|
|
42
43
|
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Shutter);
|
|
43
44
|
break;
|
|
44
45
|
case deviceType_1.DeviceType.ZigbeeSonoffTemp:
|
|
@@ -109,7 +110,7 @@ class DeviceCluster {
|
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
toJSON() {
|
|
112
|
-
const result =
|
|
113
|
+
const result = services_1.Utils.jsonFilter(this);
|
|
113
114
|
result.deviceDict = Object.fromEntries(this.deviceMap);
|
|
114
115
|
return lodash_1.default.omit(result, [`deviceMap`]);
|
|
115
116
|
}
|
|
@@ -33,6 +33,7 @@ var DeviceType;
|
|
|
33
33
|
DeviceType[DeviceType["ZigbeeAqaraMagnetContact"] = 215] = "ZigbeeAqaraMagnetContact";
|
|
34
34
|
DeviceType[DeviceType["ZigbeeSonoffTemp"] = 216] = "ZigbeeSonoffTemp";
|
|
35
35
|
DeviceType[DeviceType["ZigbeeAqaraOpple3Switch"] = 217] = "ZigbeeAqaraOpple3Switch";
|
|
36
|
+
DeviceType[DeviceType["ZigbeeUbisysShutter"] = 218] = "ZigbeeUbisysShutter";
|
|
36
37
|
DeviceType[DeviceType["JsEnergyManager"] = 301] = "JsEnergyManager";
|
|
37
38
|
DeviceType[DeviceType["Wled"] = 1001] = "Wled";
|
|
38
39
|
})(DeviceType = exports.DeviceType || (exports.DeviceType = {}));
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { deviceConfig } from '../../models
|
|
1
|
+
import { deviceConfig, iRoomImportEnforcer } from '../../models';
|
|
2
2
|
import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
|
|
3
|
-
import { iRoomImportEnforcer } from '../../models/rooms/iRoomImportEnforcer';
|
|
4
3
|
import { iEnergyManager } from './iEnergyManager';
|
|
5
4
|
export declare class Devices {
|
|
6
5
|
static IDENTIFIER_HOMEMATIC: string;
|
|
@@ -15,8 +14,8 @@ export declare class Devices {
|
|
|
15
14
|
}, pRoomImportEnforcer?: iRoomImportEnforcer);
|
|
16
15
|
static midnightReset(): void;
|
|
17
16
|
static resetPraesenzCount(): void;
|
|
18
|
-
private processZigbeeDevice;
|
|
19
|
-
private processHMIPDevice;
|
|
20
17
|
static getBatteryInfo(): string;
|
|
21
|
-
private
|
|
18
|
+
private static processZigbeeDevice;
|
|
19
|
+
private static processHMIPDevice;
|
|
20
|
+
private static createEnergyManager;
|
|
22
21
|
}
|
|
@@ -1,46 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Devices = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const hmIPDevices_1 = require("./hmIPDevices");
|
|
6
|
+
const zigbee_1 = require("./zigbee");
|
|
6
7
|
const deviceType_1 = require("./deviceType");
|
|
7
|
-
const
|
|
8
|
-
const log_service_1 = require("../services/log-service/log-service");
|
|
8
|
+
const services_1 = require("../services");
|
|
9
9
|
const DeviceInfo_1 = require("./DeviceInfo");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const zigbeeAquaraVibra_1 = require("./zigbee/zigbeeAquaraVibra");
|
|
13
|
-
const zigbeeAquaraMotion_1 = require("./zigbee/zigbeeAquaraMotion");
|
|
14
|
-
const zigbeeIkeaSteckdose_1 = require("./zigbee/zigbeeIkeaSteckdose");
|
|
15
|
-
const zigbeeIlluLedRGBCCT_1 = require("./zigbee/zigbeeIlluLedRGBCCT");
|
|
16
|
-
const zigbeeIlluDimmer_1 = require("./zigbee/zigbeeIlluDimmer");
|
|
17
|
-
const zigbeeHeimanSmoke_1 = require("./zigbee/zigbeeHeimanSmoke");
|
|
18
|
-
const zigbeeAquaraWater_1 = require("./zigbee/zigbeeAquaraWater");
|
|
19
|
-
const zigbeeBlitzShp_1 = require("./zigbee/zigbeeBlitzShp");
|
|
20
|
-
const zigbeeIlluLampe_1 = require("./zigbee/zigbeeIlluLampe");
|
|
21
|
-
const zigbeeIlluActuator_1 = require("./zigbee/zigbeeIlluActuator");
|
|
22
|
-
const hmIpLampe_1 = require("./hmIPDevices/hmIpLampe");
|
|
23
|
-
const hmIpRoll_1 = require("./hmIPDevices/hmIpRoll");
|
|
24
|
-
const hmIpTaster_1 = require("./hmIPDevices/hmIpTaster");
|
|
25
|
-
const hmIpWippe_1 = require("./hmIPDevices/hmIpWippe");
|
|
26
|
-
const hmIpGriff_1 = require("./hmIPDevices/hmIpGriff");
|
|
27
|
-
const hmIpTherm_1 = require("./hmIPDevices/hmIpTherm");
|
|
28
|
-
const hmIpHeizung_1 = require("./hmIPDevices/hmIpHeizung");
|
|
29
|
-
const hmIpTuer_1 = require("./hmIPDevices/hmIpTuer");
|
|
30
|
-
const hmIpHeizgruppe_1 = require("./hmIPDevices/hmIpHeizgruppe");
|
|
31
|
-
const zigbeeIlluShutter_1 = require("./zigbee/zigbeeIlluShutter");
|
|
32
|
-
const zigbeeSMaBiTMagnetContact_1 = require("./zigbee/zigbeeSMaBiTMagnetContact");
|
|
33
|
-
const zigbeeSonoffMotion_1 = require("./zigbee/zigbeeSonoffMotion");
|
|
34
|
-
const hmIpAccessPoint_1 = require("./hmIPDevices/hmIpAccessPoint");
|
|
35
|
-
const zigbeeAqaraMagnetContact_1 = require("./zigbee/zigbeeAqaraMagnetContact");
|
|
36
|
-
const zigbeeSonoffTemp_1 = require("./zigbee/zigbeeSonoffTemp");
|
|
37
|
-
const zigbeeAqaraOpple3Switch_1 = require("./zigbee/zigbeeAqaraOpple3Switch");
|
|
38
|
-
const jsObjectEnergyManager_1 = require("./jsObject/jsObjectEnergyManager");
|
|
10
|
+
const jsObject_1 = require("./jsObject");
|
|
11
|
+
const zigbeeUbisysShutter_1 = require("./zigbee/zigbeeUbisysShutter");
|
|
39
12
|
class Devices {
|
|
40
13
|
constructor(pDeviceData, pRoomImportEnforcer) {
|
|
41
14
|
// This forces import of rooms at correct timing, to allow devices to land in proper rooms.
|
|
42
15
|
pRoomImportEnforcer === null || pRoomImportEnforcer === void 0 ? void 0 : pRoomImportEnforcer.addRoomConstructor();
|
|
43
|
-
|
|
16
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Constructing devices now`);
|
|
44
17
|
for (const cID in pDeviceData) {
|
|
45
18
|
const cDevConf = pDeviceData[cID];
|
|
46
19
|
if (!cDevConf.common ||
|
|
@@ -52,182 +25,185 @@ class Devices {
|
|
|
52
25
|
}
|
|
53
26
|
const cName = cDevConf.common.name;
|
|
54
27
|
if (cName.indexOf('00-HmIP') === 0) {
|
|
55
|
-
|
|
28
|
+
Devices.processHMIPDevice(cDevConf);
|
|
56
29
|
}
|
|
57
30
|
else if (cName.indexOf('00-Zigbee') === 0) {
|
|
58
|
-
|
|
31
|
+
Devices.processZigbeeDevice(cDevConf);
|
|
59
32
|
}
|
|
60
33
|
else if (cName.indexOf('00-EnergyManager') === 0) {
|
|
61
|
-
|
|
62
|
-
|
|
34
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Found Energy-Manager in Device json.`);
|
|
35
|
+
Devices.createEnergyManager(cDevConf);
|
|
63
36
|
}
|
|
64
37
|
}
|
|
65
|
-
|
|
66
|
-
|
|
38
|
+
hmIPDevices_1.HmIPDevice.checkMissing();
|
|
39
|
+
zigbee_1.ZigbeeDevice.checkMissing();
|
|
67
40
|
}
|
|
68
41
|
static midnightReset() {
|
|
69
42
|
// Nothing yet
|
|
70
43
|
}
|
|
71
44
|
static resetPraesenzCount() {
|
|
72
|
-
|
|
45
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `3 Uhr Reset der Präsenzmelder`);
|
|
73
46
|
for (const dID in Devices.alLDevices) {
|
|
74
47
|
const d = Devices.alLDevices[dID];
|
|
75
48
|
if (d.deviceType === deviceType_1.DeviceType.HmIpPraezenz) {
|
|
76
|
-
|
|
49
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
77
50
|
d.detectionsToday = 0;
|
|
78
51
|
}
|
|
79
52
|
else if (d.deviceType === deviceType_1.DeviceType.HmIpBewegung) {
|
|
80
|
-
|
|
53
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
81
54
|
d.detectionsToday = 0;
|
|
82
55
|
}
|
|
83
56
|
else if (d.deviceType === deviceType_1.DeviceType.ZigbeeSonoffMotion || d.deviceType === deviceType_1.DeviceType.ZigbeeAquaraMotion) {
|
|
84
|
-
|
|
57
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Debug, `2 Uhr Reset der Tages Detektionen von ${d.info.customName}`);
|
|
85
58
|
d.detectionsToday = 0;
|
|
86
59
|
}
|
|
87
60
|
}
|
|
88
61
|
}
|
|
89
|
-
|
|
62
|
+
static getBatteryInfo() {
|
|
63
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Getting Battery Info`);
|
|
64
|
+
let data = [];
|
|
65
|
+
const result = [
|
|
66
|
+
`These are the battery values for each device. Device dependandt some are in volts, some in %`,
|
|
67
|
+
];
|
|
68
|
+
for (const key in this.alLDevices) {
|
|
69
|
+
const d = this.alLDevices[key];
|
|
70
|
+
if (d.battery !== undefined) {
|
|
71
|
+
data.push({ name: d.info.customName, amount: d.battery });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
data = data.sort((a, b) => {
|
|
75
|
+
return a.amount - b.amount;
|
|
76
|
+
});
|
|
77
|
+
for (let i = 0; i < data.length; i++) {
|
|
78
|
+
result.push(`${data[i].amount}\t${data[i].name}`);
|
|
79
|
+
}
|
|
80
|
+
return result.join('\n');
|
|
81
|
+
}
|
|
82
|
+
static processZigbeeDevice(cDevConf) {
|
|
90
83
|
const zigbeeInfo = new DeviceInfo_1.DeviceInfo(cDevConf);
|
|
91
84
|
const fullName = `${Devices.IDENTIFIER_ZIGBEE}-${zigbeeInfo.devID}`;
|
|
92
85
|
zigbeeInfo.allDevicesKey = fullName;
|
|
93
86
|
if (typeof Devices.alLDevices[fullName] !== 'undefined') {
|
|
94
87
|
return;
|
|
95
88
|
}
|
|
96
|
-
|
|
89
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `${zigbeeInfo.devID} with Type "${zigbeeInfo.deviceType}" doesn't exists --> create it`);
|
|
97
90
|
let d;
|
|
98
91
|
switch (zigbeeInfo.deviceType) {
|
|
99
92
|
case 'AqaraMagnetContact':
|
|
100
|
-
d = new
|
|
93
|
+
d = new zigbee_1.ZigbeeAqaraMagnetContact(zigbeeInfo);
|
|
101
94
|
break;
|
|
102
95
|
case 'AqaraOpple3Switch':
|
|
103
|
-
d = new
|
|
96
|
+
d = new zigbee_1.ZigbeeAqaraOpple3Switch(zigbeeInfo);
|
|
104
97
|
break;
|
|
105
98
|
case 'AquaraMotion':
|
|
106
|
-
d = new
|
|
99
|
+
d = new zigbee_1.ZigbeeAquaraMotion(zigbeeInfo);
|
|
107
100
|
break;
|
|
108
101
|
case 'AquaraVibra':
|
|
109
|
-
d = new
|
|
102
|
+
d = new zigbee_1.ZigbeeAquaraVibra(zigbeeInfo);
|
|
110
103
|
break;
|
|
111
104
|
case 'AquaraWater':
|
|
112
|
-
d = new
|
|
105
|
+
d = new zigbee_1.ZigbeeAquaraWater(zigbeeInfo);
|
|
113
106
|
break;
|
|
114
107
|
case 'BlitzShp':
|
|
115
|
-
d = new
|
|
108
|
+
d = new zigbee_1.ZigbeeBlitzShp(zigbeeInfo);
|
|
116
109
|
break;
|
|
117
110
|
case 'HeimanSmoke':
|
|
118
|
-
d = new
|
|
111
|
+
d = new zigbee_1.ZigbeeHeimanSmoke(zigbeeInfo);
|
|
119
112
|
break;
|
|
120
113
|
case 'IkeaStecker':
|
|
121
|
-
d = new
|
|
114
|
+
d = new zigbee_1.ZigbeeIkeaSteckdose(zigbeeInfo);
|
|
122
115
|
break;
|
|
123
116
|
case 'IlluActuator':
|
|
124
|
-
d = new
|
|
117
|
+
d = new zigbee_1.ZigbeeIlluActuator(zigbeeInfo);
|
|
125
118
|
break;
|
|
126
119
|
case 'IlluDimmer':
|
|
127
|
-
d = new
|
|
120
|
+
d = new zigbee_1.ZigbeeIlluDimmer(zigbeeInfo);
|
|
128
121
|
break;
|
|
129
122
|
case 'IlluLampe':
|
|
130
|
-
d = new
|
|
123
|
+
d = new zigbee_1.ZigbeeIlluLampe(zigbeeInfo);
|
|
131
124
|
break;
|
|
132
125
|
case 'IlluShutter':
|
|
133
|
-
d = new
|
|
126
|
+
d = new zigbee_1.ZigbeeIlluShutter(zigbeeInfo);
|
|
134
127
|
break;
|
|
135
128
|
case 'LedRGBCCT':
|
|
136
|
-
d = new
|
|
129
|
+
d = new zigbee_1.ZigbeeIlluLedRGBCCT(zigbeeInfo);
|
|
137
130
|
break;
|
|
138
131
|
case 'SMaBiTMagnet':
|
|
139
|
-
d = new
|
|
132
|
+
d = new zigbee_1.ZigbeeSMaBiTMagnetContact(zigbeeInfo);
|
|
140
133
|
break;
|
|
141
134
|
case 'SonoffMotion':
|
|
142
|
-
d = new
|
|
135
|
+
d = new zigbee_1.ZigbeeSonoffMotion(zigbeeInfo);
|
|
143
136
|
break;
|
|
144
137
|
case 'SonoffTemp':
|
|
145
|
-
d = new
|
|
138
|
+
d = new zigbee_1.ZigbeeSonoffTemp(zigbeeInfo);
|
|
139
|
+
break;
|
|
140
|
+
case 'UbisysShutter':
|
|
141
|
+
d = new zigbeeUbisysShutter_1.ZigbeeUbisysShutter(zigbeeInfo);
|
|
146
142
|
break;
|
|
147
143
|
default:
|
|
148
|
-
|
|
149
|
-
d = new
|
|
144
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
|
|
145
|
+
d = new zigbee_1.ZigbeeDevice(zigbeeInfo, deviceType_1.DeviceType.unknown);
|
|
150
146
|
}
|
|
151
147
|
Devices.alLDevices[fullName] = d;
|
|
152
148
|
}
|
|
153
|
-
processHMIPDevice(cDevConf) {
|
|
149
|
+
static processHMIPDevice(cDevConf) {
|
|
154
150
|
const hmIPInfo = new DeviceInfo_1.DeviceInfo(cDevConf);
|
|
155
151
|
const fullName = `${Devices.IDENTIFIER_HOMEMATIC}-${hmIPInfo.devID}`;
|
|
156
152
|
hmIPInfo.allDevicesKey = fullName;
|
|
157
153
|
if (typeof Devices.alLDevices[fullName] !== 'undefined') {
|
|
158
154
|
return;
|
|
159
155
|
}
|
|
160
|
-
|
|
156
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Trace, `${hmIPInfo.devID} with Type "${hmIPInfo.deviceType}" doesn't exists --> create it`);
|
|
161
157
|
let d;
|
|
162
158
|
switch (hmIPInfo.deviceType) {
|
|
163
159
|
case 'Lampe':
|
|
164
|
-
d = new
|
|
160
|
+
d = new hmIPDevices_1.HmIpLampe(hmIPInfo);
|
|
165
161
|
break;
|
|
166
162
|
case 'Roll':
|
|
167
163
|
case 'Broll':
|
|
168
|
-
d = new
|
|
164
|
+
d = new hmIPDevices_1.HmIpRoll(hmIPInfo);
|
|
169
165
|
break;
|
|
170
166
|
case 'Beweg':
|
|
171
|
-
d = new
|
|
167
|
+
d = new hmIPDevices_1.HmIpBewegung(hmIPInfo);
|
|
172
168
|
break;
|
|
173
169
|
case 'Taster':
|
|
174
|
-
d = new
|
|
170
|
+
d = new hmIPDevices_1.HmIpTaster(hmIPInfo);
|
|
175
171
|
break;
|
|
176
172
|
case 'Wippe':
|
|
177
|
-
d = new
|
|
173
|
+
d = new hmIPDevices_1.HmIpWippe(hmIPInfo);
|
|
178
174
|
break;
|
|
179
175
|
case 'Praezenz':
|
|
180
|
-
d = new
|
|
176
|
+
d = new hmIPDevices_1.HmIpPraezenz(hmIPInfo);
|
|
181
177
|
break;
|
|
182
178
|
case 'Griff':
|
|
183
|
-
d = new
|
|
179
|
+
d = new hmIPDevices_1.HmIpGriff(hmIPInfo);
|
|
184
180
|
break;
|
|
185
181
|
case 'Thermostat':
|
|
186
|
-
d = new
|
|
182
|
+
d = new hmIPDevices_1.HmIpTherm(hmIPInfo);
|
|
187
183
|
break;
|
|
188
184
|
case 'Heizung':
|
|
189
|
-
d = new
|
|
185
|
+
d = new hmIPDevices_1.HmIpHeizung(hmIPInfo);
|
|
190
186
|
break;
|
|
191
187
|
case 'Tuer':
|
|
192
|
-
d = new
|
|
188
|
+
d = new hmIPDevices_1.HmIpTuer(hmIPInfo);
|
|
193
189
|
break;
|
|
194
190
|
case 'HeizGr':
|
|
195
|
-
d = new
|
|
191
|
+
d = new hmIPDevices_1.HmIpHeizgruppe(hmIPInfo);
|
|
196
192
|
break;
|
|
197
193
|
case 'AccessPoint':
|
|
198
|
-
d = new
|
|
194
|
+
d = new hmIPDevices_1.HmIpAccessPoint(hmIPInfo);
|
|
199
195
|
break;
|
|
200
196
|
default:
|
|
201
|
-
|
|
202
|
-
d = new
|
|
197
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `No HmIP Device Type for ${hmIPInfo.deviceType} defined`);
|
|
198
|
+
d = new hmIPDevices_1.HmIPDevice(hmIPInfo, deviceType_1.DeviceType.unknown);
|
|
203
199
|
}
|
|
204
200
|
Devices.alLDevices[fullName] = d;
|
|
205
201
|
}
|
|
206
|
-
static
|
|
207
|
-
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Getting Battery Info`);
|
|
208
|
-
let data = [];
|
|
209
|
-
const result = [
|
|
210
|
-
`These are the battery values for each device. Device dependandt some are in volts, some in %`,
|
|
211
|
-
];
|
|
212
|
-
for (const key in this.alLDevices) {
|
|
213
|
-
const d = this.alLDevices[key];
|
|
214
|
-
if (d.battery !== undefined) {
|
|
215
|
-
data.push({ name: d.info.customName, amount: d.battery });
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
data = data.sort((a, b) => {
|
|
219
|
-
return a.amount - b.amount;
|
|
220
|
-
});
|
|
221
|
-
for (let i = 0; i < data.length; i++) {
|
|
222
|
-
result.push(`${data[i].amount}\t${data[i].name}`);
|
|
223
|
-
}
|
|
224
|
-
return result.join('\n');
|
|
225
|
-
}
|
|
226
|
-
createEnergyManager(cDevConf) {
|
|
202
|
+
static createEnergyManager(cDevConf) {
|
|
227
203
|
const devInfo = new DeviceInfo_1.DeviceInfo(cDevConf, true);
|
|
228
204
|
const fullName = `${Devices.IDENTIFIER_JS}-${devInfo.devID}`;
|
|
229
205
|
devInfo.allDevicesKey = fullName;
|
|
230
|
-
Devices.energymanager = new
|
|
206
|
+
Devices.energymanager = new jsObject_1.JsObjectEnergyManager(devInfo);
|
|
231
207
|
Devices.alLDevices[fullName] = Devices.energymanager;
|
|
232
208
|
}
|
|
233
209
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { ZigbeeIkeaSteckdose } from '../zigbee
|
|
2
|
-
import { TimeOfDay } from '../../services
|
|
3
|
-
import { ZigbeeIlluLedRGBCCT } from '../zigbee/zigbeeIlluLedRGBCCT';
|
|
1
|
+
import { ZigbeeIkeaSteckdose, ZigbeeIlluLedRGBCCT } from '../zigbee';
|
|
2
|
+
import { TimeOfDay } from '../../services';
|
|
4
3
|
import { BaseGroup } from './base-group';
|
|
5
4
|
import { iLamp } from '../iLamp';
|
|
6
5
|
export declare class LampenGroup extends BaseGroup {
|
|
@@ -11,7 +10,7 @@ export declare class LampenGroup extends BaseGroup {
|
|
|
11
10
|
getStecker(): ZigbeeIkeaSteckdose[];
|
|
12
11
|
switchAll(target: boolean, force?: boolean): void;
|
|
13
12
|
switchTimeConditional(time: TimeOfDay): void;
|
|
14
|
-
setAllLampen(pValue: boolean, time?: TimeOfDay, force?: boolean): void;
|
|
13
|
+
setAllLampen(pValue: boolean, time?: TimeOfDay, force?: boolean, timeout?: number): void;
|
|
15
14
|
setAllStecker(pValue: boolean, time?: TimeOfDay, force?: boolean): void;
|
|
16
15
|
setAllLED(pValue: boolean, brightness?: number, color?: string, colortemp?: number): void;
|
|
17
16
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LampenGroup = void 0;
|
|
4
|
-
const
|
|
4
|
+
const services_1 = require("../../services");
|
|
5
5
|
const base_group_1 = require("./base-group");
|
|
6
6
|
const group_type_1 = require("./group-type");
|
|
7
7
|
const device_cluster_type_1 = require("../device-cluster-type");
|
|
8
8
|
const device_list_1 = require("../device-list");
|
|
9
|
-
const
|
|
9
|
+
const models_1 = require("../../../models");
|
|
10
10
|
class LampenGroup extends base_group_1.BaseGroup {
|
|
11
11
|
constructor(roomName, lampenIds = [], steckerIds = [], ledIds = []) {
|
|
12
12
|
super(roomName, group_type_1.GroupType.Light);
|
|
@@ -50,36 +50,36 @@ class LampenGroup extends base_group_1.BaseGroup {
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
switchTimeConditional(time) {
|
|
53
|
-
const darkOutside =
|
|
53
|
+
const darkOutside = services_1.TimeCallbackService.darkOutsideOrNight(time);
|
|
54
54
|
let resultLampen = false;
|
|
55
55
|
let resultSteckdosen = false;
|
|
56
56
|
if (this.getLED().length > 0) {
|
|
57
|
-
this.log(
|
|
57
|
+
this.log(models_1.LogLevel.Trace, `Set LEDs time based for time "${services_1.TimeOfDay[time]}"`);
|
|
58
58
|
this.getLED().forEach((s) => {
|
|
59
59
|
s.setTimeBased(time);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
else if (this.getStecker().length > 0) {
|
|
63
|
-
this.log(
|
|
63
|
+
this.log(models_1.LogLevel.Trace, `Set outlets time based for time "${services_1.TimeOfDay[time]}"`);
|
|
64
64
|
resultSteckdosen = darkOutside;
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
|
-
this.log(
|
|
67
|
+
this.log(models_1.LogLevel.Trace, `Set Lamps time based for time "${services_1.TimeOfDay[time]}"`);
|
|
68
68
|
resultLampen = darkOutside;
|
|
69
69
|
}
|
|
70
70
|
this.setAllLampen(resultLampen, time);
|
|
71
71
|
this.setAllStecker(resultSteckdosen, time);
|
|
72
72
|
}
|
|
73
|
-
setAllLampen(pValue, time, force = false) {
|
|
73
|
+
setAllLampen(pValue, time, force = false, timeout) {
|
|
74
74
|
this.getLampen().forEach((s) => {
|
|
75
75
|
if (!pValue ||
|
|
76
76
|
time === undefined ||
|
|
77
|
-
(time ===
|
|
78
|
-
(time ===
|
|
79
|
-
(time ===
|
|
80
|
-
|
|
77
|
+
(time === services_1.TimeOfDay.Night && s.settings.nightOn) ||
|
|
78
|
+
(time === services_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
|
|
79
|
+
(time === services_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
|
|
80
|
+
timeout !== null && timeout !== void 0 ? timeout : (timeout = pValue && force ? 30 * 60 * 1000 : -1);
|
|
81
81
|
if (pValue && time !== undefined) {
|
|
82
|
-
s.setTimeBased(time);
|
|
82
|
+
s.setTimeBased(time, timeout, force);
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
85
85
|
s.setLight(pValue, timeout, force);
|
|
@@ -91,9 +91,9 @@ class LampenGroup extends base_group_1.BaseGroup {
|
|
|
91
91
|
this.getStecker().forEach((s) => {
|
|
92
92
|
if (!pValue ||
|
|
93
93
|
time === undefined ||
|
|
94
|
-
(time ===
|
|
95
|
-
(time ===
|
|
96
|
-
(time ===
|
|
94
|
+
(time === services_1.TimeOfDay.Night && s.settings.nightOn) ||
|
|
95
|
+
(time === services_1.TimeOfDay.BeforeSunrise && s.settings.dawnOn) ||
|
|
96
|
+
(time === services_1.TimeOfDay.AfterSunset && s.settings.duskOn)) {
|
|
97
97
|
const timeout = pValue && force ? 30 * 60 * 1000 : -1;
|
|
98
98
|
s.setStecker(pValue, timeout, force);
|
|
99
99
|
}
|
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
/// <reference types="iobroker" />
|
|
2
2
|
import { HmIPDevice } from './hmIpDevice';
|
|
3
|
-
import { ActuatorSettings } from '../../../models
|
|
3
|
+
import { ActuatorSettings } from '../../../models';
|
|
4
4
|
import { DeviceInfo } from '../DeviceInfo';
|
|
5
5
|
import { iLamp } from '../iLamp';
|
|
6
|
-
import { TimeOfDay } from '../../services
|
|
6
|
+
import { TimeOfDay } from '../../services';
|
|
7
7
|
export declare class HmIpLampe extends HmIPDevice implements iLamp {
|
|
8
8
|
lightOn: boolean;
|
|
9
9
|
queuedLightValue: boolean | null;
|
|
10
|
-
isStromStoss: boolean;
|
|
11
10
|
settings: ActuatorSettings;
|
|
12
11
|
private lightOnSwitchID;
|
|
13
12
|
private _turnOffTimeout;
|
|
14
13
|
private turnOffTime;
|
|
15
14
|
constructor(pInfo: DeviceInfo);
|
|
16
15
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
|
|
17
|
-
/**
|
|
18
|
-
* This function thats the light to a specific value
|
|
19
|
-
* @param pValue The desired value
|
|
20
|
-
* @param timeout A chosen Timeout after which the light should be reset
|
|
21
|
-
*/
|
|
16
|
+
/** @inheritdoc */
|
|
22
17
|
setLight(pValue: boolean, timeout?: number, force?: boolean): void;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* @param force Whether this is a forcing action skipping delays and locks
|
|
26
|
-
*/
|
|
27
|
-
toggleLight(force?: boolean): boolean;
|
|
28
|
-
setTimeBased(time: TimeOfDay): void;
|
|
18
|
+
toggleLight(time?: TimeOfDay, force?: boolean, calculateTime?: boolean): boolean;
|
|
19
|
+
setTimeBased(time: TimeOfDay, timeout?: number, force?: boolean): void;
|
|
29
20
|
}
|