UNPKG

js-broadlink

Version:
190 lines 6.53 kB
#!/usr/bin/env node "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const broadlink_1 = require("./broadlink"); const prompts_1 = __importDefault(require("prompts")); const clipboardy = __importStar(require("clipboardy")); const exitOnCancel = () => process.exit(0); (async function () { const action = await prompts_1.default([ { type: "select", name: "value", message: "What would you like to do?", choices: [ { title: "Discover", value: "discover" }, { title: "Setup", value: "setup" }, ], }, ], { onCancel: exitOnCancel }); switch (action.value) { case "discover": await discover(); break; case "setup": await setup(); break; } })(); async function setup() { const response = await prompts_1.default([ { type: "text", name: "ssid", message: "SSID?", }, { type: "password", name: "password", message: "Password?", }, { type: "select", name: "wireless", message: "Wireless?", choices: [ { title: "None", value: broadlink_1.SecurityMode.None, }, { title: "WPA1", value: broadlink_1.SecurityMode.WPA1, }, { title: "WPA2", value: broadlink_1.SecurityMode.WPA2, }, { title: "WPA1/2", value: broadlink_1.SecurityMode.WPA1or2, }, ], }, ], { onCancel: exitOnCancel }); try { await broadlink_1.Setup(response.ssid, response.password, response.wireless); } catch (e) { console.error(`could not set up device: error=${e}`); } } async function discover() { const sleep = (s) => new Promise((resolve) => setTimeout(resolve, s * 1000)); const response = await prompts_1.default([ { type: "number", name: "secs", message: "Timeout (secs)", initial: 2, }, ], { onCancel: exitOnCancel }); console.log("\nSearching...\n"); try { let devices = []; const stream = broadlink_1.Discover(response.secs * 1000); stream.listen((device) => devices.push(device)); await sleep(response.secs); if (!devices.length) { throw "no devices found"; } const selectedDevice = await prompts_1.default([ { type: "select", name: "value", message: "Which Device?", choices: devices.map((d) => { return { value: d, title: `${d.hostport} / ${d.macAddress} (${d.deviceType})`, }; }), }, ], { onCancel: exitOnCancel }); const d = selectedDevice.value; while (true) { const action = await prompts_1.default([ { type: "select", name: "value", message: "What to do?", choices: [ { title: "Enter Learning Mode", value: "learn", }, { title: "Exit Learning Mode", value: "exitLearn", }, { title: "Read Learned Code", value: "read", }, { title: "Send Code", value: "send", }, ], }, ], { onCancel: exitOnCancel }); try { switch (action.value) { case "learn": await d.enterLearning(); break; case "exitLearn": await d.exitLearning(); break; case "read": const data = await d.checkData(); const b64 = data.toString("base64"); // copy(b64); clipboardy.write(b64); console.log("data:", b64, "copied to clipboard"); break; case "send": const resp = await prompts_1.default([ { type: "text", message: "Data?", name: "value", }, ]); const b = Buffer.from(resp.value, "base64"); await d.sendData(b); break; } } catch (e) { console.error(`could not perform action; action=${action.value}, error=${e}`); } } } catch (e) { console.error(`could not discover device: error=${e}`); } } //# sourceMappingURL=cli.js.map