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.
Files changed (50) hide show
  1. package/lib/index.js +4 -1
  2. package/lib/models/actuatorSettings.d.ts +2 -1
  3. package/lib/models/actuatorSettings.js +3 -1
  4. package/lib/models/deviceSettings.d.ts +2 -0
  5. package/lib/models/deviceSettings.js +6 -0
  6. package/lib/models/ledSettings.d.ts +2 -1
  7. package/lib/models/ledSettings.js +3 -1
  8. package/lib/models/logSource.d.ts +4 -0
  9. package/lib/models/logSource.js +8 -0
  10. package/lib/models/rooms/RoomBase.d.ts +3 -0
  11. package/lib/models/rooms/RoomBase.js +6 -1
  12. package/lib/server/config/iConfig.d.ts +7 -0
  13. package/lib/server/devices/device-cluster-type.d.ts +18 -15
  14. package/lib/server/devices/device-cluster-type.js +18 -15
  15. package/lib/server/devices/device-cluster.d.ts +2 -0
  16. package/lib/server/devices/device-cluster.js +87 -0
  17. package/lib/server/devices/deviceType.d.ts +1 -0
  18. package/lib/server/devices/deviceType.js +1 -0
  19. package/lib/server/devices/devices.js +4 -0
  20. package/lib/server/devices/groups/heatGroup.d.ts +5 -1
  21. package/lib/server/devices/groups/heatGroup.js +12 -3
  22. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +6 -4
  23. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +4 -7
  24. package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +1 -1
  25. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +1 -1
  26. package/lib/server/devices/iHeater.d.ts +11 -0
  27. package/lib/server/devices/iHeater.js +2 -0
  28. package/lib/server/devices/iHumiditySensor.d.ts +5 -0
  29. package/lib/server/devices/iHumiditySensor.js +2 -0
  30. package/lib/server/devices/iTemperaturSensor.d.ts +5 -0
  31. package/lib/server/devices/iTemperaturSensor.js +2 -0
  32. package/lib/server/devices/index.d.ts +3 -0
  33. package/lib/server/devices/index.js +3 -0
  34. package/lib/server/devices/zigbee/index.d.ts +1 -0
  35. package/lib/server/devices/zigbee/index.js +1 -0
  36. package/lib/server/devices/zigbee/zigbeeBlitzShp.js +2 -2
  37. package/lib/server/devices/zigbee/zigbeeMagnetContact.d.ts +2 -0
  38. package/lib/server/devices/zigbee/zigbeeMagnetContact.js +11 -3
  39. package/lib/server/devices/zigbee/zigbeeSonoffTemp.d.ts +17 -0
  40. package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +46 -0
  41. package/lib/server/services/Sonos/polly-service.d.ts +1 -1
  42. package/lib/server/services/Sonos/polly-service.js +3 -2
  43. package/lib/server/services/https-service.d.ts +6 -0
  44. package/lib/server/services/https-service.js +12 -0
  45. package/lib/server/services/log-service/log-filter-data.d.ts +2 -0
  46. package/lib/server/services/log-service/log-service.js +6 -0
  47. package/lib/server/services/news-service.d.ts +35 -5
  48. package/lib/server/services/news-service.js +130 -31
  49. package/lib/tsconfig.tsbuildinfo +1 -1
  50. 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(server_1.NewsService.initialize);
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,4 +1,5 @@
1
- export declare class ActuatorSettings {
1
+ import { DeviceSettings } from './deviceSettings';
2
+ export declare class ActuatorSettings extends DeviceSettings {
2
3
  dawnOn: boolean;
3
4
  duskOn: boolean;
4
5
  nightOn: boolean;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActuatorSettings = void 0;
4
- class ActuatorSettings {
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;
@@ -0,0 +1,2 @@
1
+ export declare class DeviceSettings {
2
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeviceSettings = void 0;
4
+ class DeviceSettings {
5
+ }
6
+ exports.DeviceSettings = DeviceSettings;
@@ -1,4 +1,5 @@
1
- export declare class LedSettings {
1
+ import { DeviceSettings } from './deviceSettings';
2
+ export declare class LedSettings extends DeviceSettings {
2
3
  defaultColor: string;
3
4
  dayOn: boolean;
4
5
  dayBrightness: number;
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LedSettings = void 0;
4
- class LedSettings {
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,4 @@
1
+ export declare enum LogSource {
2
+ NotSpecified = 0,
3
+ News = 1
4
+ }
@@ -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
- Buttons = 0,
3
- Heater = 1,
4
- LED = 2,
5
- Lamps = 3,
6
- MotionDetection = 4,
7
- Outlets = 5,
8
- PresenceDetection = 6,
9
- Speaker = 7,
10
- SmokeDetector = 8,
11
- WaterDetectors = 9,
12
- Windows = 10,
13
- Handle = 11,
14
- Vibration = 12,
15
- Shutter = 13,
16
- MagnetContact = 14
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["Buttons"] = 0] = "Buttons";
7
- DeviceClusterType[DeviceClusterType["Heater"] = 1] = "Heater";
8
- DeviceClusterType[DeviceClusterType["LED"] = 2] = "LED";
9
- DeviceClusterType[DeviceClusterType["Lamps"] = 3] = "Lamps";
10
- DeviceClusterType[DeviceClusterType["MotionDetection"] = 4] = "MotionDetection";
11
- DeviceClusterType[DeviceClusterType["Outlets"] = 5] = "Outlets";
12
- DeviceClusterType[DeviceClusterType["PresenceDetection"] = 6] = "PresenceDetection";
13
- DeviceClusterType[DeviceClusterType["Speaker"] = 7] = "Speaker";
14
- DeviceClusterType[DeviceClusterType["SmokeDetector"] = 8] = "SmokeDetector";
15
- DeviceClusterType[DeviceClusterType["WaterDetectors"] = 9] = "WaterDetectors";
16
- DeviceClusterType[DeviceClusterType["Windows"] = 10] = "Windows";
17
- DeviceClusterType[DeviceClusterType["Handle"] = 11] = "Handle";
18
- DeviceClusterType[DeviceClusterType["Vibration"] = 12] = "Vibration";
19
- DeviceClusterType[DeviceClusterType["Shutter"] = 13] = "Shutter";
20
- DeviceClusterType[DeviceClusterType["MagnetContact"] = 14] = "MagnetContact";
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);
@@ -27,5 +27,6 @@ export declare enum DeviceType {
27
27
  ZigbeeSMaBiTMagnetContact = 213,
28
28
  ZigbeeSonoffMotion = 214,
29
29
  ZigbeeAqaraMagnetContact = 215,
30
+ ZigbeeSonoffTemp = 216,
30
31
  Wled = 1001
31
32
  }
@@ -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
- constructor(roomName: string, heaterIds: string[]);
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
- for (const h of this.getHeater()) {
14
+ const sensors = this.getTempSensors();
15
+ for (const h of sensors) {
15
16
  value += h.iTemperatur;
16
17
  }
17
- return Math.round((value / this.getHeater().length) * 10) / 10;
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
- constructor(roomName, heaterIds) {
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 { HmIpHeizung } from './hmIpHeizung';
6
- export declare class HmIpHeizgruppe extends HmIPDevice {
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(): HmIpHeizung[];
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
- private checkAutomaticChange;
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
- const result = [];
68
- for (const dID in devices_1.Devices.alLDevices) {
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,6 +1,6 @@
1
1
  /// <reference types="iobroker" />
2
- import { HmIPDevice } from './hmIpDevice';
3
2
  import { DeviceInfo } from '../DeviceInfo';
3
+ import { HmIPDevice } from './hmIpDevice';
4
4
  export declare class HmIpHeizung extends HmIPDevice {
5
5
  private _temperatur;
6
6
  private _level;
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
2
+ export interface iHumiditySensor extends IoBrokerBaseDevice {
3
+ humidity: number;
4
+ addHumidityCallback(pCallback: (pValue: number) => void): void;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { IoBrokerBaseDevice } from './IoBrokerBaseDevice';
2
+ export interface iTemperaturSensor extends IoBrokerBaseDevice {
3
+ iTemperatur: number;
4
+ sTemperatur: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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);
@@ -17,3 +17,4 @@ export * from './zigbeeMotionSensor';
17
17
  export * from './zigbeeShutter';
18
18
  export * from './zigbeeSMaBiTMagnetContact';
19
19
  export * from './zigbeeSonoffMotion';
20
+ export * from './zigbeeSonoffTemp';
@@ -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 !== this.current ? logLevel_1.LogLevel.Trace : logLevel_1.LogLevel.DeepTrace, `Outlet update, new current: ${state.val}`);
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 !== this.loadPower ? logLevel_1.LogLevel.Trace : logLevel_1.LogLevel.DeepTrace, `Outlet update, new current load power: ${state.val}`);
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;