homebridge-dummy 1.4.0-beta.3 → 1.4.0-beta.5
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 +3 -2
- package/README.md +14 -2
- package/config.schema.json +65 -6
- package/dist/homebridge/platform.d.ts +2 -1
- package/dist/homebridge/platform.js +5 -3
- 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 +10 -0
- package/dist/i18n/en.d.ts +10 -0
- package/dist/i18n/en.js +10 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts +10 -0
- package/dist/i18n/i18n.d.ts +10 -0
- package/dist/i18n/ru.d.ts +10 -0
- package/dist/i18n/template.d.ts +10 -0
- package/dist/model/conditions.d.ts +5 -2
- package/dist/model/conditions.js +61 -10
- package/dist/model/conditions.js.map +1 -1
- package/dist/model/enums.d.ts +4 -0
- package/dist/model/enums.js +5 -0
- package/dist/model/enums.js.map +1 -1
- package/dist/model/types.d.ts +4 -2
- package/dist/tools/logWatcher.d.ts +13 -0
- package/dist/tools/logWatcher.js +52 -0
- package/dist/tools/logWatcher.js.map +1 -0
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to homebridge-dummy will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## 1.4.0-beta.
|
|
5
|
+
## 1.4.0-beta.5 (2025-10-30)
|
|
6
6
|
|
|
7
7
|
### ‼️ WARNING ‼️ — If upgrading from v0.9.2 or earlier, [READ THIS FIRST](https://github.com/mpatfield/homebridge-dummy?tab=readme-ov-file#v10-migration)
|
|
8
8
|
|
|
9
9
|
### Added
|
|
10
|
-
- [Trigger Conditions](https://github.com/mpatfield/homebridge-dummy?tab=readme-ov-file#trigger-conditions) to change the state of an accessory based on state changes of other Homebridge Dummy accessories
|
|
10
|
+
- [Trigger Conditions](https://github.com/mpatfield/homebridge-dummy?tab=readme-ov-file#trigger-conditions) to change the state of an accessory based on state changes of other Homebridge Dummy accessories or keywords in the Homebridge log
|
|
11
11
|
- ⚠️ Config UI for conditions is highly experimental. Please [open a ticket](https://github.com/mpatfield/homebridge-dummy/issues/new/choose) if you see any unusal behavior.
|
|
12
12
|
- `GET` requests for [Webhooks](https://github.com/mpatfield/homebridge-dummy#webhooks) (previously only `POST`)
|
|
13
13
|
- Fade Out option for `Lightbulb` brightness to emulate a simple "count-down"
|
|
14
14
|
- Min/max temperature settings for `Thermostat`
|
|
15
15
|
|
|
16
16
|
### Changed
|
|
17
|
+
- ⚠️ Dropped [official support](https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js) for Node.js v18 and added Node.js v24
|
|
17
18
|
- `defaultOn` has been deprecated in favor of `defaultState` for `Lightbulb`, `Outlet`, and `Switch`
|
|
18
19
|
- This is backwards compatible so no manual edits are necessary
|
|
19
20
|
|
package/README.md
CHANGED
|
@@ -238,13 +238,23 @@ Execute arbitrary commands (e.g. curl) when the accessory changes state
|
|
|
238
238
|
|
|
239
239
|
You can trigger an accessory whenever a set of conditions are satisfied, for example, when other Homebridge Dummy accessories turn on.
|
|
240
240
|
|
|
241
|
-
There are two logical operators to trigger the target accessory when
|
|
241
|
+
There are two logical operators to trigger the target accessory when all (`AND`) or any (`OR`) of a set of conditions are satisfied. This is set using `operator`.
|
|
242
242
|
|
|
243
243
|
You can have an arbitrarily long list of conditions and they are checked in order.
|
|
244
244
|
|
|
245
245
|
If target accessory is not setup to auto-reset with a timer, then it will immediately return to it's default setting as soon as the conditions are no longer met.
|
|
246
246
|
|
|
247
|
-
Note that due to limitations of HomeKit and Homebridge, it is only possible to check the states of other Homebridge Dummy accessories.
|
|
247
|
+
Note that due to limitations of HomeKit and Homebridge, it is only possible to check the states of other Homebridge Dummy accessories.
|
|
248
|
+
|
|
249
|
+
One workaround is to use the `LOG` operand type which will watch the Homebridge log for the specified string or regex.
|
|
250
|
+
|
|
251
|
+
`LOG` based conditions are stateless triggers. If it is the only condition or the conditions `operator` is `OR`, then it will fire immediately. If there are other `AND` conditions, then it will not fire unless all other conditions are satisfied.
|
|
252
|
+
|
|
253
|
+
For example, if I have `LOG` condition "A" and `ACCESSORY` condition "B" for when "B" is turned "On", then if "B" is "Off"" and the pattern is found in the log, "A" will not trigger.
|
|
254
|
+
|
|
255
|
+
Note that `LOG` triggers are not instantenous and may take several seconds to fire.
|
|
256
|
+
|
|
257
|
+
Another workaround for non-Dummy accessories is to set up duplicate accessories in Homebridge Dummy and use Automation to mirror the states.
|
|
248
258
|
|
|
249
259
|
For example, if I have a physical door lock I want to "watch", then I can setup a `LockMechanism` accessory in Homebridge Dummy and create two automations to change the state of my dummy lock whenever the physical door lock is unlocked or locked.
|
|
250
260
|
|
|
@@ -335,6 +345,8 @@ Sensor feature inspired by [Homebridge-Delay-Switch](https://github.com/nitaybz/
|
|
|
335
345
|
|
|
336
346
|
Command feature inspired by [homebridge-cmdtrigger](https://github.com/hallos/homebridge-cmdtrigger) by [@hallos](https://github.com/sponsors/hallos)
|
|
337
347
|
|
|
348
|
+
Log watch trigger feature inspired by [hb-virtual-switch](https://github.com/Plankske/hb-virtual-switch/) by [@Plankske](https://github.com/sponsors/Plankske)
|
|
349
|
+
|
|
338
350
|
Special thanks to [@nfarina](https://github.com/sponsors/nfarina) for creating the original version of this plugin and maintaining it for almost 10 (!!!) years
|
|
339
351
|
|
|
340
352
|
And to the amazing creators/contributors of [Homebridge](https://homebridge.io) who made this plugin possible!
|
package/config.schema.json
CHANGED
|
@@ -214,19 +214,56 @@
|
|
|
214
214
|
"operand": {
|
|
215
215
|
"type": "object",
|
|
216
216
|
"properties": {
|
|
217
|
-
"
|
|
217
|
+
"type": {
|
|
218
218
|
"type": "string",
|
|
219
|
-
"title": "${config.title.
|
|
219
|
+
"title": "${config.title.type}",
|
|
220
|
+
"enum": [ "ACCESSORY", "LOG" ],
|
|
221
|
+
"enumNames": [ "${config.enumNames.accessory}", "${config.enumNames.log}" ],
|
|
220
222
|
"required": true
|
|
221
223
|
},
|
|
224
|
+
"accessoryId": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"title": "${config.title.accessory}"
|
|
227
|
+
},
|
|
222
228
|
"accessoryState": {
|
|
223
229
|
"type": "string",
|
|
224
230
|
"title": "${config.title.accessoryState}",
|
|
225
231
|
"enum": [ "on", "off", "open", "closed", "locked", "unlocked" ],
|
|
226
|
-
"enumNames": [ "${config.enumNames.on}", "${config.enumNames.off}", "${config.enumNames.open}", "${config.enumNames.closed}", "${config.enumNames.secured}", "${config.enumNames.unsecured}" ]
|
|
227
|
-
|
|
232
|
+
"enumNames": [ "${config.enumNames.on}", "${config.enumNames.off}", "${config.enumNames.open}", "${config.enumNames.closed}", "${config.enumNames.secured}", "${config.enumNames.unsecured}" ]
|
|
233
|
+
},
|
|
234
|
+
"pattern": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"title": "${config.title.pattern}"
|
|
228
237
|
}
|
|
229
|
-
}
|
|
238
|
+
},
|
|
239
|
+
"allOf": [
|
|
240
|
+
{
|
|
241
|
+
"if": {
|
|
242
|
+
"properties": {
|
|
243
|
+
"type": {
|
|
244
|
+
"const": "ACCESSORY"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"required": ["type"]
|
|
248
|
+
},
|
|
249
|
+
"then": {
|
|
250
|
+
"required": ["accessoryId", "accessoryState"]
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"if": {
|
|
255
|
+
"properties": {
|
|
256
|
+
"type": {
|
|
257
|
+
"const": "LOG"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"required": ["type"]
|
|
261
|
+
},
|
|
262
|
+
"then": {
|
|
263
|
+
"required": ["pattern"]
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
]
|
|
230
267
|
},
|
|
231
268
|
"conditions": {
|
|
232
269
|
"type": "object",
|
|
@@ -747,15 +784,37 @@
|
|
|
747
784
|
"flex-direction": "row",
|
|
748
785
|
"items": [
|
|
749
786
|
{
|
|
750
|
-
"key": "accessories[].conditions.operands[].
|
|
787
|
+
"key": "accessories[].conditions.operands[].type",
|
|
751
788
|
"flex": "0 0 auto"
|
|
752
789
|
},
|
|
790
|
+
{
|
|
791
|
+
"type": "div",
|
|
792
|
+
"flex": "0 0 5px"
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"key": "accessories[].conditions.operands[].accessoryId",
|
|
796
|
+
"flex": "0 0 auto",
|
|
797
|
+
"condition": {
|
|
798
|
+
"functionBody": "return model.accessories?.[arguments[1][0]]?.conditions?.operands?.[arguments[1][1]]?.type === 'ACCESSORY';"
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
"type": "div",
|
|
803
|
+
"flex": "0 0 5px"
|
|
804
|
+
},
|
|
753
805
|
{
|
|
754
806
|
"key": "accessories[].conditions.operands[].accessoryState",
|
|
755
807
|
"flex": "0 0 auto",
|
|
756
808
|
"condition": {
|
|
757
809
|
"functionBody": "return model.accessories?.[arguments[1][0]]?.conditions?.operands?.[arguments[1][1]]?.accessoryId;"
|
|
758
810
|
}
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"key": "accessories[].conditions.operands[].pattern",
|
|
814
|
+
"flex": "1 0 auto",
|
|
815
|
+
"condition": {
|
|
816
|
+
"functionBody": "return model.accessories?.[arguments[1][0]]?.conditions?.operands?.[arguments[1][1]]?.type === 'LOG';"
|
|
817
|
+
}
|
|
759
818
|
}
|
|
760
819
|
]
|
|
761
820
|
}
|
|
@@ -8,7 +8,8 @@ export declare class HomebridgeDummyPlatform implements DynamicPlatformPlugin {
|
|
|
8
8
|
private readonly log;
|
|
9
9
|
private readonly platformAccessories;
|
|
10
10
|
private readonly dummyAccessories;
|
|
11
|
-
private webhookManager;
|
|
11
|
+
private readonly webhookManager;
|
|
12
|
+
private readonly conditionManager;
|
|
12
13
|
constructor(logger: Logger, config: DummyPlatformConfig, api: API);
|
|
13
14
|
configureAccessory(platformAccessory: PlatformAccessory): void;
|
|
14
15
|
private teardown;
|
|
@@ -18,6 +18,7 @@ export class HomebridgeDummyPlatform {
|
|
|
18
18
|
platformAccessories = new Map();
|
|
19
19
|
dummyAccessories = [];
|
|
20
20
|
webhookManager;
|
|
21
|
+
conditionManager;
|
|
21
22
|
constructor(logger, config, api) {
|
|
22
23
|
this.config = config;
|
|
23
24
|
this.api = api;
|
|
@@ -27,6 +28,7 @@ export class HomebridgeDummyPlatform {
|
|
|
27
28
|
this.Characteristic = api.hap.Characteristic;
|
|
28
29
|
this.log = new Log(logger, config.verbose === true);
|
|
29
30
|
this.webhookManager = new WebhookManager(this.Characteristic, this.log, config.webhookPort);
|
|
31
|
+
this.conditionManager = new ConditionManager(this.log, api.user.storagePath());
|
|
30
32
|
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());
|
|
31
33
|
api.on('didFinishLaunching', () => {
|
|
32
34
|
this.setup();
|
|
@@ -43,6 +45,7 @@ export class HomebridgeDummyPlatform {
|
|
|
43
45
|
this.dummyAccessories.forEach(accessory => {
|
|
44
46
|
accessory.teardown();
|
|
45
47
|
});
|
|
48
|
+
this.conditionManager.teardown();
|
|
46
49
|
}
|
|
47
50
|
async setup() {
|
|
48
51
|
await Storage.init(this.api.user.persistPath());
|
|
@@ -53,7 +56,6 @@ export class HomebridgeDummyPlatform {
|
|
|
53
56
|
accessories.push(...migratedAccessories);
|
|
54
57
|
}
|
|
55
58
|
const groupAccessories = new Map();
|
|
56
|
-
const conditionManager = new ConditionManager(this.log);
|
|
57
59
|
for (const accessoryConfig of accessories) {
|
|
58
60
|
if (accessoryConfig.groupName?.length) {
|
|
59
61
|
const groupConfig = groupAccessories.get(accessoryConfig.groupName) || { accessories: [] };
|
|
@@ -69,7 +71,7 @@ export class HomebridgeDummyPlatform {
|
|
|
69
71
|
Characteristic: this.Characteristic,
|
|
70
72
|
platformAccessory: platformAccessory,
|
|
71
73
|
config: accessoryConfig,
|
|
72
|
-
conditionManager: conditionManager,
|
|
74
|
+
conditionManager: this.conditionManager,
|
|
73
75
|
log: this.log,
|
|
74
76
|
isGrouped: false,
|
|
75
77
|
};
|
|
@@ -91,7 +93,7 @@ export class HomebridgeDummyPlatform {
|
|
|
91
93
|
Service: this.Service,
|
|
92
94
|
Characteristic: this.Characteristic,
|
|
93
95
|
platformAccessory: platformAccessory,
|
|
94
|
-
conditionManager: conditionManager,
|
|
96
|
+
conditionManager: this.conditionManager,
|
|
95
97
|
log: this.log,
|
|
96
98
|
};
|
|
97
99
|
const groupAccessory = new GroupAccessory(dependency, groupConfig, this.webhookManager);
|
|
@@ -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;AAE3D,OAAO,EAAE,cAAc,EAA4B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,cAAc,EAA4B,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAIvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,uBAAuB;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/homebridge/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var u="Homebridge Dummy";var
|
|
1
|
+
"use strict";(()=>{var u="Homebridge Dummy";var w={github:'<a target="_blank" href="https://github.com/mpatfield/homebridge-dummy/">GitHub</a>',migration:'<a target="_blank" href="https://github.com/mpatfield/homebridge-dummy?tab=readme-ov-file#v10-migration">GitHub</a>',dummy:u};function I(e){document.querySelectorAll("[i18n]").forEach(t=>{let i=t.getAttribute("i18n"),n=e.config[i],o=t.getAttribute("i18n_replace");o&&(n=n.replace("%s",w[o])),t.innerHTML=n})}function D(e){let t=["span","label","legend","option","p"];Array.from(window.parent.document.querySelectorAll(t.join(","))).sort((n,o)=>t.indexOf(n.tagName.toLowerCase())-t.indexOf(o.tagName.toLowerCase())).forEach(n=>{let o=n.innerHTML;o=o.replaceAll(/\$\{config\.(title|description|enumNames)\.([^}]+)\}/g,(d,s,r)=>e.config[s]&&typeof e.config[s]=="object"&&r in e.config[s]?e.config[s][r]:d),n.innerHTML!==o&&(n.innerHTML=o)})}function O(e){let t=Array.from(window.parent.document.querySelectorAll("fieldset legend"));for(let i of t){let o=i.closest("fieldset")?.querySelector('input[type="text"][name="name"]');o&&i.textContent!==(o.value||e.config.title.accessory)&&(i.textContent=o.value!==""?o.value:e.config.title.accessory),o&&!o.dataset.accessoryNameListener&&(o.addEventListener("input",()=>O(e)),o.dataset.accessoryNameListener="true")}}function y(){if(typeof crypto<"u"){if(crypto.randomUUID)return crypto.randomUUID();if(crypto.getRandomValues)return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=crypto.getRandomValues(new Uint8Array(1))[0]&15;return(e==="x"?t:t&3|8).toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}async function v(e){let t=!1;e.forEach(i=>{i.accessories?.forEach(n=>{n.id===void 0&&(n.id=y(),t=!0),n.limiter!==void 0&&n.limiter.id===void 0&&(n.limiter.id=y(),t=!0)})}),t&&await homebridge.updatePluginConfig(e)}function C(e,t){let i=window.parent.document.createTreeWalker(window.parent.document.body,NodeFilter.SHOW_ELEMENT),n=!1;for(;i.nextNode();)if(i.currentNode===e){n=!0;break}for(;n&&i.nextNode();){let o=i.currentNode;if(o.getAttribute("name")===t)return o}return null}var c=[];async function S(e,t){let i=window.parent.document.querySelectorAll('[name="accessoryId"]');if(i.length===0)return;t===void 0&&(t=await homebridge.getPluginConfig());let n=[];for(let d of t){let s=(d.accessories??[]).filter(r=>r.id&&r.name&&r.type!=="Thermostat");n.push(...s)}let o=!1;c.length!==n.length?(c=n,o=!0):c.forEach((d,s)=>{let r=n[s];(d.name!==r.name||d.type!==r.type||d.id!==r.id)&&(c=n,o=!0)}),i.forEach(d=>{let s=d,r=s.parentElement?.querySelector('select.form-select[data-accessory-name-select="true"]');if(r&&r.dataset.accessoryNameSelect!=="true"){console.error("Unable to retrieve accessory name selector");return}r||(r=document.createElement("select"),r.className="form-select",r.dataset.accessoryNameSelect="true",s.hidden=!0,r.addEventListener("change",()=>{if(r.selectedIndex===-1)s.value="";else{let l=c[r.selectedIndex].id;s.value=l}s.dispatchEvent(new Event("input",{bubbles:!0}))}),s.parentElement?.appendChild(r)),(o||r.length===0)&&(r.length=0,c.forEach(l=>{let a=document.createElement("option");a.text=l.name,r.add(a)}));let m=s.value.length?c.findIndex(l=>l.id===s.value):-1;if(m===-1)r.selectedIndex=-1;else{r.selectedIndex=m;let l=c[m],a=C(r,"accessoryState");if(!a){console.error("Unable to find accessory state selector");return}if(a.length!==7){console.error("Accessory state selector has an unexpected number of options");return}let L=a.options[0],g=a.options[1],x=a.options[2],p=a.options[3],h=a.options[4],b=a.options[5],E=a.options[6];switch(L.hidden=!0,g.hidden=!0,x.hidden=!0,p.hidden=!0,h.hidden=!0,b.hidden=!0,E.hidden=!0,l.type){case"Lightbulb":case"Outlet":case"Switch":g.hidden=!1,x.hidden=!1,a.selectedIndex!==1&&a.selectedIndex!==2&&(a.selectedIndex=-1,a.dispatchEvent(new Event("change",{bubbles:!0})));break;case"Door":case"GarageDoorOpener":case"Window":case"WindowCovering":p.hidden=!1,h.hidden=!1,a.selectedIndex!==3&&a.selectedIndex!==4&&(a.selectedIndex=-1,a.dispatchEvent(new Event("change",{bubbles:!0})));break;case"LockMechanism":a.selectedIndex!==5&&a.selectedIndex!==6&&(a.selectedIndex=-1,a.dispatchEvent(new Event("change",{bubbles:!0}))),b.hidden=!1,E.hidden=!1;break;case"Thermostat":default:return}}})}async function N(e){let t=!1;e.forEach(i=>{i.accessories?.forEach(n=>{"defaultOn"in n&&(n.defaultState=n.defaultOn?"on":"off",n.defaultOn=void 0,t=!0);let o=n.sensor;typeof o=="string"&&(n.sensor={type:o},t=!0);let d=n.schedule;d?.type==="CRON"&&d.cron!=="CRON_CUSTOM"&&!d.cron?.startsWith("@")&&(n.schedule={...d,cron:"CRON_CUSTOM",cronCustom:d.cron},t=!0)})}),t&&await homebridge.updatePluginConfig(e)}function f(e){document.getElementById("intro").style.display="none",document.getElementById("migration").style.display="none",document.getElementById("support").style.display="block",new MutationObserver(()=>{D(e),O(e),S(e)}).observe(window.parent.document.body,{childList:!0,subtree:!0}),homebridge.addEventListener("configChanged",async i=>{let n=i.data;await v(n),await S(e,n)}),homebridge.showSchemaForm(),homebridge.hideSpinner(),homebridge.enableSaveButton()}function M(e){document.getElementById("header").style.display="none",document.getElementById("intro").style.display="none",document.getElementById("migration").style.display="block",document.getElementById("skipMigration").addEventListener("click",async()=>{await homebridge.updatePluginConfig([{name:u}]),await homebridge.savePluginConfig(),f(e)}),document.getElementById("doMigration").addEventListener("click",async()=>{await homebridge.updatePluginConfig([{name:u,migrationNeeded:!0}]),await homebridge.savePluginConfig(),homebridge.closeSettings(),homebridge.toast.info(e.config.migrationRestartDescription.replace("%s",u),e.config.migrationRestartTitle)})}function k(e){document.getElementById("showSettings").addEventListener("click",async()=>{await homebridge.updatePluginConfig([{name:u}]),f(e)}),document.getElementById("showMigration").addEventListener("click",()=>{M(e)}),document.getElementById("intro").style.display="block",homebridge.hideSpinner()}homebridge.disableSaveButton(),homebridge.showSpinner();(async()=>{let e=await homebridge.i18nCurrentLang(),t=await homebridge.request("i18n",e);I(t);let i=await homebridge.getPluginConfig();i.length?(await N(i),f(t)):k(t)})();})();
|
package/dist/i18n/de.d.ts
CHANGED
|
@@ -9,10 +9,13 @@ declare const de: {
|
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: string;
|
|
12
13
|
currentResult: string;
|
|
13
14
|
evaluatingConditions: string;
|
|
14
15
|
satisfied: string;
|
|
15
16
|
notSatisfied: string;
|
|
17
|
+
patternAndConditions: string;
|
|
18
|
+
patternMatch: string;
|
|
16
19
|
selfReference: string;
|
|
17
20
|
statesEqual: string;
|
|
18
21
|
statesNotEqual: string;
|
|
@@ -38,6 +41,10 @@ declare const de: {
|
|
|
38
41
|
secured: string;
|
|
39
42
|
unsecured: string;
|
|
40
43
|
};
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
};
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: string;
|
|
43
50
|
stateOff: string;
|
|
@@ -91,6 +98,7 @@ declare const de: {
|
|
|
91
98
|
timerControlled: string;
|
|
92
99
|
};
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: string;
|
|
94
102
|
auto: string;
|
|
95
103
|
carbonDioxideSensor: string;
|
|
96
104
|
carbonMonoxideSensor: string;
|
|
@@ -113,6 +121,7 @@ declare const de: {
|
|
|
113
121
|
leakSensor: string;
|
|
114
122
|
lightbulb: string;
|
|
115
123
|
lockMechanism: string;
|
|
124
|
+
log: string;
|
|
116
125
|
minutely: string;
|
|
117
126
|
month: string;
|
|
118
127
|
monthly: string;
|
|
@@ -185,6 +194,7 @@ declare const de: {
|
|
|
185
194
|
maximumTemperature: string;
|
|
186
195
|
name: string;
|
|
187
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
188
198
|
period: string;
|
|
189
199
|
preset: string;
|
|
190
200
|
random: string;
|
package/dist/i18n/en.d.ts
CHANGED
|
@@ -9,10 +9,13 @@ declare const en: {
|
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: string;
|
|
12
13
|
currentResult: string;
|
|
13
14
|
evaluatingConditions: string;
|
|
14
15
|
satisfied: string;
|
|
15
16
|
notSatisfied: string;
|
|
17
|
+
patternAndConditions: string;
|
|
18
|
+
patternMatch: string;
|
|
16
19
|
selfReference: string;
|
|
17
20
|
statesEqual: string;
|
|
18
21
|
statesNotEqual: string;
|
|
@@ -38,6 +41,10 @@ declare const en: {
|
|
|
38
41
|
secured: string;
|
|
39
42
|
unsecured: string;
|
|
40
43
|
};
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
};
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: string;
|
|
43
50
|
stateOff: string;
|
|
@@ -91,6 +98,7 @@ declare const en: {
|
|
|
91
98
|
timerControlled: string;
|
|
92
99
|
};
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: string;
|
|
94
102
|
auto: string;
|
|
95
103
|
carbonDioxideSensor: string;
|
|
96
104
|
carbonMonoxideSensor: string;
|
|
@@ -113,6 +121,7 @@ declare const en: {
|
|
|
113
121
|
leakSensor: string;
|
|
114
122
|
lightbulb: string;
|
|
115
123
|
lockMechanism: string;
|
|
124
|
+
log: string;
|
|
116
125
|
minutely: string;
|
|
117
126
|
month: string;
|
|
118
127
|
monthly: string;
|
|
@@ -185,6 +194,7 @@ declare const en: {
|
|
|
185
194
|
maximumTemperature: string;
|
|
186
195
|
name: string;
|
|
187
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
188
198
|
period: string;
|
|
189
199
|
preset: string;
|
|
190
200
|
random: string;
|
package/dist/i18n/en.js
CHANGED
|
@@ -9,10 +9,13 @@ const en = {
|
|
|
9
9
|
executed: '%s executed command', // accessory name
|
|
10
10
|
},
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: '%s cannot have mutiple log triggers using the "ALL" operator', // accessory name
|
|
12
13
|
currentResult: 'Current result is %s', // boolean
|
|
13
14
|
evaluatingConditions: 'Evaluating conditions for %s', // accessory name
|
|
14
15
|
satisfied: '%s conditions have been satisfied. Triggering…', // accessory name
|
|
15
16
|
notSatisfied: '%s conditions not satisfied', // accessory name
|
|
17
|
+
patternAndConditions: '%s log condition found a pattern match. Checking other conditions…', // accessory name
|
|
18
|
+
patternMatch: '%s log condition found a pattern match. Triggering…', // accessory name
|
|
16
19
|
selfReference: '%s is not allowed to reference itself as a triggering condition', // accessory name
|
|
17
20
|
statesEqual: 'Current and desired states are both %s', // state name
|
|
18
21
|
statesNotEqual: 'Current state %s is not equivalent to desired state %s', // state name, state name
|
|
@@ -38,6 +41,10 @@ const en = {
|
|
|
38
41
|
secured: '%s is locked', // accessory name
|
|
39
42
|
unsecured: '%s is unlocked', // accessory name
|
|
40
43
|
},
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: 'Log watcher encountered an error: %s', // error
|
|
46
|
+
missingFile: 'Unable to find log file at path %s', // file path
|
|
47
|
+
},
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: '%s has invalid default on state %s. Must be one of: %s', // accessory name, input, list of state names
|
|
43
50
|
stateOff: '%s is off', // accessory name
|
|
@@ -91,6 +98,7 @@ const en = {
|
|
|
91
98
|
timerControlled: 'Instead of mirroring accessory, sensor will be activated when accessory auto-resets',
|
|
92
99
|
},
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: 'Accessory',
|
|
94
102
|
auto: 'Auto',
|
|
95
103
|
carbonDioxideSensor: 'Carbon Dioxide',
|
|
96
104
|
carbonMonoxideSensor: 'Carbon Monoxide',
|
|
@@ -113,6 +121,7 @@ const en = {
|
|
|
113
121
|
leakSensor: 'Leak',
|
|
114
122
|
lightbulb: 'Lightbulb',
|
|
115
123
|
lockMechanism: 'Lock',
|
|
124
|
+
log: 'Log Watcher',
|
|
116
125
|
minutely: 'Every Minute',
|
|
117
126
|
month: 'Month',
|
|
118
127
|
monthly: 'Monthly',
|
|
@@ -185,6 +194,7 @@ const en = {
|
|
|
185
194
|
maximumTemperature: 'Max Temperature',
|
|
186
195
|
name: 'Name',
|
|
187
196
|
operator: 'Trigger when…',
|
|
197
|
+
pattern: 'Search String or RegEx',
|
|
188
198
|
period: 'Per',
|
|
189
199
|
preset: 'Preset',
|
|
190
200
|
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":"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"}
|
|
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
|
@@ -9,10 +9,13 @@ declare const es: {
|
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: string;
|
|
12
13
|
currentResult: string;
|
|
13
14
|
evaluatingConditions: string;
|
|
14
15
|
satisfied: string;
|
|
15
16
|
notSatisfied: string;
|
|
17
|
+
patternAndConditions: string;
|
|
18
|
+
patternMatch: string;
|
|
16
19
|
selfReference: string;
|
|
17
20
|
statesEqual: string;
|
|
18
21
|
statesNotEqual: string;
|
|
@@ -38,6 +41,10 @@ declare const es: {
|
|
|
38
41
|
secured: string;
|
|
39
42
|
unsecured: string;
|
|
40
43
|
};
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
};
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: string;
|
|
43
50
|
stateOff: string;
|
|
@@ -91,6 +98,7 @@ declare const es: {
|
|
|
91
98
|
timerControlled: string;
|
|
92
99
|
};
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: string;
|
|
94
102
|
auto: string;
|
|
95
103
|
carbonDioxideSensor: string;
|
|
96
104
|
carbonMonoxideSensor: string;
|
|
@@ -113,6 +121,7 @@ declare const es: {
|
|
|
113
121
|
leakSensor: string;
|
|
114
122
|
lightbulb: string;
|
|
115
123
|
lockMechanism: string;
|
|
124
|
+
log: string;
|
|
116
125
|
minutely: string;
|
|
117
126
|
month: string;
|
|
118
127
|
monthly: string;
|
|
@@ -185,6 +194,7 @@ declare const es: {
|
|
|
185
194
|
maximumTemperature: string;
|
|
186
195
|
name: string;
|
|
187
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
188
198
|
period: string;
|
|
189
199
|
preset: string;
|
|
190
200
|
random: string;
|
package/dist/i18n/i18n.d.ts
CHANGED
|
@@ -20,10 +20,13 @@ declare const translations: {
|
|
|
20
20
|
executed: string;
|
|
21
21
|
};
|
|
22
22
|
conditions: {
|
|
23
|
+
andMultipleLogs: string;
|
|
23
24
|
currentResult: string;
|
|
24
25
|
evaluatingConditions: string;
|
|
25
26
|
satisfied: string;
|
|
26
27
|
notSatisfied: string;
|
|
28
|
+
patternAndConditions: string;
|
|
29
|
+
patternMatch: string;
|
|
27
30
|
selfReference: string;
|
|
28
31
|
statesEqual: string;
|
|
29
32
|
statesNotEqual: string;
|
|
@@ -49,6 +52,10 @@ declare const translations: {
|
|
|
49
52
|
secured: string;
|
|
50
53
|
unsecured: string;
|
|
51
54
|
};
|
|
55
|
+
logWatcher: {
|
|
56
|
+
error: string;
|
|
57
|
+
missingFile: string;
|
|
58
|
+
};
|
|
52
59
|
onOff: {
|
|
53
60
|
badDefault: string;
|
|
54
61
|
stateOff: string;
|
|
@@ -102,6 +109,7 @@ declare const translations: {
|
|
|
102
109
|
timerControlled: string;
|
|
103
110
|
};
|
|
104
111
|
enumNames: {
|
|
112
|
+
accessory: string;
|
|
105
113
|
auto: string;
|
|
106
114
|
carbonDioxideSensor: string;
|
|
107
115
|
carbonMonoxideSensor: string;
|
|
@@ -124,6 +132,7 @@ declare const translations: {
|
|
|
124
132
|
leakSensor: string;
|
|
125
133
|
lightbulb: string;
|
|
126
134
|
lockMechanism: string;
|
|
135
|
+
log: string;
|
|
127
136
|
minutely: string;
|
|
128
137
|
month: string;
|
|
129
138
|
monthly: string;
|
|
@@ -196,6 +205,7 @@ declare const translations: {
|
|
|
196
205
|
maximumTemperature: string;
|
|
197
206
|
name: string;
|
|
198
207
|
operator: string;
|
|
208
|
+
pattern: string;
|
|
199
209
|
period: string;
|
|
200
210
|
preset: string;
|
|
201
211
|
random: string;
|
package/dist/i18n/ru.d.ts
CHANGED
|
@@ -9,10 +9,13 @@ declare const ru: {
|
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: string;
|
|
12
13
|
currentResult: string;
|
|
13
14
|
evaluatingConditions: string;
|
|
14
15
|
satisfied: string;
|
|
15
16
|
notSatisfied: string;
|
|
17
|
+
patternAndConditions: string;
|
|
18
|
+
patternMatch: string;
|
|
16
19
|
selfReference: string;
|
|
17
20
|
statesEqual: string;
|
|
18
21
|
statesNotEqual: string;
|
|
@@ -38,6 +41,10 @@ declare const ru: {
|
|
|
38
41
|
secured: string;
|
|
39
42
|
unsecured: string;
|
|
40
43
|
};
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
};
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: string;
|
|
43
50
|
stateOff: string;
|
|
@@ -91,6 +98,7 @@ declare const ru: {
|
|
|
91
98
|
timerControlled: string;
|
|
92
99
|
};
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: string;
|
|
94
102
|
auto: string;
|
|
95
103
|
carbonDioxideSensor: string;
|
|
96
104
|
carbonMonoxideSensor: string;
|
|
@@ -113,6 +121,7 @@ declare const ru: {
|
|
|
113
121
|
leakSensor: string;
|
|
114
122
|
lightbulb: string;
|
|
115
123
|
lockMechanism: string;
|
|
124
|
+
log: string;
|
|
116
125
|
minutely: string;
|
|
117
126
|
month: string;
|
|
118
127
|
monthly: string;
|
|
@@ -185,6 +194,7 @@ declare const ru: {
|
|
|
185
194
|
maximumTemperature: string;
|
|
186
195
|
name: string;
|
|
187
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
188
198
|
period: string;
|
|
189
199
|
preset: string;
|
|
190
200
|
random: string;
|
package/dist/i18n/template.d.ts
CHANGED
|
@@ -9,10 +9,13 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
9
9
|
executed: string;
|
|
10
10
|
};
|
|
11
11
|
conditions: {
|
|
12
|
+
andMultipleLogs: string;
|
|
12
13
|
currentResult: string;
|
|
13
14
|
evaluatingConditions: string;
|
|
14
15
|
satisfied: string;
|
|
15
16
|
notSatisfied: string;
|
|
17
|
+
patternAndConditions: string;
|
|
18
|
+
patternMatch: string;
|
|
16
19
|
selfReference: string;
|
|
17
20
|
statesEqual: string;
|
|
18
21
|
statesNotEqual: string;
|
|
@@ -38,6 +41,10 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
38
41
|
secured: string;
|
|
39
42
|
unsecured: string;
|
|
40
43
|
};
|
|
44
|
+
logWatcher: {
|
|
45
|
+
error: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
};
|
|
41
48
|
onOff: {
|
|
42
49
|
badDefault: string;
|
|
43
50
|
stateOff: string;
|
|
@@ -91,6 +98,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
91
98
|
timerControlled: string;
|
|
92
99
|
};
|
|
93
100
|
enumNames: {
|
|
101
|
+
accessory: string;
|
|
94
102
|
auto: string;
|
|
95
103
|
carbonDioxideSensor: string;
|
|
96
104
|
carbonMonoxideSensor: string;
|
|
@@ -113,6 +121,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
113
121
|
leakSensor: string;
|
|
114
122
|
lightbulb: string;
|
|
115
123
|
lockMechanism: string;
|
|
124
|
+
log: string;
|
|
116
125
|
minutely: string;
|
|
117
126
|
month: string;
|
|
118
127
|
monthly: string;
|
|
@@ -185,6 +194,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
|
|
|
185
194
|
maximumTemperature: string;
|
|
186
195
|
name: string;
|
|
187
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
188
198
|
period: string;
|
|
189
199
|
preset: string;
|
|
190
200
|
random: string;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { ConditionsConfig } from './types.js';
|
|
2
1
|
import { AccessoryState } from './enums.js';
|
|
2
|
+
import { ConditionsConfig } from './types.js';
|
|
3
3
|
import { Log } from '../tools/log.js';
|
|
4
4
|
export declare class ConditionManager {
|
|
5
5
|
private readonly log;
|
|
6
6
|
private readonly targets;
|
|
7
7
|
private readonly triggersToTargets;
|
|
8
8
|
private readonly triggerStates;
|
|
9
|
-
|
|
9
|
+
private readonly logWatcher;
|
|
10
|
+
constructor(log: Log, storagePath: string);
|
|
11
|
+
teardown(): void;
|
|
10
12
|
register(name: string, identifier: string, conditions: ConditionsConfig | undefined, trigger: () => Promise<void>, reset: (() => Promise<void>) | undefined, disableLogging: boolean): void;
|
|
11
13
|
onStateChange(triggerId: string, state: AccessoryState): Promise<void>;
|
|
14
|
+
private onPatternMatch;
|
|
12
15
|
private evaluateConditions;
|
|
13
16
|
private compareStates;
|
|
14
17
|
}
|
package/dist/model/conditions.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import { ConditionOperator, getStateType } from './enums.js';
|
|
2
|
-
import { assert } from '../tools/validation.js';
|
|
1
|
+
import { ConditionOperator, getStateType, OperandType } from './enums.js';
|
|
3
2
|
import { strings } from '../i18n/i18n.js';
|
|
3
|
+
import { LogWatcher } from '../tools/logWatcher.js';
|
|
4
|
+
import { assert } from '../tools/validation.js';
|
|
4
5
|
export class ConditionManager {
|
|
5
6
|
log;
|
|
6
7
|
targets = new Map();
|
|
7
8
|
triggersToTargets = new Map();
|
|
8
9
|
triggerStates = new Map();
|
|
9
|
-
|
|
10
|
+
logWatcher;
|
|
11
|
+
constructor(log, storagePath) {
|
|
10
12
|
this.log = log;
|
|
13
|
+
this.logWatcher = new LogWatcher(log, storagePath);
|
|
14
|
+
}
|
|
15
|
+
teardown() {
|
|
16
|
+
this.logWatcher.teardown();
|
|
11
17
|
}
|
|
12
18
|
register(name, identifier, conditions, trigger, reset, disableLogging) {
|
|
13
19
|
if (conditions === undefined) {
|
|
@@ -16,24 +22,46 @@ export class ConditionManager {
|
|
|
16
22
|
if (!assert(this.log, name, conditions, 'operator', 'operands')) {
|
|
17
23
|
return;
|
|
18
24
|
}
|
|
25
|
+
let logTypeCount = 0;
|
|
19
26
|
let valid = true;
|
|
20
27
|
for (const operand of conditions.operands) {
|
|
21
|
-
valid = valid && assert(this.log, name, operand, '
|
|
28
|
+
valid = valid && assert(this.log, name, operand, 'type');
|
|
29
|
+
switch (operand.type) {
|
|
30
|
+
case OperandType.ACCESSORY:
|
|
31
|
+
valid = valid && assert(this.log, name, operand, 'accessoryId', 'accessoryState');
|
|
32
|
+
break;
|
|
33
|
+
case OperandType.LOG:
|
|
34
|
+
logTypeCount++;
|
|
35
|
+
valid = valid && assert(this.log, name, operand, 'pattern');
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
22
38
|
if (operand.accessoryId === identifier) {
|
|
23
39
|
this.log.error(strings.conditions.selfReference, name);
|
|
24
40
|
valid = false;
|
|
25
41
|
break;
|
|
26
42
|
}
|
|
27
43
|
}
|
|
44
|
+
if (logTypeCount > 1 && conditions.operator === ConditionOperator.AND) {
|
|
45
|
+
this.log.error(strings.conditions.andMultipleLogs, name);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
28
48
|
if (!valid) {
|
|
29
49
|
return;
|
|
30
50
|
}
|
|
31
51
|
const target = { name, identifier, conditions, trigger, reset, disableLogging };
|
|
32
52
|
this.targets.set(identifier, target);
|
|
33
53
|
for (const operand of conditions.operands) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
switch (operand.type) {
|
|
55
|
+
case OperandType.ACCESSORY: {
|
|
56
|
+
const targetList = this.triggersToTargets.get(operand.accessoryId) ?? [];
|
|
57
|
+
targetList.push(identifier);
|
|
58
|
+
this.triggersToTargets.set(operand.accessoryId, targetList);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case OperandType.LOG:
|
|
62
|
+
this.logWatcher.registerPattern(operand.pattern, () => this.onPatternMatch(target));
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
37
65
|
}
|
|
38
66
|
}
|
|
39
67
|
async onStateChange(triggerId, state) {
|
|
@@ -48,7 +76,7 @@ export class ConditionManager {
|
|
|
48
76
|
throw new Error('Unable to find target associated with the supplied trigger');
|
|
49
77
|
}
|
|
50
78
|
this.log.ifVerbose(strings.conditions.evaluatingConditions, target.name);
|
|
51
|
-
if (this.evaluateConditions(target.conditions)) {
|
|
79
|
+
if (this.evaluateConditions(target.conditions, false)) {
|
|
52
80
|
if (!target.disableLogging) {
|
|
53
81
|
this.log.always(strings.conditions.satisfied, target.name);
|
|
54
82
|
}
|
|
@@ -60,9 +88,32 @@ export class ConditionManager {
|
|
|
60
88
|
}
|
|
61
89
|
}
|
|
62
90
|
}
|
|
63
|
-
|
|
91
|
+
onPatternMatch(target) {
|
|
92
|
+
if (target.conditions.operands.length === 1 || target.conditions.operator === ConditionOperator.OR) {
|
|
93
|
+
this.log.ifVerbose(strings.conditions.patternMatch, target.name);
|
|
94
|
+
target.trigger();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.log.ifVerbose(strings.conditions.patternAndConditions, target.name);
|
|
98
|
+
if (!this.evaluateConditions(target.conditions, true)) {
|
|
99
|
+
this.log.ifVerbose(strings.conditions.notSatisfied, target.name);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!target.disableLogging) {
|
|
103
|
+
this.log.always(strings.conditions.satisfied, target.name);
|
|
104
|
+
}
|
|
105
|
+
target.trigger();
|
|
106
|
+
}
|
|
107
|
+
evaluateConditions(conditions, ignoreLogType) {
|
|
64
108
|
let result;
|
|
65
109
|
for (const operand of conditions.operands) {
|
|
110
|
+
if (operand.type === OperandType.LOG) {
|
|
111
|
+
if (ignoreLogType || conditions.operator === ConditionOperator.OR) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
result = false;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
66
117
|
const currentState = this.triggerStates.get(operand.accessoryId);
|
|
67
118
|
if (!currentState) {
|
|
68
119
|
this.log.ifVerbose(strings.conditions.stateUnknown, `'${operand.accessoryId}'`);
|
|
@@ -80,7 +131,7 @@ export class ConditionManager {
|
|
|
80
131
|
}
|
|
81
132
|
this.log.ifVerbose(strings.conditions.currentResult, `'${String(result)}'`);
|
|
82
133
|
}
|
|
83
|
-
return result ??
|
|
134
|
+
return result ?? true;
|
|
84
135
|
}
|
|
85
136
|
compareStates(current, desired) {
|
|
86
137
|
if (current === desired) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/model/conditions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/model/conditions.ts"],"names":[],"mappings":"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"}
|
package/dist/model/enums.d.ts
CHANGED
package/dist/model/enums.js
CHANGED
|
@@ -38,6 +38,11 @@ export var ConditionOperator;
|
|
|
38
38
|
ConditionOperator["AND"] = "and";
|
|
39
39
|
ConditionOperator["OR"] = "or";
|
|
40
40
|
})(ConditionOperator || (ConditionOperator = {}));
|
|
41
|
+
export var OperandType;
|
|
42
|
+
(function (OperandType) {
|
|
43
|
+
OperandType["ACCESSORY"] = "ACCESSORY";
|
|
44
|
+
OperandType["LOG"] = "LOG";
|
|
45
|
+
})(OperandType || (OperandType = {}));
|
|
41
46
|
export var OnState;
|
|
42
47
|
(function (OnState) {
|
|
43
48
|
OnState["ON"] = "on";
|
package/dist/model/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"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"}
|
package/dist/model/types.d.ts
CHANGED
|
@@ -44,8 +44,10 @@ export type LimiterConfig = Assertable & {
|
|
|
44
44
|
period: TimePeriod;
|
|
45
45
|
};
|
|
46
46
|
export type Operand = Assertable & {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
type: string;
|
|
48
|
+
accessoryId?: string;
|
|
49
|
+
accessoryState?: AccessoryState;
|
|
50
|
+
pattern?: string;
|
|
49
51
|
};
|
|
50
52
|
export type ConditionsConfig = Assertable & {
|
|
51
53
|
operator: ConditionOperator;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Log } from '../tools/log.js';
|
|
2
|
+
type ListenerCallback = () => (void);
|
|
3
|
+
export declare class LogWatcher {
|
|
4
|
+
private readonly log;
|
|
5
|
+
private readonly storagePath;
|
|
6
|
+
private tailFile?;
|
|
7
|
+
private readonly matchers;
|
|
8
|
+
constructor(log: Log, storagePath: string);
|
|
9
|
+
private startWatching;
|
|
10
|
+
teardown(): void;
|
|
11
|
+
registerPattern(pattern: string, callback: ListenerCallback): void;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import TailFile from 'tail-file';
|
|
4
|
+
import { strings } from '../i18n/i18n.js';
|
|
5
|
+
export class LogWatcher {
|
|
6
|
+
log;
|
|
7
|
+
storagePath;
|
|
8
|
+
tailFile;
|
|
9
|
+
matchers = new Map();
|
|
10
|
+
constructor(log, storagePath) {
|
|
11
|
+
this.log = log;
|
|
12
|
+
this.storagePath = storagePath;
|
|
13
|
+
}
|
|
14
|
+
startWatching() {
|
|
15
|
+
if (this.tailFile !== undefined) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const logFilePath = path.join(this.storagePath, 'homebridge.log');
|
|
19
|
+
if (!fs.existsSync(logFilePath)) {
|
|
20
|
+
this.log.error(strings.logWatcher.missingFile, `'${logFilePath}'`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.tailFile = new TailFile(logFilePath, { startPos: 'end' });
|
|
24
|
+
this.tailFile.on('line', (line) => {
|
|
25
|
+
for (const [matcher, callbacks] of this.matchers.entries()) {
|
|
26
|
+
if (matcher.test(line)) {
|
|
27
|
+
callbacks.forEach(cb => cb());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
this.tailFile.on('error', (err) => this.log.error(strings.logWatcher.error, String(err)));
|
|
32
|
+
this.tailFile.start();
|
|
33
|
+
}
|
|
34
|
+
teardown() {
|
|
35
|
+
this.tailFile?.stop();
|
|
36
|
+
}
|
|
37
|
+
registerPattern(pattern, callback) {
|
|
38
|
+
let regex;
|
|
39
|
+
try {
|
|
40
|
+
regex = new RegExp(pattern);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
const escapedPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
44
|
+
regex = new RegExp(escapedPattern);
|
|
45
|
+
}
|
|
46
|
+
const callbacks = this.matchers.get(regex) ?? [];
|
|
47
|
+
callbacks.push(callback);
|
|
48
|
+
this.matchers.set(regex, callbacks);
|
|
49
|
+
this.startWatching();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=logWatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logWatcher.js","sourceRoot":"","sources":["../../src/tools/logWatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,MAAM,OAAO,UAAU;IAMQ;IAA2B;IAJhD,QAAQ,CAAY;IAEX,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAElE,YAA6B,GAAQ,EAAmB,WAAmB;QAA9C,QAAG,GAAH,GAAG,CAAK;QAAmB,gBAAW,GAAX,WAAW,CAAQ;IAC3E,CAAC;IAEO,aAAa;QAEnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAEM,eAAe,CAAC,OAAe,EAAE,QAA0B;QAEhE,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACtE,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName": "Homebridge Dummy",
|
|
5
5
|
"description": "Create accessories to help with HomeKit automation and control — scheduling, delays, sensors, commands, conditions, webhooks, and more",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "1.4.0-beta.
|
|
7
|
+
"version": "1.4.0-beta.5",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-dummy#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
],
|
|
57
57
|
"engines": {
|
|
58
58
|
"homebridge": "^1.8.0 || ^2.0.0-beta.0",
|
|
59
|
-
"node": "^
|
|
59
|
+
"node": "^20 || ^22 || ^24"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@homebridge/plugin-ui-utils": "^2.0.2",
|
|
@@ -65,7 +65,8 @@
|
|
|
65
65
|
"express": "^5.1.0",
|
|
66
66
|
"homebridge-lib": "^7.1.8",
|
|
67
67
|
"lodash.merge": "^4.6.2",
|
|
68
|
-
"node-persist": "^4.0.4"
|
|
68
|
+
"node-persist": "^4.0.4",
|
|
69
|
+
"tail-file": "^1.4.16"
|
|
69
70
|
},
|
|
70
71
|
"devDependencies": {
|
|
71
72
|
"@types/escape-html": "^1.0.4",
|