mirror of
https://github.com/mtan93/homebridge.git
synced 2026-03-08 05:31:55 +00:00
Merge pull request #303 from PJCzx/master
Semi working HTTP garage door implementation
This commit is contained in:
115
accessories/HttpGarageDoorOpener.js
Normal file
115
accessories/HttpGarageDoorOpener.js
Normal file
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
{
|
||||
"bridge": {
|
||||
"name": "Homebridge",
|
||||
"username": "CC:22:3D:E3:CE:30",
|
||||
"port": 51826,
|
||||
"pin": "031-45-154"
|
||||
},
|
||||
|
||||
"description": "This is an example configuration file with all supported devices. You can use this as a template for creating your own configuration file containing devices you actually own.",
|
||||
|
||||
"platforms": [],
|
||||
"accessories": [
|
||||
{
|
||||
"accessory": "HttpGarageDoorOpener",
|
||||
"name": "Porte de Garage",
|
||||
"description": "",
|
||||
"open_url": "http://0.0.0.0:3000",
|
||||
"http_method": "GET"
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
var Service = require("hap-nodejs").Service;
|
||||
var Characteristic = require("hap-nodejs").Characteristic;
|
||||
|
||||
var request = require("request");
|
||||
|
||||
module.exports = {
|
||||
accessory: HttpGarageDoorOpener
|
||||
}
|
||||
|
||||
function HttpGarageDoorOpener(log, config) {
|
||||
this.log = log;
|
||||
this.open_url = config["open_url"];
|
||||
this.http_method = config["http_method"];
|
||||
this.garageDoorStatus = Characteristic.CurrentDoorState.CLOSED;
|
||||
}
|
||||
|
||||
HttpGarageDoorOpener.prototype = {
|
||||
close: function (callback) {
|
||||
this.garageDoorStatus = Characteristic.CurrentDoorState.CLOSED;
|
||||
this.log("Door is", this.getCurrentDoorStateReadable());
|
||||
callback();
|
||||
},
|
||||
|
||||
open: function (callback) {
|
||||
this.garageDoorStatus = Characteristic.CurrentDoorState.OPEN;
|
||||
this.log("Door is", this.getCurrentDoorStateReadable());
|
||||
callback();
|
||||
},
|
||||
|
||||
identify: function() {
|
||||
console.log("Identify the Door!");
|
||||
},
|
||||
|
||||
getServices: function () {
|
||||
this.garageDoorOpenerService = new Service.GarageDoorOpener();
|
||||
|
||||
this.garageDoorOpenerService
|
||||
.getCharacteristic(Characteristic.CurrentDoorState)
|
||||
.on('get', this.getCurrentDoorState.bind(this));
|
||||
|
||||
this.garageDoorOpenerService
|
||||
.getCharacteristic(Characteristic.TargetDoorState)
|
||||
.on('set', this.setTargetDoorState.bind(this));
|
||||
|
||||
/*
|
||||
garageDoorOpenerService
|
||||
.getCharacteristic(Characteristic.ObstructionDetected)
|
||||
.on('get', this.getObstructionDetected.bind(this))
|
||||
.on('set', this.setObstructionDetected.bind(this));
|
||||
*/
|
||||
|
||||
var informationService = new Service.AccessoryInformation();
|
||||
informationService
|
||||
.setCharacteristic(Characteristic.Manufacturer, "HTTP Manufacturer")
|
||||
.setCharacteristic(Characteristic.Model, "HTTP Model")
|
||||
.setCharacteristic(Characteristic.SerialNumber, "HTTP Serial Number");
|
||||
|
||||
return [informationService, this.garageDoorOpenerService];
|
||||
},
|
||||
|
||||
getCurrentDoorStateReadable: function () {
|
||||
var textState = "";
|
||||
switch (this.garageDoorStatus) {
|
||||
case 0: textState = "OPEN"; break;
|
||||
case 1: textState = "CLOSED"; break;
|
||||
case 2: textState = "OPENING"; break;
|
||||
case 3: textState = "CLOSING"; break;
|
||||
case 4: textState = "STOPPED"; break;
|
||||
default: this.log("Unhandled CurrentDoorState");
|
||||
}
|
||||
return textState;
|
||||
},
|
||||
|
||||
getCurrentDoorState: function(callback) {
|
||||
|
||||
this.log("The door is now", this.getCurrentDoorStateReadable() ,"("+ this.garageDoorStatus + ")");
|
||||
|
||||
var error = null;
|
||||
var returnValue = this.state;
|
||||
|
||||
callback(null, returnValue);
|
||||
},
|
||||
|
||||
setTargetDoorState: function(value, callback) {
|
||||
if(value === Characteristic.TargetDoorState.OPEN) {
|
||||
this.open(callback);
|
||||
} else {
|
||||
this.close(callback);
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user