homebridge-am43-blinds-bluez
Version:
A homebridge plugin to control AM43 based shade motors in HomeKit. These include the A OK and Zemismart bluetooth based motors. This plugin requires a Homebridge host that supports Bluetooth 4.0
32 lines (31 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildCommandBuffer = void 0;
const values_1 = require("./values");
const calculateCommandChecksum = (bufferArray) => {
let checksum = 0;
for (let i = 0; i < bufferArray.length - 1; i++) {
checksum = checksum ^ bufferArray[i];
}
checksum = checksum ^ 0xff;
return checksum;
};
const buildCommandBuffer = function (commandID, data) {
const bufferArray = new Uint8Array(data.length + 8);
const startPackage = values_1.DeviceValues.AM43_COMMAND_PREFIX;
for (let index = 0; index < startPackage.length; index++) {
bufferArray[index] = startPackage[index];
}
bufferArray[5] = commandID;
const uIntData = Uint8Array.from(data);
bufferArray[6] = uIntData.length;
let bufferIndex = 7;
for (let index = 0; index < uIntData.length; index++) {
bufferArray[bufferIndex] = uIntData[index];
bufferIndex++;
}
bufferArray[bufferIndex] = calculateCommandChecksum(bufferArray);
bufferIndex++;
return Buffer.from(bufferArray.buffer);
};
exports.buildCommandBuffer = buildCommandBuffer;