@constructorfleet/ultimate-govee
Version:
Library for interacting with Govee devices written in Typescript.
169 lines • 6.26 kB
JavaScript
;
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