Skip to content

markdicksonjr/wink-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wink API

Build Status NPM Downloads Test Coverage

A typescript/javascript binding for Wink's v2 API.

Installation

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

Setup

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

Examples

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 
});

Available Requests

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

Interesting use-cases

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
});

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published