Files
ewelink-api/classes/PowerState/ChangeStateZeroconf.js
Martin M 098011b285 Release v2.0.0 (#44)
* Added arpTableSolver (#18)

* Added arpTableSolver

* fix package import

* linting class

* changed arp library

* refactor arp class

* using arpping fork

* refactor arpTableSolver class

* Added Zero Conf functionality (LAN mode) (#46)

* added crypto-js

* zeroconf helper functions

* zeroconf update payload

* new method to save devices cache file

* class renamed

* refactor Zeroconf class

* return cached device if exists

* moved method to get local ip address

* fix mac addresses without leading zeroes

* refactor Zeroconf class

* using new zeroconf functionality

* zeroconf working with single and multichannel devices

* save device mixin enhancement

* working on zeroconf test cases

* catch errors on filesystem methods

* zeroconf: added extra test cases

* better error handling

* zeroconf: 100% code coverage

* removed deprecated login method

* updates on credentials file

* version bump

* Docs for v2.0 (#52)

* added v1 docs

* added zeroconf docs

* updated readme

* docs updated

* removed zeroconf article warning

* updated vscode config

Co-authored-by: Luis Llamas <luisllamas@hotmail.com>
2020-01-11 01:39:29 -03:00

41 lines
949 B
JavaScript

const rp = require('request-promise');
const WebSocket = require('../WebSocket');
const payloads = require('../../lib/payloads');
const { _get } = require('../../lib/helpers');
class ChangeStateZeroconf extends WebSocket {
static async set({ url, device, params, switches, state }) {
const selfApikey = device.apikey;
const deviceId = device.deviceid;
const deviceKey = device.devicekey;
const endpoint = switches ? 'switches' : 'switch';
const localUrl = `${url}/${endpoint}`;
const body = payloads.zeroConfUpdatePayload(
selfApikey,
deviceId,
deviceKey,
params
);
const response = await rp({
method: 'POST',
uri: localUrl,
body,
json: true,
});
const error = _get(response, 'error', false);
if (error === 403) {
return { error, msg: response.reason };
}
return { status: 'ok', state };
}
}
module.exports = ChangeStateZeroconf;