A typescript/javascript binding for Wink's v2 API.
npm install wink-api
for typescript users, this can install the module's typings globally:
typings install file:node_modules/wink-api/@types/wink-api.d.ts --save --global
Add an app at https://developer.wink.com and wait under a day for acceptance.
You'll need to get the client ID and secret.
Your app should get the access token via OAuth. More details are at http://docs.winkapiv2.apiary.io/#reference/oauth
Get the devices for a user:
import {GetDevices} from "wink-api";
GetDevices.execute({
host: 'https://api.wink.com',
access_token: access_token
}).then((devicesResponse: WinkAPI.IUserDevicesResponse) => {
// do something
}).catch((err: WinkAPI.IRequestError) => {
// error handling
});
The following requests are supported via the wink-api module (each with "execute" as the method that queries):
- ActivateScene
- CreateGroup
- CreateRobot
- CreateScene
- CreateUser
- DeleteGroup
- DeleteRobot
- DeleteScene
- GetDevice
- GetDeviceUsers
- GetDevices
- GetGroup
- GetGroups
- GetRobot
- GetRobots
- GetScene
- GetScenes
- SetDesiredState
- ShareDevice
- UnshareDevice
- UpdateGroup
- UpdateGroupState
- UpdateRobot
- UpdateScene
- UpdateUser
Turning off a group of devices:
import {UpdateGroupState} from "wink-api";
UpdateGroupState.execute({
host: 'https://api.wink.com',
access_token: '<access_token>',
group_id: '<group id>'
}, {
powered: false
}).then((groupResponse: WinkAPI.IUserGroupResponse) => {
// do something
}).catch((err: WinkAPI.IRequestError) => {
// error handling
});
Toggling power for a group of devices:
import {GetGroup, UpdateGroupState} from "wink-api";
GetGroup.execute({
host: 'https://api.wink.com',
access_token: '<access_token>',
group_id: '<group id>'
}).then((group) => {
let allOn: boolean = false;
if(group && group.data && group.data.reading_aggregation) {
let aggregation: any = group.data.reading_aggregation;
allOn = (aggregation.powered && aggregation.connection && aggregation.powered.true_count === aggregation.connection.true_count);
}
UpdateGroupState.execute({
host: 'https://api.wink.com',
access_token: '<access_token>',
group_id: '<group id>'
}, {
powered: !allOn
}).then((groupResponse: WinkAPI.IUserGroupResponse) => {
// TODO: handle group response
}).catch((err: WinkAPI.IRequestError) => {
// TODO: handle error
});
}).catch((err: WinkAPI.IRequestError) => {
// TODO: handle error
});