hoffmation-base 1.0.58 → 1.0.61-alpha.0
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.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/server/config/iConfig.d.ts +10 -0
- package/lib/server/devices/DeviceCapability.d.ts +2 -1
- package/lib/server/devices/DeviceCapability.js +1 -0
- package/lib/server/devices/baseDeviceInterfaces/iBluetoothDetector.d.ts +11 -0
- package/lib/server/devices/baseDeviceInterfaces/iBluetoothDetector.js +2 -0
- package/lib/server/devices/deviceType.d.ts +2 -1
- package/lib/server/devices/deviceType.js +1 -0
- package/lib/server/devices/deviceUpdater.js +4 -0
- package/lib/server/devices/espresense/detectedBluetoothDevice.d.ts +8 -0
- package/lib/server/devices/espresense/detectedBluetoothDevice.js +11 -0
- package/lib/server/devices/espresense/espresenseCoordinator.d.ts +8 -0
- package/lib/server/devices/espresense/espresenseCoordinator.js +34 -0
- package/lib/server/devices/espresense/espresenseDevice.d.ts +30 -0
- package/lib/server/devices/espresense/espresenseDevice.js +114 -0
- package/lib/server/devices/espresense/index.d.ts +4 -0
- package/lib/server/devices/espresense/index.js +20 -0
- package/lib/server/devices/espresense/proximityCallback.d.ts +6 -0
- package/lib/server/devices/espresense/proximityCallback.js +11 -0
- package/lib/server/devices/index.d.ts +1 -0
- package/lib/server/devices/index.js +1 -0
- package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.d.ts +1 -1
- package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.js +2 -2
- package/lib/server/devices/zigbee/zigbeeEuroHeater.d.ts +0 -1
- package/lib/server/devices/zigbee/zigbeeEuroHeater.js +7 -5
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -3
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Devices, iConfig, ioBrokerMain, iSpeaker } from './server';
|
|
2
2
|
export * from './models/index';
|
|
3
3
|
export * from './server/index';
|
|
4
|
+
export * from './liquid-pid';
|
|
4
5
|
export declare class HoffmationInitializationObject {
|
|
5
6
|
config: iConfig;
|
|
6
7
|
constructor(config: iConfig);
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,7 @@ const server_1 = require("./server");
|
|
|
19
19
|
const models_1 = require("./models");
|
|
20
20
|
__exportStar(require("./models/index"), exports);
|
|
21
21
|
__exportStar(require("./server/index"), exports);
|
|
22
|
+
__exportStar(require("./liquid-pid"), exports);
|
|
22
23
|
class HoffmationInitializationObject {
|
|
23
24
|
constructor(config) {
|
|
24
25
|
this.config = config;
|
|
@@ -20,9 +20,19 @@ export interface iRestSettings {
|
|
|
20
20
|
active: boolean;
|
|
21
21
|
port?: number;
|
|
22
22
|
}
|
|
23
|
+
export interface iEspresenseSettings {
|
|
24
|
+
mqttInstance: number;
|
|
25
|
+
roomMapping: {
|
|
26
|
+
[devName: string]: string;
|
|
27
|
+
};
|
|
28
|
+
deviceNaming: {
|
|
29
|
+
[folderId: string]: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
23
32
|
export interface iConfig {
|
|
24
33
|
asusConfig?: iAsusConfig;
|
|
25
34
|
daikin?: iDaikinSettings;
|
|
35
|
+
espresense?: iEspresenseSettings;
|
|
26
36
|
wattagePrice?: number;
|
|
27
37
|
injectWattagePrice?: number;
|
|
28
38
|
ioBrokerUrl: string;
|
|
@@ -20,4 +20,5 @@ var DeviceCapability;
|
|
|
20
20
|
DeviceCapability[DeviceCapability["speaker"] = 14] = "speaker";
|
|
21
21
|
DeviceCapability[DeviceCapability["handleSensor"] = 15] = "handleSensor";
|
|
22
22
|
DeviceCapability[DeviceCapability["batteryDriven"] = 16] = "batteryDriven";
|
|
23
|
+
DeviceCapability[DeviceCapability["bluetoothDetector"] = 17] = "bluetoothDetector";
|
|
23
24
|
})(DeviceCapability = exports.DeviceCapability || (exports.DeviceCapability = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { iBaseDevice } from './iBaseDevice';
|
|
2
|
+
import { ProximityCallback } from '../espresense';
|
|
3
|
+
export interface iBluetoothDetector extends iBaseDevice {
|
|
4
|
+
/**
|
|
5
|
+
* Add callback to react on a specified device entering/leaving a given zone
|
|
6
|
+
* @param cb
|
|
7
|
+
*/
|
|
8
|
+
addProximityCallback(cb: ProximityCallback): void;
|
|
9
|
+
distanceOfDevice(deviceName: string): number | undefined;
|
|
10
|
+
isDevicePresent(deviceName: string, maxDistance: number): boolean;
|
|
11
|
+
}
|
|
@@ -40,4 +40,5 @@ var DeviceType;
|
|
|
40
40
|
DeviceType[DeviceType["WledDevice"] = 1001] = "WledDevice";
|
|
41
41
|
DeviceType[DeviceType["Daikin"] = 2001] = "Daikin";
|
|
42
42
|
DeviceType[DeviceType["Sonos"] = 3001] = "Sonos";
|
|
43
|
+
DeviceType[DeviceType["Espresense"] = 4001] = "Espresense";
|
|
43
44
|
})(DeviceType = exports.DeviceType || (exports.DeviceType = {}));
|
|
@@ -4,6 +4,7 @@ exports.DeviceUpdater = void 0;
|
|
|
4
4
|
const services_1 = require("../services");
|
|
5
5
|
const models_1 = require("../../models");
|
|
6
6
|
const devices_1 = require("./devices");
|
|
7
|
+
const espresense_1 = require("./espresense");
|
|
7
8
|
class DeviceUpdater {
|
|
8
9
|
constructor(pDevices) {
|
|
9
10
|
this.devices = pDevices;
|
|
@@ -25,6 +26,9 @@ class DeviceUpdater {
|
|
|
25
26
|
const idSplit = id.split('.');
|
|
26
27
|
if (idSplit.length < 2)
|
|
27
28
|
return;
|
|
29
|
+
if (idSplit[0] == 'mqtt' && idSplit[2] == 'espresense') {
|
|
30
|
+
espresense_1.EspresenseCoordinator.update(idSplit, state);
|
|
31
|
+
}
|
|
28
32
|
const device = devices_1.Devices.alLDevices[`${idSplit[0]}-${idSplit[2]}`];
|
|
29
33
|
if (typeof device === 'undefined' || device.update === undefined) {
|
|
30
34
|
return;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DetectedBluetoothDevice = void 0;
|
|
4
|
+
class DetectedBluetoothDevice {
|
|
5
|
+
constructor(id, name) {
|
|
6
|
+
this.id = id;
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.lastUpdate = 0;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.DetectedBluetoothDevice = DetectedBluetoothDevice;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="iobroker" />
|
|
2
|
+
import { iEspresenseSettings } from '../../config';
|
|
3
|
+
export declare class EspresenseCoordinator {
|
|
4
|
+
static baseId: string;
|
|
5
|
+
private static espDeviceMap;
|
|
6
|
+
static initialize(settings: iEspresenseSettings): void;
|
|
7
|
+
static update(idSplit: string[], state: ioBroker.State): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EspresenseCoordinator = void 0;
|
|
4
|
+
const models_1 = require("../../../models");
|
|
5
|
+
const services_1 = require("../../services");
|
|
6
|
+
const espresenseDevice_1 = require("./espresenseDevice");
|
|
7
|
+
class EspresenseCoordinator {
|
|
8
|
+
static initialize(settings) {
|
|
9
|
+
this.baseId = `mqtt.${settings.mqttInstance}.espresense`;
|
|
10
|
+
for (const espDevName of Object.keys(settings.roomMapping)) {
|
|
11
|
+
const roomName = settings.roomMapping[espDevName];
|
|
12
|
+
const room = services_1.API.getRoom(roomName);
|
|
13
|
+
if (room === undefined) {
|
|
14
|
+
services_1.ServerLogService.writeLog(models_1.LogLevel.Error, `Declared Espresense Room "${roomName}" for Espresense "${espDevName}" not found`);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const espDev = new espresenseDevice_1.EspresenseDevice(espDevName, room);
|
|
18
|
+
this.espDeviceMap.set(espDevName, espDev);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static update(idSplit, state) {
|
|
22
|
+
if (idSplit.length < 6 || idSplit[3] !== 'devices') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const devName = idSplit[5];
|
|
26
|
+
const dev = this.espDeviceMap.get(devName !== null && devName !== void 0 ? devName : '');
|
|
27
|
+
if (dev === undefined) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
dev.update(idSplit[4], state);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.EspresenseCoordinator = EspresenseCoordinator;
|
|
34
|
+
EspresenseCoordinator.espDeviceMap = new Map();
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="iobroker" />
|
|
2
|
+
import { iBaseDevice } from '../baseDeviceInterfaces';
|
|
3
|
+
import { iBluetoothDetector } from '../baseDeviceInterfaces/iBluetoothDetector';
|
|
4
|
+
import { DeviceCapability } from '../DeviceCapability';
|
|
5
|
+
import { LogLevel, RoomBase } from '../../../models';
|
|
6
|
+
import { DeviceInfo } from '../DeviceInfo';
|
|
7
|
+
import { DeviceType } from '../deviceType';
|
|
8
|
+
import { LogDebugType } from '../../services';
|
|
9
|
+
import { ProximityCallback } from './proximityCallback';
|
|
10
|
+
export declare class EspresenseDevice implements iBaseDevice, iBluetoothDetector {
|
|
11
|
+
readonly deviceCapabilities: DeviceCapability[];
|
|
12
|
+
deviceType: DeviceType;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
room: RoomBase | undefined;
|
|
15
|
+
private deviceMap;
|
|
16
|
+
private proximityCallback;
|
|
17
|
+
constructor(name: string, room: RoomBase);
|
|
18
|
+
protected _info: DeviceInfo;
|
|
19
|
+
get info(): DeviceInfo;
|
|
20
|
+
set info(info: DeviceInfo);
|
|
21
|
+
get id(): string;
|
|
22
|
+
distanceOfDevice(deviceName: string): number | undefined;
|
|
23
|
+
isDevicePresent(deviceName: string, maxDistance: number): boolean;
|
|
24
|
+
update(devName: string, state: ioBroker.State): void;
|
|
25
|
+
log(level: LogLevel, message: string, debugType?: LogDebugType): void;
|
|
26
|
+
toJSON(): Partial<iBaseDevice>;
|
|
27
|
+
addProximityCallback(cb: ProximityCallback): void;
|
|
28
|
+
private addDeviceTracking;
|
|
29
|
+
private checkCbs;
|
|
30
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EspresenseDevice = void 0;
|
|
4
|
+
const DeviceCapability_1 = require("../DeviceCapability");
|
|
5
|
+
const models_1 = require("../../../models");
|
|
6
|
+
const DeviceInfo_1 = require("../DeviceInfo");
|
|
7
|
+
const deviceType_1 = require("../deviceType");
|
|
8
|
+
const services_1 = require("../../services");
|
|
9
|
+
const devices_1 = require("../devices");
|
|
10
|
+
const detectedBluetoothDevice_1 = require("./detectedBluetoothDevice");
|
|
11
|
+
class EspresenseDevice {
|
|
12
|
+
constructor(name, room) {
|
|
13
|
+
this.deviceCapabilities = [DeviceCapability_1.DeviceCapability.bluetoothDetector];
|
|
14
|
+
this.deviceType = deviceType_1.DeviceType.Espresense;
|
|
15
|
+
this.deviceMap = new Map();
|
|
16
|
+
this.proximityCallback = new Map();
|
|
17
|
+
this.name = name;
|
|
18
|
+
this._info = new DeviceInfo_1.DeviceInfo();
|
|
19
|
+
this._info.fullName = `Espresense ${room.roomName} ${name}`;
|
|
20
|
+
this._info.customName = `Espresense ${name}`;
|
|
21
|
+
this._info.room = room.roomName;
|
|
22
|
+
this._info.allDevicesKey = `espresense-${room.roomName}-${name}`;
|
|
23
|
+
devices_1.Devices.alLDevices[this._info.allDevicesKey] = this;
|
|
24
|
+
}
|
|
25
|
+
get info() {
|
|
26
|
+
return this._info;
|
|
27
|
+
}
|
|
28
|
+
set info(info) {
|
|
29
|
+
this._info = info;
|
|
30
|
+
}
|
|
31
|
+
get id() {
|
|
32
|
+
var _a;
|
|
33
|
+
return (_a = this.info.allDevicesKey) !== null && _a !== void 0 ? _a : `espresense-${this.info.room}-${this.info.customName}`;
|
|
34
|
+
}
|
|
35
|
+
distanceOfDevice(deviceName) {
|
|
36
|
+
for (const dev of this.deviceMap.values()) {
|
|
37
|
+
if (dev.name == deviceName) {
|
|
38
|
+
return dev.distance;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
isDevicePresent(deviceName, maxDistance) {
|
|
44
|
+
var _a;
|
|
45
|
+
return ((_a = this.distanceOfDevice(deviceName)) !== null && _a !== void 0 ? _a : 99) < maxDistance;
|
|
46
|
+
}
|
|
47
|
+
update(devName, state) {
|
|
48
|
+
let data = null;
|
|
49
|
+
try {
|
|
50
|
+
data = JSON.parse(state.val);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
this.log(models_1.LogLevel.Error, `Recieved malformed update data: ${state.val}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let dev = this.deviceMap.get(devName);
|
|
57
|
+
if (dev === undefined) {
|
|
58
|
+
dev = this.addDeviceTracking(devName, 'Unknown');
|
|
59
|
+
}
|
|
60
|
+
dev.lastUpdate = services_1.Utils.nowMS();
|
|
61
|
+
dev.previousDistance = dev.distance;
|
|
62
|
+
dev.distance = data.distance;
|
|
63
|
+
this.checkCbs(dev);
|
|
64
|
+
}
|
|
65
|
+
log(level, message, debugType = services_1.LogDebugType.None) {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
services_1.ServerLogService.writeLog(level, `${this.name}: ${message}`, {
|
|
68
|
+
debugType: debugType,
|
|
69
|
+
room: (_b = (_a = this.room) === null || _a === void 0 ? void 0 : _a.roomName) !== null && _b !== void 0 ? _b : '',
|
|
70
|
+
deviceId: this.name,
|
|
71
|
+
deviceName: this.name,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
toJSON() {
|
|
75
|
+
return services_1.Utils.jsonFilter(this);
|
|
76
|
+
}
|
|
77
|
+
addProximityCallback(cb) {
|
|
78
|
+
let currentValue = this.proximityCallback.get(cb.deviceName);
|
|
79
|
+
if (currentValue == undefined) {
|
|
80
|
+
currentValue = [];
|
|
81
|
+
}
|
|
82
|
+
currentValue.push(cb);
|
|
83
|
+
this.proximityCallback.set(cb.deviceName, currentValue);
|
|
84
|
+
}
|
|
85
|
+
addDeviceTracking(devName, translatedName = 'Unknown') {
|
|
86
|
+
const dev = new detectedBluetoothDevice_1.DetectedBluetoothDevice(devName, translatedName);
|
|
87
|
+
this.deviceMap.set(devName, dev);
|
|
88
|
+
return dev;
|
|
89
|
+
}
|
|
90
|
+
checkCbs(dev) {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
const cbs = this.proximityCallback.get(dev.name);
|
|
93
|
+
if (cbs === undefined) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const distance = dev.distance;
|
|
97
|
+
const hasPreviousDstance = dev.previousDistance !== undefined;
|
|
98
|
+
for (const cb of cbs) {
|
|
99
|
+
if (distance === undefined) {
|
|
100
|
+
if (hasPreviousDstance) {
|
|
101
|
+
cb.callback(false, undefined);
|
|
102
|
+
}
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (distance > cb.distanceTrigger && ((_a = dev.previousDistance) !== null && _a !== void 0 ? _a : 99) < cb.distanceTrigger) {
|
|
106
|
+
cb.callback(false, distance);
|
|
107
|
+
}
|
|
108
|
+
else if (distance < cb.distanceTrigger && ((_b = dev.previousDistance) !== null && _b !== void 0 ? _b : 0) > cb.distanceTrigger) {
|
|
109
|
+
cb.callback(true, distance);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.EspresenseDevice = EspresenseDevice;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./detectedBluetoothDevice"), exports);
|
|
18
|
+
__exportStar(require("./espresenseCoordinator"), exports);
|
|
19
|
+
__exportStar(require("./espresenseDevice"), exports);
|
|
20
|
+
__exportStar(require("./proximityCallback"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class ProximityCallback {
|
|
2
|
+
readonly deviceName: string;
|
|
3
|
+
readonly distanceTrigger: number;
|
|
4
|
+
readonly callback: (present: boolean, distance: number | undefined) => void;
|
|
5
|
+
constructor(deviceName: string, distanceTrigger: number, callback: (present: boolean, distance: number | undefined) => void);
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProximityCallback = void 0;
|
|
4
|
+
class ProximityCallback {
|
|
5
|
+
constructor(deviceName, distanceTrigger, callback) {
|
|
6
|
+
this.deviceName = deviceName;
|
|
7
|
+
this.distanceTrigger = distanceTrigger;
|
|
8
|
+
this.callback = callback;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ProximityCallback = ProximityCallback;
|
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./baseDeviceInterfaces/index"), exports);
|
|
18
18
|
__exportStar(require("./button/index"), exports);
|
|
19
|
+
__exportStar(require("./espresense/index"), exports);
|
|
19
20
|
__exportStar(require("./groups/index"), exports);
|
|
20
21
|
__exportStar(require("./hmIPDevices/index"), exports);
|
|
21
22
|
__exportStar(require("./jsObject/index"), exports);
|
|
@@ -5,7 +5,7 @@ import { iBatteryDevice, iHeater } from '../../baseDeviceInterfaces';
|
|
|
5
5
|
import { HeaterSettings, TemperatureSettings } from '../../../../models';
|
|
6
6
|
import { DeviceType } from '../../deviceType';
|
|
7
7
|
import { IoBrokerDeviceInfo } from '../../IoBrokerDeviceInfo';
|
|
8
|
-
import { PIDController } from 'liquid-pid';
|
|
8
|
+
import { PIDController } from '../../../../liquid-pid';
|
|
9
9
|
export declare class ZigbeeHeater extends ZigbeeDevice implements iHeater, iBatteryDevice {
|
|
10
10
|
settings: HeaterSettings;
|
|
11
11
|
battery: number;
|
|
@@ -6,7 +6,7 @@ const baseDeviceInterfaces_1 = require("../../baseDeviceInterfaces");
|
|
|
6
6
|
const models_1 = require("../../../../models");
|
|
7
7
|
const services_1 = require("../../../services");
|
|
8
8
|
const DeviceCapability_1 = require("../../DeviceCapability");
|
|
9
|
-
const liquid_pid_1 = require("liquid-pid");
|
|
9
|
+
const liquid_pid_1 = require("../../../../liquid-pid");
|
|
10
10
|
class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
11
11
|
constructor(pInfo, pType) {
|
|
12
12
|
super(pInfo, pType);
|
|
@@ -16,7 +16,7 @@ class ZigbeeHeater extends zigbeeDevice_1.ZigbeeDevice {
|
|
|
16
16
|
this._initialSeasonCheckDone = false;
|
|
17
17
|
this._level = 0;
|
|
18
18
|
this._setPointTemperaturID = '';
|
|
19
|
-
this._temperatur =
|
|
19
|
+
this._temperatur = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
20
20
|
this._desiredTemperatur = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
21
21
|
this._pidController = new liquid_pid_1.PIDController({
|
|
22
22
|
temp: {
|
|
@@ -4,7 +4,6 @@ import { IoBrokerDeviceInfo } from '../IoBrokerDeviceInfo';
|
|
|
4
4
|
export declare class ZigbeeEuroHeater extends ZigbeeHeater {
|
|
5
5
|
private _setLocalTempCalibrationId;
|
|
6
6
|
private _targetTempVal;
|
|
7
|
-
private _localTempVal;
|
|
8
7
|
private _localDiffTempVal;
|
|
9
8
|
private _setModeId;
|
|
10
9
|
private _valvePosId;
|
|
@@ -10,7 +10,6 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
|
|
|
10
10
|
constructor(pInfo) {
|
|
11
11
|
super(pInfo, deviceType_1.DeviceType.ZigbeeEuroHeater);
|
|
12
12
|
this._targetTempVal = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
13
|
-
this._localTempVal = baseDeviceInterfaces_1.UNDEFINED_TEMP_VALUE;
|
|
14
13
|
this._localDiffTempVal = 0;
|
|
15
14
|
this._lastRecalc = 0;
|
|
16
15
|
this._mode = 1;
|
|
@@ -55,10 +54,10 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
|
|
|
55
54
|
const tempChangeMs = (_b = (_a = this.stateMap.get('local_temp')) === null || _a === void 0 ? void 0 : _a.lc) !== null && _b !== void 0 ? _b : 0;
|
|
56
55
|
const calibChangeMs = (_d = (_c = this.stateMap.get('local_temp_calibration')) === null || _c === void 0 ? void 0 : _c.lc) !== null && _d !== void 0 ? _d : 0;
|
|
57
56
|
if (tempChangeMs < calibChangeMs) {
|
|
58
|
-
return this._targetTempVal - (this.
|
|
57
|
+
return this._targetTempVal - (this._temperatur + this._localDiffTempVal);
|
|
59
58
|
}
|
|
60
59
|
else {
|
|
61
|
-
return this._targetTempVal - this.
|
|
60
|
+
return this._targetTempVal - this._temperatur;
|
|
62
61
|
}
|
|
63
62
|
}
|
|
64
63
|
update(idSplit, state, initial = false) {
|
|
@@ -69,7 +68,7 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
|
|
|
69
68
|
break;
|
|
70
69
|
case 'local_temp':
|
|
71
70
|
this.log(models_1.LogLevel.Trace, `Euro Valve Local_Temp Update for ${this.info.customName} to "${state.val}"`);
|
|
72
|
-
this.
|
|
71
|
+
this._temperatur = state.val;
|
|
73
72
|
if (!initial)
|
|
74
73
|
this.checkTempDiff();
|
|
75
74
|
break;
|
|
@@ -78,6 +77,9 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
|
|
|
78
77
|
this._localDiffTempVal = state.val;
|
|
79
78
|
if (!initial)
|
|
80
79
|
this.checkTempDiff();
|
|
80
|
+
if (initial && state.val !== 0) {
|
|
81
|
+
this.setLocalDiff(0);
|
|
82
|
+
}
|
|
81
83
|
break;
|
|
82
84
|
case 'spz_trv_mode':
|
|
83
85
|
this.log(models_1.LogLevel.Trace, `Euro Valve mode Update for ${this.info.customName} to "${state.val}"`);
|
|
@@ -138,7 +140,7 @@ class ZigbeeEuroHeater extends BaseDevices_1.ZigbeeHeater {
|
|
|
138
140
|
}
|
|
139
141
|
const newLocalDiff = Math.sign(desiredDiff) * -9;
|
|
140
142
|
this.setLocalDiff(newLocalDiff);
|
|
141
|
-
this.setTargetTemperatur(this.
|
|
143
|
+
this.setTargetTemperatur(this._temperatur + this._roomTemperatur + newLocalDiff + this.desiredTemperature);
|
|
142
144
|
}
|
|
143
145
|
setLocalDiff(newLocalDiff) {
|
|
144
146
|
this.log(models_1.LogLevel.Debug, `Setting new Local Calibration Diff (${newLocalDiff}) for Euro Valve`);
|