UNPKG

@constructorfleet/ultimate-govee

Version:

Library for interacting with Govee devices written in Typescript.

169 lines 6.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PresetState = exports.DoneLevelmap = exports.RefrenceDoneLevel = exports.MeatDoneLevel = exports.PorkDoneLevel = exports.SausageHameDoneLevel = exports.DIYDoneLevel = exports.FoodMap = exports.PresetStateName = exports.ProbeTempState = exports.ProbeTempStateName = exports.EarlyWarningState = exports.EarlyWarningOffset = exports.EarlyWarningStateName = exports.TemperatureUnitState = exports.TemperatureUnitStateName = exports.BuzzerState = exports.BuzzerStateName = void 0; const _ultimate_govee_common_1 = require("../../../../../common"); const device_state_1 = require("../../../states/device.state"); const states_types_1 = require("../../../states/states.types"); exports.BuzzerStateName = 'buzzer'; class BuzzerState extends device_state_1.DeviceOpState { constructor(device, defaultState = undefined) { super({ opType: null }, device, exports.BuzzerStateName, defaultState, states_types_1.ParseOption.multiOp); } parseMultiOpCommand(opCommands) { const opCommand = opCommands[0]; if ([0, 1].includes(opCommand[6])) { this.stateValue.next(opCommand[6] === 1); } } } exports.BuzzerState = BuzzerState; exports.TemperatureUnitStateName = 'temperatureUnit'; class TemperatureUnitState extends device_state_1.DeviceOpState { constructor(device, defaultState = undefined) { super({ opType: null }, device, exports.BuzzerStateName, defaultState, states_types_1.ParseOption.multiOp); } parseMultiOpCommand(opCommands) { const opCommand = opCommands[0]; this.stateValue.next(opCommand[2] === 1 ? 'F' : 'C'); } } exports.TemperatureUnitState = TemperatureUnitState; exports.EarlyWarningStateName = 'earlyWarning'; var EarlyWarningOffset; (function (EarlyWarningOffset) { EarlyWarningOffset["OFF"] = "OFF"; EarlyWarningOffset["LOW"] = "low"; EarlyWarningOffset["MEDIUM"] = "MEDIUM"; EarlyWarningOffset["HIGH"] = "HIGH"; })(EarlyWarningOffset || (exports.EarlyWarningOffset = EarlyWarningOffset = {})); // const EarlyWarningTempMap = { // [EarlyWarningOffset.OFF]: 0, // [EarlyWarningOffset.LOW]: 244, // [EarlyWarningOffset.MEDIUM]: 232, // [EarlyWarningOffset.HIGH]: 220, // }; class EarlyWarningState extends device_state_1.DeviceOpState { constructor(device, defaultState = undefined) { super({ opType: null }, device, exports.EarlyWarningStateName, defaultState, states_types_1.ParseOption.multiOp); } parseMultiOpCommand(opCommands) { const opCommand = opCommands[0]; if ([0, 1, 3, 5].includes(opCommand[3])) { let warning = EarlyWarningOffset.OFF; switch (opCommand[4]) { case 0: warning = EarlyWarningOffset.OFF; break; case 1: warning = EarlyWarningOffset.LOW; break; case 3: warning = EarlyWarningOffset.MEDIUM; break; case 5: warning = EarlyWarningOffset.HIGH; break; } this.stateValue.next({ enabled: opCommand[3] !== 0, setting: warning, }); } } } exports.EarlyWarningState = EarlyWarningState; const getProbeReading = (opCommands, probe) => { const opCommand = opCommands.reduce((acc, opCommand) => { return [...acc, ...opCommand]; }, []); const readings = (0, _ultimate_govee_common_1.chunk)(opCommand.slice(10), 9); return readings[probe - 1]; }; exports.ProbeTempStateName = 'probeTemp'; class ProbeTempState extends device_state_1.DeviceOpState { constructor(device, probe, defaultState = undefined) { super({ opType: null }, device, `${exports.ProbeTempStateName}${probe}`, defaultState, states_types_1.ParseOption.multiOp); this.probe = probe; } parseMultiOpCommand(opCommands) { const temp = (0, _ultimate_govee_common_1.total)(getProbeReading(opCommands, this.probe).slice(0, 2)); this.stateValue.next(temp / 100); } } exports.ProbeTempState = ProbeTempState; exports.PresetStateName = 'preset'; exports.FoodMap = { BEEF: 0, LAMB: 1, PORK: 2, POULTRY: 3, TURKEY: 4, FISH: 5, DIY: 6, VEAL: 7, SAUSAGE: 8, HAM: 9, SHRIMP: 10, POTATO: 11, CUPCAKE: 12, EGG: 13, }; exports.DIYDoneLevel = { LOW: 1, HIGH: 2, RANGE: 3, }; exports.SausageHameDoneLevel = { RAW: 1, PRE_COOKER: 2, }; exports.PorkDoneLevel = { MEDIUM: 1, WELL_DONE: 2, }; exports.MeatDoneLevel = { RARE: 1, MEDIUM_RARE: 2, MEDIUM: 3, MEDIUM_WELL: 4, WELL_DONE: 5, }; exports.RefrenceDoneLevel = { REFERENCE: 1, }; exports.DoneLevelmap = { DIY: exports.DIYDoneLevel, SAUSAGE: exports.SausageHameDoneLevel, HAM: exports.SausageHameDoneLevel, PORK: exports.PorkDoneLevel, BEEF: exports.MeatDoneLevel, LAMB: exports.MeatDoneLevel, VEAL: exports.MeatDoneLevel, }; class PresetState extends device_state_1.DeviceOpState { constructor(device, probe, defaultState = undefined) { super({ opType: null }, device, `${exports.PresetStateName}${probe}`, defaultState, states_types_1.ParseOption.multiOp); this.probe = probe; } parseMultiOpCommand(opCommands) { const reading = getProbeReading(opCommands, this.probe); const alarmHigh = (0, _ultimate_govee_common_1.total)(reading.slice(2, 4)); const alarmLow = (0, _ultimate_govee_common_1.total)(reading.slice(4, 6)); const food = Object.entries(exports.FoodMap) .find(([_, code]) => code === reading[6]) ?.at(0); const doneLevel = Object.entries(exports.DoneLevelmap[food] ?? exports.RefrenceDoneLevel) .find(([_, code]) => code === reading[8]) ?.at(0); this.stateValue.next({ food, alarm: { high: alarmHigh / 100, low: alarmLow / 100, }, doneLevel, }); } } exports.PresetState = PresetState; //# sourceMappingURL=meat-thermometer.states.js.map