homebridge-dummy 1.4.0-beta.2 → 1.4.0-beta.4
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 -6
- package/README.md +18 -2
- package/config.schema.json +138 -48
- package/dist/accessory/thermostat.js +8 -2
- package/dist/accessory/thermostat.js.map +1 -1
- 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 +13 -0
- package/dist/i18n/en.d.ts +13 -0
- package/dist/i18n/en.js +13 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts +13 -0
- package/dist/i18n/i18n.d.ts +13 -0
- package/dist/i18n/ru.d.ts +13 -0
- package/dist/i18n/template.d.ts +13 -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 +6 -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 +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,19 +2,16 @@
|
|
|
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.4 (2025-10-26)
|
|
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
|
-
### ⚠️ Upcoming Breaking Change
|
|
10
|
-
|
|
11
|
-
I plan to remove `Thermostat` as a supported accessory type from a future version. If you use `Thermostat`, please add your use case to [this ticket](https://github.com/mpatfield/homebridge-dummy/issues/207) and I will help you find an alternative.
|
|
12
|
-
|
|
13
9
|
### Added
|
|
14
|
-
- [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
|
|
15
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.
|
|
16
12
|
- `GET` requests for [Webhooks](https://github.com/mpatfield/homebridge-dummy#webhooks) (previously only `POST`)
|
|
17
13
|
- Fade Out option for `Lightbulb` brightness to emulate a simple "count-down"
|
|
14
|
+
- Min/max temperature settings for `Thermostat`
|
|
18
15
|
|
|
19
16
|
### Changed
|
|
20
17
|
- `defaultOn` has been deprecated in favor of `defaultState` for `Lightbulb`, `Outlet`, and `Switch`
|
package/README.md
CHANGED
|
@@ -141,6 +141,8 @@ Using the Homebridge Config UI is the easiest way to set up this plugin. However
|
|
|
141
141
|
"defaultPosition": "open" | "closed",
|
|
142
142
|
"defaultThermostatState": "auto" | "heat" | "cool" | "off",
|
|
143
143
|
"defaultTemperature": number,
|
|
144
|
+
"minimumTemperature": number,
|
|
145
|
+
"maximumTemperature": number,
|
|
144
146
|
"commandOn": "string",
|
|
145
147
|
"commandOff": "string",
|
|
146
148
|
"commandLock": "string",
|
|
@@ -236,13 +238,23 @@ Execute arbitrary commands (e.g. curl) when the accessory changes state
|
|
|
236
238
|
|
|
237
239
|
You can trigger an accessory whenever a set of conditions are satisfied, for example, when other Homebridge Dummy accessories turn on.
|
|
238
240
|
|
|
239
|
-
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`.
|
|
240
242
|
|
|
241
243
|
You can have an arbitrarily long list of conditions and they are checked in order.
|
|
242
244
|
|
|
243
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.
|
|
244
246
|
|
|
245
|
-
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.
|
|
246
258
|
|
|
247
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.
|
|
248
260
|
|
|
@@ -263,6 +275,8 @@ For example, if I have a physical door lock I want to "watch", then I can setup
|
|
|
263
275
|
- `defaultPosition` — Initial position for the door/garage/window/blinds, "open" or "closed"
|
|
264
276
|
- `defaultThermostatState` - The initial state for the thermostat, "auto", "heat", "cool", or "off"
|
|
265
277
|
- `defaultTemperature` - The default temperature for the thermostat in `temperatureUnits` defined above
|
|
278
|
+
- `minimumTemperature` - Defines a minimum temperature
|
|
279
|
+
- `maximumTemperature` - Defines a maximum temperature
|
|
266
280
|
|
|
267
281
|
### Options
|
|
268
282
|
- `enableWebook` - Turn on webhooks for this accessory. See [Webhooks](https://github.com/mpatfield/homebridge-dummy#webhooks) section below for details.
|
|
@@ -331,6 +345,8 @@ Sensor feature inspired by [Homebridge-Delay-Switch](https://github.com/nitaybz/
|
|
|
331
345
|
|
|
332
346
|
Command feature inspired by [homebridge-cmdtrigger](https://github.com/hallos/homebridge-cmdtrigger) by [@hallos](https://github.com/sponsors/hallos)
|
|
333
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
|
+
|
|
334
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
|
|
335
351
|
|
|
336
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",
|
|
@@ -294,7 +331,7 @@
|
|
|
294
331
|
"conditions": { "$ref": "#/definitions/conditions" },
|
|
295
332
|
"temperatureUnits": {
|
|
296
333
|
"type": "string",
|
|
297
|
-
"title": "${config.title.
|
|
334
|
+
"title": "${config.title.temperatureUnits}",
|
|
298
335
|
"enum": ["C", "F"],
|
|
299
336
|
"enumNames": ["${config.enumNames.celsius}", "${config.enumNames.fahrenheit}"]
|
|
300
337
|
},
|
|
@@ -337,6 +374,14 @@
|
|
|
337
374
|
"type": "number",
|
|
338
375
|
"title": "${config.title.defaultTemperature}"
|
|
339
376
|
},
|
|
377
|
+
"minimumTemperature": {
|
|
378
|
+
"type": "number",
|
|
379
|
+
"title": "${config.title.minimumTemperature}"
|
|
380
|
+
},
|
|
381
|
+
"maximumTemperature": {
|
|
382
|
+
"type": "number",
|
|
383
|
+
"title": "${config.title.maximumTemperature}"
|
|
384
|
+
},
|
|
340
385
|
"commandOn": {
|
|
341
386
|
"type": "string",
|
|
342
387
|
"title": "${config.title.commandOn}"
|
|
@@ -494,16 +539,34 @@
|
|
|
494
539
|
"functionBody": "return ['Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
|
|
495
540
|
},
|
|
496
541
|
"items": [
|
|
542
|
+
{
|
|
543
|
+
"key": "accessories[].defaultThermostatState",
|
|
544
|
+
"flex": "0 0 33%"
|
|
545
|
+
},
|
|
497
546
|
{
|
|
498
547
|
"key": "accessories[].temperatureUnits",
|
|
499
548
|
"flex": "0 0 33%"
|
|
549
|
+
}
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
{
|
|
553
|
+
"type": "div",
|
|
554
|
+
"displayFlex": true,
|
|
555
|
+
"flex-direction": "row",
|
|
556
|
+
"condition": {
|
|
557
|
+
"functionBody": "return ['Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
|
|
558
|
+
},
|
|
559
|
+
"items": [
|
|
560
|
+
{
|
|
561
|
+
"key": "accessories[].defaultTemperature",
|
|
562
|
+
"flex": "0 0 33%"
|
|
500
563
|
},
|
|
501
564
|
{
|
|
502
|
-
"key": "accessories[].
|
|
565
|
+
"key": "accessories[].minimumTemperature",
|
|
503
566
|
"flex": "0 0 33%"
|
|
504
567
|
},
|
|
505
568
|
{
|
|
506
|
-
"key": "accessories[].
|
|
569
|
+
"key": "accessories[].maximumTemperature",
|
|
507
570
|
"flex": "0 0 33%"
|
|
508
571
|
}
|
|
509
572
|
]
|
|
@@ -547,39 +610,44 @@
|
|
|
547
610
|
"items": [
|
|
548
611
|
{
|
|
549
612
|
"key": "accessories[].schedule.type",
|
|
550
|
-
"flex": "0 0
|
|
613
|
+
"flex": "0 0 auto"
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
"type": "div",
|
|
617
|
+
"flex": "0 0 5px"
|
|
551
618
|
},
|
|
552
619
|
{
|
|
553
620
|
"key": "accessories[].schedule.interval",
|
|
554
|
-
"flex": "0 0
|
|
621
|
+
"flex": "0 0 auto",
|
|
555
622
|
"condition": {
|
|
556
623
|
"functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'INTERVAL';"
|
|
557
624
|
}
|
|
558
625
|
},
|
|
626
|
+
{
|
|
627
|
+
"type": "div",
|
|
628
|
+
"flex": "0 0 5px"
|
|
629
|
+
},
|
|
559
630
|
{
|
|
560
631
|
"key": "accessories[].schedule.units",
|
|
561
|
-
"flex": "0 0
|
|
632
|
+
"flex": "0 0 auto",
|
|
562
633
|
"condition": {
|
|
563
634
|
"functionBody": "return model.accessories?.[arguments[1]]?.schedule?.interval !== undefined;"
|
|
564
635
|
}
|
|
565
|
-
}
|
|
566
|
-
]
|
|
567
|
-
},
|
|
568
|
-
{
|
|
569
|
-
"type": "div",
|
|
570
|
-
"displayFlex": true,
|
|
571
|
-
"flex-direction": "row",
|
|
572
|
-
"condition": {
|
|
573
|
-
"functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'CRON';"
|
|
574
|
-
},
|
|
575
|
-
"items": [
|
|
636
|
+
},
|
|
576
637
|
{
|
|
577
638
|
"key": "accessories[].schedule.cron",
|
|
578
|
-
"flex": "0 0
|
|
639
|
+
"flex": "0 0 auto",
|
|
640
|
+
"condition": {
|
|
641
|
+
"functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'CRON';"
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
"type": "div",
|
|
646
|
+
"flex": "0 0 5px"
|
|
579
647
|
},
|
|
580
648
|
{
|
|
581
649
|
"key": "accessories[].schedule.cronCustom",
|
|
582
|
-
"flex": "
|
|
650
|
+
"flex": "1 0 auto",
|
|
583
651
|
"condition": {
|
|
584
652
|
"functionBody": "return model.accessories?.[arguments[1]]?.schedule?.cron === 'CRON_CUSTOM';"
|
|
585
653
|
}
|
|
@@ -695,36 +763,58 @@
|
|
|
695
763
|
"items": [
|
|
696
764
|
{
|
|
697
765
|
"key": "accessories[].conditions.operator",
|
|
698
|
-
"flex": "0 0
|
|
766
|
+
"flex": "0 0 auto"
|
|
699
767
|
}
|
|
700
768
|
]
|
|
701
|
-
}
|
|
769
|
+
}
|
|
770
|
+
]
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"type": "array",
|
|
774
|
+
"title": "${config.title.condition}",
|
|
775
|
+
"notitle": true,
|
|
776
|
+
"condition": {
|
|
777
|
+
"functionBody": "return model.accessories?.[arguments[1]]?.conditions?.operator;"
|
|
778
|
+
},
|
|
779
|
+
"key": "accessories[].conditions.operands",
|
|
780
|
+
"items": [
|
|
702
781
|
{
|
|
703
|
-
"type": "
|
|
704
|
-
"
|
|
705
|
-
"
|
|
706
|
-
"condition": {
|
|
707
|
-
"functionBody": "return model.accessories?.[arguments[1]]?.conditions?.operator;"
|
|
708
|
-
},
|
|
709
|
-
"key": "accessories[].conditions.operands",
|
|
782
|
+
"type": "div",
|
|
783
|
+
"displayFlex": true,
|
|
784
|
+
"flex-direction": "row",
|
|
710
785
|
"items": [
|
|
786
|
+
{
|
|
787
|
+
"key": "accessories[].conditions.operands[].type",
|
|
788
|
+
"flex": "0 0 auto"
|
|
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
|
+
},
|
|
711
801
|
{
|
|
712
802
|
"type": "div",
|
|
713
|
-
"
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
803
|
+
"flex": "0 0 5px"
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"key": "accessories[].conditions.operands[].accessoryState",
|
|
807
|
+
"flex": "0 0 auto",
|
|
808
|
+
"condition": {
|
|
809
|
+
"functionBody": "return model.accessories?.[arguments[1][0]]?.conditions?.operands?.[arguments[1][1]]?.accessoryId;"
|
|
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
|
+
}
|
|
728
818
|
}
|
|
729
819
|
]
|
|
730
820
|
}
|
|
@@ -5,6 +5,8 @@ import { Webhook } from '../model/webhook.js';
|
|
|
5
5
|
import { storageGet_Deprecated, Storage } from '../tools/storage.js';
|
|
6
6
|
import { fromCelsius, toCelsius } from '../tools/temperature.js';
|
|
7
7
|
const DEFAULT_TEMPERATURE = 20;
|
|
8
|
+
const DEFAULT_MINIMUM = 10;
|
|
9
|
+
const DEFAULT_MAXIMUM = 38;
|
|
8
10
|
export class ThermostatAccessory extends DummyAccessory {
|
|
9
11
|
STATE_AUTO;
|
|
10
12
|
STATE_COOL;
|
|
@@ -42,11 +44,15 @@ export class ThermostatAccessory extends DummyAccessory {
|
|
|
42
44
|
})
|
|
43
45
|
.onGet(this.getState.bind(this))
|
|
44
46
|
.onSet(this.setState.bind(this));
|
|
47
|
+
const minTemp = dependency.config.minimumTemperature ? toCelsius(dependency.config.minimumTemperature, this.units) : DEFAULT_MINIMUM;
|
|
48
|
+
const maxTemp = dependency.config.maximumTemperature ? toCelsius(dependency.config.maximumTemperature, this.units) : DEFAULT_MAXIMUM;
|
|
45
49
|
this.accessoryService.getCharacteristic(dependency.Characteristic.CurrentTemperature)
|
|
46
|
-
.onGet(this.getTemperature.bind(this))
|
|
50
|
+
.onGet(this.getTemperature.bind(this))
|
|
51
|
+
.setProps({ minValue: minTemp, maxValue: maxTemp });
|
|
47
52
|
this.accessoryService.getCharacteristic(dependency.Characteristic.TargetTemperature)
|
|
48
53
|
.onGet(this.getTemperature.bind(this))
|
|
49
|
-
.onSet(this.setTemperature.bind(this))
|
|
54
|
+
.onSet(this.setTemperature.bind(this))
|
|
55
|
+
.setProps({ minValue: minTemp, maxValue: maxTemp });
|
|
50
56
|
this.initializeThermostat();
|
|
51
57
|
}
|
|
52
58
|
async initializeThermostat() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../src/accessory/thermostat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAA4B,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EACL,aAAa,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EACtF,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAO,mBAAmB,CAAC;AAEhF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,mBAAmB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../src/accessory/thermostat.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
@@ -181,14 +190,18 @@ declare const de: {
|
|
|
181
190
|
interval: string;
|
|
182
191
|
limit: string;
|
|
183
192
|
limiter: string;
|
|
193
|
+
minimumTemperature: string;
|
|
194
|
+
maximumTemperature: string;
|
|
184
195
|
name: string;
|
|
185
196
|
operator: string;
|
|
197
|
+
pattern: string;
|
|
186
198
|
period: string;
|
|
187
199
|
preset: string;
|
|
188
200
|
random: string;
|
|
189
201
|
resetOnRestart: string;
|
|
190
202
|
schedule: string;
|
|
191
203
|
sensor: string;
|
|
204
|
+
temperatureUnits: string;
|
|
192
205
|
timer: string;
|
|
193
206
|
timerControlled: string;
|
|
194
207
|
type: string;
|