homebridge-easy-mqtt 1.4.1-beta.1 → 1.5.0-beta.1
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 +86 -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/lib/fakegato-history/fakegato-history.js +887 -0
- package/lib/fakegato-history/fakegato-storage.js +178 -0
- package/lib/fakegato-history/fakegato-timer.js +133 -0
- package/lib/fakegato-history/lib/uuid.js +25 -0
- package/lib/fakegato-history/package.json +5 -0
- package/package.json +2 -1
|
@@ -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 OccupancySensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.OccupancySensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.OccupancyDetected, dependency.Characteristic.OccupancyDetected.OCCUPANCY_NOT_DETECTED, 'topicGetOccupancyDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.OccupancyDetected, 'valueOccupancyDetected', strings.sensor.occupancy.active, strings.sensor.occupancy.inactive), true);
|
|
8
11
|
}
|
|
9
|
-
getAccessoryType() {
|
|
10
|
-
return AccessoryType.OccupancySensor;
|
|
11
|
-
}
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=occupancy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occupancy.js","sourceRoot":"","sources":["../../../src/accessory/sensor/occupancy.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,wBAAyB,SAAQ,eAAsC;
|
|
1
|
+
{"version":3,"file":"occupancy.js","sourceRoot":"","sources":["../../../src/accessory/sensor/occupancy.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,wBAAyB,SAAQ,eAAsC;IAExE,gBAAgB;QACxB,OAAO,aAAa,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,YACE,UAA0D;QAC1D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,sBAAsB,EAClH,2BAA2B,EAC3B,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,iBAAiB,EACrC,wBAAwB,EACxB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrE,IAAI,CAAC,CAAC;IACV,CAAC;CACF"}
|
|
@@ -2,6 +2,4 @@ import { BaseAccessory } from '../abstract/base.js';
|
|
|
2
2
|
import { MQTTAccessoryDependency, SensorConfig } from '../../model/types.js';
|
|
3
3
|
export declare abstract class SensorAccessory<C extends SensorConfig = SensorConfig> extends BaseAccessory<C> {
|
|
4
4
|
constructor(dependency: MQTTAccessoryDependency<C>);
|
|
5
|
-
private onTamperedUpdate;
|
|
6
|
-
private onFaultUpdate;
|
|
7
5
|
}
|
|
@@ -5,32 +5,8 @@ import { LogType } from '../../tools/log.js';
|
|
|
5
5
|
export class SensorAccessory extends BaseAccessory {
|
|
6
6
|
constructor(dependency) {
|
|
7
7
|
super(dependency);
|
|
8
|
-
this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.
|
|
9
|
-
this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.
|
|
10
|
-
}
|
|
11
|
-
async onTamperedUpdate(topic, value) {
|
|
12
|
-
const tampered = value === this.getPrimitiveValue('valueTampered') ? 1 : 0;
|
|
13
|
-
if (!this.onUpdate(HKCharacteristicKey.StatusTampered, tampered)) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (tampered) {
|
|
17
|
-
this.logIfDesired(LogType.WARNING, strings.error.isTampered);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
this.logIfDesired(strings.error.notTampered);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async onFaultUpdate(topic, value) {
|
|
24
|
-
const fault = value === this.getPrimitiveValue('valueFault') ? 1 : 0;
|
|
25
|
-
if (!this.onUpdate(HKCharacteristicKey.StatusFault, fault)) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (fault) {
|
|
29
|
-
this.logIfDesired(LogType.WARNING, strings.error.hasFault);
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.logIfDesired(strings.error.noFault);
|
|
33
|
-
}
|
|
8
|
+
this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusTampered, 'valueTampered', strings.error.isTampered, strings.error.notTampered, LogType.WARNING), false);
|
|
9
|
+
this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault, LogType.WARNING), false);
|
|
34
10
|
}
|
|
35
11
|
}
|
|
36
12
|
//# sourceMappingURL=sensor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensor.js","sourceRoot":"","sources":["../../../src/accessory/sensor/sensor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sensor.js","sourceRoot":"","sources":["../../../src/accessory/sensor/sensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,OAAgB,eAAuD,SAAQ,aAAgB;IAEnG,YAAY,UAAsC;QAChD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,EAClG,wBAAwB,EACxB,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,EAChF,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,EACvE,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EACxF,qBAAqB,EACrB,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAC1E,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACjE,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
|
|
|
2
2
|
import { AccessoryType } from '../../model/enums.js';
|
|
3
3
|
import { MQTTAccessoryDependency, SmokeSensorConfig } from '../../model/types.js';
|
|
4
4
|
export declare class SmokeSensorAccessory extends SensorAccessory<SmokeSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<SmokeSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<SmokeSensorConfig>);
|
|
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 SmokeSensorAccessory extends SensorAccessory {
|
|
5
|
+
getAccessoryType() {
|
|
6
|
+
return AccessoryType.SmokeSensor;
|
|
7
|
+
}
|
|
5
8
|
constructor(dependency) {
|
|
6
9
|
super(dependency);
|
|
7
10
|
this.setup(HKCharacteristicKey.SmokeDetected, dependency.Characteristic.SmokeDetected.SMOKE_NOT_DETECTED, 'topicGetSmokeDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.SmokeDetected, 'valueSmokeDetected', strings.sensor.smoke.active, strings.sensor.smoke.inactive), true);
|
|
8
11
|
}
|
|
9
|
-
getAccessoryType() {
|
|
10
|
-
return AccessoryType.SmokeSensor;
|
|
11
|
-
}
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=smoke.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke.js","sourceRoot":"","sources":["../../../src/accessory/sensor/smoke.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":"smoke.js","sourceRoot":"","sources":["../../../src/accessory/sensor/smoke.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,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,EACtG,uBAAuB,EACvB,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EACpJ,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, TemperatureSensorConfig } from '../../model/types.js';
|
|
4
4
|
export declare class TemperatureSensorAccessory extends SensorAccessory<TemperatureSensorConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<TemperatureSensorConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<TemperatureSensorConfig>);
|
|
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 TemperatureSensorAccessory extends SensorAccessory {
|
|
5
|
-
constructor(dependency) {
|
|
6
|
-
super(dependency);
|
|
7
|
-
this.setup(HKCharacteristicKey.CurrentTemperature, 0, 'topicGetCurrentTemperature', this.bindOnUpdateTemperature(dependency.config, HKCharacteristicKey.CurrentTemperature, strings.climate.temperatureUpdate), true);
|
|
8
|
-
}
|
|
9
6
|
getAccessoryType() {
|
|
10
7
|
return AccessoryType.TemperatureSensor;
|
|
11
8
|
}
|
|
9
|
+
constructor(dependency) {
|
|
10
|
+
super(dependency);
|
|
11
|
+
this.setup(HKCharacteristicKey.CurrentTemperature, 0, 'topicGetCurrentTemperature', this.bindOnUpdateTemperature(dependency.config, HKCharacteristicKey.CurrentTemperature, strings.climate.temperatureUpdate, (value) => {
|
|
12
|
+
this.recordHistory(HistoryType.WEATHER, { temp: value });
|
|
13
|
+
}), true);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=temperature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../../src/accessory/sensor/temperature.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":"temperature.js","sourceRoot":"","sources":["../../../src/accessory/sensor/temperature.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,0BAA2B,SAAQ,eAAwC;IAE5E,gBAAgB;QACxB,OAAO,aAAa,CAAC,iBAAiB,CAAC;IACzC,CAAC;IAED,YACE,UAA4D;QAC5D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,EAAE,4BAA4B,EAChF,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;YACnI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAE,CAAC;QAC5D,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACd,CAAC;CACF"}
|
|
@@ -2,11 +2,7 @@ import { BaseAccessory } from './abstract/base.js';
|
|
|
2
2
|
import { AccessoryType } from '../model/enums.js';
|
|
3
3
|
import { MQTTAccessoryDependency, ValveConfig } from '../model/types.js';
|
|
4
4
|
export declare class ValveAccessory extends BaseAccessory<ValveConfig> {
|
|
5
|
-
constructor(dependency: MQTTAccessoryDependency<ValveConfig>);
|
|
6
5
|
protected getAccessoryType(): AccessoryType;
|
|
7
|
-
|
|
8
|
-
private onSetActive;
|
|
9
|
-
private onSetSetDuration;
|
|
10
|
-
private onSetIsConfigured;
|
|
6
|
+
constructor(dependency: MQTTAccessoryDependency<ValveConfig>);
|
|
11
7
|
private toValveTypeCV;
|
|
12
8
|
}
|
package/dist/accessory/valve.js
CHANGED
|
@@ -3,52 +3,18 @@ import { strings } from '../i18n/i18n.js';
|
|
|
3
3
|
import { AccessoryType, HKCharacteristicKey, ValveType } from '../model/enums.js';
|
|
4
4
|
import { LogType } from '../tools/log.js';
|
|
5
5
|
export class ValveAccessory extends BaseAccessory {
|
|
6
|
+
getAccessoryType() {
|
|
7
|
+
return AccessoryType.Valve;
|
|
8
|
+
}
|
|
6
9
|
constructor(dependency) {
|
|
7
10
|
super(dependency);
|
|
8
11
|
this.setCharacteristicValue(HKCharacteristicKey.ValveType, this.toValveTypeCV(this.config.valveType));
|
|
9
|
-
this.setup(HKCharacteristicKey.Active, dependency.Characteristic.Active.INACTIVE, 'topicGetValveActive', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.Active, 'valueActive', strings.valve.active, strings.valve.inactive), true, 'topicSetValveActive', this.
|
|
12
|
+
this.setup(HKCharacteristicKey.Active, dependency.Characteristic.Active.INACTIVE, 'topicGetValveActive', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.Active, 'valueActive', strings.valve.active, strings.valve.inactive), true, 'topicSetValveActive', this.bindOnSetBoolean(HKCharacteristicKey.Active, 'topicSetValveActive', 'valueActive', 'valueInactive', dependency.Characteristic.Active.ACTIVE, strings.valve.activeSet, strings.valve.inactiveSet));
|
|
10
13
|
this.setup(HKCharacteristicKey.InUse, dependency.Characteristic.InUse.NOT_IN_USE, 'topicGetValveInUse', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.InUse, 'valueInUse', strings.valve.inUse, strings.valve.notInUse), true);
|
|
11
|
-
this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.
|
|
12
|
-
this.setup(HKCharacteristicKey.SetDuration, 0, 'topicGetValveSetDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.SetDuration, strings.valve.setDuration), false, 'topicSetValveSetDuration', this.
|
|
14
|
+
this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault, LogType.WARNING), false);
|
|
15
|
+
this.setup(HKCharacteristicKey.SetDuration, 0, 'topicGetValveSetDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.SetDuration, strings.valve.setDuration), false, 'topicSetValveSetDuration', this.bindOnSetNumeric(HKCharacteristicKey.SetDuration, 'topicSetValveSetDuration', strings.valve.setDurationFuture));
|
|
13
16
|
this.setup(HKCharacteristicKey.RemainingDuration, 0, 'topicGetValveRemainingDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.RemainingDuration, strings.valve.durationRemaining), false);
|
|
14
|
-
this.setup(HKCharacteristicKey.IsConfigured, dependency.Characteristic.IsConfigured.NOT_CONFIGURED, 'topicGetValveIsConfigured', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.IsConfigured, 'valueConfigured', strings.valve.configured, strings.valve.notConfigured), false, 'topicSetValveIsConfigured', this.
|
|
15
|
-
}
|
|
16
|
-
getAccessoryType() {
|
|
17
|
-
return AccessoryType.Valve;
|
|
18
|
-
}
|
|
19
|
-
async onFaultUpdate(topic, value) {
|
|
20
|
-
const fault = value === this.getPrimitiveValue('valueFault') ? 1 : 0;
|
|
21
|
-
if (!this.onUpdate(HKCharacteristicKey.StatusFault, fault)) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
if (fault) {
|
|
25
|
-
this.logIfDesired(LogType.WARNING, strings.error.hasFault);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.logIfDesired(strings.error.noFault);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async onSetActive(value) {
|
|
32
|
-
if (!this.assert('valueActive', 'valueInactive')) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const active = value === this.Characteristic.Active.ACTIVE;
|
|
36
|
-
const logString = active ? strings.valve.activeSet : strings.valve.inactiveSet;
|
|
37
|
-
const publish = active ? this.config.valueActive : this.config.valueInactive;
|
|
38
|
-
this.onSet(HKCharacteristicKey.Active, value, publish, 'topicSetValveActive', logString);
|
|
39
|
-
}
|
|
40
|
-
async onSetSetDuration(value) {
|
|
41
|
-
const logString = strings.valve.setDurationFuture.replace('%d', value.toString());
|
|
42
|
-
this.onSet(HKCharacteristicKey.SetDuration, value, value, 'topicSetValveSetDuration', logString);
|
|
43
|
-
}
|
|
44
|
-
async onSetIsConfigured(value) {
|
|
45
|
-
if (!this.assert('valueConfigured', 'valueNotConfigured')) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const isConfigured = value === this.Characteristic.IsConfigured.CONFIGURED;
|
|
49
|
-
const logString = isConfigured ? strings.valve.configuredFuture : strings.valve.notConfiguredFuture;
|
|
50
|
-
const publish = isConfigured ? this.config.valueConfigured : this.config.valueNotConfigured;
|
|
51
|
-
this.onSet(HKCharacteristicKey.IsConfigured, value, publish, 'topicSetValveIsConfigured', logString);
|
|
17
|
+
this.setup(HKCharacteristicKey.IsConfigured, dependency.Characteristic.IsConfigured.NOT_CONFIGURED, 'topicGetValveIsConfigured', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.IsConfigured, 'valueConfigured', strings.valve.configured, strings.valve.notConfigured), false, 'topicSetValveIsConfigured', this.bindOnSetBoolean(HKCharacteristicKey.IsConfigured, 'topicSetValveIsConfigured', 'valueConfigured', 'valueNotConfigured', dependency.Characteristic.IsConfigured.CONFIGURED, strings.valve.configuredFuture, strings.valve.notConfiguredFuture));
|
|
52
18
|
}
|
|
53
19
|
toValveTypeCV(value) {
|
|
54
20
|
if (value === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valve.js","sourceRoot":"","sources":["../../src/accessory/valve.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,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,cAAe,SAAQ,aAA0B;
|
|
1
|
+
{"version":3,"file":"valve.js","sourceRoot":"","sources":["../../src/accessory/valve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
2
2
|
import { GroupAccessory } from '../accessory/abstract/group.js';
|
|
3
3
|
import { createAccessory, createIdentifier } from '../accessory/abstract/helper.js';
|
|
4
|
+
import { initEveCharacteristics } from '../accessory/characteristic/eve.js';
|
|
4
5
|
import { setLanguage, strings } from '../i18n/i18n.js';
|
|
6
|
+
import { History } from '../model/history.js';
|
|
5
7
|
import { Log } from '../tools/log.js';
|
|
6
|
-
import getVersion from '../tools/version.js';
|
|
7
|
-
import { assert } from '../tools/validation.js';
|
|
8
8
|
import { Properties } from '../tools/properties.js';
|
|
9
|
+
import { assert } from '../tools/validation.js';
|
|
10
|
+
import getVersion from '../tools/version.js';
|
|
9
11
|
export class HomebridgeEasyMQTT {
|
|
10
12
|
config;
|
|
11
13
|
api;
|
|
@@ -19,6 +21,7 @@ export class HomebridgeEasyMQTT {
|
|
|
19
21
|
setLanguage(userLang);
|
|
20
22
|
this.log = new Log(logger, config.verbose);
|
|
21
23
|
this.log.always('v%s | System %s | Node %s | HB v%s | HAPNodeJS v%s', getVersion(), process.platform, process.version, api.serverVersion, api.hap.HAPLibraryVersion());
|
|
24
|
+
initEveCharacteristics(api);
|
|
22
25
|
this.api.on('didFinishLaunching', () => {
|
|
23
26
|
this.setup();
|
|
24
27
|
});
|
|
@@ -44,6 +47,7 @@ export class HomebridgeEasyMQTT {
|
|
|
44
47
|
const groups = new Map();
|
|
45
48
|
const Service = this.api.hap.Service;
|
|
46
49
|
const Characteristic = this.api.hap.Characteristic;
|
|
50
|
+
const history = new History(this.api, this.log);
|
|
47
51
|
for (const accessoryConfig of this.config.accessories) {
|
|
48
52
|
if (!assert(this.log, PLATFORM_NAME, accessoryConfig, 'info') ||
|
|
49
53
|
!assert(this.log, PLATFORM_NAME, accessoryConfig.info, 'name', 'type')) {
|
|
@@ -59,7 +63,7 @@ export class HomebridgeEasyMQTT {
|
|
|
59
63
|
const id = createIdentifier(accessoryConfig.info);
|
|
60
64
|
const uuid = this.api.hap.uuid.generate(id);
|
|
61
65
|
const platformAccessory = this.createPlatformAccessory(accessoryConfig.info.name, uuid);
|
|
62
|
-
const dependency = { Service, Characteristic, platformAccessory, log: this.log };
|
|
66
|
+
const dependency = { Service, Characteristic, platformAccessory, log: this.log, history: history };
|
|
63
67
|
const accessory = createAccessory(dependency, accessoryConfig);
|
|
64
68
|
if (accessory === undefined) {
|
|
65
69
|
continue;
|
|
@@ -70,7 +74,7 @@ export class HomebridgeEasyMQTT {
|
|
|
70
74
|
for (const groupName of groups.keys()) {
|
|
71
75
|
const uuid = this.api.hap.uuid.generate(groupName);
|
|
72
76
|
const platformAccessory = this.createPlatformAccessory(groupName, uuid);
|
|
73
|
-
const dependency = { Service, Characteristic, platformAccessory, log: this.log };
|
|
77
|
+
const dependency = { Service, Characteristic, platformAccessory, log: this.log, history: history };
|
|
74
78
|
const configs = groups.get(groupName);
|
|
75
79
|
const groupAccessory = new GroupAccessory(dependency, groupName, configs);
|
|
76
80
|
keepIdentifiers.add(uuid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/homebridge/platform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAIvD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/homebridge/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var l={arrow:"→",easy_mqtt:"Easy MQTT",github:'<a target="_blank" href="https://github.com/mpatfield/homebridge-easy-mqtt/">GitHub</a>'};function m(n){document.querySelectorAll("[i18n]").forEach(t=>{let o=t.getAttribute("i18n"),r=n.config[o],e=t.getAttribute("i18n_replace");e&&(r=r.replace("%s",l[e])),t.innerHTML=r})}function S(n){let t=["span","label","legend","option","p"];Array.from(window.parent.document.querySelectorAll(t.join(","))).sort((r,e)=>t.indexOf(r.tagName.toLowerCase())-t.indexOf(e.tagName.toLowerCase())).forEach(r=>{let e=r.innerHTML;e=e.replaceAll(/\$\{config\.(title|description|enumNames)\.([^}]+)\}/g,(d,i,a)=>n.config[i]&&typeof n.config[i]=="object"&&a in n.config[i]?n.config[i][a]:d),r.innerHTML!==e&&(r.innerHTML=e)})}function u(n){let t=Array.from(window.parent.document.querySelectorAll("fieldset legend"));for(let o of t){let e=o.closest("fieldset")?.querySelector('input[type="text"][name="name"]');e&&o.textContent!==(e.value||n.config.title.accessory)&&(o.textContent=e.value!==""?e.value:n.config.title.accessory),e&&!e.dataset.accessoryNameListener&&(e.addEventListener("input",()=>u(n)),e.dataset.accessoryNameListener="true")}}function f(){if(typeof crypto<"u"){if(crypto.randomUUID)return crypto.randomUUID();if(crypto.getRandomValues)return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=crypto.getRandomValues(new Uint8Array(1))[0]&15;return(n==="x"?t:t&3|8).toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=Math.random()*16|0;return(n==="x"?t:t&3|8).toString(16)})}function
|
|
1
|
+
"use strict";(()=>{var l={arrow:"→",easy_mqtt:"Easy MQTT",github:'<a target="_blank" href="https://github.com/mpatfield/homebridge-easy-mqtt/">GitHub</a>'};function m(n){document.querySelectorAll("[i18n]").forEach(t=>{let o=t.getAttribute("i18n"),r=n.config[o],e=t.getAttribute("i18n_replace");e&&(r=r.replace("%s",l[e])),t.innerHTML=r})}function S(n){let t=["span","label","legend","option","p"];Array.from(window.parent.document.querySelectorAll(t.join(","))).sort((r,e)=>t.indexOf(r.tagName.toLowerCase())-t.indexOf(e.tagName.toLowerCase())).forEach(r=>{let e=r.innerHTML;e=e.replaceAll(/\$\{config\.(title|description|enumNames)\.([^}]+)\}/g,(d,i,a)=>n.config[i]&&typeof n.config[i]=="object"&&a in n.config[i]?n.config[i][a]:d),r.innerHTML!==e&&(r.innerHTML=e)})}function u(n){let t=Array.from(window.parent.document.querySelectorAll("fieldset legend"));for(let o of t){let e=o.closest("fieldset")?.querySelector('input[type="text"][name="name"]');e&&o.textContent!==(e.value||n.config.title.accessory)&&(o.textContent=e.value!==""?e.value:n.config.title.accessory),e&&!e.dataset.accessoryNameListener&&(e.addEventListener("input",()=>u(n)),e.dataset.accessoryNameListener="true")}}function f(){if(typeof crypto<"u"){if(crypto.randomUUID)return crypto.randomUUID();if(crypto.getRandomValues)return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=crypto.getRandomValues(new Uint8Array(1))[0]&15;return(n==="x"?t:t&3|8).toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=Math.random()*16|0;return(n==="x"?t:t&3|8).toString(16)})}function s(n){let t=!1;n.accessories?.forEach(o=>{if(o.info.id===void 0){let r=f();o.info.id=r,t=!0}}),t&&homebridge.updatePluginConfig([n])}async function x(n){let t=!1;for(let o of n)for(let r of o.accessories??[]){if(r.info.type!=="LockMechanism")continue;let e=r;e.topicGetLockCurrentState!==void 0&&(e.topicGetCurrentLockState=e.topicGetLockCurrentState,e.topicGetLockCurrentState=void 0,t=!0),e.topicGetLockTargetState!==void 0&&(e.topicGetTargetLockState=e.topicGetLockTargetState,e.topicGetLockTargetState=void 0,t=!0),e.topicSetTargetState!==void 0&&(e.topicSetTargetLockState=e.topicSetTargetState,e.topicSetTargetState=void 0,t=!0)}t&&await homebridge.updatePluginConfig(n)}function g(n){document.getElementById("pageIntro").style.display="none",document.getElementById("support").style.display="block",document.getElementById("footer").style.display="block",new MutationObserver(()=>{S(n),u(n)}).observe(window.parent.document.body,{childList:!0,subtree:!0}),homebridge.addEventListener("configChanged",o=>{let r=o.data;r.length&&s(r[0])}),homebridge.showSchemaForm(),homebridge.hideSpinner(),homebridge.enableSaveButton()}function p(n){document.getElementById("introContinue").addEventListener("click",async()=>{g(n)}),document.getElementById("pageIntro").style.display="block",homebridge.hideSpinner()}homebridge.disableSaveButton(),homebridge.showSpinner();(async()=>{let n=await homebridge.i18nCurrentLang(),t=await homebridge.request("i18n",n);m(t);let o=await homebridge.getPluginConfig();o.length?(await x(o),g(t)):(await homebridge.updatePluginConfig([{name:l.easy_mqtt}]),p(t))})();})();
|
package/dist/i18n/en.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ declare const en: {
|
|
|
98
98
|
broker: string;
|
|
99
99
|
disableLogging: string;
|
|
100
100
|
group: string;
|
|
101
|
+
historyEnabled: string;
|
|
101
102
|
maximum: string;
|
|
102
103
|
name: string;
|
|
103
104
|
options: string;
|
|
@@ -120,6 +121,7 @@ declare const en: {
|
|
|
120
121
|
topicGetContactSensorState: string;
|
|
121
122
|
topicGetCoolingThresholdTemperature: string;
|
|
122
123
|
topicGetCurrentAmbientLightLevel: string;
|
|
124
|
+
topicGetCurrentConsumption: string;
|
|
123
125
|
topicGetCurrentDoorState: string;
|
|
124
126
|
topicGetCurrentFanState: string;
|
|
125
127
|
topicGetCurrentHeaterCoolerState: string;
|
|
@@ -134,6 +136,7 @@ declare const en: {
|
|
|
134
136
|
topicGetCurrentSecurityState: string;
|
|
135
137
|
topicGetCurrentTemperature: string;
|
|
136
138
|
topicGetCurrentVerticalTiltAngle: string;
|
|
139
|
+
topicGetElectricCurrent: string;
|
|
137
140
|
topicGetFilterChangeIndication: string;
|
|
138
141
|
topicGetFilterLifeLevel: string;
|
|
139
142
|
topicGetHeatingThresholdTemperature: string;
|
|
@@ -174,12 +177,14 @@ declare const en: {
|
|
|
174
177
|
topicGetTargetSecurityState: string;
|
|
175
178
|
topicGetTargetTemperature: string;
|
|
176
179
|
topicGetTargetVerticalTiltAngle: string;
|
|
180
|
+
topicGetTotalConsumption: string;
|
|
177
181
|
topicGetValveActive: string;
|
|
178
182
|
topicGetValveInUse: string;
|
|
179
183
|
topicGetValveIsConfigured: string;
|
|
180
184
|
topicGetValveRemainingDuration: string;
|
|
181
185
|
topicGetValveSetDuration: string;
|
|
182
186
|
topicGetVOCDensity: string;
|
|
187
|
+
topicGetVoltage: string;
|
|
183
188
|
topicGetVolume: string;
|
|
184
189
|
topicResetFilterIndication: string;
|
|
185
190
|
topicSetActive: string;
|
|
@@ -327,7 +332,6 @@ declare const en: {
|
|
|
327
332
|
stateInactive: string;
|
|
328
333
|
stateManual: string;
|
|
329
334
|
stateUnknown: string;
|
|
330
|
-
unknownValue: string;
|
|
331
335
|
};
|
|
332
336
|
filter: {
|
|
333
337
|
change: string;
|
|
@@ -347,7 +351,6 @@ declare const en: {
|
|
|
347
351
|
stateOpenFuture: string;
|
|
348
352
|
stateOpening: string;
|
|
349
353
|
stateStopped: string;
|
|
350
|
-
stateUnknown: string;
|
|
351
354
|
unknownValue: string;
|
|
352
355
|
unobstructed: string;
|
|
353
356
|
};
|
|
@@ -364,6 +367,12 @@ declare const en: {
|
|
|
364
367
|
stateUnknown: string;
|
|
365
368
|
unknownValue: string;
|
|
366
369
|
};
|
|
370
|
+
history: {
|
|
371
|
+
cleanup: string;
|
|
372
|
+
cleanupFailed: string;
|
|
373
|
+
entry: string;
|
|
374
|
+
updatedCharacteristic: string;
|
|
375
|
+
};
|
|
367
376
|
lightbulb: {
|
|
368
377
|
brightnessPercent: string;
|
|
369
378
|
brightnessPercentFuture: string;
|
|
@@ -400,18 +409,24 @@ declare const en: {
|
|
|
400
409
|
receivedMessage: string;
|
|
401
410
|
reconnectMinutes: string;
|
|
402
411
|
reconnectSeconds: string;
|
|
412
|
+
transformFailed: string;
|
|
413
|
+
transformedValue: string;
|
|
403
414
|
};
|
|
404
415
|
onOff: {
|
|
405
416
|
stateOff: string;
|
|
406
417
|
stateOffFuture: string;
|
|
407
418
|
stateOn: string;
|
|
408
419
|
stateOnFuture: string;
|
|
409
|
-
unknownValue: string;
|
|
410
420
|
};
|
|
411
421
|
outlet: {
|
|
412
422
|
badValue: string;
|
|
423
|
+
currentConsumption: string;
|
|
424
|
+
electricCurrent: string;
|
|
413
425
|
inUse: string;
|
|
414
426
|
notInUse: string;
|
|
427
|
+
totalConsumption: string;
|
|
428
|
+
totalConsumptionReset: string;
|
|
429
|
+
voltage: string;
|
|
415
430
|
};
|
|
416
431
|
position: {
|
|
417
432
|
blind: {
|
|
@@ -431,7 +446,6 @@ declare const en: {
|
|
|
431
446
|
stateDecreasing: string;
|
|
432
447
|
stateIncreasing: string;
|
|
433
448
|
stateStopped: string;
|
|
434
|
-
stateUnknown: string;
|
|
435
449
|
targetPercent: string;
|
|
436
450
|
targetPercentSet: string;
|
|
437
451
|
targetValue: string;
|
|
@@ -449,7 +463,6 @@ declare const en: {
|
|
|
449
463
|
stateManual: string;
|
|
450
464
|
statePurifying: string;
|
|
451
465
|
stateUnknown: string;
|
|
452
|
-
unknownValue: string;
|
|
453
466
|
};
|
|
454
467
|
security: {
|
|
455
468
|
badValue: string;
|
|
@@ -498,6 +511,7 @@ declare const en: {
|
|
|
498
511
|
contact: {
|
|
499
512
|
active: string;
|
|
500
513
|
inactive: string;
|
|
514
|
+
timesOpenedReset: string;
|
|
501
515
|
};
|
|
502
516
|
leak: {
|
|
503
517
|
active: string;
|
package/dist/i18n/en.js
CHANGED
|
@@ -98,6 +98,7 @@ const en = {
|
|
|
98
98
|
broker: 'Broker',
|
|
99
99
|
disableLogging: 'Disable Logging',
|
|
100
100
|
group: 'Group',
|
|
101
|
+
historyEnabled: 'Enable History',
|
|
101
102
|
maximum: 'Maximum',
|
|
102
103
|
name: 'Name',
|
|
103
104
|
options: 'Options',
|
|
@@ -120,6 +121,7 @@ const en = {
|
|
|
120
121
|
topicGetContactSensorState: 'Get Contact Detected*',
|
|
121
122
|
topicGetCoolingThresholdTemperature: 'Get Cooling Threshold',
|
|
122
123
|
topicGetCurrentAmbientLightLevel: 'Get Current Light Level*',
|
|
124
|
+
topicGetCurrentConsumption: 'Get Watts (Eve-only)',
|
|
123
125
|
topicGetCurrentDoorState: 'Get Current Door State*',
|
|
124
126
|
topicGetCurrentFanState: 'Get Current Mode',
|
|
125
127
|
topicGetCurrentHeaterCoolerState: 'Get Current Mode*',
|
|
@@ -134,6 +136,7 @@ const en = {
|
|
|
134
136
|
topicGetCurrentSecurityState: 'Get Current State*',
|
|
135
137
|
topicGetCurrentTemperature: 'Get Current Temperature*',
|
|
136
138
|
topicGetCurrentVerticalTiltAngle: 'Get Vertical Angle',
|
|
139
|
+
topicGetElectricCurrent: 'Get Amps (Eve-only)',
|
|
137
140
|
topicGetFilterChangeIndication: 'Filter Change Indication',
|
|
138
141
|
topicGetFilterLifeLevel: 'Filter Life Remaining',
|
|
139
142
|
topicGetHeatingThresholdTemperature: 'Get Heating Threshold',
|
|
@@ -174,12 +177,14 @@ const en = {
|
|
|
174
177
|
topicGetTargetSecurityState: 'Get Target State*',
|
|
175
178
|
topicGetTargetTemperature: 'Get Target Temperature*',
|
|
176
179
|
topicGetTargetVerticalTiltAngle: 'Get Target Vertical Angle',
|
|
180
|
+
topicGetTotalConsumption: 'Get kWh (Eve-only)',
|
|
177
181
|
topicGetValveActive: 'Get Active*',
|
|
178
182
|
topicGetValveInUse: 'Get In Use*',
|
|
179
183
|
topicGetValveIsConfigured: 'Get Is Configured',
|
|
180
184
|
topicGetValveRemainingDuration: 'Get Duration Remaining',
|
|
181
185
|
topicGetValveSetDuration: 'Get Duration',
|
|
182
186
|
topicGetVOCDensity: 'Get VOC',
|
|
187
|
+
topicGetVoltage: 'Get Voltage (Eve-only)',
|
|
183
188
|
topicGetVolume: 'Get Volume',
|
|
184
189
|
topicResetFilterIndication: 'Reset Filter',
|
|
185
190
|
topicSetActive: 'Set Active*',
|
|
@@ -327,7 +332,6 @@ const en = {
|
|
|
327
332
|
stateInactive: '%s is inactive', // accessory name
|
|
328
333
|
stateManual: 'Setting %s to manual…', // accessory name
|
|
329
334
|
stateUnknown: '%s state is unknown', // accessory name
|
|
330
|
-
unknownValue: '%s unable to determine fan state from value %s. Ignoring…', // accessory name, value
|
|
331
335
|
},
|
|
332
336
|
filter: {
|
|
333
337
|
change: '%s filter requires maintenance', // accessory name
|
|
@@ -347,7 +351,6 @@ const en = {
|
|
|
347
351
|
stateOpenFuture: 'Opening %s…', // accessory name
|
|
348
352
|
stateOpening: '%s is opening', // accessory name
|
|
349
353
|
stateStopped: '%s is stopped', // accessory name
|
|
350
|
-
stateUnknown: '%s state is unknown', // accessory name
|
|
351
354
|
unknownValue: '%s unable to determine door state from value %s. Ignoring…', // accessory name, value
|
|
352
355
|
unobstructed: '%s is unobstructed', // accessory name
|
|
353
356
|
},
|
|
@@ -364,6 +367,12 @@ const en = {
|
|
|
364
367
|
stateUnknown: '%s state is unknown', // accessory name
|
|
365
368
|
unknownValue: '%s unable to determine heater/cooler state from value %s. Ignoring…', // accessory name, value
|
|
366
369
|
},
|
|
370
|
+
history: {
|
|
371
|
+
cleanup: 'Removing history for %s', // accessory name
|
|
372
|
+
cleanupFailed: 'Unable to remove history for %s. Try manually removing the file %s from your Homebridge \'persist\' directory.', // accessory name, filename
|
|
373
|
+
entry: '%s logging history entry:', // accessory name
|
|
374
|
+
updatedCharacteristic: '%s updated %s with value %s', // accessory name, characteristic name, value
|
|
375
|
+
},
|
|
367
376
|
lightbulb: {
|
|
368
377
|
brightnessPercent: '%s brightness is %d%', // accessory name, number
|
|
369
378
|
brightnessPercentFuture: 'Setting %s brightness to %d%…', // accessory name, number
|
|
@@ -400,18 +409,24 @@ const en = {
|
|
|
400
409
|
receivedMessage: 'Received message on %s with topic %s', // host, topic
|
|
401
410
|
reconnectMinutes: 'Will attempt to reconnect to %s in %s minutes…', // host, number
|
|
402
411
|
reconnectSeconds: 'Will attempt to reconnect to %s in %s seconds…', // host, number
|
|
412
|
+
transformFailed: 'Unable to execute transform:',
|
|
413
|
+
transformedValue: 'Transforming value from %s to %s', // number, number
|
|
403
414
|
},
|
|
404
415
|
onOff: {
|
|
405
416
|
stateOff: '%s is off', // accessory name
|
|
406
417
|
stateOffFuture: 'Turning off %s…', // accessory name
|
|
407
418
|
stateOn: '%s is on', // accessory name
|
|
408
419
|
stateOnFuture: 'Turning on %s…', // accessory name
|
|
409
|
-
unknownValue: '%s unable to determine on/off state from %s. Ignoring…', // accessory name, value
|
|
410
420
|
},
|
|
411
421
|
outlet: {
|
|
412
422
|
badValue: '%s unable to get in-use state for %s', // accessory name, value
|
|
423
|
+
currentConsumption: '%s consumption is %dW', // accessory name, value
|
|
424
|
+
electricCurrent: '%s current is %dA', // accessory name, value
|
|
413
425
|
inUse: '%s is in use', // accessory name
|
|
414
426
|
notInUse: '%s is not in use', // accessory name
|
|
427
|
+
totalConsumption: '%s consumption is %dkWh', // accessory name, value
|
|
428
|
+
totalConsumptionReset: '%s consumption has been reset', // accessory name
|
|
429
|
+
voltage: '%s voltage is %dV', // accessory name, value
|
|
415
430
|
},
|
|
416
431
|
position: {
|
|
417
432
|
blind: {
|
|
@@ -431,7 +446,6 @@ const en = {
|
|
|
431
446
|
stateDecreasing: '%s position is decreasing', // accessory name
|
|
432
447
|
stateIncreasing: '%s position is increasing', // accessory name
|
|
433
448
|
stateStopped: '%s position is stopped', // accessory name
|
|
434
|
-
stateUnknown: '%s position state is unknown', // accessory name
|
|
435
449
|
targetPercent: '%s target position is %d%', // accessory name, number
|
|
436
450
|
targetPercentSet: 'Setting %s target position to %d%…', // accessory name, number
|
|
437
451
|
targetValue: '%s target position is %d', // accessory name, number
|
|
@@ -449,7 +463,6 @@ const en = {
|
|
|
449
463
|
stateManual: 'Setting %s to manual…', // accessory name
|
|
450
464
|
statePurifying: '%s is purifying', // accessory name
|
|
451
465
|
stateUnknown: '%s state is unknown', // accessory name
|
|
452
|
-
unknownValue: '%s unable to determine air purifier state from value %s. Ignoring…', // accessory name, value
|
|
453
466
|
},
|
|
454
467
|
security: {
|
|
455
468
|
badValue: '%s missing value for security state %s', // accessory name, value
|
|
@@ -498,10 +511,11 @@ const en = {
|
|
|
498
511
|
contact: {
|
|
499
512
|
active: '%s detected contact', // accessory name
|
|
500
513
|
inactive: '%s stopped detecting contact', // accessory name
|
|
514
|
+
timesOpenedReset: '%s open count has been reset', // accessory name
|
|
501
515
|
},
|
|
502
516
|
leak: {
|
|
503
517
|
active: '%s detected a leak', // accessory name
|
|
504
|
-
inactive: '%s stopped detecting
|
|
518
|
+
inactive: '%s stopped detecting the leak', // accessory name
|
|
505
519
|
},
|
|
506
520
|
light: {
|
|
507
521
|
level: '%s current light level is %d lx', // accessory name, number
|