homebridge-easy-mqtt 1.4.1-beta.1 → 1.5.0-beta.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/CHANGELOG.md +8 -1
- package/README.md +84 -5
- package/config.schema.json +76 -1
- package/dist/accessory/abstract/base.d.ts +2 -2
- package/dist/accessory/abstract/base.js +5 -25
- package/dist/accessory/abstract/base.js.map +1 -1
- package/dist/accessory/abstract/common.d.ts +17 -6
- package/dist/accessory/abstract/common.js +136 -28
- package/dist/accessory/abstract/common.js.map +1 -1
- package/dist/accessory/abstract/mqtt.d.ts +2 -0
- package/dist/accessory/abstract/mqtt.js +13 -12
- package/dist/accessory/abstract/mqtt.js.map +1 -1
- package/dist/accessory/addons/filter.d.ts +0 -1
- package/dist/accessory/addons/filter.js +1 -13
- package/dist/accessory/addons/filter.js.map +1 -1
- package/dist/accessory/characteristic/characteristic.d.ts +3 -0
- package/dist/accessory/characteristic/characteristic.js +23 -0
- package/dist/accessory/characteristic/characteristic.js.map +1 -0
- package/dist/accessory/characteristic/custom.d.ts +1 -0
- package/dist/accessory/characteristic/custom.js +3 -0
- package/dist/accessory/characteristic/custom.js.map +1 -1
- package/dist/accessory/characteristic/eve.d.ts +6 -0
- package/dist/accessory/characteristic/eve.js +24 -0
- package/dist/accessory/characteristic/eve.js.map +1 -0
- package/dist/accessory/climate/active.d.ts +0 -4
- package/dist/accessory/climate/active.js +4 -36
- package/dist/accessory/climate/active.js.map +1 -1
- package/dist/accessory/climate/fan2.d.ts +1 -12
- package/dist/accessory/climate/fan2.js +22 -101
- package/dist/accessory/climate/fan2.js.map +1 -1
- package/dist/accessory/climate/heaterCooler.d.ts +1 -11
- package/dist/accessory/climate/heaterCooler.js +24 -100
- package/dist/accessory/climate/heaterCooler.js.map +1 -1
- package/dist/accessory/climate/purifier.d.ts +1 -11
- package/dist/accessory/climate/purifier.js +20 -90
- package/dist/accessory/climate/purifier.js.map +1 -1
- package/dist/accessory/climate/temperatureControl.d.ts +2 -1
- package/dist/accessory/climate/temperatureControl.js +3 -3
- package/dist/accessory/climate/temperatureControl.js.map +1 -1
- package/dist/accessory/climate/thermostat.d.ts +1 -9
- package/dist/accessory/climate/thermostat.js +24 -77
- package/dist/accessory/climate/thermostat.js.map +1 -1
- package/dist/accessory/garage.d.ts +1 -9
- package/dist/accessory/garage.js +19 -85
- package/dist/accessory/garage.js.map +1 -1
- package/dist/accessory/lock.d.ts +1 -5
- package/dist/accessory/lock.js +23 -57
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.d.ts +1 -2
- package/dist/accessory/onoff/lightbulb.js +7 -13
- package/dist/accessory/onoff/lightbulb.js.map +1 -1
- package/dist/accessory/onoff/onoff.d.ts +2 -4
- package/dist/accessory/onoff/onoff.js +28 -32
- package/dist/accessory/onoff/onoff.js.map +1 -1
- package/dist/accessory/onoff/outlet.d.ts +1 -1
- package/dist/accessory/onoff/outlet.js +3 -3
- package/dist/accessory/onoff/outlet.js.map +1 -1
- package/dist/accessory/onoff/switch.d.ts +1 -2
- package/dist/accessory/onoff/switch.js +0 -3
- package/dist/accessory/onoff/switch.js.map +1 -1
- package/dist/accessory/position/blind.d.ts +1 -2
- package/dist/accessory/position/blind.js +5 -11
- package/dist/accessory/position/blind.js.map +1 -1
- package/dist/accessory/position/position.d.ts +0 -7
- package/dist/accessory/position/position.js +11 -62
- package/dist/accessory/position/position.js.map +1 -1
- package/dist/accessory/security.d.ts +3 -7
- package/dist/accessory/security.js +37 -69
- package/dist/accessory/security.js.map +1 -1
- package/dist/accessory/sensor/air.d.ts +1 -5
- package/dist/accessory/sensor/air.js +14 -46
- package/dist/accessory/sensor/air.js.map +1 -1
- package/dist/accessory/sensor/carbonDioxide.d.ts +1 -1
- package/dist/accessory/sensor/carbonDioxide.js +3 -3
- package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
- package/dist/accessory/sensor/carbonMonoxide.d.ts +1 -1
- package/dist/accessory/sensor/carbonMonoxide.js +3 -3
- package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
- package/dist/accessory/sensor/contact.d.ts +1 -1
- package/dist/accessory/sensor/contact.js +18 -5
- package/dist/accessory/sensor/contact.js.map +1 -1
- package/dist/accessory/sensor/humidity.d.ts +1 -1
- package/dist/accessory/sensor/humidity.js +7 -4
- package/dist/accessory/sensor/humidity.js.map +1 -1
- package/dist/accessory/sensor/leak.d.ts +1 -1
- package/dist/accessory/sensor/leak.js +3 -3
- package/dist/accessory/sensor/leak.js.map +1 -1
- package/dist/accessory/sensor/light.d.ts +1 -1
- package/dist/accessory/sensor/light.js +3 -3
- package/dist/accessory/sensor/light.js.map +1 -1
- package/dist/accessory/sensor/motion.d.ts +1 -1
- package/dist/accessory/sensor/motion.js +7 -4
- package/dist/accessory/sensor/motion.js.map +1 -1
- package/dist/accessory/sensor/occupancy.d.ts +1 -1
- package/dist/accessory/sensor/occupancy.js +3 -3
- package/dist/accessory/sensor/occupancy.js.map +1 -1
- package/dist/accessory/sensor/sensor.d.ts +0 -2
- package/dist/accessory/sensor/sensor.js +2 -26
- package/dist/accessory/sensor/sensor.js.map +1 -1
- package/dist/accessory/sensor/smoke.d.ts +1 -1
- package/dist/accessory/sensor/smoke.js +3 -3
- package/dist/accessory/sensor/smoke.js.map +1 -1
- package/dist/accessory/sensor/temperature.d.ts +1 -1
- package/dist/accessory/sensor/temperature.js +7 -4
- package/dist/accessory/sensor/temperature.js.map +1 -1
- package/dist/accessory/valve.d.ts +1 -5
- package/dist/accessory/valve.js +7 -41
- package/dist/accessory/valve.js.map +1 -1
- package/dist/homebridge/platform.js +8 -4
- package/dist/homebridge/platform.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/homebridge-ui/public/ui.js +1 -1
- package/dist/i18n/en.d.ts +19 -5
- package/dist/i18n/en.js +20 -6
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts +19 -5
- package/dist/i18n/i18n.d.ts +19 -5
- package/dist/i18n/it.d.ts +19 -5
- package/dist/i18n/ro.d.ts +19 -5
- package/dist/i18n/template.d.ts +19 -5
- package/dist/i18n/vi.d.ts +19 -5
- package/dist/model/enums.d.ts +12 -1
- package/dist/model/enums.js +12 -0
- package/dist/model/enums.js.map +1 -1
- package/dist/model/history.d.ts +32 -0
- package/dist/model/history.js +128 -0
- package/dist/model/history.js.map +1 -0
- package/dist/model/mqtt.d.ts +1 -0
- package/dist/model/mqtt.js +37 -11
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +15 -3
- package/package.json +2 -1
|
@@ -3,33 +3,54 @@ import { strings } from '../i18n/i18n.js';
|
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../model/enums.js';
|
|
4
4
|
import { LogType } from '../tools/log.js';
|
|
5
5
|
export class SecuritySystemAccessory extends BaseAccessory {
|
|
6
|
-
|
|
6
|
+
STATES;
|
|
7
|
+
CURRENT_STRINGS;
|
|
8
|
+
getAccessoryType() {
|
|
9
|
+
return AccessoryType.SecuritySystem;
|
|
10
|
+
}
|
|
7
11
|
constructor(dependency) {
|
|
8
12
|
super(dependency);
|
|
9
|
-
this.
|
|
13
|
+
this.STATES = new Map([
|
|
10
14
|
['valueArmStay', dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM],
|
|
11
15
|
['valueArmAway', dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM],
|
|
12
16
|
['valueArmNight', dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM],
|
|
13
17
|
['valueDisarm', dependency.Characteristic.SecuritySystemCurrentState.DISARMED],
|
|
14
18
|
['valueAlarmTriggered', dependency.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED],
|
|
15
19
|
]);
|
|
16
|
-
|
|
20
|
+
this.CURRENT_STRINGS = new Map([
|
|
21
|
+
[dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM, strings.security.stateStay],
|
|
22
|
+
[dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM, strings.security.stateAway],
|
|
23
|
+
[dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM, strings.security.stateNight],
|
|
24
|
+
[dependency.Characteristic.SecuritySystemCurrentState.DISARMED, strings.security.stateDisarmed],
|
|
25
|
+
[dependency.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED, strings.security.stateTriggered],
|
|
26
|
+
]);
|
|
27
|
+
const validCurrentStates = Array.from(this.STATES.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
17
28
|
if (validCurrentStates.length === 0) {
|
|
18
29
|
this.log.error(strings.security.noStateValues, this.name);
|
|
19
30
|
return;
|
|
20
31
|
}
|
|
21
|
-
this.setup(HKCharacteristicKey.SecuritySystemCurrentState, dependency.Characteristic.SecuritySystemCurrentState.DISARMED, 'topicGetCurrentSecurityState', this.onCurrentStateUpdate.bind(this), true)?.setProps({ validValues: validCurrentStates.map((key) => this.
|
|
32
|
+
this.setup(HKCharacteristicKey.SecuritySystemCurrentState, dependency.Characteristic.SecuritySystemCurrentState.DISARMED, 'topicGetCurrentSecurityState', this.onCurrentStateUpdate.bind(this), true)?.setProps({ validValues: validCurrentStates.map((key) => this.STATES.get(key)) });
|
|
22
33
|
const validTargetStates = validCurrentStates.filter((key) => key !== 'valueAlarmTriggered');
|
|
23
|
-
|
|
34
|
+
const futureStrings = new Map([
|
|
35
|
+
[dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM, strings.security.stateStayFuture],
|
|
36
|
+
[dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM, strings.security.stateAwayFuture],
|
|
37
|
+
[dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM, strings.security.stateNightFuture],
|
|
38
|
+
[dependency.Characteristic.SecuritySystemCurrentState.DISARMED, strings.security.stateDisarmFuture],
|
|
39
|
+
]);
|
|
40
|
+
this.setup(HKCharacteristicKey.SecuritySystemTargetState, dependency.Characteristic.SecuritySystemTargetState.DISARM, 'topicGetTargetSecurityState', this.bindOnUpdateState(HKCharacteristicKey.SecuritySystemTargetState, this.STATES, futureStrings, strings.security.unknownValue), true, 'topicSetTargetSecurityState', this.bindOnSetState(HKCharacteristicKey.SecuritySystemTargetState, 'topicSetTargetSecurityState', this.STATES, futureStrings, strings.security.badValue))?.setProps({ validValues: validTargetStates.map((key) => this.STATES.get(key)) });
|
|
24
41
|
this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.StatusTampered, 'valueTampered', strings.error.isTampered, strings.error.notTampered), false);
|
|
25
42
|
this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault), false);
|
|
26
43
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
44
|
+
async onCurrentStateUpdate(_topic, value) {
|
|
45
|
+
let current;
|
|
46
|
+
for (const valueKey of this.STATES.keys()) {
|
|
47
|
+
if (value === this.getPrimitiveValue(valueKey, false)) {
|
|
48
|
+
current = this.STATES.get(valueKey);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
32
52
|
if (current === undefined) {
|
|
53
|
+
this.logIfDesired(strings.security.unknownValue, `'${value}'`);
|
|
33
54
|
return;
|
|
34
55
|
}
|
|
35
56
|
if (current <= this.Characteristic.SecuritySystemTargetState.DISARM) {
|
|
@@ -38,68 +59,15 @@ export class SecuritySystemAccessory extends BaseAccessory {
|
|
|
38
59
|
if (!this.onUpdate(HKCharacteristicKey.SecuritySystemCurrentState, current)) {
|
|
39
60
|
return;
|
|
40
61
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.logIfDesired(this.stateStringForCV(current));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async onTargetStateUpdate(topic, value) {
|
|
49
|
-
const target = this.toCVState(value);
|
|
50
|
-
if (target === undefined) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
this.onUpdate(HKCharacteristicKey.SecuritySystemTargetState, target, this.stateStringForCV(target, true));
|
|
54
|
-
}
|
|
55
|
-
async onSetTargetState(value) {
|
|
56
|
-
const target = this.fromCVState(value);
|
|
57
|
-
if (target === undefined) {
|
|
62
|
+
const logString = this.CURRENT_STRINGS.get(current);
|
|
63
|
+
if (!logString) {
|
|
58
64
|
return;
|
|
59
65
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
fromCVState(value) {
|
|
63
|
-
let primative = undefined;
|
|
64
|
-
this.STATE_MAP.forEach((test, key) => {
|
|
65
|
-
if (value === test) {
|
|
66
|
-
primative = this.getPrimitiveValue(key);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
if (primative === undefined) {
|
|
70
|
-
this.log.error(strings.security.badValue, this.name, `'${value}'`);
|
|
71
|
-
}
|
|
72
|
-
return primative;
|
|
73
|
-
}
|
|
74
|
-
toCVState(value) {
|
|
75
|
-
switch (value) {
|
|
76
|
-
case this.getPrimitiveValue('valueArmStay', false):
|
|
77
|
-
return this.STATE_MAP.get('valueArmStay');
|
|
78
|
-
case this.getPrimitiveValue('valueArmAway', false):
|
|
79
|
-
return this.STATE_MAP.get('valueArmAway');
|
|
80
|
-
case this.getPrimitiveValue('valueArmNight', false):
|
|
81
|
-
return this.STATE_MAP.get('valueArmNight');
|
|
82
|
-
case this.getPrimitiveValue('valueDisarm', false):
|
|
83
|
-
return this.STATE_MAP.get('valueDisarm');
|
|
84
|
-
case this.getPrimitiveValue('valueAlarmTriggered', false):
|
|
85
|
-
return this.STATE_MAP.get('valueAlarmTriggered');
|
|
66
|
+
if (current === this.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED) {
|
|
67
|
+
this.logIfDesired(LogType.ERROR, logString);
|
|
86
68
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
stateStringForCV(state, future = false) {
|
|
90
|
-
switch (state) {
|
|
91
|
-
case this.Characteristic.SecuritySystemCurrentState.STAY_ARM:
|
|
92
|
-
return future ? strings.security.stateStayFuture : strings.security.stateStay;
|
|
93
|
-
case this.Characteristic.SecuritySystemCurrentState.AWAY_ARM:
|
|
94
|
-
return future ? strings.security.stateAwayFuture : strings.security.stateAway;
|
|
95
|
-
case this.Characteristic.SecuritySystemCurrentState.NIGHT_ARM:
|
|
96
|
-
return future ? strings.security.stateNightFuture : strings.security.stateNight;
|
|
97
|
-
case this.Characteristic.SecuritySystemCurrentState.DISARMED:
|
|
98
|
-
return future ? strings.security.stateDisarmFuture : strings.security.stateDisarmed;
|
|
99
|
-
case this.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED:
|
|
100
|
-
return strings.security.stateTriggered;
|
|
101
|
-
default:
|
|
102
|
-
return strings.security.stateUnknown;
|
|
69
|
+
else {
|
|
70
|
+
this.logIfDesired(logString);
|
|
103
71
|
}
|
|
104
72
|
}
|
|
105
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/accessory/security.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,uBAAwB,SAAQ,aAA6B;IAEvD,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/accessory/security.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,uBAAwB,SAAQ,aAA6B;IAEvD,MAAM,CAAoC;IAC1C,eAAe,CAAmC;IAEzD,gBAAgB;QACxB,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,YAAY,UAAmD;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC;YACpB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC/E,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC/E,CAAC,eAAe,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC;YACjF,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC9E,CAAC,qBAAqB,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,CAAC;SAC9F,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC;YAC7B,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;SACxG,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QACtH,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EACtH,8BAA8B,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAC3E,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;QAErF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;QAE5F,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;YAC5B,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACpG,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC,MAAM,EAClH,6BAA6B,EAC7B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAChI,IAAI,EACJ,6BAA6B,EAC7B,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,6BAA6B,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzJ,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,EAAE,wBAAwB,EAC5H,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EACzI,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAC/G,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7H,KAAK,CACN,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,KAAqB;QAEtE,IAAI,OAAwC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,OAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;YAC/E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,11 +2,7 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { AirSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class AirSensorAccessory extends SensorAccessory<AirSensorConfig> {
|
|
5
|
-
private readonly STATE_MAP;
|
|
6
|
-
constructor(dependency: MQTTAccessoryDependency<AirSensorConfig>);
|
|
7
5
|
protected getAccessoryType(): AccessoryType;
|
|
8
|
-
|
|
9
|
-
private toCVState;
|
|
10
|
-
private qualityStringForCV;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<AirSensorConfig>);
|
|
11
7
|
private logTemplateForDensityKey;
|
|
12
8
|
}
|
|
@@ -3,10 +3,12 @@ import { strings } from '../../i18n/i18n.js';
|
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
const MAX_DENSITY = 5000;
|
|
5
5
|
export class AirSensorAccessory extends SensorAccessory {
|
|
6
|
-
|
|
6
|
+
getAccessoryType() {
|
|
7
|
+
return AccessoryType.AirQualitySensor;
|
|
8
|
+
}
|
|
7
9
|
constructor(dependency) {
|
|
8
10
|
super(dependency);
|
|
9
|
-
|
|
11
|
+
const stateMap = new Map([
|
|
10
12
|
['valueAQUnknown', dependency.Characteristic.AirQuality.UNKNOWN],
|
|
11
13
|
['valueAQExcellent', dependency.Characteristic.AirQuality.EXCELLENT],
|
|
12
14
|
['valueAQGood', dependency.Characteristic.AirQuality.GOOD],
|
|
@@ -14,12 +16,20 @@ export class AirSensorAccessory extends SensorAccessory {
|
|
|
14
16
|
['valueAQInferior', dependency.Characteristic.AirQuality.INFERIOR],
|
|
15
17
|
['valueAQPoor', dependency.Characteristic.AirQuality.POOR],
|
|
16
18
|
]);
|
|
17
|
-
const
|
|
19
|
+
const stateStrings = new Map([
|
|
20
|
+
[dependency.Characteristic.AirQuality.EXCELLENT, strings.sensor.air.qualityExcellent],
|
|
21
|
+
[dependency.Characteristic.AirQuality.GOOD, strings.sensor.air.qualityGood],
|
|
22
|
+
[dependency.Characteristic.AirQuality.FAIR, strings.sensor.air.qualityFair],
|
|
23
|
+
[dependency.Characteristic.AirQuality.INFERIOR, strings.sensor.air.qualityInferior],
|
|
24
|
+
[dependency.Characteristic.AirQuality.POOR, strings.sensor.air.qualityPoor],
|
|
25
|
+
[dependency.Characteristic.AirQuality.UNKNOWN, strings.sensor.air.qualityUnknown],
|
|
26
|
+
]);
|
|
27
|
+
const validStates = Array.from(stateMap.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
|
|
18
28
|
if (validStates.length === 0 || (validStates.length === 1 && validStates[0] === 'valueAQUnknown')) {
|
|
19
29
|
this.log.error(strings.sensor.air.noStateValues, this.name);
|
|
20
30
|
return;
|
|
21
31
|
}
|
|
22
|
-
this.setup(HKCharacteristicKey.AirQuality, dependency.Characteristic.AirQuality.UNKNOWN, 'topicGetAirQuality', this.
|
|
32
|
+
this.setup(HKCharacteristicKey.AirQuality, dependency.Characteristic.AirQuality.UNKNOWN, 'topicGetAirQuality', this.bindOnUpdateState(HKCharacteristicKey.AirQuality, stateMap, stateStrings, strings.sensor.air.unknownValue), true)?.setProps({ validValues: validStates.map((key) => stateMap.get(key)) });
|
|
23
33
|
const densityMap = new Map([
|
|
24
34
|
['topicGetNitrogenDioxideDensity', HKCharacteristicKey.NitrogenDioxideDensity],
|
|
25
35
|
['topicGetOzoneDensity', HKCharacteristicKey.OzoneDensity],
|
|
@@ -33,48 +43,6 @@ export class AirSensorAccessory extends SensorAccessory {
|
|
|
33
43
|
?.setProps({ maxValue: MAX_DENSITY });
|
|
34
44
|
});
|
|
35
45
|
}
|
|
36
|
-
getAccessoryType() {
|
|
37
|
-
return AccessoryType.AirQualitySensor;
|
|
38
|
-
}
|
|
39
|
-
async onAirQualityUpdate(topic, value) {
|
|
40
|
-
const current = this.toCVState(value);
|
|
41
|
-
this.onUpdate(HKCharacteristicKey.AirQuality, current, this.qualityStringForCV(current));
|
|
42
|
-
}
|
|
43
|
-
toCVState(value) {
|
|
44
|
-
switch (value) {
|
|
45
|
-
case this.getPrimitiveValue('valueAQUnknown', false):
|
|
46
|
-
return this.STATE_MAP.get('valueAQUnknown');
|
|
47
|
-
case this.getPrimitiveValue('valueAQExcellent', false):
|
|
48
|
-
return this.STATE_MAP.get('valueAQExcellent');
|
|
49
|
-
case this.getPrimitiveValue('valueAQGood', false):
|
|
50
|
-
return this.STATE_MAP.get('valueAQGood');
|
|
51
|
-
case this.getPrimitiveValue('valueAQFair', false):
|
|
52
|
-
return this.STATE_MAP.get('valueAQFair');
|
|
53
|
-
case this.getPrimitiveValue('valueAQInferior', false):
|
|
54
|
-
return this.STATE_MAP.get('valueAQInferior');
|
|
55
|
-
case this.getPrimitiveValue('valueAQPoor', false):
|
|
56
|
-
return this.STATE_MAP.get('valueAQPoor');
|
|
57
|
-
}
|
|
58
|
-
this.logIfDesired(strings.sensor.air.unknownValue, `'${value}'`);
|
|
59
|
-
return this.STATE_MAP.get('valueAQUnknown');
|
|
60
|
-
}
|
|
61
|
-
qualityStringForCV(state) {
|
|
62
|
-
switch (state) {
|
|
63
|
-
case this.Characteristic.AirQuality.EXCELLENT:
|
|
64
|
-
return strings.sensor.air.qualityExcellent;
|
|
65
|
-
case this.Characteristic.AirQuality.GOOD:
|
|
66
|
-
return strings.sensor.air.qualityGood;
|
|
67
|
-
case this.Characteristic.AirQuality.FAIR:
|
|
68
|
-
return strings.sensor.air.qualityFair;
|
|
69
|
-
case this.Characteristic.AirQuality.INFERIOR:
|
|
70
|
-
return strings.sensor.air.qualityInferior;
|
|
71
|
-
case this.Characteristic.AirQuality.POOR:
|
|
72
|
-
return strings.sensor.air.qualityPoor;
|
|
73
|
-
case this.Characteristic.AirQuality.UNKNOWN:
|
|
74
|
-
default:
|
|
75
|
-
return strings.sensor.air.qualityUnknown;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
46
|
logTemplateForDensityKey(key) {
|
|
79
47
|
switch (key) {
|
|
80
48
|
case HKCharacteristicKey.NitrogenDioxideDensity:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"air.js","sourceRoot":"","sources":["../../../src/accessory/sensor/air.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"air.js","sourceRoot":"","sources":["../../../src/accessory/sensor/air.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,OAAO,kBAAmB,SAAQ,eAAgC;IAE5D,gBAAgB;QACxB,OAAO,aAAa,CAAC,gBAAgB,CAAC;IACxC,CAAC;IAED,YAAY,UAAoD;QAC9D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAgC;YACtD,CAAC,gBAAgB,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC;YAChE,CAAC,kBAAkB,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;YACpE,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1D,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1D,CAAC,iBAAiB,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC;YAClE,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;SAC3D,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;YAC3B,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACrF,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;YAC3E,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;YAC3E,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YACnF,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;YAC3E,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SAClF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QAC5G,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE,CAAC;YAClG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EACrF,oBAAoB,EACpB,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAC/G,IAAI,CACL,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;QAE3E,MAAM,UAAU,GAAG,IAAI,GAAG,CAA6C;YACrE,CAAC,gCAAgC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC;YAC9E,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,YAAY,CAAC;YAC1D,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,WAAW,CAAC;YACxD,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,YAAY,CAAC;YAC1D,CAAC,+BAA+B,EAAE,mBAAmB,CAAC,qBAAqB,CAAC;YAC5E,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,UAAU,CAAC;SACvD,CAAC,CAAC;QAEH,UAAU,CAAC,OAAO,CAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;gBACjG,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,GAAwB;QACvD,QAAO,GAAG,EAAE,CAAC;YACb,KAAK,mBAAmB,CAAC,sBAAsB;gBAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5C,KAAK,mBAAmB,CAAC,YAAY;gBACnC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YACzC,KAAK,mBAAmB,CAAC,WAAW;gBAClC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;YACxC,KAAK,mBAAmB,CAAC,YAAY;gBACnC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YACzC,KAAK,mBAAmB,CAAC,qBAAqB;gBAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YAC3C,KAAK,mBAAmB,CAAC,UAAU;gBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,GAAG,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { CO2SensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class CO2SensorAccessory extends SensorAccessory<CO2SensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<CO2SensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<CO2SensorConfig>);
|
|
7
7
|
}
|
|
@@ -2,14 +2,14 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
export class CO2SensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.CarbonDioxideSensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.CarbonDioxideDetected, dependency.Characteristic.CarbonDioxideDetected.CO2_LEVELS_NORMAL, 'topicGetCarbonDioxideDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.CarbonDioxideDetected, 'valueCarbonDioxideDetected', strings.sensor.carbonDioxide.active, strings.sensor.carbonDioxide.inactive), true);
|
|
8
11
|
this.setup(HKCharacteristicKey.CarbonDioxideLevel, 0, 'topicGetCarbonDioxideLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonDioxideLevel, strings.sensor.carbonDioxide.level), false);
|
|
9
12
|
this.setup(HKCharacteristicKey.CarbonDioxidePeakLevel, 0, 'topicGetCarbonDioxidePeakLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonDioxidePeakLevel, strings.sensor.carbonDioxide.peakLevel), false);
|
|
10
13
|
}
|
|
11
|
-
getAccessoryType() {
|
|
12
|
-
return AccessoryType.CarbonDioxideSensor;
|
|
13
|
-
}
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=carbonDioxide.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbonDioxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonDioxide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,kBAAmB,SAAQ,eAAgC;
|
|
1
|
+
{"version":3,"file":"carbonDioxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonDioxide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,kBAAmB,SAAQ,eAAgC;IAE5D,gBAAgB;QACxB,OAAO,aAAa,CAAC,mBAAmB,CAAC;IAC3C,CAAC;IAED,YAAY,UAAoD;QAC9D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,iBAAiB,EACrH,+BAA+B,EAC/B,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,qBAAqB,EACzC,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC7E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,EAClD,4BAA4B,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAE7I,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC,EACtD,gCAAgC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3J,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { COSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class COSensorAccessory extends SensorAccessory<COSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<COSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<COSensorConfig>);
|
|
7
7
|
}
|
|
@@ -2,14 +2,14 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
export class COSensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.CarbonMonoxideSensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.CarbonMonoxideDetected, dependency.Characteristic.CarbonMonoxideDetected.CO_LEVELS_NORMAL, 'topicGetCarbonMonoxideDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.CarbonMonoxideDetected, 'valueCarbonMonoxideDetected', strings.sensor.carbonMonoxide.active, strings.sensor.carbonMonoxide.inactive), true);
|
|
8
11
|
this.setup(HKCharacteristicKey.CarbonMonoxideLevel, 0, 'topicGetCarbonMonoxideLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonMonoxideLevel, strings.sensor.carbonMonoxide.level), false);
|
|
9
12
|
this.setup(HKCharacteristicKey.CarbonMonoxidePeakLevel, 0, 'topicGetCarbonMonoxidePeakLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonMonoxidePeakLevel, strings.sensor.carbonMonoxide.peakLevel), false);
|
|
10
13
|
}
|
|
11
|
-
getAccessoryType() {
|
|
12
|
-
return AccessoryType.CarbonMonoxideSensor;
|
|
13
|
-
}
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=carbonMonoxide.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbonMonoxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonMonoxide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,iBAAkB,SAAQ,eAA+B;
|
|
1
|
+
{"version":3,"file":"carbonMonoxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonMonoxide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,iBAAkB,SAAQ,eAA+B;IAE1D,gBAAgB;QACxB,OAAO,aAAa,CAAC,oBAAoB,CAAC;IAC5C,CAAC;IAED,YAAY,UAAmD;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,UAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC,gBAAgB,EACtH,gCAAgC,EAChC,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,sBAAsB,EAC1C,6BAA6B,EAC7B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAC/E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,EACnD,6BAA6B,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAEhJ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,EACvD,iCAAiC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9J,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { ContactSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class ContactSensorAccessory extends SensorAccessory<ContactSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<ContactSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<ContactSensorConfig>);
|
|
7
7
|
private onContactStateUpdate;
|
|
8
8
|
}
|
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import { SensorAccessory } from './sensor.js';
|
|
2
|
+
import { EVE_EPOCH } from '../characteristic/eve.js';
|
|
2
3
|
import { strings } from '../../i18n/i18n.js';
|
|
3
|
-
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
|
+
import { AccessoryType, EveCharacteristicKey, HKCharacteristicKey } from '../../model/enums.js';
|
|
5
|
+
import { HistoryType } from '../../model/history.js';
|
|
4
6
|
export class ContactSensorAccessory extends SensorAccessory {
|
|
7
|
+
getAccessoryType() {
|
|
8
|
+
return AccessoryType.ContactSensor;
|
|
9
|
+
}
|
|
5
10
|
constructor(dependency) {
|
|
6
11
|
super(dependency);
|
|
7
12
|
this.setup(HKCharacteristicKey.ContactSensorState, dependency.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED, 'topicGetContactSensorState', this.onContactStateUpdate.bind(this), true);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
this.setupTopicless(EveCharacteristicKey.OpenDuration, 0);
|
|
14
|
+
this.setupTopicless(EveCharacteristicKey.ClosedDuration, 0);
|
|
15
|
+
this.setupTopicless(EveCharacteristicKey.TimesOpened, 0);
|
|
16
|
+
this.setupTopicless(EveCharacteristicKey.ResetTotal, EVE_EPOCH, () => {
|
|
17
|
+
this.onUpdate(EveCharacteristicKey.TimesOpened, 0, strings.sensor.contact.timesOpenedReset);
|
|
18
|
+
});
|
|
11
19
|
}
|
|
12
20
|
async onContactStateUpdate(topic, value) {
|
|
13
|
-
const numeric = value === this.getPrimitiveValue('valueContactDetected') ?
|
|
21
|
+
const numeric = value === this.getPrimitiveValue('valueContactDetected') ?
|
|
22
|
+
this.Characteristic.ContactSensorState.CONTACT_DETECTED : this.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
|
|
14
23
|
this.onUpdate(HKCharacteristicKey.ContactSensorState, numeric, numeric ? strings.sensor.contact.inactive : strings.sensor.contact.active);
|
|
24
|
+
this.recordHistory(HistoryType.DOOR, { status: numeric }, true);
|
|
25
|
+
if (numeric === this.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED) {
|
|
26
|
+
this.updateNumericValue(EveCharacteristicKey.TimesOpened, 1);
|
|
27
|
+
}
|
|
15
28
|
}
|
|
16
29
|
}
|
|
17
30
|
//# sourceMappingURL=contact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../src/accessory/sensor/contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../src/accessory/sensor/contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,OAAO,sBAAuB,SAAQ,eAAoC;IAEpE,gBAAgB;QACxB,OAAO,aAAa,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,YACE,UAAwD;QACxD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,EAClH,4BAA4B,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,KAAqB;QACrE,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;QACxH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1I,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;YAC5E,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { HumiditySensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class HumiditySensorAccessory extends SensorAccessory<HumiditySensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<HumiditySensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<HumiditySensorConfig>);
|
|
7
7
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { SensorAccessory } from './sensor.js';
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
|
+
import { HistoryType } from '../../model/history.js';
|
|
4
5
|
export class HumiditySensorAccessory extends SensorAccessory {
|
|
5
|
-
constructor(dependency) {
|
|
6
|
-
super(dependency);
|
|
7
|
-
this.setup(HKCharacteristicKey.CurrentRelativeHumidity, 0, 'topicGetCurrentRelativeHumidity', this.bindOnUpdateNumeric(HKCharacteristicKey.CurrentRelativeHumidity, strings.climate.humidityUpdate), true);
|
|
8
|
-
}
|
|
9
6
|
getAccessoryType() {
|
|
10
7
|
return AccessoryType.HumiditySensor;
|
|
11
8
|
}
|
|
9
|
+
constructor(dependency) {
|
|
10
|
+
super(dependency);
|
|
11
|
+
this.setup(HKCharacteristicKey.CurrentRelativeHumidity, 0, 'topicGetCurrentRelativeHumidity', this.bindOnUpdateNumeric(HKCharacteristicKey.CurrentRelativeHumidity, strings.climate.humidityUpdate, (value) => {
|
|
12
|
+
this.recordHistory(HistoryType.WEATHER, { humidity: value });
|
|
13
|
+
}), true);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=humidity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"humidity.js","sourceRoot":"","sources":["../../../src/accessory/sensor/humidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"humidity.js","sourceRoot":"","sources":["../../../src/accessory/sensor/humidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,OAAO,uBAAwB,SAAQ,eAAqC;IAEtE,gBAAgB;QACxB,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,YACE,UAAyD;QACzD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,EACvD,iCAAiC,EACjC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9G,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAE,CAAC;QAChE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACd,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { LeakSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class LeakSensorAccessory extends SensorAccessory<LeakSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<LeakSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<LeakSensorConfig>);
|
|
7
7
|
}
|
|
@@ -2,12 +2,12 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
export class LeakSensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.LeakSensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.LeakDetected, dependency.Characteristic.LeakDetected.LEAK_NOT_DETECTED, 'topicGetLeakDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.LeakDetected, 'valueLeakDetected', strings.sensor.leak.active, strings.sensor.leak.inactive), true);
|
|
8
11
|
}
|
|
9
|
-
getAccessoryType() {
|
|
10
|
-
return AccessoryType.LeakSensor;
|
|
11
|
-
}
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=leak.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leak.js","sourceRoot":"","sources":["../../../src/accessory/sensor/leak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,mBAAoB,SAAQ,eAAiC;
|
|
1
|
+
{"version":3,"file":"leak.js","sourceRoot":"","sources":["../../../src/accessory/sensor/leak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,mBAAoB,SAAQ,eAAiC;IAE9D,gBAAgB;QACxB,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,YAAY,UAAqD;QAC/D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,EACnG,sBAAsB,EACtB,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5J,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { LightSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class LightSensorAccessory extends SensorAccessory<LightSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<LightSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<LightSensorConfig>);
|
|
7
7
|
}
|
|
@@ -2,12 +2,12 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
4
|
export class LightSensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.LightSensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.CurrentAmbientLightLevel, 0.0001, 'topicGetCurrentAmbientLightLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CurrentAmbientLightLevel, strings.sensor.light.level), true);
|
|
8
11
|
}
|
|
9
|
-
getAccessoryType() {
|
|
10
|
-
return AccessoryType.LightSensor;
|
|
11
|
-
}
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=light.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/accessory/sensor/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,oBAAqB,SAAQ,eAAkC;
|
|
1
|
+
{"version":3,"file":"light.js","sourceRoot":"","sources":["../../../src/accessory/sensor/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,oBAAqB,SAAQ,eAAkC;IAEhE,gBAAgB;QACxB,OAAO,aAAa,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,YAAY,UAAsD;QAChE,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CACR,mBAAmB,CAAC,wBAAwB,EAAE,MAAM,EACpD,kCAAkC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACtI,IAAI,CAAC,CAAC;IACV,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { MotionSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
|
|
4
4
|
export declare class MotionSensorAccessory extends SensorAccessory<MotionSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<MotionSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<MotionSensorConfig>);
|
|
7
7
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { SensorAccessory } from './sensor.js';
|
|
2
2
|
import { strings } from '../../i18n/i18n.js';
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
|
|
4
|
+
import { HistoryType } from '../../model/history.js';
|
|
4
5
|
export class MotionSensorAccessory extends SensorAccessory {
|
|
5
|
-
constructor(dependency) {
|
|
6
|
-
super(dependency);
|
|
7
|
-
this.setup(HKCharacteristicKey.MotionDetected, false, 'topicGetMotionDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.MotionDetected, 'valueMotionDetected', strings.sensor.motion.active, strings.sensor.motion.inactive), true);
|
|
8
|
-
}
|
|
9
6
|
getAccessoryType() {
|
|
10
7
|
return AccessoryType.MotionSensor;
|
|
11
8
|
}
|
|
9
|
+
constructor(dependency) {
|
|
10
|
+
super(dependency);
|
|
11
|
+
this.setup(HKCharacteristicKey.MotionDetected, false, 'topicGetMotionDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.MotionDetected, 'valueMotionDetected', strings.sensor.motion.active, strings.sensor.motion.inactive, (value) => {
|
|
12
|
+
this.recordHistory(HistoryType.MOTION, { status: value }, true);
|
|
13
|
+
}), true);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=motion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion.js","sourceRoot":"","sources":["../../../src/accessory/sensor/motion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"motion.js","sourceRoot":"","sources":["../../../src/accessory/sensor/motion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,OAAO,qBAAsB,SAAQ,eAAmC;IAElE,gBAAgB;QACxB,OAAO,aAAa,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,YACE,UAAuD;QACvD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,KAAK,EAClD,wBAAwB,EACxB,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,cAAc,EAAE,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EACrJ,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC,CACF,EACD,IAAI,CAAC,CAAC;IACV,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { MQTTAccessoryDependency, OccupancySensorConfig } from '../../model/types.js';
|
|
4
4
|
export declare class OccupancySensorAccessory extends SensorAccessory<OccupancySensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<OccupancySensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<OccupancySensorConfig>);
|
|
7
7
|
}
|