homebridge-dummy 1.3.2 → 1.4.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 +12 -1
- package/README.md +36 -2
- package/config.schema.json +153 -29
- package/dist/accessory/base.d.ts +28 -8
- package/dist/accessory/base.js +53 -37
- package/dist/accessory/base.js.map +1 -1
- package/dist/accessory/group.d.ts +9 -1
- package/dist/accessory/group.js +14 -9
- package/dist/accessory/group.js.map +1 -1
- package/dist/accessory/helpers.d.ts +3 -5
- package/dist/accessory/helpers.js +12 -12
- package/dist/accessory/helpers.js.map +1 -1
- package/dist/accessory/lock.d.ts +6 -6
- package/dist/accessory/lock.js +14 -8
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.d.ts +9 -4
- package/dist/accessory/onoff/lightbulb.js +31 -4
- package/dist/accessory/onoff/lightbulb.js.map +1 -1
- package/dist/accessory/onoff/onoff.d.ts +8 -8
- package/dist/accessory/onoff/onoff.js +25 -13
- package/dist/accessory/onoff/onoff.js.map +1 -1
- package/dist/accessory/position/garage.d.ts +3 -4
- package/dist/accessory/position/garage.js +3 -3
- package/dist/accessory/position/garage.js.map +1 -1
- package/dist/accessory/position/position.d.ts +6 -6
- package/dist/accessory/position/position.js +14 -8
- package/dist/accessory/position/position.js.map +1 -1
- package/dist/accessory/sensor.d.ts +4 -5
- package/dist/accessory/sensor.js +14 -15
- package/dist/accessory/sensor.js.map +1 -1
- package/dist/accessory/thermostat.d.ts +5 -6
- package/dist/accessory/thermostat.js +17 -17
- package/dist/accessory/thermostat.js.map +1 -1
- package/dist/homebridge/platform.d.ts +1 -1
- package/dist/homebridge/platform.js +29 -12
- 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/de.d.ts +22 -0
- package/dist/i18n/en.d.ts +22 -0
- package/dist/i18n/en.js +30 -8
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts +22 -0
- package/dist/i18n/i18n.d.ts +22 -0
- package/dist/i18n/ru.d.ts +22 -0
- package/dist/i18n/template.d.ts +22 -0
- package/dist/model/conditions.d.ts +14 -0
- package/dist/model/conditions.js +99 -0
- package/dist/model/conditions.js.map +1 -0
- package/dist/model/enums.d.ts +15 -4
- package/dist/model/enums.js +36 -12
- package/dist/model/enums.js.map +1 -1
- package/dist/model/types.d.ts +14 -3
- package/dist/timeout/fader.d.ts +9 -0
- package/dist/timeout/fader.js +33 -0
- package/dist/timeout/fader.js.map +1 -0
- package/dist/timeout/limiter.d.ts +2 -2
- package/dist/timeout/limiter.js +8 -8
- package/dist/timeout/limiter.js.map +1 -1
- package/dist/timeout/schedule.d.ts +3 -3
- package/dist/timeout/schedule.js +18 -18
- package/dist/timeout/schedule.js.map +1 -1
- package/dist/timeout/timeout.d.ts +6 -4
- package/dist/timeout/timeout.js +12 -7
- package/dist/timeout/timeout.js.map +1 -1
- package/dist/timeout/timer.d.ts +3 -4
- package/dist/timeout/timer.js +8 -9
- package/dist/timeout/timer.js.map +1 -1
- package/dist/tools/configMigration.js +2 -2
- package/dist/tools/configMigration.js.map +1 -1
- package/package.json +10 -1
package/dist/i18n/en.d.ts
CHANGED
|
@@ -8,6 +8,17 @@ declare const en: {
|
|
|
8
8
|
error: string;
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
|
+
conditions: {
|
|
12
|
+
currentResult: string;
|
|
13
|
+
evaluatingConditions: string;
|
|
14
|
+
satisfied: string;
|
|
15
|
+
notSatisfied: string;
|
|
16
|
+
selfReference: string;
|
|
17
|
+
statesEqual: string;
|
|
18
|
+
statesNotEqual: string;
|
|
19
|
+
stateUnknown: string;
|
|
20
|
+
statesUnrelated: string;
|
|
21
|
+
};
|
|
11
22
|
lightbulb: {
|
|
12
23
|
brightness: string;
|
|
13
24
|
stateOn: string;
|
|
@@ -28,6 +39,7 @@ declare const en: {
|
|
|
28
39
|
unsecured: string;
|
|
29
40
|
};
|
|
30
41
|
onOff: {
|
|
42
|
+
badDefault: string;
|
|
31
43
|
stateOff: string;
|
|
32
44
|
stateOn: string;
|
|
33
45
|
};
|
|
@@ -70,6 +82,8 @@ declare const en: {
|
|
|
70
82
|
description: {
|
|
71
83
|
commands: string;
|
|
72
84
|
cron: string;
|
|
85
|
+
conditions: string;
|
|
86
|
+
fadeOut: string;
|
|
73
87
|
limiter: string;
|
|
74
88
|
random: string;
|
|
75
89
|
schedule: string;
|
|
@@ -102,10 +116,13 @@ declare const en: {
|
|
|
102
116
|
minutely: string;
|
|
103
117
|
month: string;
|
|
104
118
|
monthly: string;
|
|
119
|
+
none: string;
|
|
105
120
|
occupancySensor: string;
|
|
106
121
|
off: string;
|
|
107
122
|
on: string;
|
|
108
123
|
open: string;
|
|
124
|
+
operatorAnd: string;
|
|
125
|
+
operatorOr: string;
|
|
109
126
|
outlet: string;
|
|
110
127
|
milliseconds: string;
|
|
111
128
|
minutes: string;
|
|
@@ -139,6 +156,7 @@ declare const en: {
|
|
|
139
156
|
yes: string;
|
|
140
157
|
title: {
|
|
141
158
|
accessory: string;
|
|
159
|
+
accessoryState: string;
|
|
142
160
|
commandClose: string;
|
|
143
161
|
commandOff: string;
|
|
144
162
|
commandOn: string;
|
|
@@ -147,6 +165,8 @@ declare const en: {
|
|
|
147
165
|
commands: string;
|
|
148
166
|
commandTemperature: string;
|
|
149
167
|
commandUnlock: string;
|
|
168
|
+
condition: string;
|
|
169
|
+
conditions: string;
|
|
150
170
|
cron: string;
|
|
151
171
|
cronCustom: string;
|
|
152
172
|
defaultBrightness: string;
|
|
@@ -156,11 +176,13 @@ declare const en: {
|
|
|
156
176
|
delay: string;
|
|
157
177
|
disableLogging: string;
|
|
158
178
|
enableWebook: string;
|
|
179
|
+
fadeOut: string;
|
|
159
180
|
groupName: string;
|
|
160
181
|
interval: string;
|
|
161
182
|
limit: string;
|
|
162
183
|
limiter: string;
|
|
163
184
|
name: string;
|
|
185
|
+
operator: string;
|
|
164
186
|
period: string;
|
|
165
187
|
preset: string;
|
|
166
188
|
random: string;
|
package/dist/i18n/en.js
CHANGED
|
@@ -8,6 +8,17 @@ const en = {
|
|
|
8
8
|
error: '%s failed to execute command', // accessory name
|
|
9
9
|
executed: '%s executed command', // accessory name
|
|
10
10
|
},
|
|
11
|
+
conditions: {
|
|
12
|
+
currentResult: 'Current result is %s', // boolean
|
|
13
|
+
evaluatingConditions: 'Evaluating conditions for %s', // accessory name
|
|
14
|
+
satisfied: '%s conditions have been satisfied. Triggering…', // accessory name
|
|
15
|
+
notSatisfied: '%s conditions not satisfied', // accessory name
|
|
16
|
+
selfReference: '%s is not allowed to reference itself as a triggering condition', // accessory name
|
|
17
|
+
statesEqual: 'Current and desired states are both %s', // state name
|
|
18
|
+
statesNotEqual: 'Current state %s is not equivalent to desired state %s', // state name, state name
|
|
19
|
+
stateUnknown: 'Cannot yet evalutate conditions because state for %s is unknown', // accessory id
|
|
20
|
+
statesUnrelated: 'Desired condition state %s is being compared to current state %s. Was this a typo?', // state name, state name
|
|
21
|
+
},
|
|
11
22
|
lightbulb: {
|
|
12
23
|
brightness: '%s brightness is %d%', // accessory name, number
|
|
13
24
|
stateOn: '%s is on, brightness is %d%', // accessory name, number
|
|
@@ -28,6 +39,7 @@ const en = {
|
|
|
28
39
|
unsecured: '%s is unlocked', // accessory name
|
|
29
40
|
},
|
|
30
41
|
onOff: {
|
|
42
|
+
badDefault: '%s has invalid default on state %s. Must be one of: %s', // accessory name, input, list of state names
|
|
31
43
|
stateOff: '%s is off', // accessory name
|
|
32
44
|
stateOn: '%s is on', // accessory name
|
|
33
45
|
},
|
|
@@ -40,10 +52,10 @@ const en = {
|
|
|
40
52
|
badType: '%s has invalid schedule type %s. Must be one of: %s', // accessory name, input, list of type names
|
|
41
53
|
badUnits: '%s schedule has invalid time units %s. Must be one of: %s', // accessory name, input, list of unit names
|
|
42
54
|
cron: '%s starting schedule cronjob', // accessory name
|
|
43
|
-
intervalMilliseconds: '%s
|
|
44
|
-
intervalSeconds: '%s
|
|
45
|
-
intervalMinutes: '%s
|
|
46
|
-
intervalHours: '%
|
|
55
|
+
intervalMilliseconds: '%s will trigger in %s milliseconds', // accessory name, number
|
|
56
|
+
intervalSeconds: '%s will trigger in %s seconds', // accessory name, number
|
|
57
|
+
intervalMinutes: '%s will trigger in %s minutes', // accessory name, number
|
|
58
|
+
intervalHours: '% will trigger in %s hours', // accessory name, number
|
|
47
59
|
},
|
|
48
60
|
thermostat: {
|
|
49
61
|
auto: '%s set to Auto', // accessory name
|
|
@@ -61,15 +73,17 @@ const en = {
|
|
|
61
73
|
cancel: 'Cancelled the timer for %s', // accessory name
|
|
62
74
|
expired: '%s timer expired while restarting. Returning to default state…', // accessory name
|
|
63
75
|
resume: '%s resuming timer', // accessory name
|
|
64
|
-
setMilliseconds: '%s
|
|
65
|
-
setSeconds: '%s
|
|
66
|
-
setMinutes: '%s
|
|
67
|
-
setHours: '%s
|
|
76
|
+
setMilliseconds: '%s will reset in %s milliseconds', // accessory name, number
|
|
77
|
+
setSeconds: '%s will reset in %s seconds', // accessory name, number
|
|
78
|
+
setMinutes: '%s will reset in %s minutes', // accessory name, number
|
|
79
|
+
setHours: '%s will reset in %s hours', // accessory name, number
|
|
68
80
|
},
|
|
69
81
|
config: {
|
|
70
82
|
description: {
|
|
71
83
|
commands: 'Execute arbitrary commands (e.g. curl) when the accessory changes state',
|
|
72
84
|
cron: 'Visit crontab.guru for help',
|
|
85
|
+
conditions: 'Set the accessory to its opposite (non-default) value when the specified conditions are met',
|
|
86
|
+
fadeOut: 'Lightbulb will count down rather than abruptly going from 100% to off',
|
|
73
87
|
limiter: 'Restrict the total time this accessory can be set to its non-default value, for each specified period',
|
|
74
88
|
random: 'Time will be randomized with the above value as a maximum',
|
|
75
89
|
schedule: 'Set the accessory to its opposite (non-default) value at specified interval or times',
|
|
@@ -102,10 +116,13 @@ const en = {
|
|
|
102
116
|
minutely: 'Every Minute',
|
|
103
117
|
month: 'Month',
|
|
104
118
|
monthly: 'Monthly',
|
|
119
|
+
none: 'None',
|
|
105
120
|
occupancySensor: 'Occupancy',
|
|
106
121
|
off: 'Off',
|
|
107
122
|
on: 'On',
|
|
108
123
|
open: 'Open',
|
|
124
|
+
operatorAnd: 'ALL conditions are met', // proceeded by "Trigger when…"
|
|
125
|
+
operatorOr: 'ANY conditions are met', // proceeded by "Trigger when…"
|
|
109
126
|
outlet: 'Outlet',
|
|
110
127
|
milliseconds: 'Milliseconds',
|
|
111
128
|
minutes: 'Minutes',
|
|
@@ -139,6 +156,7 @@ const en = {
|
|
|
139
156
|
yes: 'Yes',
|
|
140
157
|
title: {
|
|
141
158
|
accessory: 'Accessory',
|
|
159
|
+
accessoryState: 'State',
|
|
142
160
|
commandClose: 'Close Command',
|
|
143
161
|
commandOff: 'Off Command',
|
|
144
162
|
commandOn: 'On Command',
|
|
@@ -147,6 +165,8 @@ const en = {
|
|
|
147
165
|
commands: 'Commands',
|
|
148
166
|
commandTemperature: 'Temperature Changed Command',
|
|
149
167
|
commandUnlock: 'Unlock Command',
|
|
168
|
+
condition: 'Condition',
|
|
169
|
+
conditions: 'Trigger Conditions',
|
|
150
170
|
cron: 'Cron',
|
|
151
171
|
cronCustom: 'Custom Cron',
|
|
152
172
|
defaultBrightness: 'Default Brightness',
|
|
@@ -156,11 +176,13 @@ const en = {
|
|
|
156
176
|
delay: 'Delay',
|
|
157
177
|
disableLogging: 'Disable Logging',
|
|
158
178
|
enableWebook: 'Enable Webhook',
|
|
179
|
+
fadeOut: 'Fade Out',
|
|
159
180
|
groupName: 'Group Name',
|
|
160
181
|
interval: 'Interval',
|
|
161
182
|
limit: 'Limit',
|
|
162
183
|
limiter: 'Time Limit',
|
|
163
184
|
name: 'Name',
|
|
185
|
+
operator: 'Trigger when…',
|
|
164
186
|
period: 'Per',
|
|
165
187
|
preset: 'Preset',
|
|
166
188
|
random: 'Randomize',
|
package/dist/i18n/en.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,GAAG;IAET,SAAS,EAAE;QACT,YAAY,EAAE,gCAAgC,EAAE,+CAA+C;QAC/F,WAAW,EAAE,sCAAsC,EAAE,8BAA8B;QACnF,eAAe,EAAE,iCAAiC,EAAE,gCAAgC;KACrF;IAED,OAAO,EAAE;QACP,KAAK,EAAE,8BAA8B,EAAE,iBAAiB;QACxD,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB;KACnD;IAED,SAAS,EAAE;QACT,UAAU,EAAE,sBAAsB,EAAE,yBAAyB;QAC7D,OAAO,EAAE,6BAA6B,EAAE,yBAAyB;KAClE;IAED,OAAO,EAAE;QACP,SAAS,EAAE,iEAAiE,EAAE,4CAA4C;QAC1H,QAAQ,EAAE,gEAAgE,EAAE,4CAA4C;QACxH,OAAO,EAAE,mCAAmC,EAAE,iBAAiB;QAC/D,kBAAkB,EAAE,uFAAuF,EAAE,iBAAiB;QAC9H,gBAAgB,EAAE,qDAAqD,EAAE,iBAAiB;QAC1F,cAAc,EAAE,8CAA8C,EAAE,yBAAyB;QACzF,gBAAgB,EAAE,gDAAgD,EAAE,yBAAyB;QAC7F,gBAAgB,EAAE,gDAAgD,EAAE,yBAAyB;KAC9F;IAED,IAAI,EAAE;QACJ,UAAU,EAAE,0DAA0D,EAAE,6CAA6C;QACrH,OAAO,EAAE,cAAc,EAAE,iBAAiB;QAC1C,SAAS,EAAE,gBAAgB,EAAE,iBAAiB;KAC/C;IAED,KAAK,EAAE;QACL,QAAQ,EAAE,WAAW,EAAE,iBAAiB;QACxC,OAAO,EAAE,UAAU,EAAE,iBAAiB;KACvC;IAED,QAAQ,EAAE;QACR,UAAU,EAAE,wDAAwD,EAAE,gDAAgD;QACtH,MAAM,EAAE,cAAc,EAAE,iBAAiB;QACzC,IAAI,EAAE,YAAY,EAAE,iBAAiB;KACtC;IAED,QAAQ,EAAE;QACR,OAAO,EAAE,qDAAqD,EAAE,4CAA4C;QAC5G,QAAQ,EAAE,2DAA2D,EAAE,4CAA4C;QACnH,IAAI,EAAE,8BAA8B,EAAE,iBAAiB;QACvD,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/es.d.ts
CHANGED
|
@@ -8,6 +8,17 @@ declare const es: {
|
|
|
8
8
|
error: string;
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
|
+
conditions: {
|
|
12
|
+
currentResult: string;
|
|
13
|
+
evaluatingConditions: string;
|
|
14
|
+
satisfied: string;
|
|
15
|
+
notSatisfied: string;
|
|
16
|
+
selfReference: string;
|
|
17
|
+
statesEqual: string;
|
|
18
|
+
statesNotEqual: string;
|
|
19
|
+
stateUnknown: string;
|
|
20
|
+
statesUnrelated: string;
|
|
21
|
+
};
|
|
11
22
|
lightbulb: {
|
|
12
23
|
brightness: string;
|
|
13
24
|
stateOn: string;
|
|
@@ -28,6 +39,7 @@ declare const es: {
|
|
|
28
39
|
unsecured: string;
|
|
29
40
|
};
|
|
30
41
|
onOff: {
|
|
42
|
+
badDefault: string;
|
|
31
43
|
stateOff: string;
|
|
32
44
|
stateOn: string;
|
|
33
45
|
};
|
|
@@ -70,6 +82,8 @@ declare const es: {
|
|
|
70
82
|
description: {
|
|
71
83
|
commands: string;
|
|
72
84
|
cron: string;
|
|
85
|
+
conditions: string;
|
|
86
|
+
fadeOut: string;
|
|
73
87
|
limiter: string;
|
|
74
88
|
random: string;
|
|
75
89
|
schedule: string;
|
|
@@ -102,10 +116,13 @@ declare const es: {
|
|
|
102
116
|
minutely: string;
|
|
103
117
|
month: string;
|
|
104
118
|
monthly: string;
|
|
119
|
+
none: string;
|
|
105
120
|
occupancySensor: string;
|
|
106
121
|
off: string;
|
|
107
122
|
on: string;
|
|
108
123
|
open: string;
|
|
124
|
+
operatorAnd: string;
|
|
125
|
+
operatorOr: string;
|
|
109
126
|
outlet: string;
|
|
110
127
|
milliseconds: string;
|
|
111
128
|
minutes: string;
|
|
@@ -139,6 +156,7 @@ declare const es: {
|
|
|
139
156
|
yes: string;
|
|
140
157
|
title: {
|
|
141
158
|
accessory: string;
|
|
159
|
+
accessoryState: string;
|
|
142
160
|
commandClose: string;
|
|
143
161
|
commandOff: string;
|
|
144
162
|
commandOn: string;
|
|
@@ -147,6 +165,8 @@ declare const es: {
|
|
|
147
165
|
commands: string;
|
|
148
166
|
commandTemperature: string;
|
|
149
167
|
commandUnlock: string;
|
|
168
|
+
condition: string;
|
|
169
|
+
conditions: string;
|
|
150
170
|
cron: string;
|
|
151
171
|
cronCustom: string;
|
|
152
172
|
defaultBrightness: string;
|
|
@@ -156,11 +176,13 @@ declare const es: {
|
|
|
156
176
|
delay: string;
|
|
157
177
|
disableLogging: string;
|
|
158
178
|
enableWebook: string;
|
|
179
|
+
fadeOut: string;
|
|
159
180
|
groupName: string;
|
|
160
181
|
interval: string;
|
|
161
182
|
limit: string;
|
|
162
183
|
limiter: string;
|
|
163
184
|
name: string;
|
|
185
|
+
operator: string;
|
|
164
186
|
period: string;
|
|
165
187
|
preset: string;
|
|
166
188
|
random: string;
|
package/dist/i18n/i18n.d.ts
CHANGED
|
@@ -19,6 +19,17 @@ declare const translations: {
|
|
|
19
19
|
error: string;
|
|
20
20
|
executed: string;
|
|
21
21
|
};
|
|
22
|
+
conditions: {
|
|
23
|
+
currentResult: string;
|
|
24
|
+
evaluatingConditions: string;
|
|
25
|
+
satisfied: string;
|
|
26
|
+
notSatisfied: string;
|
|
27
|
+
selfReference: string;
|
|
28
|
+
statesEqual: string;
|
|
29
|
+
statesNotEqual: string;
|
|
30
|
+
stateUnknown: string;
|
|
31
|
+
statesUnrelated: string;
|
|
32
|
+
};
|
|
22
33
|
lightbulb: {
|
|
23
34
|
brightness: string;
|
|
24
35
|
stateOn: string;
|
|
@@ -39,6 +50,7 @@ declare const translations: {
|
|
|
39
50
|
unsecured: string;
|
|
40
51
|
};
|
|
41
52
|
onOff: {
|
|
53
|
+
badDefault: string;
|
|
42
54
|
stateOff: string;
|
|
43
55
|
stateOn: string;
|
|
44
56
|
};
|
|
@@ -81,6 +93,8 @@ declare const translations: {
|
|
|
81
93
|
description: {
|
|
82
94
|
commands: string;
|
|
83
95
|
cron: string;
|
|
96
|
+
conditions: string;
|
|
97
|
+
fadeOut: string;
|
|
84
98
|
limiter: string;
|
|
85
99
|
random: string;
|
|
86
100
|
schedule: string;
|
|
@@ -113,10 +127,13 @@ declare const translations: {
|
|
|
113
127
|
minutely: string;
|
|
114
128
|
month: string;
|
|
115
129
|
monthly: string;
|
|
130
|
+
none: string;
|
|
116
131
|
occupancySensor: string;
|
|
117
132
|
off: string;
|
|
118
133
|
on: string;
|
|
119
134
|
open: string;
|
|
135
|
+
operatorAnd: string;
|
|
136
|
+
operatorOr: string;
|
|
120
137
|
outlet: string;
|
|
121
138
|
milliseconds: string;
|
|
122
139
|
minutes: string;
|
|
@@ -150,6 +167,7 @@ declare const translations: {
|
|
|
150
167
|
yes: string;
|
|
151
168
|
title: {
|
|
152
169
|
accessory: string;
|
|
170
|
+
accessoryState: string;
|
|
153
171
|
commandClose: string;
|
|
154
172
|
commandOff: string;
|
|
155
173
|
commandOn: string;
|
|
@@ -158,6 +176,8 @@ declare const translations: {
|
|
|
158
176
|
commands: string;
|
|
159
177
|
commandTemperature: string;
|
|
160
178
|
commandUnlock: string;
|
|
179
|
+
condition: string;
|
|
180
|
+
conditions: string;
|
|
161
181
|
cron: string;
|
|
162
182
|
cronCustom: string;
|
|
163
183
|
defaultBrightness: string;
|
|
@@ -167,11 +187,13 @@ declare const translations: {
|
|
|
167
187
|
delay: string;
|
|
168
188
|
disableLogging: string;
|
|
169
189
|
enableWebook: string;
|
|
190
|
+
fadeOut: string;
|
|
170
191
|
groupName: string;
|
|
171
192
|
interval: string;
|
|
172
193
|
limit: string;
|
|
173
194
|
limiter: string;
|
|
174
195
|
name: string;
|
|
196
|
+
operator: string;
|
|
175
197
|
period: string;
|
|
176
198
|
preset: string;
|
|
177
199
|
random: string;
|
package/dist/i18n/ru.d.ts
CHANGED
|
@@ -8,6 +8,17 @@ declare const ru: {
|
|
|
8
8
|
error: string;
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
|
+
conditions: {
|
|
12
|
+
currentResult: string;
|
|
13
|
+
evaluatingConditions: string;
|
|
14
|
+
satisfied: string;
|
|
15
|
+
notSatisfied: string;
|
|
16
|
+
selfReference: string;
|
|
17
|
+
statesEqual: string;
|
|
18
|
+
statesNotEqual: string;
|
|
19
|
+
stateUnknown: string;
|
|
20
|
+
statesUnrelated: string;
|
|
21
|
+
};
|
|
11
22
|
lightbulb: {
|
|
12
23
|
brightness: string;
|
|
13
24
|
stateOn: string;
|
|
@@ -28,6 +39,7 @@ declare const ru: {
|
|
|
28
39
|
unsecured: string;
|
|
29
40
|
};
|
|
30
41
|
onOff: {
|
|
42
|
+
badDefault: string;
|
|
31
43
|
stateOff: string;
|
|
32
44
|
stateOn: string;
|
|
33
45
|
};
|
|
@@ -70,6 +82,8 @@ declare const ru: {
|
|
|
70
82
|
description: {
|
|
71
83
|
commands: string;
|
|
72
84
|
cron: string;
|
|
85
|
+
conditions: string;
|
|
86
|
+
fadeOut: string;
|
|
73
87
|
limiter: string;
|
|
74
88
|
random: string;
|
|
75
89
|
schedule: string;
|
|
@@ -102,10 +116,13 @@ declare const ru: {
|
|
|
102
116
|
minutely: string;
|
|
103
117
|
month: string;
|
|
104
118
|
monthly: string;
|
|
119
|
+
none: string;
|
|
105
120
|
occupancySensor: string;
|
|
106
121
|
off: string;
|
|
107
122
|
on: string;
|
|
108
123
|
open: string;
|
|
124
|
+
operatorAnd: string;
|
|
125
|
+
operatorOr: string;
|
|
109
126
|
outlet: string;
|
|
110
127
|
milliseconds: string;
|
|
111
128
|
minutes: string;
|
|
@@ -139,6 +156,7 @@ declare const ru: {
|
|
|
139
156
|
yes: string;
|
|
140
157
|
title: {
|
|
141
158
|
accessory: string;
|
|
159
|
+
accessoryState: string;
|
|
142
160
|
commandClose: string;
|
|
143
161
|
commandOff: string;
|
|
144
162
|
commandOn: string;
|
|
@@ -147,6 +165,8 @@ declare const ru: {
|
|
|
147
165
|
commands: string;
|
|
148
166
|
commandTemperature: string;
|
|
149
167
|
commandUnlock: string;
|
|
168
|
+
condition: string;
|
|
169
|
+
conditions: string;
|
|
150
170
|
cron: string;
|
|
151
171
|
cronCustom: string;
|
|
152
172
|
defaultBrightness: string;
|
|
@@ -156,11 +176,13 @@ declare const ru: {
|
|
|
156
176
|
delay: string;
|
|
157
177
|
disableLogging: string;
|
|
158
178
|
enableWebook: string;
|
|
179
|
+
fadeOut: string;
|
|
159
180
|
groupName: string;
|
|
160
181
|
interval: string;
|
|
161
182
|
limit: string;
|
|
162
183
|
limiter: string;
|
|
163
184
|
name: string;
|
|
185
|
+
operator: string;
|
|
164
186
|
period: string;
|
|
165
187
|
preset: string;
|
|
166
188
|
random: string;
|
package/dist/i18n/template.d.ts
CHANGED
|
@@ -8,6 +8,17 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
8
8
|
error: string;
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
|
+
conditions: {
|
|
12
|
+
currentResult: string;
|
|
13
|
+
evaluatingConditions: string;
|
|
14
|
+
satisfied: string;
|
|
15
|
+
notSatisfied: string;
|
|
16
|
+
selfReference: string;
|
|
17
|
+
statesEqual: string;
|
|
18
|
+
statesNotEqual: string;
|
|
19
|
+
stateUnknown: string;
|
|
20
|
+
statesUnrelated: string;
|
|
21
|
+
};
|
|
11
22
|
lightbulb: {
|
|
12
23
|
brightness: string;
|
|
13
24
|
stateOn: string;
|
|
@@ -28,6 +39,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
28
39
|
unsecured: string;
|
|
29
40
|
};
|
|
30
41
|
onOff: {
|
|
42
|
+
badDefault: string;
|
|
31
43
|
stateOff: string;
|
|
32
44
|
stateOn: string;
|
|
33
45
|
};
|
|
@@ -70,6 +82,8 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
70
82
|
description: {
|
|
71
83
|
commands: string;
|
|
72
84
|
cron: string;
|
|
85
|
+
conditions: string;
|
|
86
|
+
fadeOut: string;
|
|
73
87
|
limiter: string;
|
|
74
88
|
random: string;
|
|
75
89
|
schedule: string;
|
|
@@ -102,10 +116,13 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
102
116
|
minutely: string;
|
|
103
117
|
month: string;
|
|
104
118
|
monthly: string;
|
|
119
|
+
none: string;
|
|
105
120
|
occupancySensor: string;
|
|
106
121
|
off: string;
|
|
107
122
|
on: string;
|
|
108
123
|
open: string;
|
|
124
|
+
operatorAnd: string;
|
|
125
|
+
operatorOr: string;
|
|
109
126
|
outlet: string;
|
|
110
127
|
milliseconds: string;
|
|
111
128
|
minutes: string;
|
|
@@ -139,6 +156,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
139
156
|
yes: string;
|
|
140
157
|
title: {
|
|
141
158
|
accessory: string;
|
|
159
|
+
accessoryState: string;
|
|
142
160
|
commandClose: string;
|
|
143
161
|
commandOff: string;
|
|
144
162
|
commandOn: string;
|
|
@@ -147,6 +165,8 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
147
165
|
commands: string;
|
|
148
166
|
commandTemperature: string;
|
|
149
167
|
commandUnlock: string;
|
|
168
|
+
condition: string;
|
|
169
|
+
conditions: string;
|
|
150
170
|
cron: string;
|
|
151
171
|
cronCustom: string;
|
|
152
172
|
defaultBrightness: string;
|
|
@@ -156,11 +176,13 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
156
176
|
delay: string;
|
|
157
177
|
disableLogging: string;
|
|
158
178
|
enableWebook: string;
|
|
179
|
+
fadeOut: string;
|
|
159
180
|
groupName: string;
|
|
160
181
|
interval: string;
|
|
161
182
|
limit: string;
|
|
162
183
|
limiter: string;
|
|
163
184
|
name: string;
|
|
185
|
+
operator: string;
|
|
164
186
|
period: string;
|
|
165
187
|
preset: string;
|
|
166
188
|
random: string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ConditionsConfig } from './types.js';
|
|
2
|
+
import { AccessoryState } from './enums.js';
|
|
3
|
+
import { Log } from '../tools/log.js';
|
|
4
|
+
export declare class ConditionManager {
|
|
5
|
+
private readonly log;
|
|
6
|
+
private readonly targets;
|
|
7
|
+
private readonly triggersToTargets;
|
|
8
|
+
private readonly triggerStates;
|
|
9
|
+
constructor(log: Log);
|
|
10
|
+
register(name: string, identifier: string, conditions: ConditionsConfig | undefined, trigger: () => Promise<void>, reset: (() => Promise<void>) | undefined, disableLogging: boolean): void;
|
|
11
|
+
onStateChange(triggerId: string, state: AccessoryState): Promise<void>;
|
|
12
|
+
private evaluateConditions;
|
|
13
|
+
private compareStates;
|
|
14
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { ConditionOperator, getStateType } from './enums.js';
|
|
2
|
+
import { assert } from '../tools/validation.js';
|
|
3
|
+
import { strings } from '../i18n/i18n.js';
|
|
4
|
+
export class ConditionManager {
|
|
5
|
+
log;
|
|
6
|
+
targets = new Map();
|
|
7
|
+
triggersToTargets = new Map();
|
|
8
|
+
triggerStates = new Map();
|
|
9
|
+
constructor(log) {
|
|
10
|
+
this.log = log;
|
|
11
|
+
}
|
|
12
|
+
register(name, identifier, conditions, trigger, reset, disableLogging) {
|
|
13
|
+
if (conditions === undefined) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!assert(this.log, name, conditions, 'operator', 'operands')) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
let valid = true;
|
|
20
|
+
for (const operand of conditions.operands) {
|
|
21
|
+
valid = valid && assert(this.log, name, operand, 'accessoryId', 'accessoryState');
|
|
22
|
+
if (operand.accessoryId === identifier) {
|
|
23
|
+
this.log.error(strings.conditions.selfReference, name);
|
|
24
|
+
valid = false;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (!valid) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const target = { name, identifier, conditions, trigger, reset, disableLogging };
|
|
32
|
+
this.targets.set(identifier, target);
|
|
33
|
+
for (const operand of conditions.operands) {
|
|
34
|
+
const targetList = this.triggersToTargets.get(operand.accessoryId) ?? [];
|
|
35
|
+
targetList.push(identifier);
|
|
36
|
+
this.triggersToTargets.set(operand.accessoryId, targetList);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async onStateChange(triggerId, state) {
|
|
40
|
+
const targetIds = this.triggersToTargets.get(triggerId);
|
|
41
|
+
if (!targetIds) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.triggerStates.set(triggerId, state);
|
|
45
|
+
for (const targetId of targetIds) {
|
|
46
|
+
const target = this.targets.get(targetId);
|
|
47
|
+
if (!target) {
|
|
48
|
+
throw new Error('Unable to find target associated with the supplied trigger');
|
|
49
|
+
}
|
|
50
|
+
this.log.ifVerbose(strings.conditions.evaluatingConditions, target.name);
|
|
51
|
+
if (this.evaluateConditions(target.conditions)) {
|
|
52
|
+
if (!target.disableLogging) {
|
|
53
|
+
this.log.always(strings.conditions.satisfied, target.name);
|
|
54
|
+
}
|
|
55
|
+
await target.trigger();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.log.ifVerbose(strings.conditions.notSatisfied, target.name);
|
|
59
|
+
await target.reset?.();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
evaluateConditions(conditions) {
|
|
64
|
+
let result;
|
|
65
|
+
for (const operand of conditions.operands) {
|
|
66
|
+
const currentState = this.triggerStates.get(operand.accessoryId);
|
|
67
|
+
if (!currentState) {
|
|
68
|
+
this.log.ifVerbose(strings.conditions.stateUnknown, `'${operand.accessoryId}'`);
|
|
69
|
+
result = false;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
const operandResult = this.compareStates(currentState, operand.accessoryState);
|
|
73
|
+
switch (conditions.operator) {
|
|
74
|
+
case ConditionOperator.AND:
|
|
75
|
+
result = result === undefined ? operandResult : result && operandResult;
|
|
76
|
+
break;
|
|
77
|
+
case ConditionOperator.OR:
|
|
78
|
+
result = result === undefined ? operandResult : result || operandResult;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
this.log.ifVerbose(strings.conditions.currentResult, `'${String(result)}'`);
|
|
82
|
+
}
|
|
83
|
+
return result ?? false;
|
|
84
|
+
}
|
|
85
|
+
compareStates(current, desired) {
|
|
86
|
+
if (current === desired) {
|
|
87
|
+
this.log.ifVerbose(strings.conditions.statesEqual, `'${current}'`);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const stateType = getStateType(current);
|
|
91
|
+
if (stateType && !Object.values(stateType).includes(desired)) {
|
|
92
|
+
this.log.error(strings.conditions.statesUnrelated, `'${current}'`, `'${desired}'`);
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
this.log.ifVerbose(strings.conditions.statesNotEqual, `'${current}'`, `'${desired}'`);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=conditions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/model/conditions.ts"],"names":[],"mappings":"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"}
|