@constructorfleet/ultimate-govee
Version:
Library for interacting with Govee devices written in Typescript.
58 lines • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeH5184 = exports.H5184 = void 0;
const packed_structures_1 = require("./packed-structures");
const fourProbesMapping = {
1: [1, 2],
65: [1, 2],
129: [1, 2],
193: [1, 2],
2: [3, 4],
66: [3, 4],
130: [3, 4],
194: [3, 4],
};
const unpackPacket = (manufacturerData) => {
const packet = Buffer.from(manufacturerData).toString('hex').slice(20, 39);
const [probe1Temp, probe1Max, _, probe2Temp, probe2Max] = (0, packed_structures_1.unpack_hhbhh)(Buffer.from(packet));
return {
firstProbe: {
current: probe1Temp,
max: probe1Max,
},
secondProbe: {
current: probe2Temp,
max: probe2Max,
},
};
};
const getProbeMeasurement = (advertisement, ...probeNumbers) => {
const sensorIdsPacket = parseInt(`0x${Buffer.from(advertisement.manufacturerData).toString('hex').slice(16, 18)}`, 16);
const sensorIds = fourProbesMapping[sensorIdsPacket];
if (!sensorIds.includes(probeNumbers[0]) &&
!sensorIds.includes(probeNumbers[1])) {
return undefined;
}
return unpackPacket(Buffer.from(advertisement.manufacturerData));
};
exports.H5184 = {
brand: 'Govee',
model: 'H5184',
modelName: 'WiFi Meat Thermometer',
type: ['BBQ'],
};
const decodeH5184 = (advertisement) => {
const unpacked1and2 = getProbeMeasurement(advertisement, 1, 2);
const unpacked3and4 = getProbeMeasurement(advertisement, 1, 2);
return {
probes: {
probe1: unpacked1and2?.firstProbe,
probe2: unpacked1and2?.secondProbe,
probe3: unpacked3and4?.firstProbe,
probe4: unpacked3and4?.secondProbe,
},
...exports.H5184,
};
};
exports.decodeH5184 = decodeH5184;
//# sourceMappingURL=H5184.decoder.js.map