An open API service indexing awesome lists of open source software.

https://github.com/jfarmer08/wyze-api

An un-official API wrapper for Wyze products
https://github.com/jfarmer08/wyze-api

home-automation javascript node node-js nodejs wyze wyze-bulbs wyze-plug wyze-sensors wyze-switches wyzecam

Last synced: 6 months ago
JSON representation

An un-official API wrapper for Wyze products

Awesome Lists containing this project

README

          

# wyze-api
[![npm](https://img.shields.io/npm/dt/wyze-api)](https://www.npmjs.com/package/wyze-api)
[![npm](https://img.shields.io/npm/v/wyze-api.svg?style=flat-square)](https://www.npmjs.com/package/wyze-api)
[![Chat](https://img.shields.io/discord/1134601590762913863)](https://discord.gg/Mjkpq2x9)
[![GitHub last commit](https://img.shields.io/github/last-commit/jfarmer08/wyze-api)](https://github.com/jfarmer08/wyze-api)

# Funding [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg?style=flat-square&maxAge=2592000)](https://www.paypal.com/paypalme/AllenFarmer) [![Donate](https://img.shields.io/badge/Donate-Venmo-blue.svg?style=flat-square&maxAge=2592000)](https://venmo.com/u/Allen-Farmer) [![Donate](https://img.shields.io/badge/Donate-Cash_App-blue.svg?style=flat-square&maxAge=2592000)](https://cash.app/$Jfamer08)

This is an unofficial Wyze API. This library uses the internal APIs from the Wyze mobile app. A list of all Wyze devices can be retrieved to check the status of Cameras, Senors, Bulbs, Plugs, Locks and more. This API can turn on and off cameras, lightbulbs and plugs and more.

## Setup
`npm install wyze-api --save`

## Example
```
const Wyze = require('wyze-api')
const Logger = require("@ptkdev/logger")
const logger = new Logger()

const options = {
username: process.env.username,
password: process.env.password,
keyId: process.env.keyId,
apiKey: process.env.apiKey,
persistPath: "./",
logLevel: "none"
}
const wyze = new Wyze(options, logger)

; (async () => {
let device, state, result

// Get all Wyze devices
const devices = await wyze.getDeviceList()
console.log(devices)

// Get a Wyze Bulb by name and turn it off.
device = await wyze.getDeviceByName('Porch Light')
result = await wyze.turnOff(device)
console.log(result)

// Get the state of a Wyze Sense contact sensor
device = await wyze.getDeviceByName('Front Door')
state = await wyze.getDeviceState(device)
console.log(`${device.nickname} is ${state}`)

})()
```

## Run
`username=first.last@email.om password=123456 keyId=2222222 apiKey=222222 node index.js`

## Helper methods

Use this helper methods to interact with wyze-api.

- wyze.getDeviceList()
- wyze.getDeviceByName(nickname)
- wyze.getDeviceByMac(mac)
- wyze.getDevicesByType(type)
- wyze.getDevicesByModel(model)
- wyze.getDeviceGroupsList()
- wyze.getDeviceSortList()
- wyze.turnOn(device)
- wyze.turnOff(device)
- wyze.lock(device)
- wyze.unlock(device)
- wyze.getDeviceStatus(device)
- wyze.getDeviceState(device)

## Internal methods

- wyze.login()
- wyze.getRefreshToken()
- wyze.getObjectList()
- wyze.runAction(instanceId, providerKey, actionKey)
- wyze.getDeviceInfo(deviceMac, deviceModel)
- wyze.getPropertyList(deviceMac, deviceModel)
- wyze.setProperty(deviceMac, deviceModel, propertyId, propertyValue)
- wyze.controllock(deviceMac, deviceModel, action)
- wyze.getLockInfo(deviceMac, deviceModel)
- wyze.getIotProp(deviceMac, keys)
- wyze.setIotProp(deviceMac, product_model, propKey, value)
- wyze.getUserProfile()
- wyze.disableRemeAlarm(hms_id)
- wyze.getPlanBindingListByUser()
- wyze.monitoringProfileStateStatus(hms_id)
- wyze.monitoringProfileActive(hms_id, home, away)
- wyze.getPlanBindingListByUser()
- wyze.thermostatGetIotProp(deviceMac, keys)

## Other Info

Special thanks to the following projects for reference and inspiration:

- [ha-wyzeapi](https://github.com/JoshuaMulliken/ha-wyzeapi), a Wyze integration for Home Assistant.
- [wyze-node](https://github.com/noelportugal/wyze-node), a Node library for the Wyze API.