homebridge-virtual-accessories 3.16.0 → 3.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
<div>
|
|
2
2
|
<a href="https://www.npmjs.com/package/homebridge-virtual-accessories"><img src="https://img.shields.io/github/package-json/v/justjam2013/homebridge-virtual-accessories?color=F99211" /></a>
|
|
3
3
|
<a href="https://www.npmjs.com/package/homebridge-virtual-accessories"><img src="https://img.shields.io/github/v/release/justjam2013/homebridge-virtual-accessories?color=FFd461" /></a>
|
|
4
|
-
<!-- <a href="https://github.com/homebridge/homebridge/wiki/Verified-Plugins"><img src="https://badgen.net/badge/homebridge/verified/purple" /></a> -->
|
|
5
|
-
<!-- a href="https://github.com/homebridge/homebridge/wiki/Verified-Plugins"><img src="https://img.shields.io/badge/_homebridge_-_verified_-6A5ACD" /></a -->
|
|
6
4
|
<a href="https://github.com/homebridge/homebridge/wiki/Verified-Plugins"><img src="https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=flat" /></a>
|
|
7
5
|
<a href="https://github.com/justjam2013/homebridge-virtual-accessories"><img src="https://img.shields.io/badge/_homebridge_v2.0_-_ready_-4CAF50" /></a>
|
|
8
6
|
<a href="https://discord.gg/Z8jmyvb"><img src="https://img.shields.io/badge/discord-%23virtual--accessories-737CF8" /></a>
|
|
@@ -10,8 +8,8 @@
|
|
|
10
8
|
|
|
11
9
|
<br/><br/>
|
|
12
10
|
<p align="center" vertical-align="middle">
|
|
13
|
-
<a href="https://github.com/justjam2013/homebridge-virtual-accessories"><img src="assets/icon/VirtualAccessories.png" height="
|
|
14
|
-
<a href="https://github.com/homebridge/homebridge"><img src="https://raw.githubusercontent.com/homebridge/branding/master/logos/homebridge-color-round-stylized.png" height="
|
|
11
|
+
<a href="https://github.com/justjam2013/homebridge-virtual-accessories"><img src="assets/icon/VirtualAccessories.png" height="180" /></a>
|
|
12
|
+
<a href="https://github.com/homebridge/homebridge"><img src="https://raw.githubusercontent.com/homebridge/branding/master/logos/homebridge-color-round-stylized.png" height="180" /></a>
|
|
15
13
|
</p>
|
|
16
14
|
|
|
17
15
|
<span align="center">
|
|
@@ -20,7 +18,13 @@
|
|
|
20
18
|
|
|
21
19
|
</span>
|
|
22
20
|
|
|
23
|
-
###
|
|
21
|
+
### Plugin for Homebridge that provides the ability to create virtual Apple Home accessories.
|
|
22
|
+
|
|
23
|
+
## <!-- Thin separator line -->
|
|
24
|
+
|
|
25
|
+
#### Matter Support
|
|
26
|
+
|
|
27
|
+
Now that Homebridge supports publishing devices as Matter devices, I have been considering adding the ability to create virtual Matter accessories. However, after considering the pros and cons, I have chose not to bloat this plugin or muddy its scope. So I will be keeping it strictly for creating HomeKit-only virtual devices. If you are interested in virtual Matter devices, I am currently in the process of writing a separate plugin, [Virtual Matter Accessories For Homebridge](https://github.com/justjam2013/homebridge-virtual-matter-accessories), whose scope will be to create Matter-only virtual devices.
|
|
24
28
|
|
|
25
29
|
## <!-- Thin separator line -->
|
|
26
30
|
|
|
@@ -149,7 +153,7 @@ Currently, these are the implemented virtual accessories:
|
|
|
149
153
|
- **Timer.** To create a timer, create a timed switch.
|
|
150
154
|
|
|
151
155
|
> [!NOTE]
|
|
152
|
-
> When a timed switch is restored after a restart, if the the time remaining on the timer after correction is 0 seconds (i.e. the timer expired while Homebridge was not running), this would leave the switch in a bad state. So the timer will always be restored to at least 1 second, thus allowing the timer to end, reset the switch to its default state, and the switch flip event to occur in Apple Home for any automations
|
|
156
|
+
> When a timed switch is restored after a restart, if the the time remaining on the timer after correction is 0 seconds (i.e. the timer expired while Homebridge was not running), this would leave the switch in a bad state. So the timer will always be restored to at least 1 second, thus allowing the timer to end, reset the switch to its default state, and the switch flip event to occur in Apple Home for any automations depending on it. This is a tradeoff wherein a late event is preferred to a lost event.
|
|
153
157
|
|
|
154
158
|
<span align="right">
|
|
155
159
|
<h6>
|
package/config.schema.json
CHANGED
|
@@ -1660,6 +1660,21 @@
|
|
|
1660
1660
|
}
|
|
1661
1661
|
}
|
|
1662
1662
|
},
|
|
1663
|
+
{
|
|
1664
|
+
"if": {
|
|
1665
|
+
"properties": {
|
|
1666
|
+
"accessoryType": { "const": "thermostat" }
|
|
1667
|
+
}
|
|
1668
|
+
},
|
|
1669
|
+
"then": {
|
|
1670
|
+
"required": [ "thermostat" ],
|
|
1671
|
+
"properties": {
|
|
1672
|
+
"thermostat": {
|
|
1673
|
+
"required": [ "temperatureDisplayUnits" ]
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
},
|
|
1663
1678
|
{
|
|
1664
1679
|
"if": {
|
|
1665
1680
|
"properties": {
|
|
@@ -52,10 +52,14 @@ export class PingTrigger extends Trigger {
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
this.log.debug(`[${this.accessoryName}] Protocol: ${ping.NetworkProtocol[protocol]}`);
|
|
55
|
-
const intervalBetweenPingsMillis = triggerConfig.interval * 60 * 1000;
|
|
55
|
+
const intervalBetweenPingsMillis = triggerConfig.interval * 60 * 1000; // minutes to milliseconds
|
|
56
56
|
this.log.info(`[${this.accessoryName}] Setting interval between pings to ${intervalBetweenPingsMillis / 1000 / 60} minute(s)`);
|
|
57
|
-
const pingTimeoutMillis =
|
|
58
|
-
setInterval(
|
|
57
|
+
const pingTimeoutMillis = 1000; // 1 second timeout
|
|
58
|
+
setInterval(
|
|
59
|
+
// function, delay
|
|
60
|
+
this.ping, intervalBetweenPingsMillis,
|
|
61
|
+
// function params
|
|
62
|
+
this, triggerConfig, protocol, pingTimeoutMillis)
|
|
59
63
|
.unref();
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
@@ -69,10 +73,11 @@ export class PingTrigger extends Trigger {
|
|
|
69
73
|
// const host = await getIP(hostname: string);
|
|
70
74
|
// protocol = ping.NetworkProtocol.IPv4;
|
|
71
75
|
// Create a helper class for protocol, so the value can be updated
|
|
76
|
+
// With "retries = 3" it pings 3 times before it counts it as a failure
|
|
72
77
|
const options = {
|
|
73
78
|
networkProtocol: protocol,
|
|
74
79
|
packetSize: 16,
|
|
75
|
-
retries:
|
|
80
|
+
retries: 3,
|
|
76
81
|
sessionId: Math.floor(Math.random() * 65534) + 1,
|
|
77
82
|
timeout: pingTimeoutMillis,
|
|
78
83
|
ttl: 128,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerPing.js","sourceRoot":"","sources":["../../../src/sensors/triggers/triggerPing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO;IAEX,KAAK,CAAS;IAEd,YACE,KAAa;QAEb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IAE9B,MAAM,GAAW,CAAC,CAAC;IACnB,IAAI,GAAW,CAAC,CAAC;IACjB,IAAI,GAAW,CAAC,CAAC;IAEjB,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtC,YACE,MAAoB,EACpB,IAAY;QAEZ,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEpB,MAAM,aAAa,GAA6B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAE9E,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,4BAA4B,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,aAAuC;QAEzD,IAAI,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,iBAAiB,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,EAAE,GAAkB,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,EAAE,EAAE,CAAC;gBACP,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjC,aAAa,CAAC,IAAI,GAAG,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,QAAgB,CAAC;QACrB,QAAO,iBAAiB,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,IAAI;gBACZ,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACrC,MAAM;YACR,KAAK,IAAI,CAAC,IAAI;gBACZ,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACrC,MAAM;YACR;gBACE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,4CAA4C,iBAAiB,EAAE,CAAC,CAAC;gBACtG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,eAAe,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEtF,MAAM,0BAA0B,GAAG,aAAa,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"triggerPing.js","sourceRoot":"","sources":["../../../src/sensors/triggers/triggerPing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "homebridge-virtual-accessories",
|
|
3
3
|
"displayName": "Virtual Accessories for Homebridge",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "3.16.
|
|
5
|
+
"version": "3.16.2",
|
|
6
6
|
"description": "Virtual HomeKit accessories for Homebridge.",
|
|
7
7
|
"author": "justjam2023 (Renzo Zanelli - renzo.zanelli6@gmail.com)",
|
|
8
8
|
"license": "MIT",
|