Skip to content

Commit

Permalink
Lock support (#19)
Browse files Browse the repository at this point in the history
* Update oh2.js

Attempted to add door locking support.

Maps to a switch - and tries to confirm if it actually changed state.

* Update oh2.js

* Update oh2.js

* Update oh2.js

* Update oh2.js

* Update oh2.js

Added tagging support

* Update oh2.js

Indentation fixes

* Update oh2.js

spacing

* Update oh2.js

Moved functions, removed whitespace, changed "Locks" to "Lock"

* Update oh2.js

Updated code to always report success when lock command successfully sent to OpenHAB (disregarding actual state change), as per implementation discussion.

Signed-off-by: Harrison Frith <harry@simans.net> (github: fourthwall)

* Device discovery response bug fix

Would respond with incorrect payloads for device discovery. Now fixed.

Signed-off-by: Harrison Frith <harry@simans.net> (github: fourthwall)

* Simplified lockstate boolean expression

Signed-off-by: Harrison Frith <harry@simans.net> (github: fourthwall)

* Removed excess whitespace

Signed-off-by: Harrison Frith <harry@simans.net> (github: fourthwall)
  • Loading branch information
fourthwall authored and digitaldan committed May 12, 2017
1 parent 1178d62 commit dd00c1a
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions oh2.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,12 @@ exports.handleControl = function (event, context) {
case 'SetColorRequest':
adjustColor(context, event);
break;
case 'GetLockStateRequest':
getLockState(context, event);
break;
case 'SetLockStateRequest':
setLockState(context, event);
break;
}
};

Expand Down Expand Up @@ -443,6 +449,63 @@ function adjustTemperatureWithItems(context, event, currentTemperature, targetTe
rest.postItemCommand(event.payload.accessToken, targetTemperature.name, setValue.toString(), success, failure);
}

function getLockState(context, event) {
var success = function (item) {
var header = {
messageId: event.header.messageId,
name: event.header.name.replace("Request", "Response"),
namespace: event.header.namespace,
payloadVersion: event.header.payloadVersion
};
var payload = {
lockState: item.state == "ON" ? "LOCKED" : "UNLOCKED"
};
var result = {
header: header,
payload: payload
};
utils.log('Done with result', JSON.stringify(result));
context.succeed(result);
};
var failure = function (error) {
context.done(null, utils.generateControlError(event.header.messageId, event.header.name, 'DependentServiceUnavailableError', error.message));
};
rest.getItem(event.payload.accessToken, event.payload.appliance.applianceId, success, failure);
}

function setLockState(context, event) {
var success = function (response) {
var header = {
messageId: event.header.messageId,
name: event.header.name.replace("Request", "Confirmation"),
namespace: event.header.namespace,
payloadVersion: event.header.payloadVersion
};

var payload = {
lockState: event.payload.lockState //signal success
};

var result = {
header: header,
payload: payload
};

// DEBUG
//utils.log('Done with result', result);

context.succeed(result);
};

var failure = function (error) {
context.done(null, utils.generateControlError(event.header.messageId, event.header.name, 'DependentServiceUnavailableError', error.message));
};

var state = event.payload.lockState === "LOCKED" ? 'ON' : 'OFF';

rest.postItemCommand(event.payload.accessToken, event.payload.appliance.applianceId, state, success, failure);
}

/**
* Add all devices that have been tagged
**/
Expand Down Expand Up @@ -496,6 +559,12 @@ function discoverDevices(token, success, failure) {
var actions = null;
var additionalApplianceDetails = {};
switch (tag) {
case "Lock":
actions = [
"getLockState",
"setLockState"
];
break;
case "Lighting":
case "Switchable":
actions = getSwitchableActions(item);
Expand Down

0 comments on commit dd00c1a

Please sign in to comment.