homebridge-fire-detector 1.0.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/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Homebridge Fire Detector Plugin
2
+
3
+ This plugin creates virtual fire detection sensors and switches in Homebridge.
4
+
5
+ ## Installation
6
+
7
+ 1. Install the plugin:
8
+ ```bash
9
+ npm install -g homebridge-fire-detector
@@ -0,0 +1,27 @@
1
+ {
2
+ "pluginAlias": "FireDetector",
3
+ "pluginType": "accessory",
4
+ "schema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "type": "string",
9
+ "title": "Accessory Name",
10
+ "default": "Fire Detector"
11
+ },
12
+ "sensors": {
13
+ "type": "array",
14
+ "title": "Fire Sensors",
15
+ "items": {
16
+ "type": "object",
17
+ "properties": {
18
+ "name": {
19
+ "type": "string",
20
+ "title": "Sensor Name"
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
package/index.js ADDED
@@ -0,0 +1,47 @@
1
+ const { Service, Characteristic } = require('homebridge');
2
+
3
+ module.exports = (api) => {
4
+ api.registerAccessory('FireDetector', FireDetector);
5
+ };
6
+
7
+ class FireDetector {
8
+ constructor(log, config, api) {
9
+ this.log = log;
10
+ this.api = api;
11
+ this.name = config.name || 'Fire Detector';
12
+ this.sensors = config.sensors || []; // Danh sách các cảm biến từ cấu hình
13
+
14
+ this.services = [];
15
+
16
+ // Tạo mỗi công tắc và cảm biến tương ứng
17
+ this.sensors.forEach((sensor, index) => {
18
+ const switchService = new Service.Switch(`Switch - ${sensor.name || `Sensor ${index + 1}`}`);
19
+ const sensorService = new Service.MotionSensor(sensor.name || `Sensor ${index + 1}`);
20
+
21
+ let isFireDetected = false;
22
+
23
+ // Xử lý khi bật/tắt công tắc
24
+ switchService
25
+ .getCharacteristic(Characteristic.On)
26
+ .onGet(() => isFireDetected)
27
+ .onSet((value) => {
28
+ isFireDetected = value;
29
+ this.log(`Switch for ${sensor.name || `Sensor ${index + 1}`} set to: ${value}`);
30
+ sensorService
31
+ .getCharacteristic(Characteristic.MotionDetected)
32
+ .updateValue(isFireDetected);
33
+ });
34
+
35
+ // Lưu dịch vụ vào danh sách
36
+ this.services.push(switchService, sensorService);
37
+ });
38
+
39
+ if (this.services.length === 0) {
40
+ this.log('No sensors configured. Please add sensors in the configuration.');
41
+ }
42
+ }
43
+
44
+ getServices() {
45
+ return this.services;
46
+ }
47
+ }
package/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "homebridge-fire-detector",
3
+ "version": "1.0.0",
4
+ "description": "A Homebridge plugin to create virtual fire detection sensors.",
5
+ "main": "index.js",
6
+ "author": "DINH THAI AIGLOBAL",
7
+ "license": "MIT",
8
+ "keywords": ["homebridge-plugin", "fire-detector", "virtual-switch"],
9
+ "dependencies": {},
10
+ "engines": {
11
+ "homebridge": ">=1.3.0",
12
+ "node": ">=14.18.0"
13
+ }
14
+ }