homebridge-xiaomi-roborock-vacuum
Version:
Xiaomi Vacuum Cleaner - 1st (Mi Robot), 2nd (Roborock S50 + S55), 3rd Generation (Roborock S6) and S5 Max - plugin for Homebridge.
47 lines • 1.56 kB
JavaScript
;
const log = require("../log");
const deviceFinder = require("../device-finder");
exports.command = "control <idOrIp> <method> [params..]";
exports.description = "Control a device by invoking the given method";
exports.builder = {};
exports.handler = function (argv) {
let target = argv.idOrIp;
log.info("Attempting to invoke", argv.method, "on", target);
let foundDevice = false;
let pending = 0;
const browser = deviceFinder({
filter: target,
});
browser.on("available", (device) => {
if (!device[argv.method]) {
log.error("The method " + argv.method + " is not available");
process.exit(0); // eslint-disable-line
}
pending++;
Promise.resolve(device[argv.method](...argv.params))
.then((result) => {
log.plain(JSON.stringify(result, null, " "));
})
.catch((err) => {
log.error("Encountered an error while controlling device");
log.plain();
log.plain("Error was:");
log.plain(err.message);
})
.then(() => {
pending--;
process.exit(0); // eslint-disable-line
});
});
const doneHandler = () => {
if (pending === 0) {
if (!foundDevice) {
log.warn("Could not find device");
}
process.exit(0); // eslint-disable-line
}
};
setTimeout(doneHandler, 5000);
browser.on("done", doneHandler);
};
//# sourceMappingURL=control.js.map