ws2801-webserver
Version:
A ready-to-use webserver for the WS2801-Pi package.
37 lines (36 loc) • 1.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vm_1 = __importDefault(require("vm"));
const ws2801_pi_1 = __importDefault(require("ws2801-pi"));
const amountOfLeds = parseInt(process.argv[2]);
const animationScript = process.argv[3];
const startBrightness = process.argv[4] === 'auto' ? 'auto' : parseInt(process.argv[4]);
async function runAnimation() {
const ledController = new ws2801_pi_1.default(amountOfLeds);
ledController.setBrightness(startBrightness);
// tslint:disable-next-line: no-any
process.on('message', (message) => {
if (message.action === 'set-brightness') {
ledController.setBrightness(message.brightness).show();
}
else if (message.action === 'get-led-strip') {
process.send({ action: 'get-led-strip-answer', ledStrip: ledController.getLedStrip() });
}
});
const context = vm_1.default.createContext(Object.assign({}, global, {
ledController: ledController,
ledAmount: amountOfLeds,
exports: exports,
module: module,
console: console,
}));
ledController.onLedStripChanged((ledStrip) => {
process.send({ action: 'led-strip-changed', ledStrip: ledStrip });
});
await vm_1.default.runInContext(animationScript, context);
process.send('animation-finished');
}
runAnimation();