@vectronic/homebridge-script-switch 0.1.0 → 0.2.0
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/dist/accessory.d.ts +2 -3
- package/dist/accessory.js +20 -19
- package/dist/accessory.js.map +1 -1
- package/package.json +14 -12
- package/.idea/homebridge-script-switch.iml +0 -9
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/dist/accessory.d.ts.map +0 -1
package/dist/accessory.d.ts
CHANGED
package/dist/accessory.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
const child_process_1 = require("child_process");
|
|
1
|
+
import { exec } from 'child_process';
|
|
3
2
|
let hap;
|
|
4
3
|
class ScriptSwitch {
|
|
4
|
+
log;
|
|
5
|
+
name;
|
|
6
|
+
setOnStateScript;
|
|
7
|
+
setOffStateScript;
|
|
8
|
+
getStateScript;
|
|
9
|
+
onStateValue;
|
|
10
|
+
switchService;
|
|
11
|
+
informationService;
|
|
5
12
|
constructor(log, config) {
|
|
6
13
|
this.log = log;
|
|
7
14
|
this.name = config.name;
|
|
@@ -19,11 +26,10 @@ class ScriptSwitch {
|
|
|
19
26
|
this.log(`onStateValue: ${this.onStateValue}`);
|
|
20
27
|
this.switchService = new hap.Service.Switch(this.name);
|
|
21
28
|
this.switchService.getCharacteristic(hap.Characteristic.On)
|
|
22
|
-
.
|
|
23
|
-
let on;
|
|
29
|
+
.onGet(async () => {
|
|
24
30
|
try {
|
|
25
31
|
const stdout = await new Promise((resolve, reject) => {
|
|
26
|
-
|
|
32
|
+
exec(this.getStateScript, {}, (error, stdout) => {
|
|
27
33
|
if (error) {
|
|
28
34
|
reject(error);
|
|
29
35
|
return;
|
|
@@ -31,34 +37,31 @@ class ScriptSwitch {
|
|
|
31
37
|
resolve(stdout);
|
|
32
38
|
});
|
|
33
39
|
});
|
|
34
|
-
log.debug('
|
|
35
|
-
on = (stdout === this.onStateValue);
|
|
40
|
+
log.debug('get state script returned: ' + stdout);
|
|
41
|
+
const on = (stdout.trim() === this.onStateValue);
|
|
42
|
+
log.debug('Returning switch state: ' + (on ? 'ON' : 'OFF'));
|
|
43
|
+
return on;
|
|
36
44
|
}
|
|
37
45
|
catch (err) {
|
|
38
46
|
log.error(`get state exec error: ${err}`);
|
|
39
|
-
|
|
40
|
-
return;
|
|
47
|
+
throw err;
|
|
41
48
|
}
|
|
42
|
-
log.debug('Returning switch state: ' + (on ? 'ON' : 'OFF'));
|
|
43
|
-
callback(undefined, on);
|
|
44
49
|
})
|
|
45
|
-
.
|
|
50
|
+
.onSet(async (value) => {
|
|
46
51
|
const newOn = value;
|
|
47
52
|
if (newOn && (this.setOnStateScript === undefined)) {
|
|
48
53
|
log.debug('Ignoring switch state ON as set_state_on_script is not configured');
|
|
49
|
-
callback();
|
|
50
54
|
return;
|
|
51
55
|
}
|
|
52
56
|
if (!newOn && (this.setOffStateScript === undefined)) {
|
|
53
57
|
log.debug('Ignoring switch state OFF as set_state_off_script is not configured');
|
|
54
|
-
callback();
|
|
55
58
|
return;
|
|
56
59
|
}
|
|
57
60
|
log.debug('Setting switch state: ' + (newOn ? 'ON' : 'OFF'));
|
|
58
61
|
const setStateScript = (newOn ? this.setOnStateScript : this.setOffStateScript);
|
|
59
62
|
try {
|
|
60
63
|
const stdout = await new Promise((resolve, reject) => {
|
|
61
|
-
|
|
64
|
+
exec(setStateScript, {}, (error, stdout) => {
|
|
62
65
|
if (error) {
|
|
63
66
|
reject(error);
|
|
64
67
|
return;
|
|
@@ -70,11 +73,9 @@ class ScriptSwitch {
|
|
|
70
73
|
}
|
|
71
74
|
catch (err) {
|
|
72
75
|
log.error(`set state exec error: ${err}`);
|
|
73
|
-
|
|
74
|
-
return;
|
|
76
|
+
throw err;
|
|
75
77
|
}
|
|
76
78
|
log.debug('Switch state set to: ' + (newOn ? 'ON' : 'OFF'));
|
|
77
|
-
callback();
|
|
78
79
|
});
|
|
79
80
|
this.informationService = new hap.Service.AccessoryInformation()
|
|
80
81
|
.setCharacteristic(hap.Characteristic.Manufacturer, 'Vectronic');
|
|
@@ -90,7 +91,7 @@ class ScriptSwitch {
|
|
|
90
91
|
];
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
+
export default (api) => {
|
|
94
95
|
hap = api.hap;
|
|
95
96
|
api.registerAccessory('ScriptSwitch', ScriptSwitch);
|
|
96
97
|
};
|
package/dist/accessory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../src/accessory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accessory.js","sourceRoot":"","sources":["../src/accessory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "Homebridge Script Switch",
|
|
3
3
|
"name": "@vectronic/homebridge-script-switch",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "A switch plugin for Homebridge which integrates with shell scripts",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"main": "dist/accessory.js",
|
|
7
8
|
"repository": {
|
|
8
9
|
"type": "git",
|
|
9
|
-
"url": "git://github.com/vectronic/homebridge-script-switch.git"
|
|
10
|
+
"url": "git+https://github.com/vectronic/homebridge-script-switch.git"
|
|
10
11
|
},
|
|
11
12
|
"bugs": {
|
|
12
13
|
"url": "https://github.com/vectronic/homebridge-script-switch/issues"
|
|
@@ -22,17 +23,18 @@
|
|
|
22
23
|
"author": "vectronic",
|
|
23
24
|
"license": "MIT",
|
|
24
25
|
"engines": {
|
|
25
|
-
"node": "
|
|
26
|
-
"homebridge": "
|
|
26
|
+
"node": "^20.18.0 || ^22.10.0 || ^24.0.0",
|
|
27
|
+
"homebridge": "^1.8.0 || ^2.0.0-beta.0"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"rimraf": "
|
|
35
|
-
"ts-node": "10.9.
|
|
36
|
-
"typescript": "5.
|
|
30
|
+
"@eslint/js": "^9.39.1",
|
|
31
|
+
"@types/node": "^24.10.1",
|
|
32
|
+
"eslint": "^9.39.1",
|
|
33
|
+
"homebridge": "^2.0.0-beta.55",
|
|
34
|
+
"nodemon": "^3.1.11",
|
|
35
|
+
"rimraf": "^6.1.0",
|
|
36
|
+
"ts-node": "^10.9.2",
|
|
37
|
+
"typescript": "^5.9.3",
|
|
38
|
+
"typescript-eslint": "^8.46.4"
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="JAVA_MODULE" version="4">
|
|
3
|
-
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
4
|
-
<exclude-output />
|
|
5
|
-
<content url="file://$MODULE_DIR$" />
|
|
6
|
-
<orderEntry type="inheritedJdk" />
|
|
7
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
8
|
-
</component>
|
|
9
|
-
</module>
|
package/.idea/misc.xml
DELETED
package/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/homebridge-script-switch.iml" filepath="$PROJECT_DIR$/.idea/homebridge-script-switch.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
package/.idea/vcs.xml
DELETED
package/dist/accessory.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accessory.d.ts","sourceRoot":"","sources":["../src/accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,GAAG,EAQN,MAAM,YAAY,CAAC;8BAgIL,GAAG;AAAlB,kBAGE"}
|