UNPKG

@constructorfleet/ultimate-govee

Version:

Library for interacting with Govee devices written in Typescript.

87 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ColorRGBState = exports.ColorRGBStateName = void 0; const _ultimate_govee_common_1 = require("../../../common"); const device_state_1 = require("./device.state"); const states_types_1 = require("./states.types"); exports.ColorRGBStateName = 'colorRGB'; class ColorRGBState extends device_state_1.DeviceOpState { constructor(device, opType = _ultimate_govee_common_1.OpType.REPORT, identifier = [0x05]) { super({ opType, identifier }, device, exports.ColorRGBStateName, { red: undefined, green: undefined, blue: undefined, }); this.parseOption = states_types_1.ParseOption.opCode.or(states_types_1.ParseOption.state); this.stateToCommand = (nextState) => { const { red, green, blue } = nextState ?? {}; if (!(0, _ultimate_govee_common_1.isBetween)(red, 0, 255) || !(0, _ultimate_govee_common_1.isBetween)(green, 0, 255) || !(0, _ultimate_govee_common_1.isBetween)(blue, 0, 255)) { this.logger.warn('Missing or invalid color, ignoring command'); return; } return { status: [ { state: { color: { red, green, blue, }, }, }, { op: { command: [[0x02, red, green, blue]], }, }, ], command: [ { command: 'color', data: { color: { red, green, blue, }, }, }, { data: { command: [(0, _ultimate_govee_common_1.asOpCode)(0x33, this.identifier, 0x03, red, green, blue)], }, }, ], }; }; } parseState(data) { const { red, green, blue } = data?.state?.color ?? {}; if ((0, _ultimate_govee_common_1.isBetween)(red, 0, 255) && (0, _ultimate_govee_common_1.isBetween)(green, 0, 255) && (0, _ultimate_govee_common_1.isBetween)(blue, 0, 255)) { this.stateValue.next({ red, green, blue, }); } } parseOpCommand(opCommand) { const [red, green, blue] = opCommand.slice(0, 3); if ((0, _ultimate_govee_common_1.isBetween)(red, 0, 255) && (0, _ultimate_govee_common_1.isBetween)(green, 0, 255) && (0, _ultimate_govee_common_1.isBetween)(blue, 0, 255)) { this.stateValue.next({ red, green, blue, }); } } } exports.ColorRGBState = ColorRGBState; //# sourceMappingURL=color-rgb.state.js.map