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.
60 lines • 1.84 kB
JavaScript
;
const log = require("../../log");
const deviceFinder = require("../../device-finder");
exports.command = "call <idOrIp> <method> [params...]";
exports.description = "Call a raw method on a device";
exports.builder = {
token: {
type: "string",
description: "The known token of the device to communicate with",
},
};
exports.handler = function (argv) {
let target = argv.idOrIp;
log.info("Attempting to call", argv.method, "on", target);
let foundDevice = false;
let pending = 0;
const browser = deviceFinder({
filter: target,
token: argv.token,
});
browser.on("available", (device) => {
pending++;
log.plain();
log.info("Device found, making call");
log.plain();
const parsedArgs = argv.params
? Array.isArray(argv.params)
? argv.params
: JSON.parse(argv.params)
: [];
log.plain(parsedArgs);
device
.miioCall(argv.method, parsedArgs)
.then((result) => {
log.info("Got 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=call.js.map