homebridge-dummy 1.1.0-beta.0 → 1.1.0-beta.2
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 +16 -14
- package/README.md +68 -10
- package/config.schema.json +218 -83
- package/dist/accessory/base.d.ts +6 -4
- package/dist/accessory/base.js +15 -17
- package/dist/accessory/base.js.map +1 -1
- package/dist/accessory/helpers.js +3 -0
- package/dist/accessory/helpers.js.map +1 -1
- package/dist/accessory/lock.d.ts +2 -1
- package/dist/accessory/lock.js +12 -5
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/onoff.d.ts +2 -1
- package/dist/accessory/onoff/onoff.js +10 -3
- package/dist/accessory/onoff/onoff.js.map +1 -1
- package/dist/accessory/position/position.d.ts +2 -1
- package/dist/accessory/position/position.js +11 -4
- package/dist/accessory/position/position.js.map +1 -1
- package/dist/accessory/thermostat.d.ts +28 -0
- package/dist/accessory/thermostat.js +147 -0
- package/dist/accessory/thermostat.js.map +1 -0
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/i18n/en.d.ts +31 -1
- package/dist/i18n/en.js +36 -6
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/i18n.d.ts +31 -1
- package/dist/i18n/template.d.ts +31 -1
- package/dist/i18n/zz.d.ts +31 -1
- package/dist/model/timer.d.ts +9 -5
- package/dist/model/timer.js +33 -30
- package/dist/model/timer.js.map +1 -1
- package/dist/model/trigger.d.ts +18 -0
- package/dist/model/trigger.js +92 -0
- package/dist/model/trigger.js.map +1 -0
- package/dist/model/types.d.ts +31 -0
- package/dist/model/types.js +18 -0
- package/dist/model/types.js.map +1 -1
- package/dist/tools/storage.d.ts +1 -0
- package/dist/tools/storage.js +1 -0
- package/dist/tools/storage.js.map +1 -1
- package/dist/tools/temperature.d.ts +3 -0
- package/dist/tools/temperature.js +14 -0
- package/dist/tools/temperature.js.map +1 -0
- package/dist/tools/time.d.ts +5 -0
- package/dist/tools/time.js +15 -0
- package/dist/tools/time.js.map +1 -0
- package/package.json +3 -1
package/dist/model/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare enum AccessoryType {
|
|
|
7
7
|
LockMechanism = "LockMechanism",
|
|
8
8
|
Outlet = "Outlet",
|
|
9
9
|
Switch = "Switch",
|
|
10
|
+
Thermostat = "Thermostat",
|
|
10
11
|
Window = "Window",
|
|
11
12
|
WindowCovering = "WindowCovering"
|
|
12
13
|
}
|
|
@@ -36,6 +37,12 @@ export declare enum DefaultPosition {
|
|
|
36
37
|
OPEN = "open",
|
|
37
38
|
CLOSED = "closed"
|
|
38
39
|
}
|
|
40
|
+
export declare enum DefaultThermostatState {
|
|
41
|
+
OFF = "off",
|
|
42
|
+
COOL = "cool",
|
|
43
|
+
HEAT = "heat",
|
|
44
|
+
AUTO = "auto"
|
|
45
|
+
}
|
|
39
46
|
export type LegacyAccessoryConfig = AccessoryConfig & {
|
|
40
47
|
name: string;
|
|
41
48
|
dimmer?: boolean;
|
|
@@ -56,18 +63,34 @@ export declare enum TimeUnits {
|
|
|
56
63
|
MINUTES = "MINUTES",
|
|
57
64
|
HOURS = "HOURS"
|
|
58
65
|
}
|
|
66
|
+
export declare enum TriggerType {
|
|
67
|
+
INTERVAL = "INTERVAL",
|
|
68
|
+
CRON = "CRON"
|
|
69
|
+
}
|
|
70
|
+
export declare enum TemperatureUnits {
|
|
71
|
+
CELSIUS = "C",
|
|
72
|
+
FAHRENHEIT = "F"
|
|
73
|
+
}
|
|
59
74
|
export type Assertable = {};
|
|
60
75
|
export type TimerConfig = Assertable & {
|
|
61
76
|
delay: number;
|
|
62
77
|
units: TimeUnits;
|
|
63
78
|
random?: boolean;
|
|
64
79
|
};
|
|
80
|
+
export type TriggerConfig = Assertable & {
|
|
81
|
+
type: TriggerType;
|
|
82
|
+
interval?: number;
|
|
83
|
+
units?: TimeUnits;
|
|
84
|
+
random?: boolean;
|
|
85
|
+
cron?: string;
|
|
86
|
+
};
|
|
65
87
|
export type DummyConfig = {
|
|
66
88
|
id: string;
|
|
67
89
|
name: string;
|
|
68
90
|
type: AccessoryType;
|
|
69
91
|
groupName?: string;
|
|
70
92
|
timer?: TimerConfig;
|
|
93
|
+
trigger?: TriggerConfig;
|
|
71
94
|
resetOnRestart?: boolean;
|
|
72
95
|
disableLogging?: boolean;
|
|
73
96
|
};
|
|
@@ -87,6 +110,14 @@ export type LockConfig = DummyConfig & {
|
|
|
87
110
|
commandLock?: string;
|
|
88
111
|
commandUnlock?: string;
|
|
89
112
|
};
|
|
113
|
+
export type ThermostatConfig = DummyConfig & {
|
|
114
|
+
temperatureUnits?: TemperatureUnits;
|
|
115
|
+
defaultThermostatState?: DefaultThermostatState;
|
|
116
|
+
defaultTemperature?: number;
|
|
117
|
+
commandOn?: string;
|
|
118
|
+
commandOff?: string;
|
|
119
|
+
commandTemperature?: string;
|
|
120
|
+
};
|
|
90
121
|
export type PositionConfig = DummyConfig & {
|
|
91
122
|
defaultPosition?: DefaultPosition;
|
|
92
123
|
commandOpen?: string;
|
package/dist/model/types.js
CHANGED
|
@@ -5,6 +5,7 @@ export var AccessoryType;
|
|
|
5
5
|
AccessoryType["LockMechanism"] = "LockMechanism";
|
|
6
6
|
AccessoryType["Outlet"] = "Outlet";
|
|
7
7
|
AccessoryType["Switch"] = "Switch";
|
|
8
|
+
AccessoryType["Thermostat"] = "Thermostat";
|
|
8
9
|
AccessoryType["Window"] = "Window";
|
|
9
10
|
AccessoryType["WindowCovering"] = "WindowCovering";
|
|
10
11
|
})(AccessoryType || (AccessoryType = {}));
|
|
@@ -38,10 +39,27 @@ export var DefaultPosition;
|
|
|
38
39
|
DefaultPosition["OPEN"] = "open";
|
|
39
40
|
DefaultPosition["CLOSED"] = "closed";
|
|
40
41
|
})(DefaultPosition || (DefaultPosition = {}));
|
|
42
|
+
export var DefaultThermostatState;
|
|
43
|
+
(function (DefaultThermostatState) {
|
|
44
|
+
DefaultThermostatState["OFF"] = "off";
|
|
45
|
+
DefaultThermostatState["COOL"] = "cool";
|
|
46
|
+
DefaultThermostatState["HEAT"] = "heat";
|
|
47
|
+
DefaultThermostatState["AUTO"] = "auto";
|
|
48
|
+
})(DefaultThermostatState || (DefaultThermostatState = {}));
|
|
41
49
|
export var TimeUnits;
|
|
42
50
|
(function (TimeUnits) {
|
|
43
51
|
TimeUnits["SECONDS"] = "SECONDS";
|
|
44
52
|
TimeUnits["MINUTES"] = "MINUTES";
|
|
45
53
|
TimeUnits["HOURS"] = "HOURS";
|
|
46
54
|
})(TimeUnits || (TimeUnits = {}));
|
|
55
|
+
export var TriggerType;
|
|
56
|
+
(function (TriggerType) {
|
|
57
|
+
TriggerType["INTERVAL"] = "INTERVAL";
|
|
58
|
+
TriggerType["CRON"] = "CRON";
|
|
59
|
+
})(TriggerType || (TriggerType = {}));
|
|
60
|
+
export var TemperatureUnits;
|
|
61
|
+
(function (TemperatureUnits) {
|
|
62
|
+
TemperatureUnits["CELSIUS"] = "C";
|
|
63
|
+
TemperatureUnits["FAHRENHEIT"] = "F";
|
|
64
|
+
})(TemperatureUnits || (TemperatureUnits = {}));
|
|
47
65
|
//# sourceMappingURL=types.js.map
|
package/dist/model/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;AACnC,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,yDAA2C,CAAA;IAC3C,2DAA6C,CAAA;IAC7C,6CAA+B,CAAA;IAC/B,uCAAyB,CAAA;IACzB,2CAA6B,CAAA;IAC7B,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;AAC7B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,MAAM,CAAN,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC9B,uEAA+C,CAAA;IAC/C,yEAAiD,CAAA;IACjD,iEAAyC,CAAA;IACzC,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,+DAAuC,CAAA;IACvC,uDAA+B,CAAA;AACjC,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,oCAAiB,CAAA;AACnB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,uCAAa,CAAA;IACb,uCAAa,CAAA;IACb,uCAAa,CAAA;AACf,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAmBD,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
|
package/dist/tools/storage.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const STORAGE_KEY_SUFFIX_DEFAULT_STATE = "DefaultState";
|
|
2
2
|
export declare const STORAGE_KEY_SUFFIX_DEFAULT_BRIGHTNESS = "Brightness";
|
|
3
|
+
export declare const STORAGE_KEY_SUFFIX_DEFAULT_TEMPERATURE = "Temperature";
|
|
3
4
|
export declare function storageGet(dir: string, key: string): Promise<any>;
|
|
4
5
|
export declare function storageSet(dir: string, key: string, value: any): Promise<void>;
|
package/dist/tools/storage.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import storage from 'node-persist';
|
|
2
2
|
export const STORAGE_KEY_SUFFIX_DEFAULT_STATE = 'DefaultState';
|
|
3
3
|
export const STORAGE_KEY_SUFFIX_DEFAULT_BRIGHTNESS = 'Brightness';
|
|
4
|
+
export const STORAGE_KEY_SUFFIX_DEFAULT_TEMPERATURE = 'Temperature';
|
|
4
5
|
async function init(dir) {
|
|
5
6
|
await storage.init({ dir: dir, forgiveParseErrors: true });
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAc,CAAC;AAC/D,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,gCAAgC,GAAG,cAAc,CAAC;AAC/D,MAAM,CAAC,MAAM,qCAAqC,GAAG,YAAY,CAAC;AAClE,MAAM,CAAC,MAAM,sCAAsC,GAAG,aAAa,CAAC;AAEpE,KAAK,UAAU,IAAI,CAAC,GAAW;IAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,GAAW;IACvD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU;IACZ,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,GAAW,EAAE,KAAU;IACnE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,UAAU;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TemperatureUnits } from '../model/types.js';
|
|
2
|
+
const fahrenheitToCelsius = (fahrenheit) => {
|
|
3
|
+
return Number(((fahrenheit - 32) * 5 / 9).toFixed(1));
|
|
4
|
+
};
|
|
5
|
+
const celsiusToFahrenheit = (celsius) => {
|
|
6
|
+
return Math.round((celsius * 9 / 5) + 32);
|
|
7
|
+
};
|
|
8
|
+
export const toCelsius = (temp, units) => {
|
|
9
|
+
return units === TemperatureUnits.FAHRENHEIT ? fahrenheitToCelsius(temp) : temp;
|
|
10
|
+
};
|
|
11
|
+
export const fromCelsius = (temp, units) => {
|
|
12
|
+
return units === TemperatureUnits.FAHRENHEIT ? celsiusToFahrenheit(temp) : temp;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=temperature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../src/tools/temperature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACzD,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAwB,EAAU,EAAE;IAC1E,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAwB,EAAU,EAAE;IAC5E,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TimeUnits } from '../model/types.js';
|
|
2
|
+
export const SECOND = 1000;
|
|
3
|
+
export const MINUTE = 60 * SECOND;
|
|
4
|
+
export const HOUR = 60 * MINUTE;
|
|
5
|
+
export function toMilliseconds(value, units) {
|
|
6
|
+
switch (units) {
|
|
7
|
+
case TimeUnits.SECONDS:
|
|
8
|
+
return value * SECOND;
|
|
9
|
+
case TimeUnits.MINUTES:
|
|
10
|
+
return value * MINUTE;
|
|
11
|
+
case TimeUnits.HOURS:
|
|
12
|
+
return value * HOUR;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/tools/time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;AAEhC,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAgB;IAC5D,QAAO,KAAK,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,KAAK,GAAG,MAAM,CAAC;QACxB,KAAK,SAAS,CAAC,OAAO;YACpB,OAAO,KAAK,GAAG,MAAM,CAAC;QACxB,KAAK,SAAS,CAAC,KAAK;YAClB,OAAO,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName": "Homebridge Dummy",
|
|
5
5
|
"description": "Dummy devices for Homebridge",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "1.1.0-beta.
|
|
7
|
+
"version": "1.1.0-beta.2",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-dummy#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@homebridge/plugin-ui-utils": "^2.0.2",
|
|
42
|
+
"cron": "^4.3.2",
|
|
42
43
|
"homebridge-lib": "^7.1.4",
|
|
43
44
|
"lodash.merge": "^4.6.2",
|
|
44
45
|
"node-persist": "^4.0.4"
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"esbuild": "^0.25.5",
|
|
50
51
|
"eslint": "^9.27.0",
|
|
51
52
|
"homebridge": "^2.0.0-beta.0",
|
|
53
|
+
"jiti": "^2.5.1",
|
|
52
54
|
"rimraf": "^6.0.1",
|
|
53
55
|
"ts-node": "^10.9.2",
|
|
54
56
|
"typescript-eslint": "^8.35.1"
|