homebridge-gpio-sensor-door
Version:
Raspberry Pi GPIO Doorsensor plugin for Homebridge forked from homebridge-gpio-garagedoor-d
50 lines (49 loc) • 2.12 kB
JavaScript
;
const DoorStateExtension_1 = require("./DoorStateExtension");
const Runtime_1 = require("./Runtime");
const DoorSensorPort_1 = require("./DoorSensorPort");
const SwitchPort_1 = require("./SwitchPort");
var Accessory, Service, Characteristic, uuid;
class GPIODoorAccessory {
constructor(log, config) {
this.log = log;
var name = config["name"];
var id = uuid.generate('gpio-door.' + (config['id'] || this.name));
Accessory.call(this, name, id);
this.uuid_base = id;
this.name = name;
var doorSensor = this.addService(Service.ContactSensor);
var doorSensorPin = config["doorSensorPin"];
log("Door Sensor Pin: " + doorSensorPin);
if (doorSensorPin) {
var isNCSensor = config['isNCSensor'] == true;
log("Is NC Sensor: " + isNCSensor);
this.doorSensor = new DoorSensorPort_1.DoorSensorPort(doorSensorPin, doorSensor, log, isNCSensor);
}
var doorSwitchPin = config["doorSwitchPin"];
log("Door Switch Pin: " + doorSwitchPin);
var doorOpensInSeconds = config["doorOpensInSeconds"];
log("Door Opens (in seconds): " + doorOpensInSeconds);
if (doorSwitchPin) {
this.doorSwitch = new SwitchPort_1.SwitchPort(doorSwitchPin, doorSensor, log, this.doorSensor, doorOpensInSeconds);
}
doorSensor.getCharacteristic(Characteristic.CurrentDoorState)
.on('change', function (change) {
log("Door state changed to " + DoorStateExtension_1.getCurrentDoorStateDescription(change.newValue));
});
this.getService(Service.AccessoryInformation)
.setCharacteristic(Characteristic.Model, "GPIO Door");
}
static init(exportTypes) {
Accessory = exportTypes.Accessory;
Service = exportTypes.Service;
Characteristic = exportTypes.Characteristic;
uuid = exportTypes.uuid;
Runtime_1.changeBase(GPIODoorAccessory, Accessory);
}
getServices() {
return this.services;
}
;
}
exports.GPIODoorAccessory = GPIODoorAccessory;