UNPKG

@raiden733/homebridge-gpio-garagedoor

Version:

Raspberry Pi GPIO based Garage Door plugin for Homebridge

60 lines (59 loc) 2.19 kB
"use strict"; /** * Created by kraig on 7/2/16. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.DoorSensorPort = void 0; const GPIOPort_1 = require("./GPIOPort"); const DoorStateExtension_1 = require("./DoorStateExtension"); var Characteristic; class DoorSensorPort extends GPIOPort_1.GPIOPort { static init(exportTypes) { Characteristic = exportTypes.Characteristic; } constructor(pin, service, log, isNCSensor) { super(pin, 'in', 'both'); this.service = service; this.log = log; this.closedSensorValue = isNCSensor ? 0 : 1; var self = this; this.watch(function (err, value) { if (err) { log.error(err); return; } self.isClosed = value == self.closedSensorValue; self.handleStateChange(); }); this.reset(); } handleStateChange() { var currentState = (0, DoorStateExtension_1.getCurrentDoorState)(this.service); switch (currentState) { case Characteristic.CurrentDoorState.CLOSING: case Characteristic.CurrentDoorState.OPENING: return; default: this.updateCurrentDoorState(); } // Handle external state change. var targetState = (0, DoorStateExtension_1.getTargetDoorState)(this.service); if ((this.isClosed && targetState == Characteristic.TargetDoorState.OPEN) || (!this.isClosed && targetState == Characteristic.TargetDoorState.CLOSED)) { this.service.getCharacteristic(Characteristic.TargetDoorState) .setValue(this.isClosed ? Characteristic.TargetDoorState.CLOSED : Characteristic.TargetDoorState.OPEN); } } ; reset() { this.isClosed = this.getState() == this.closedSensorValue; this.updateCurrentDoorState(); } ; updateCurrentDoorState() { this.service.getCharacteristic(Characteristic.CurrentDoorState) .setValue(this.isClosed ? Characteristic.CurrentDoorState.CLOSED : Characteristic.CurrentDoorState.OPEN); } ; } exports.DoorSensorPort = DoorSensorPort;