hoffmation-base 0.1.33 → 0.1.35
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/index.js +4 -1
- package/lib/models/actuatorSettings.d.ts +2 -1
- package/lib/models/actuatorSettings.js +3 -1
- package/lib/models/deviceSettings.d.ts +2 -0
- package/lib/models/deviceSettings.js +6 -0
- package/lib/models/ledSettings.d.ts +2 -1
- package/lib/models/ledSettings.js +3 -1
- package/lib/models/logSource.d.ts +4 -0
- package/lib/models/logSource.js +8 -0
- package/lib/models/rooms/RoomBase.d.ts +3 -0
- package/lib/models/rooms/RoomBase.js +6 -1
- package/lib/server/config/iConfig.d.ts +7 -0
- package/lib/server/devices/device-cluster-type.d.ts +18 -15
- package/lib/server/devices/device-cluster-type.js +18 -15
- package/lib/server/devices/device-cluster.d.ts +2 -0
- package/lib/server/devices/device-cluster.js +87 -0
- package/lib/server/devices/deviceType.d.ts +1 -0
- package/lib/server/devices/deviceType.js +1 -0
- package/lib/server/devices/devices.js +4 -0
- package/lib/server/devices/groups/heatGroup.d.ts +5 -1
- package/lib/server/devices/groups/heatGroup.js +12 -3
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +6 -4
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +4 -7
- package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +1 -1
- package/lib/server/devices/hmIPDevices/hmIpHeizung.js +1 -1
- package/lib/server/devices/iHeater.d.ts +11 -0
- package/lib/server/devices/iHeater.js +2 -0
- package/lib/server/devices/iHumiditySensor.d.ts +5 -0
- package/lib/server/devices/iHumiditySensor.js +2 -0
- package/lib/server/devices/iTemperaturSensor.d.ts +5 -0
- package/lib/server/devices/iTemperaturSensor.js +2 -0
- package/lib/server/devices/index.d.ts +3 -0
- package/lib/server/devices/index.js +3 -0
- package/lib/server/devices/zigbee/index.d.ts +1 -0
- package/lib/server/devices/zigbee/index.js +1 -0
- package/lib/server/devices/zigbee/zigbeeBlitzShp.js +2 -2
- package/lib/server/devices/zigbee/zigbeeMagnetContact.d.ts +2 -0
- package/lib/server/devices/zigbee/zigbeeMagnetContact.js +11 -3
- package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +17 -0
- package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +46 -0
- package/lib/server/services/Sonos/polly-service.d.ts +1 -1
- package/lib/server/services/Sonos/polly-service.js +3 -2
- package/lib/server/services/https-service.d.ts +6 -0
- package/lib/server/services/https-service.js +12 -0
- package/lib/server/services/log-service/log-filter-data.d.ts +2 -0
- package/lib/server/services/log-service/log-service.js +6 -0
- package/lib/server/services/news-service.d.ts +35 -5
- package/lib/server/services/news-service.js +130 -31
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -12
package/lib/index.js
CHANGED
|
@@ -65,7 +65,10 @@ class HoffmationBase {
|
|
|
65
65
|
server_1.MuellService.intialize(server_1.SettingsService.settings.muell, defaultMuellSonos);
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
|
-
server_1.Utils.guardedNewThread(
|
|
68
|
+
server_1.Utils.guardedNewThread(() => {
|
|
69
|
+
server_1.ServerLogService.writeLog(models_1.LogLevel.Info, `News settings detected --> initializing`);
|
|
70
|
+
server_1.NewsService.initialize(server_1.SettingsService.settings.news);
|
|
71
|
+
});
|
|
69
72
|
server_1.Utils.guardedNewThread(() => {
|
|
70
73
|
if (server_1.SettingsService.settings.weather) {
|
|
71
74
|
server_1.ServerLogService.writeLog(models_1.LogLevel.Info, `Weather settings detected --> initializing`);
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ActuatorSettings = void 0;
|
|
4
|
-
|
|
4
|
+
const deviceSettings_1 = require("./deviceSettings");
|
|
5
|
+
class ActuatorSettings extends deviceSettings_1.DeviceSettings {
|
|
5
6
|
constructor() {
|
|
7
|
+
super(...arguments);
|
|
6
8
|
this.dawnOn = true;
|
|
7
9
|
this.duskOn = true;
|
|
8
10
|
this.nightOn = true;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LedSettings = void 0;
|
|
4
|
-
|
|
4
|
+
const deviceSettings_1 = require("./deviceSettings");
|
|
5
|
+
class LedSettings extends deviceSettings_1.DeviceSettings {
|
|
5
6
|
constructor() {
|
|
7
|
+
super(...arguments);
|
|
6
8
|
this.defaultColor = '#fbbc32';
|
|
7
9
|
this.dayOn = false;
|
|
8
10
|
this.dayBrightness = 100;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogSource = void 0;
|
|
4
|
+
var LogSource;
|
|
5
|
+
(function (LogSource) {
|
|
6
|
+
LogSource[LogSource["NotSpecified"] = 0] = "NotSpecified";
|
|
7
|
+
LogSource[LogSource["News"] = 1] = "News";
|
|
8
|
+
})(LogSource = exports.LogSource || (exports.LogSource = {}));
|
|
@@ -12,10 +12,13 @@ import { iRoomBase } from './iRoomBase';
|
|
|
12
12
|
import { RoomInfo } from './roomInfo';
|
|
13
13
|
import { BaseGroup } from '../../server/devices/groups/base-group';
|
|
14
14
|
import { GroupType } from '../../server/devices/groups/group-type';
|
|
15
|
+
import { DeviceCluster } from '../../server/devices/device-cluster';
|
|
15
16
|
export declare class RoomBase implements iRoomBase {
|
|
16
17
|
settings: RoomSettings;
|
|
17
18
|
groups: Map<GroupType, BaseGroup>;
|
|
18
19
|
info: RoomInfo;
|
|
20
|
+
protected _deviceCluster: DeviceCluster;
|
|
21
|
+
get deviceCluster(): DeviceCluster;
|
|
19
22
|
get FensterGroup(): FensterGroup | undefined;
|
|
20
23
|
get PraesenzGroup(): PraesenzGroup | undefined;
|
|
21
24
|
get LampenGroup(): LampenGroup | undefined;
|
|
@@ -14,16 +14,21 @@ const group_type_1 = require("../../server/devices/groups/group-type");
|
|
|
14
14
|
const ShutterService_1 = require("../../server/services/ShutterService");
|
|
15
15
|
const utils_1 = require("../../server/services/utils/utils");
|
|
16
16
|
const lodash_1 = __importDefault(require("lodash"));
|
|
17
|
+
const device_cluster_1 = require("../../server/devices/device-cluster");
|
|
17
18
|
class RoomBase {
|
|
18
19
|
constructor(roomName, settings, groups) {
|
|
19
20
|
this.settings = settings;
|
|
20
21
|
this.groups = groups;
|
|
22
|
+
this._deviceCluster = new device_cluster_1.DeviceCluster();
|
|
21
23
|
this.skipNextRolloUp = false;
|
|
22
24
|
this.info = new roomInfo_1.RoomInfo(roomName, settings);
|
|
23
25
|
settings.roomName = roomName;
|
|
24
26
|
this.settings = settings;
|
|
25
27
|
room_service_1.RoomService.addToRoomList(this);
|
|
26
28
|
}
|
|
29
|
+
get deviceCluster() {
|
|
30
|
+
return this._deviceCluster;
|
|
31
|
+
}
|
|
27
32
|
get FensterGroup() {
|
|
28
33
|
return this.groups.get(group_type_1.GroupType.Window);
|
|
29
34
|
}
|
|
@@ -133,7 +138,7 @@ class RoomBase {
|
|
|
133
138
|
toJSON() {
|
|
134
139
|
const result = utils_1.Utils.jsonFilter(this);
|
|
135
140
|
result.groupDict = Object.fromEntries(this.groups);
|
|
136
|
-
return lodash_1.default.omit(result, 'groups');
|
|
141
|
+
return lodash_1.default.omit(result, ['groups', '_deviceCluster']);
|
|
137
142
|
}
|
|
138
143
|
log(level, message) {
|
|
139
144
|
log_service_1.ServerLogService.writeLog(level, message, {
|
|
@@ -8,11 +8,13 @@ export interface iRestSettings {
|
|
|
8
8
|
port?: number;
|
|
9
9
|
}
|
|
10
10
|
export interface iConfig {
|
|
11
|
+
cacheDir?: string;
|
|
11
12
|
ioBrokerUrl: string;
|
|
12
13
|
logSettings?: iLogSettings;
|
|
13
14
|
translationSettings: iTranslationSettings;
|
|
14
15
|
mp3Server?: iMp3Settings;
|
|
15
16
|
muell?: iMuellSettings;
|
|
17
|
+
news?: iNewsSettings;
|
|
16
18
|
persistence?: iPersistenceSettings;
|
|
17
19
|
polly?: iPollySettings;
|
|
18
20
|
restServer?: iRestSettings;
|
|
@@ -64,6 +66,11 @@ export interface iWeatherSettings {
|
|
|
64
66
|
export interface iMuellSettings {
|
|
65
67
|
calendarURL: string;
|
|
66
68
|
}
|
|
69
|
+
export interface iNewsSettings {
|
|
70
|
+
rssUrl?: string;
|
|
71
|
+
requestInterval?: number;
|
|
72
|
+
keepMaxAge?: number;
|
|
73
|
+
}
|
|
67
74
|
export interface iTranslationSettings {
|
|
68
75
|
language: string;
|
|
69
76
|
}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
export declare enum DeviceClusterType {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
all = 0,
|
|
3
|
+
Buttons = 1,
|
|
4
|
+
Heater = 2,
|
|
5
|
+
LED = 3,
|
|
6
|
+
Lamps = 4,
|
|
7
|
+
MotionDetection = 5,
|
|
8
|
+
Outlets = 6,
|
|
9
|
+
PresenceDetection = 7,
|
|
10
|
+
Speaker = 8,
|
|
11
|
+
SmokeDetector = 9,
|
|
12
|
+
WaterDetectors = 10,
|
|
13
|
+
Windows = 11,
|
|
14
|
+
Handle = 12,
|
|
15
|
+
Vibration = 13,
|
|
16
|
+
Shutter = 14,
|
|
17
|
+
MagnetContact = 15,
|
|
18
|
+
TemperaturSensor = 16,
|
|
19
|
+
HumiditySensor = 17
|
|
17
20
|
}
|
|
@@ -3,19 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DeviceClusterType = void 0;
|
|
4
4
|
var DeviceClusterType;
|
|
5
5
|
(function (DeviceClusterType) {
|
|
6
|
-
DeviceClusterType[DeviceClusterType["
|
|
7
|
-
DeviceClusterType[DeviceClusterType["
|
|
8
|
-
DeviceClusterType[DeviceClusterType["
|
|
9
|
-
DeviceClusterType[DeviceClusterType["
|
|
10
|
-
DeviceClusterType[DeviceClusterType["
|
|
11
|
-
DeviceClusterType[DeviceClusterType["
|
|
12
|
-
DeviceClusterType[DeviceClusterType["
|
|
13
|
-
DeviceClusterType[DeviceClusterType["
|
|
14
|
-
DeviceClusterType[DeviceClusterType["
|
|
15
|
-
DeviceClusterType[DeviceClusterType["
|
|
16
|
-
DeviceClusterType[DeviceClusterType["
|
|
17
|
-
DeviceClusterType[DeviceClusterType["
|
|
18
|
-
DeviceClusterType[DeviceClusterType["
|
|
19
|
-
DeviceClusterType[DeviceClusterType["
|
|
20
|
-
DeviceClusterType[DeviceClusterType["
|
|
6
|
+
DeviceClusterType[DeviceClusterType["all"] = 0] = "all";
|
|
7
|
+
DeviceClusterType[DeviceClusterType["Buttons"] = 1] = "Buttons";
|
|
8
|
+
DeviceClusterType[DeviceClusterType["Heater"] = 2] = "Heater";
|
|
9
|
+
DeviceClusterType[DeviceClusterType["LED"] = 3] = "LED";
|
|
10
|
+
DeviceClusterType[DeviceClusterType["Lamps"] = 4] = "Lamps";
|
|
11
|
+
DeviceClusterType[DeviceClusterType["MotionDetection"] = 5] = "MotionDetection";
|
|
12
|
+
DeviceClusterType[DeviceClusterType["Outlets"] = 6] = "Outlets";
|
|
13
|
+
DeviceClusterType[DeviceClusterType["PresenceDetection"] = 7] = "PresenceDetection";
|
|
14
|
+
DeviceClusterType[DeviceClusterType["Speaker"] = 8] = "Speaker";
|
|
15
|
+
DeviceClusterType[DeviceClusterType["SmokeDetector"] = 9] = "SmokeDetector";
|
|
16
|
+
DeviceClusterType[DeviceClusterType["WaterDetectors"] = 10] = "WaterDetectors";
|
|
17
|
+
DeviceClusterType[DeviceClusterType["Windows"] = 11] = "Windows";
|
|
18
|
+
DeviceClusterType[DeviceClusterType["Handle"] = 12] = "Handle";
|
|
19
|
+
DeviceClusterType[DeviceClusterType["Vibration"] = 13] = "Vibration";
|
|
20
|
+
DeviceClusterType[DeviceClusterType["Shutter"] = 14] = "Shutter";
|
|
21
|
+
DeviceClusterType[DeviceClusterType["MagnetContact"] = 15] = "MagnetContact";
|
|
22
|
+
DeviceClusterType[DeviceClusterType["TemperaturSensor"] = 16] = "TemperaturSensor";
|
|
23
|
+
DeviceClusterType[DeviceClusterType["HumiditySensor"] = 17] = "HumiditySensor";
|
|
21
24
|
})(DeviceClusterType = exports.DeviceClusterType || (exports.DeviceClusterType = {}));
|
|
@@ -7,6 +7,8 @@ export declare class DeviceCluster {
|
|
|
7
7
|
constructor(deviceMap?: Map<DeviceClusterType, DeviceList>);
|
|
8
8
|
getIoBrokerDevicesByType(type: DeviceClusterType): IoBrokerBaseDevice[];
|
|
9
9
|
getDevicesByType(type: DeviceClusterType): Array<IoBrokerBaseDevice | OwnSonosDevice>;
|
|
10
|
+
addByDeviceType(device: IoBrokerBaseDevice): void;
|
|
11
|
+
addToList(type: DeviceClusterType, device: IoBrokerBaseDevice): void;
|
|
10
12
|
toJSON(): Partial<DeviceCluster & {
|
|
11
13
|
deviceDict?: {
|
|
12
14
|
[p: string]: DeviceList;
|
|
@@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.DeviceCluster = void 0;
|
|
7
7
|
const device_cluster_type_1 = require("./device-cluster-type");
|
|
8
|
+
const device_list_1 = require("./device-list");
|
|
8
9
|
const utils_1 = require("../services/utils/utils");
|
|
9
10
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
+
const deviceType_1 = require("./deviceType");
|
|
10
12
|
class DeviceCluster {
|
|
11
13
|
constructor(deviceMap = new Map()) {
|
|
12
14
|
this.deviceMap = deviceMap;
|
|
@@ -21,6 +23,91 @@ class DeviceCluster {
|
|
|
21
23
|
var _a, _b;
|
|
22
24
|
return (_b = (_a = this.deviceMap.get(type)) === null || _a === void 0 ? void 0 : _a.getDevices()) !== null && _b !== void 0 ? _b : [];
|
|
23
25
|
}
|
|
26
|
+
addByDeviceType(device) {
|
|
27
|
+
const type = device.deviceType;
|
|
28
|
+
const clusterTypes = [device_cluster_type_1.DeviceClusterType.all];
|
|
29
|
+
switch (type) {
|
|
30
|
+
case deviceType_1.DeviceType.HmIpLampe:
|
|
31
|
+
case deviceType_1.DeviceType.ZigbeeIlluDimmer:
|
|
32
|
+
case deviceType_1.DeviceType.ZigbeeIlluLampe:
|
|
33
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Lamps);
|
|
34
|
+
break;
|
|
35
|
+
case deviceType_1.DeviceType.HmIpWippe:
|
|
36
|
+
case deviceType_1.DeviceType.HmIpTaster:
|
|
37
|
+
case deviceType_1.DeviceType.ZigbeeIkeaFernbedienung:
|
|
38
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Buttons);
|
|
39
|
+
break;
|
|
40
|
+
case deviceType_1.DeviceType.HmIpRoll:
|
|
41
|
+
case deviceType_1.DeviceType.ZigbeeIlluShutter:
|
|
42
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Shutter);
|
|
43
|
+
break;
|
|
44
|
+
case deviceType_1.DeviceType.ZigbeeSonoffTemp:
|
|
45
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.TemperaturSensor);
|
|
46
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.HumiditySensor);
|
|
47
|
+
break;
|
|
48
|
+
case deviceType_1.DeviceType.HmIpPraezenz:
|
|
49
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.PresenceDetection);
|
|
50
|
+
break;
|
|
51
|
+
case deviceType_1.DeviceType.HmIpGriff:
|
|
52
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Handle);
|
|
53
|
+
break;
|
|
54
|
+
case deviceType_1.DeviceType.HmIpHeizgruppe:
|
|
55
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Heater);
|
|
56
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.TemperaturSensor);
|
|
57
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.HumiditySensor);
|
|
58
|
+
break;
|
|
59
|
+
case deviceType_1.DeviceType.HmIpTuer:
|
|
60
|
+
case deviceType_1.DeviceType.ZigbeeSMaBiTMagnetContact:
|
|
61
|
+
case deviceType_1.DeviceType.ZigbeeAqaraMagnetContact:
|
|
62
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.MagnetContact);
|
|
63
|
+
break;
|
|
64
|
+
case deviceType_1.DeviceType.HmIpBewegung:
|
|
65
|
+
case deviceType_1.DeviceType.ZigbeeAquaraMotion:
|
|
66
|
+
case deviceType_1.DeviceType.ZigbeeSonoffMotion:
|
|
67
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.MotionDetection);
|
|
68
|
+
break;
|
|
69
|
+
case deviceType_1.DeviceType.ZigbeeIkeaSteckdose:
|
|
70
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Outlets);
|
|
71
|
+
break;
|
|
72
|
+
case deviceType_1.DeviceType.ZigbeeIlluLedRGBCCT:
|
|
73
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.LED);
|
|
74
|
+
break;
|
|
75
|
+
case deviceType_1.DeviceType.ZigbeeAquaraVibra:
|
|
76
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Vibration);
|
|
77
|
+
break;
|
|
78
|
+
case deviceType_1.DeviceType.ZigbeeHeimanSmoke:
|
|
79
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.SmokeDetector);
|
|
80
|
+
break;
|
|
81
|
+
case deviceType_1.DeviceType.ZigbeeAquaraWater:
|
|
82
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.WaterDetectors);
|
|
83
|
+
break;
|
|
84
|
+
case deviceType_1.DeviceType.ZigbeeBlitzShp:
|
|
85
|
+
clusterTypes.push(device_cluster_type_1.DeviceClusterType.Outlets);
|
|
86
|
+
break;
|
|
87
|
+
case deviceType_1.DeviceType.ZigbeeIlluActuator: // Dependent on use case
|
|
88
|
+
case deviceType_1.DeviceType.HmIpTherm: // Humidity and temperatur not yet implemented
|
|
89
|
+
case deviceType_1.DeviceType.HmIpHeizung: // Setting/Controlling via HM-Ip Heizgruppe
|
|
90
|
+
case deviceType_1.DeviceType.unknown:
|
|
91
|
+
case deviceType_1.DeviceType.Wled: // TODO: Implement
|
|
92
|
+
case deviceType_1.DeviceType.HmIpAccessPoint: // You can't really do stuff with it.
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
for (const type of clusterTypes) {
|
|
96
|
+
this.addToList(type, device);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
addToList(type, device) {
|
|
100
|
+
var _a;
|
|
101
|
+
const list = (_a = this.deviceMap.get(type)) === null || _a === void 0 ? void 0 : _a.ids;
|
|
102
|
+
if (list !== undefined) {
|
|
103
|
+
if (list.indexOf(device.id) < 0) {
|
|
104
|
+
list.push(device.id);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
this.deviceMap.set(type, new device_list_1.DeviceList([device.id]));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
24
111
|
toJSON() {
|
|
25
112
|
const result = utils_1.Utils.jsonFilter(this);
|
|
26
113
|
result.deviceDict = Object.fromEntries(this.deviceMap);
|
|
@@ -31,5 +31,6 @@ var DeviceType;
|
|
|
31
31
|
DeviceType[DeviceType["ZigbeeSMaBiTMagnetContact"] = 213] = "ZigbeeSMaBiTMagnetContact";
|
|
32
32
|
DeviceType[DeviceType["ZigbeeSonoffMotion"] = 214] = "ZigbeeSonoffMotion";
|
|
33
33
|
DeviceType[DeviceType["ZigbeeAqaraMagnetContact"] = 215] = "ZigbeeAqaraMagnetContact";
|
|
34
|
+
DeviceType[DeviceType["ZigbeeSonoffTemp"] = 216] = "ZigbeeSonoffTemp";
|
|
34
35
|
DeviceType[DeviceType["Wled"] = 1001] = "Wled";
|
|
35
36
|
})(DeviceType = exports.DeviceType || (exports.DeviceType = {}));
|
|
@@ -33,6 +33,7 @@ const zigbeeSMaBiTMagnetContact_1 = require("./zigbee/zigbeeSMaBiTMagnetContact"
|
|
|
33
33
|
const zigbeeSonoffMotion_1 = require("./zigbee/zigbeeSonoffMotion");
|
|
34
34
|
const hmIpAccessPoint_1 = require("./hmIPDevices/hmIpAccessPoint");
|
|
35
35
|
const zigbeeAqaraMagnetContact_1 = require("./zigbee/zigbeeAqaraMagnetContact");
|
|
36
|
+
const zigbeeSonoffTemp_1 = require("./zigbee/zigbeeSonoffTemp");
|
|
36
37
|
class Devices {
|
|
37
38
|
constructor(pDeviceData, pRoomImportEnforcer) {
|
|
38
39
|
// This forces import of rooms at correct timing, to allow devices to land in proper rooms.
|
|
@@ -131,6 +132,9 @@ class Devices {
|
|
|
131
132
|
case 'SonoffMotion':
|
|
132
133
|
d = new zigbeeSonoffMotion_1.ZigbeeSonoffMotion(zigbeeInfo);
|
|
133
134
|
break;
|
|
135
|
+
case 'SonoffTemp':
|
|
136
|
+
d = new zigbeeSonoffTemp_1.ZigbeeSonoffTemp(zigbeeInfo);
|
|
137
|
+
break;
|
|
134
138
|
default:
|
|
135
139
|
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `No zigbee Device Type for ${zigbeeInfo.deviceType} defined`);
|
|
136
140
|
d = new zigbeeDevice_1.ZigbeeDevice(zigbeeInfo, deviceType_1.DeviceType.unknown);
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { HmIpHeizgruppe } from '../hmIPDevices/hmIpHeizgruppe';
|
|
2
2
|
import { BaseGroup } from './base-group';
|
|
3
|
+
import { iTemperaturSensor } from '../iTemperaturSensor';
|
|
4
|
+
import { iHumiditySensor } from '../iHumiditySensor';
|
|
3
5
|
export declare class HeatGroup extends BaseGroup {
|
|
4
6
|
get currentTemp(): number;
|
|
5
7
|
get desiredTemp(): number;
|
|
6
8
|
getHeater(): HmIpHeizgruppe[];
|
|
7
|
-
|
|
9
|
+
getTempSensors(): iTemperaturSensor[];
|
|
10
|
+
getHumiditySensors(): iHumiditySensor[];
|
|
11
|
+
constructor(roomName: string, heaterIds: string[], tempSensorIds: string[], humiditySensorIds: string[]);
|
|
8
12
|
}
|
|
@@ -11,10 +11,11 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
11
11
|
return -99;
|
|
12
12
|
}
|
|
13
13
|
let value = 0;
|
|
14
|
-
|
|
14
|
+
const sensors = this.getTempSensors();
|
|
15
|
+
for (const h of sensors) {
|
|
15
16
|
value += h.iTemperatur;
|
|
16
17
|
}
|
|
17
|
-
return Math.round((value /
|
|
18
|
+
return Math.round((value / sensors.length) * 10) / 10;
|
|
18
19
|
}
|
|
19
20
|
get desiredTemp() {
|
|
20
21
|
if (this.getHeater().length === 0) {
|
|
@@ -29,9 +30,17 @@ class HeatGroup extends base_group_1.BaseGroup {
|
|
|
29
30
|
getHeater() {
|
|
30
31
|
return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.Heater);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
getTempSensors() {
|
|
34
|
+
return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.TemperaturSensor);
|
|
35
|
+
}
|
|
36
|
+
getHumiditySensors() {
|
|
37
|
+
return this.deviceCluster.getIoBrokerDevicesByType(device_cluster_type_1.DeviceClusterType.HumiditySensor);
|
|
38
|
+
}
|
|
39
|
+
constructor(roomName, heaterIds, tempSensorIds, humiditySensorIds) {
|
|
33
40
|
super(roomName, group_type_1.GroupType.Heating);
|
|
34
41
|
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.Heater, new device_list_1.DeviceList(heaterIds));
|
|
42
|
+
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.TemperaturSensor, new device_list_1.DeviceList(tempSensorIds));
|
|
43
|
+
this.deviceCluster.deviceMap.set(device_cluster_type_1.DeviceClusterType.HumiditySensor, new device_list_1.DeviceList(humiditySensorIds));
|
|
35
44
|
}
|
|
36
45
|
}
|
|
37
46
|
exports.HeatGroup = HeatGroup;
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
import { HmIPDevice } from './hmIpDevice';
|
|
3
3
|
import { DeviceInfo } from '../DeviceInfo';
|
|
4
4
|
import { TemperaturSettings } from '../../../models/temperaturSettings';
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { iTemperaturSensor } from '../iTemperaturSensor';
|
|
6
|
+
import { iHumiditySensor } from '../iHumiditySensor';
|
|
7
|
+
import { iHeater } from '../iHeater';
|
|
8
|
+
export declare class HmIpHeizgruppe extends HmIPDevice implements iTemperaturSensor, iHumiditySensor, iHeater {
|
|
7
9
|
private _automaticMode;
|
|
8
10
|
private _iAutomaticInterval;
|
|
9
11
|
private _level;
|
|
@@ -25,10 +27,10 @@ export declare class HmIpHeizgruppe extends HmIPDevice {
|
|
|
25
27
|
set desiredTemperatur(val: number);
|
|
26
28
|
addHumidityCallback(pCallback: (pValue: number) => void): void;
|
|
27
29
|
deleteAutomaticPoint(name: string): void;
|
|
28
|
-
getBelongingHeizungen():
|
|
30
|
+
getBelongingHeizungen(): iHeater[];
|
|
29
31
|
setAutomaticPoint(name: string, setting: TemperaturSettings): void;
|
|
30
32
|
update(idSplit: string[], state: ioBroker.State, initial?: boolean): void;
|
|
31
33
|
stopAutomaticCheck(): void;
|
|
32
34
|
private updateBaseInformation;
|
|
33
|
-
|
|
35
|
+
checkAutomaticChange(): void;
|
|
34
36
|
}
|
|
@@ -4,9 +4,9 @@ exports.HmIpHeizgruppe = void 0;
|
|
|
4
4
|
const hmIpDevice_1 = require("./hmIpDevice");
|
|
5
5
|
const deviceType_1 = require("../deviceType");
|
|
6
6
|
const utils_1 = require("../../services/utils/utils");
|
|
7
|
-
const devices_1 = require("../devices");
|
|
8
7
|
const persist_1 = require("../../services/dbo/persist");
|
|
9
8
|
const logLevel_1 = require("../../../models/logLevel");
|
|
9
|
+
const device_cluster_type_1 = require("../device-cluster-type");
|
|
10
10
|
class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
11
11
|
constructor(pInfo) {
|
|
12
12
|
super(pInfo, deviceType_1.DeviceType.HmIpHeizgruppe);
|
|
@@ -64,13 +64,10 @@ class HmIpHeizgruppe extends hmIpDevice_1.HmIPDevice {
|
|
|
64
64
|
delete this._automaticPoints[name];
|
|
65
65
|
}
|
|
66
66
|
getBelongingHeizungen() {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const d = devices_1.Devices.alLDevices[dID];
|
|
70
|
-
if (d.deviceType === deviceType_1.DeviceType.HmIpHeizung && d.info.room === this.info.room) {
|
|
71
|
-
result.push(d);
|
|
72
|
-
}
|
|
67
|
+
if (!this.room) {
|
|
68
|
+
return [];
|
|
73
69
|
}
|
|
70
|
+
const result = this.room.deviceCluster.getDevicesByType(device_cluster_type_1.DeviceClusterType.Heater);
|
|
74
71
|
return result;
|
|
75
72
|
}
|
|
76
73
|
setAutomaticPoint(name, setting) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HmIpHeizung = void 0;
|
|
4
|
-
const hmIpDevice_1 = require("./hmIpDevice");
|
|
5
4
|
const deviceType_1 = require("../deviceType");
|
|
6
5
|
const logLevel_1 = require("../../../models/logLevel");
|
|
6
|
+
const hmIpDevice_1 = require("./hmIpDevice");
|
|
7
7
|
var HmIpHeizungAdaptionStates;
|
|
8
8
|
(function (HmIpHeizungAdaptionStates) {
|
|
9
9
|
HmIpHeizungAdaptionStates[HmIpHeizungAdaptionStates["StateNotAvailable"] = 0] = "StateNotAvailable";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
|
|
2
|
+
import { TemperaturSettings } from '../../models/temperaturSettings';
|
|
3
|
+
export interface iHeater extends IoBrokerBaseDevice {
|
|
4
|
+
readonly desiredTemperatur: number;
|
|
5
|
+
readonly iLevel: number;
|
|
6
|
+
readonly iTemperatur: number;
|
|
7
|
+
deleteAutomaticPoint(name: string): void;
|
|
8
|
+
setAutomaticPoint(name: string, setting: TemperaturSettings): void;
|
|
9
|
+
stopAutomaticCheck(): void;
|
|
10
|
+
checkAutomaticChange(): void;
|
|
11
|
+
}
|
|
@@ -12,10 +12,13 @@ export * from './deviceUpdater';
|
|
|
12
12
|
export * from './Griffe';
|
|
13
13
|
export * from './Heizgruppen';
|
|
14
14
|
export * from './iDeviceUpdater';
|
|
15
|
+
export * from './iHumiditySensor';
|
|
15
16
|
export * from './iIlluminationSensor';
|
|
17
|
+
export * from './iHeater';
|
|
16
18
|
export * from './iLamp';
|
|
17
19
|
export * from './IoBrokerBaseDevice';
|
|
18
20
|
export * from './iShutter';
|
|
19
21
|
export * from './iTaster';
|
|
22
|
+
export * from './iTemperaturSensor';
|
|
20
23
|
export * from './taste';
|
|
21
24
|
export * from './wledDevice';
|
|
@@ -24,10 +24,13 @@ __exportStar(require("./deviceUpdater"), exports);
|
|
|
24
24
|
__exportStar(require("./Griffe"), exports);
|
|
25
25
|
__exportStar(require("./Heizgruppen"), exports);
|
|
26
26
|
__exportStar(require("./iDeviceUpdater"), exports);
|
|
27
|
+
__exportStar(require("./iHumiditySensor"), exports);
|
|
27
28
|
__exportStar(require("./iIlluminationSensor"), exports);
|
|
29
|
+
__exportStar(require("./iHeater"), exports);
|
|
28
30
|
__exportStar(require("./iLamp"), exports);
|
|
29
31
|
__exportStar(require("./IoBrokerBaseDevice"), exports);
|
|
30
32
|
__exportStar(require("./iShutter"), exports);
|
|
31
33
|
__exportStar(require("./iTaster"), exports);
|
|
34
|
+
__exportStar(require("./iTemperaturSensor"), exports);
|
|
32
35
|
__exportStar(require("./taste"), exports);
|
|
33
36
|
__exportStar(require("./wledDevice"), exports);
|
|
@@ -29,3 +29,4 @@ __exportStar(require("./zigbeeMotionSensor"), exports);
|
|
|
29
29
|
__exportStar(require("./zigbeeShutter"), exports);
|
|
30
30
|
__exportStar(require("./zigbeeSMaBiTMagnetContact"), exports);
|
|
31
31
|
__exportStar(require("./zigbeeSonoffMotion"), exports);
|
|
32
|
+
__exportStar(require("./zigbeeSonoffTemp"), exports);
|
|
@@ -32,12 +32,12 @@ class ZigbeeBlitzShp extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
32
32
|
break;
|
|
33
33
|
case 'current':
|
|
34
34
|
const newCurrent = state.val;
|
|
35
|
-
this.log(newCurrent
|
|
35
|
+
this.log(Math.abs(newCurrent - this.current) > 0.25 ? logLevel_1.LogLevel.Trace : logLevel_1.LogLevel.DeepTrace, `Outlet update, new current: ${state.val}`);
|
|
36
36
|
this.current = newCurrent;
|
|
37
37
|
break;
|
|
38
38
|
case 'load_power':
|
|
39
39
|
const newLoadPower = state.val;
|
|
40
|
-
this.log(newLoadPower
|
|
40
|
+
this.log(Math.abs(newLoadPower - this.loadPower) > 0.25 ? logLevel_1.LogLevel.Trace : logLevel_1.LogLevel.DeepTrace, `Outlet update, new current load power: ${state.val}`);
|
|
41
41
|
this.loadPower = newLoadPower;
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
@@ -5,6 +5,8 @@ import { ZigbeeDevice } from './zigbeeDevice';
|
|
|
5
5
|
import { MagnetPosition } from '../models/MagnetPosition';
|
|
6
6
|
export declare class ZigbeeMagnetContact extends ZigbeeDevice {
|
|
7
7
|
position: MagnetPosition;
|
|
8
|
+
telegramOnOpen: boolean;
|
|
9
|
+
speakOnOpen: boolean;
|
|
8
10
|
private _closedCallback;
|
|
9
11
|
private _openCallback;
|
|
10
12
|
private _iOpenTimeout;
|