edge-impulse-linux 1.15.6 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli/linux/linux.js +17 -8
- package/build/cli/linux/linux.js.map +1 -1
- package/build/cli/linux/runner-utils.d.ts +7 -1
- package/build/cli/linux/runner-utils.js +157 -21
- package/build/cli/linux/runner-utils.js.map +1 -1
- package/build/cli/linux/runner.js +37 -9
- package/build/cli/linux/runner.js.map +1 -1
- package/build/cli/linux/webserver/public/webserver.js +5 -1
- package/build/cli/linux/webserver/public/webserver.js.map +1 -1
- package/build/cli/linux/webserver/views/index.d.ts +4 -0
- package/{cli/linux/webserver/public/index.html → build/cli/linux/webserver/views/index.js} +32 -7
- package/build/cli/linux/webserver/views/index.js.map +1 -0
- package/build/library/sensors/gstreamer.js +1 -1
- package/build/library/sensors/gstreamer.js.map +1 -1
- package/build/library/sensors/sensors-helper.d.ts +6 -2
- package/build/library/sensors/sensors-helper.js +47 -5
- package/build/library/sensors/sensors-helper.js.map +1 -1
- package/build/sdk/studio/sdk/api/organizationDataApi.d.ts +1 -1
- package/build/sdk/studio/sdk/api/organizationDataApi.js +1 -1
- package/build/sdk/studio/sdk/model/dSPInfo.d.ts +6 -0
- package/build/sdk/studio/sdk/model/dSPInfo.js +10 -0
- package/build/sdk/studio/sdk/model/dSPInfo.js.map +1 -1
- package/build/sdk/studio/sdk/model/dSPNormalizeData.d.ts +13 -0
- package/build/sdk/studio/sdk/model/dSPNormalizeData.js +16 -0
- package/build/sdk/studio/sdk/model/dSPNormalizeData.js.map +1 -0
- package/build/sdk/studio/sdk/model/generateFeaturesRequest.d.ts +2 -0
- package/build/sdk/studio/sdk/model/generateFeaturesRequest.js +5 -0
- package/build/sdk/studio/sdk/model/generateFeaturesRequest.js.map +1 -1
- package/build/sdk/studio/sdk/model/models.d.ts +1 -0
- package/build/sdk/studio/sdk/model/models.js +2 -0
- package/build/sdk/studio/sdk/model/models.js.map +1 -1
- package/cli/linux/webserver/public/assets/mobileclient.css +28 -0
- package/cli/linux/webserver/public/webserver.js +6 -1
- package/package.json +1 -1
- package/test/gstreamer.test.ts +12 -12
package/build/cli/linux/linux.js
CHANGED
|
@@ -29,6 +29,10 @@ commander_1.default
|
|
|
29
29
|
.option('--silent', `Run in silent mode, don't prompt for credentials`)
|
|
30
30
|
.option('--dev', 'List development servers, alternatively you can use the EI_HOST environmental variable ' +
|
|
31
31
|
'to specify the Edge Impulse instance.')
|
|
32
|
+
.option('--camera <camera>', 'Which camera to use (either the name, or the device address - e.g. /dev/video0). ' +
|
|
33
|
+
'If this argument is omitted, and multiple cameras are found, a CLI selector is shown.')
|
|
34
|
+
.option('--microphone <microphone>', 'Which microphone to use (either the name, or the device address). ' +
|
|
35
|
+
'If this argument is omitted, and multiple microphones are found, a CLI selector is shown.')
|
|
32
36
|
.option('--verbose', 'Enable debug logs')
|
|
33
37
|
.option('--greengrass', 'Enable AWS IoT greengrass integration mode')
|
|
34
38
|
.allowUnknownOption(true)
|
|
@@ -49,6 +53,8 @@ const dimensions = commander_1.default.width && commander_1.default.height ? {
|
|
|
49
53
|
width: Number(commander_1.default.width),
|
|
50
54
|
height: Number(commander_1.default.height)
|
|
51
55
|
} : undefined;
|
|
56
|
+
const cameraArgv = commander_1.default.camera;
|
|
57
|
+
const microphoneArgv = commander_1.default.microphone;
|
|
52
58
|
if ((commander_1.default.width && !commander_1.default.height) || (!commander_1.default.width && commander_1.default.height)) {
|
|
53
59
|
console.error('--width and --height need to either be both specified or both omitted');
|
|
54
60
|
process.exit(1);
|
|
@@ -126,24 +132,27 @@ let isExiting = false;
|
|
|
126
132
|
process.on('SIGHUP', onSignal);
|
|
127
133
|
process.on('SIGINT', onSignal);
|
|
128
134
|
if (!noMicrophone) {
|
|
129
|
-
let audioDeviceName =
|
|
135
|
+
let audioDeviceName = '';
|
|
130
136
|
try {
|
|
131
|
-
audioDeviceName = await (0, sensors_helper_1.initMicrophone)(
|
|
137
|
+
audioDeviceName = await (0, sensors_helper_1.initMicrophone)({
|
|
138
|
+
audioDeviceNameInConfig: await configFactory.getAudio(),
|
|
139
|
+
audioNameArgv: microphoneArgv,
|
|
140
|
+
});
|
|
132
141
|
}
|
|
133
|
-
catch (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
142
|
+
catch (ex2) {
|
|
143
|
+
const ex = ex2;
|
|
144
|
+
console.warn(SERIAL_PREFIX, (ex.message || ex.toString()));
|
|
145
|
+
process.exit(1);
|
|
137
146
|
}
|
|
138
147
|
await configFactory.storeAudio(audioDeviceName);
|
|
139
148
|
linuxDevice.setAudioDeviceName(audioDeviceName);
|
|
140
149
|
console.log(SERIAL_PREFIX, 'Using microphone', audioDeviceName);
|
|
141
150
|
}
|
|
142
151
|
if (!noCamera) {
|
|
143
|
-
const storedCamera = await configFactory.getCamera();
|
|
144
152
|
camera = await (0, sensors_helper_1.initCamera)({
|
|
145
153
|
cameraType: cameraType,
|
|
146
|
-
|
|
154
|
+
cameraDeviceNameInConfig: await configFactory.getCamera(),
|
|
155
|
+
cameraNameArgv: cameraArgv,
|
|
147
156
|
dimensions: dimensions,
|
|
148
157
|
gstLaunchArgs: gstLaunchArgsArgv,
|
|
149
158
|
verboseOutput: verboseArgv,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":";;;;;;AAEA,wDAAgC;AAChC,gEAAwE;AACxE,8EAAkE;AAGlE,0DAAgC;AAChC,gDAAwB;AACxB,4CAAoB;AACpB,4CAA2B;AAC3B,yEAA8F;AAC9F,iDAA6C;AAE7C,MAAM,cAAc,GAAyB,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CACnE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAE,CAAC,OAAO,CAAC;AAE/E,mBAAO;KACF,WAAW,CAAC,4BAA4B,GAAG,cAAc,CAAC;KAC1D,OAAO,CAAC,cAAc,CAAC;KACvB,MAAM,CAAC,iBAAiB,EAAE,2EAA2E,CAAC;KACtG,MAAM,CAAC,kBAAkB,EAAE,gEAAgE,CAAC;KAC5F,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;KACrD,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,oCAAoC,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,0BAA0B,EAAE,oGAAoG;IACpI,0FAA0F,CAAC;KAC9F,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACtC,MAAM,CAAC,UAAU,EAAE,kDAAkD,CAAC;KACtE,MAAM,CAAC,OAAO,EAAE,yFAAyF;IACtG,uCAAuC,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;KACxC,MAAM,CAAC,cAAc,EAAE,4CAA4C,CAAC;KACpE,kBAAkB,CAAC,IAAI,CAAC;KACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzB,MAAM,OAAO,GAAY,CAAC,CAAC,mBAAO,CAAC,GAAG,CAAC;AACvC,MAAM,SAAS,GAAY,CAAC,CAAC,mBAAO,CAAC,KAAK,CAAC;AAC3C,MAAM,UAAU,GAAY,CAAC,CAAC,mBAAO,CAAC,MAAM,CAAC;AAC7C,MAAM,WAAW,GAAY,CAAC,CAAC,mBAAO,CAAC,OAAO,CAAC;AAC/C,MAAM,UAAU,GAAuB,mBAAO,CAAC,MAAM,CAAC;AACtD,MAAM,cAAc,GAAY,CAAC,CAAC,mBAAO,CAAC,UAAU,CAAC;AACrD,MAAM,WAAW,GAAuB,mBAAO,CAAC,OAAO,CAAC;AACxD,MAAM,iBAAiB,GAAuB,mBAAO,CAAC,aAAa,CAAC;AACpE,MAAM,QAAQ,GAAY,CAAC,CAAC,mBAAO,CAAC,aAAa,CAAC;AAClD,MAAM,YAAY,GAAY,CAAC,CAAC,mBAAO,CAAC,iBAAiB,CAAC;AAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC;AACtD,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC;AACtE,MAAM,UAAU,GAAG,mBAAO,CAAC,KAAK,IAAI,mBAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,mBAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,mBAAO,CAAC,MAAM,CAAC;CACjC,CAAC,CAAC,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,13 @@ export declare function listTargets(projectId: number, api: EdgeImpulseApi): Pro
|
|
|
6
6
|
export declare function audioClassifierHelloMsg(model: ModelInformation): void;
|
|
7
7
|
export declare function imageClassifierHelloMsg(model: ModelInformation): void;
|
|
8
8
|
export declare function printThresholds(model: ModelInformation): void;
|
|
9
|
-
export declare function startApiServer(
|
|
9
|
+
export declare function startApiServer(opts: {
|
|
10
|
+
model: ModelInformation;
|
|
11
|
+
runner: LinuxImpulseRunner;
|
|
12
|
+
projectStudioUrl: string;
|
|
13
|
+
port: number;
|
|
14
|
+
printIncomingInferenceReqs: boolean;
|
|
15
|
+
}): Promise<void>;
|
|
10
16
|
export declare function startWebServer(opts: {
|
|
11
17
|
model: ModelInformation;
|
|
12
18
|
camera: ICamera;
|
|
@@ -15,6 +15,9 @@ const image_classifier_1 = require("../../library/classifier/image-classifier");
|
|
|
15
15
|
const path_1 = __importDefault(require("path"));
|
|
16
16
|
const socket_io_1 = __importDefault(require("socket.io"));
|
|
17
17
|
const sharp_1 = __importDefault(require("sharp"));
|
|
18
|
+
const ws_1 = __importDefault(require("ws"));
|
|
19
|
+
const url_1 = __importDefault(require("url"));
|
|
20
|
+
const views_1 = require("./webserver/views");
|
|
18
21
|
const RUNNER_PREFIX = '\x1b[33m[RUN]\x1b[0m';
|
|
19
22
|
async function listTargets(projectId, api) {
|
|
20
23
|
const targets = await api.deployment.listDeploymentTargetsForProjectDataSources(projectId, {});
|
|
@@ -71,7 +74,8 @@ function printThresholds(model) {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
exports.printThresholds = printThresholds;
|
|
74
|
-
function startApiServer(
|
|
77
|
+
function startApiServer(opts) {
|
|
78
|
+
const { model, runner, projectStudioUrl, port, printIncomingInferenceReqs } = opts;
|
|
75
79
|
const app = express();
|
|
76
80
|
app.disable('x-powered-by');
|
|
77
81
|
app.use(express.json({ limit: '150mb' }));
|
|
@@ -172,7 +176,9 @@ function startApiServer(model, runner, projectStudioUrl, port) {
|
|
|
172
176
|
res.header('Content-Type', 'text/plain');
|
|
173
177
|
return res.end(ex.message || ex.toString() + '\n');
|
|
174
178
|
}
|
|
175
|
-
|
|
179
|
+
if (printIncomingInferenceReqs) {
|
|
180
|
+
console.log(RUNNER_PREFIX, 'Incoming inference request (/api/features)');
|
|
181
|
+
}
|
|
176
182
|
let response = await runner.classify(body.features);
|
|
177
183
|
res.header('Content-Type', 'application/json');
|
|
178
184
|
return res.end(JSON.stringify(response, null, 4) + '\n');
|
|
@@ -196,8 +202,10 @@ function startApiServer(model, runner, projectStudioUrl, port) {
|
|
|
196
202
|
if (!file) {
|
|
197
203
|
throw new Error('Missing "file" in the multipart/form-data');
|
|
198
204
|
}
|
|
199
|
-
|
|
200
|
-
(
|
|
205
|
+
if (printIncomingInferenceReqs) {
|
|
206
|
+
console.log(RUNNER_PREFIX, 'Incoming inference request (/api/image) for ' +
|
|
207
|
+
(file.originalname || 'a file with size ' + file.size + ' bytes'));
|
|
208
|
+
}
|
|
201
209
|
resized = (await image_classifier_1.ImageClassifier.resizeImage(model, file.buffer));
|
|
202
210
|
}
|
|
203
211
|
catch (ex2) {
|
|
@@ -290,10 +298,31 @@ function startApiServer(model, runner, projectStudioUrl, port) {
|
|
|
290
298
|
exports.startApiServer = startApiServer;
|
|
291
299
|
function startWebServer(opts) {
|
|
292
300
|
const { model, camera, imgClassifier, verbose } = opts;
|
|
301
|
+
const publicFolder = path_1.default.join(__dirname, '..', '..', '..', 'cli', 'linux', 'webserver', 'public');
|
|
293
302
|
const app = express();
|
|
294
|
-
app.
|
|
303
|
+
app.get('/', (0, asyncMiddleware_1.asyncMiddleware)(async (req, res) => {
|
|
304
|
+
const view = (0, views_1.renderIndexView)({
|
|
305
|
+
isEmbedView: false,
|
|
306
|
+
});
|
|
307
|
+
res.status(200);
|
|
308
|
+
res.header('Content-Type', 'text/html');
|
|
309
|
+
res.end(view.toString());
|
|
310
|
+
}));
|
|
311
|
+
app.get('/embed', (0, asyncMiddleware_1.asyncMiddleware)(async (req, res) => {
|
|
312
|
+
const view = (0, views_1.renderIndexView)({
|
|
313
|
+
isEmbedView: true,
|
|
314
|
+
});
|
|
315
|
+
res.status(200);
|
|
316
|
+
res.header('Content-Type', 'text/html');
|
|
317
|
+
res.end(view.toString());
|
|
318
|
+
}));
|
|
319
|
+
app.use(express.static(publicFolder));
|
|
295
320
|
const server = new http_1.default.Server(app);
|
|
296
321
|
const io = (0, socket_io_1.default)(server);
|
|
322
|
+
const wss = new ws_1.default.Server({
|
|
323
|
+
noServer: true,
|
|
324
|
+
});
|
|
325
|
+
const websocketsToSendPreviews = new Set();
|
|
297
326
|
// you can also get the actual image being classified from 'imageClassifier.on("result")',
|
|
298
327
|
// but then you're limited by the inference speed.
|
|
299
328
|
// here we get a direct feed from the camera so we guarantee the fps that we set earlier.
|
|
@@ -319,9 +348,16 @@ function startWebServer(opts) {
|
|
|
319
348
|
fastShrinkOnLoad: false
|
|
320
349
|
}).toColourspace('b-w');
|
|
321
350
|
}
|
|
351
|
+
const imgBase64 = 'data:image/jpeg;base64,' + (await img.jpeg().toBuffer()).toString('base64');
|
|
322
352
|
io.emit('image', {
|
|
323
|
-
img:
|
|
353
|
+
img: imgBase64,
|
|
324
354
|
});
|
|
355
|
+
for (const wsClient of websocketsToSendPreviews) {
|
|
356
|
+
wsClient.send(JSON.stringify({
|
|
357
|
+
type: 'camera-preview',
|
|
358
|
+
image: imgBase64,
|
|
359
|
+
}));
|
|
360
|
+
}
|
|
325
361
|
nextFrame = Date.now() + 50;
|
|
326
362
|
}
|
|
327
363
|
catch (ex2) {
|
|
@@ -342,33 +378,133 @@ function startWebServer(opts) {
|
|
|
342
378
|
timeMs: timeMs,
|
|
343
379
|
additionalInfo: result.info,
|
|
344
380
|
});
|
|
381
|
+
for (const client of wss.clients) {
|
|
382
|
+
client.send(JSON.stringify({
|
|
383
|
+
type: 'classification',
|
|
384
|
+
result: result.result,
|
|
385
|
+
timeMs: timeMs,
|
|
386
|
+
additionalInfo: result.info,
|
|
387
|
+
}));
|
|
388
|
+
}
|
|
345
389
|
});
|
|
390
|
+
const onThresholdOverride = async (ev) => {
|
|
391
|
+
try {
|
|
392
|
+
process.stdout.write(`Updating threshold for block ID ${ev.id}, key ${ev.key} to: ${ev.value}... `);
|
|
393
|
+
if (typeof ev.id !== 'number') {
|
|
394
|
+
throw new Error(`Invalid value for "id", should be a number (type: ${typeof ev.id})`);
|
|
395
|
+
}
|
|
396
|
+
if (typeof ev.key !== 'string' || ev.key === '') {
|
|
397
|
+
throw new Error(`Invalid value for "key", should be a string (type: ${typeof ev.key})`);
|
|
398
|
+
}
|
|
399
|
+
if (typeof ev.value !== 'number') {
|
|
400
|
+
throw new Error(`Invalid value for "value", should be a number (type: ${typeof ev.value})`);
|
|
401
|
+
}
|
|
402
|
+
let thresholdObj = (model.modelParameters.thresholds || []).find(x => x.id === ev.id);
|
|
403
|
+
if (!thresholdObj) {
|
|
404
|
+
throw new Error(`Cannot find threshold with ID ` + ev.id);
|
|
405
|
+
}
|
|
406
|
+
const thresholdKeys = Object.keys(thresholdObj).filter(x => x !== 'id' && x !== 'type');
|
|
407
|
+
if (thresholdKeys.indexOf(ev.key) === -1) {
|
|
408
|
+
throw new Error(`Threshold key "${ev.key}" not found (valid keys: [ ${thresholdKeys.map(x => `"${x}"`).join(', ')} ])`);
|
|
409
|
+
}
|
|
410
|
+
let obj = {
|
|
411
|
+
id: ev.id,
|
|
412
|
+
};
|
|
413
|
+
obj.type = thresholdObj.type;
|
|
414
|
+
obj[ev.key] = ev.value;
|
|
415
|
+
await imgClassifier.getRunner().setLearnBlockThreshold(obj);
|
|
416
|
+
thresholdObj[ev.key] = ev.value;
|
|
417
|
+
console.log(`OK`);
|
|
418
|
+
}
|
|
419
|
+
catch (ex2) {
|
|
420
|
+
const ex = ex2;
|
|
421
|
+
console.log('Failed to set threshold:', ex);
|
|
422
|
+
throw new Error(`Failed to set threshold "${ev.key}" (block ID: ${ev.id}): ` + (ex.message || ex.toString()));
|
|
423
|
+
}
|
|
424
|
+
};
|
|
346
425
|
io.on('connection', socket => {
|
|
347
426
|
socket.emit('hello', {
|
|
348
427
|
projectName: model.project.owner + ' / ' + model.project.name,
|
|
349
428
|
thresholds: model.modelParameters.thresholds,
|
|
350
429
|
});
|
|
351
|
-
socket.on('threshold-override',
|
|
430
|
+
socket.on('threshold-override', (ev) => {
|
|
352
431
|
try {
|
|
353
|
-
|
|
354
|
-
let thresholdObj = (model.modelParameters.thresholds || []).find(x => x.id === ev.id);
|
|
355
|
-
if (!thresholdObj) {
|
|
356
|
-
throw new Error(`Cannot find threshold with ID ` + ev.id);
|
|
357
|
-
}
|
|
358
|
-
let obj = {
|
|
359
|
-
id: ev.id,
|
|
360
|
-
};
|
|
361
|
-
obj.type = thresholdObj.type;
|
|
362
|
-
obj[ev.key] = ev.value;
|
|
363
|
-
await imgClassifier.getRunner().setLearnBlockThreshold(obj);
|
|
364
|
-
thresholdObj[ev.key] = ev.value;
|
|
365
|
-
console.log(`OK`);
|
|
432
|
+
onThresholdOverride(ev);
|
|
366
433
|
}
|
|
367
434
|
catch (ex) {
|
|
368
|
-
|
|
435
|
+
// noop
|
|
369
436
|
}
|
|
370
437
|
});
|
|
371
438
|
});
|
|
439
|
+
wss.on('connection', (websocket) => {
|
|
440
|
+
websocket.send(JSON.stringify({
|
|
441
|
+
type: 'hello',
|
|
442
|
+
...model,
|
|
443
|
+
}));
|
|
444
|
+
websocket.on('message', async (msg) => {
|
|
445
|
+
let body;
|
|
446
|
+
let messageId;
|
|
447
|
+
try {
|
|
448
|
+
if (typeof msg !== 'string') {
|
|
449
|
+
throw new Error(`Can only handle messages of type "string"`);
|
|
450
|
+
}
|
|
451
|
+
body = JSON.parse(msg.toString());
|
|
452
|
+
messageId = body.messageId;
|
|
453
|
+
if (body.type === 'threshold-override') {
|
|
454
|
+
await onThresholdOverride({
|
|
455
|
+
id: body.id,
|
|
456
|
+
key: body.key,
|
|
457
|
+
value: body.value,
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
else if (body.type === 'toggle-camera-preview' ||
|
|
461
|
+
body.type === 'set-camera-preview') {
|
|
462
|
+
if (typeof body.enabled !== 'boolean') {
|
|
463
|
+
throw new Error(`Invalid value for "enabled", should be a boolean (type: ${typeof body.enabled})`);
|
|
464
|
+
}
|
|
465
|
+
if (body.enabled) {
|
|
466
|
+
websocketsToSendPreviews.add(websocket);
|
|
467
|
+
}
|
|
468
|
+
else {
|
|
469
|
+
websocketsToSendPreviews.delete(websocket);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
throw new Error(`Invalid "type" (${body.type})`);
|
|
474
|
+
}
|
|
475
|
+
websocket.send(JSON.stringify({
|
|
476
|
+
messageId: messageId,
|
|
477
|
+
type: 'handling-message-success',
|
|
478
|
+
message: msg,
|
|
479
|
+
}));
|
|
480
|
+
}
|
|
481
|
+
catch (ex2) {
|
|
482
|
+
const ex = ex2;
|
|
483
|
+
websocket.send(JSON.stringify({
|
|
484
|
+
messageId: messageId,
|
|
485
|
+
type: 'handling-message-error',
|
|
486
|
+
message: msg,
|
|
487
|
+
error: ex.message || ex.toString(),
|
|
488
|
+
}));
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
});
|
|
492
|
+
websocket.on('close', () => {
|
|
493
|
+
websocketsToSendPreviews.delete(websocket);
|
|
494
|
+
});
|
|
495
|
+
});
|
|
496
|
+
server.on('upgrade', (request, socket, head) => {
|
|
497
|
+
const { pathname } = url_1.default.parse(request.url || '');
|
|
498
|
+
if (pathname === '/') {
|
|
499
|
+
// Only handle /ws upgrades with ws
|
|
500
|
+
wss.handleUpgrade(request, socket, head, (newWs) => {
|
|
501
|
+
wss.emit('connection', newWs, request);
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
// socket.io will handle this
|
|
506
|
+
}
|
|
507
|
+
});
|
|
372
508
|
return new Promise((resolve) => {
|
|
373
509
|
server.listen(Number(process.env.PORT) || 4912, process.env.HOST || '0.0.0.0', async () => {
|
|
374
510
|
resolve((Number(process.env.PORT) || 4912));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-utils.js","sourceRoot":"","sources":["../../../cli/linux/runner-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner-utils.js","sourceRoot":"","sources":["../../../cli/linux/runner-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,12 @@ commander_1.default
|
|
|
86
86
|
.option('--dont-print-predictions', 'If set, suppresses the printing of predictions')
|
|
87
87
|
.option('--thresholds <values>', 'Override model thresholds. E.g. --thresholds 4.min_anomaly_score=35 overrides the min. anomaly score for block ID 4 to 35.' +
|
|
88
88
|
'The current thresholds are printed on startup.')
|
|
89
|
+
.option('--mode <mode>', 'Either: "streaming" (runs on a camera/audio stream and outputs a live inference server) or "http-server" (opens an HTTP server for inference on-demand). ' +
|
|
90
|
+
'When passing --run-http-server XXX in, the mode will always default to "http-server", in all other cases the mode defaults to "streaming".')
|
|
91
|
+
.option('--camera <camera>', 'Which camera to use (either the name, or the device address - e.g. /dev/video0). ' +
|
|
92
|
+
'If this argument is omitted, and multiple cameras are found, a CLI selector is shown.')
|
|
93
|
+
.option('--microphone <microphone>', 'Which microphone to use (either the name, or the device address). ' +
|
|
94
|
+
'If this argument is omitted, and multiple microphones are found, a CLI selector is shown.')
|
|
89
95
|
.option('--verbose', 'Enable debug logs')
|
|
90
96
|
.allowUnknownOption(true)
|
|
91
97
|
.parse(process.argv);
|
|
@@ -116,10 +122,16 @@ const monitorSummaryIntervalArgv = monitorSummaryIntervalStr && !isNaN(Number(mo
|
|
|
116
122
|
: undefined;
|
|
117
123
|
const listTargetsArgv = !!commander_1.default.listTargets;
|
|
118
124
|
const gstLaunchArgsArgv = commander_1.default.gstLaunchArgs;
|
|
119
|
-
|
|
125
|
+
let runHttpServerPort = commander_1.default.runHttpServer ? Number(commander_1.default.runHttpServer) : undefined;
|
|
120
126
|
const enableVideo = (process.env.PROPHESEE_CAM === '1') || (process.env.ENABLE_VIDEO === '1');
|
|
121
127
|
const dontPrintPredictionsArgv = !!commander_1.default.dontPrintPredictions;
|
|
122
128
|
const thresholdsArgv = commander_1.default.thresholds;
|
|
129
|
+
const cameraArgv = commander_1.default.camera;
|
|
130
|
+
const microphoneArgv = commander_1.default.microphone;
|
|
131
|
+
let modeArgv = commander_1.default.mode;
|
|
132
|
+
if (modeArgv === 'http-server' && typeof runHttpServerPort === 'undefined') {
|
|
133
|
+
runHttpServerPort = 1337;
|
|
134
|
+
}
|
|
123
135
|
process.on('warning', e => console.warn(e.stack));
|
|
124
136
|
const cliOptions = {
|
|
125
137
|
appName: 'Edge Impulse Linux runner',
|
|
@@ -177,10 +189,10 @@ async function startCamera(cameraType, inferenceDimensions) {
|
|
|
177
189
|
if (!configFactory) {
|
|
178
190
|
throw new Error('No config factory');
|
|
179
191
|
}
|
|
180
|
-
let cameraDevicedName = await configFactory.getCamera();
|
|
181
192
|
let camera = await (0, sensors_helper_1.initCamera)({
|
|
182
193
|
cameraType: cameraType,
|
|
183
|
-
|
|
194
|
+
cameraDeviceNameInConfig: await configFactory.getCamera(),
|
|
195
|
+
cameraNameArgv: cameraArgv,
|
|
184
196
|
dimensions: undefined,
|
|
185
197
|
gstLaunchArgs: gstLaunchArgsArgv,
|
|
186
198
|
verboseOutput: verboseArgv,
|
|
@@ -276,6 +288,9 @@ async function startCamera(cameraType, inferenceDimensions) {
|
|
|
276
288
|
if (gstLaunchArgsArgv && forceResizeModeArgv) {
|
|
277
289
|
console.log(RUNNER_PREFIX, `WARN: --force-resize-mode is ignored when --gst-launch-args is passed in`);
|
|
278
290
|
}
|
|
291
|
+
if (modeArgv === 'streaming' && typeof runHttpServerPort === 'number') {
|
|
292
|
+
throw new Error('Cannot combine "--mode streaming" with --run-http-server');
|
|
293
|
+
}
|
|
279
294
|
// any of this arguments implies online mode, so we need to login to the studio or get the API key
|
|
280
295
|
const connectionRequired = monitorArgv ||
|
|
281
296
|
modelFileArgv === undefined ||
|
|
@@ -689,7 +704,13 @@ async function startCamera(cameraType, inferenceDimensions) {
|
|
|
689
704
|
if (!projectStudioUrl) {
|
|
690
705
|
projectStudioUrl = 'https://studio.edgeimpulse.com/studio/' + model.project.id;
|
|
691
706
|
}
|
|
692
|
-
await (0, runner_utils_1.startApiServer)(
|
|
707
|
+
await (0, runner_utils_1.startApiServer)({
|
|
708
|
+
model,
|
|
709
|
+
runner,
|
|
710
|
+
projectStudioUrl,
|
|
711
|
+
port: runHttpServerPort,
|
|
712
|
+
printIncomingInferenceReqs: dontPrintPredictionsArgv ? false : true,
|
|
713
|
+
});
|
|
693
714
|
console.log(RUNNER_PREFIX, '');
|
|
694
715
|
console.log(RUNNER_PREFIX, `HTTP Server now running at http://${(get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost')}:${runHttpServerPort}`);
|
|
695
716
|
console.log(RUNNER_PREFIX, '');
|
|
@@ -700,13 +721,17 @@ async function startCamera(cameraType, inferenceDimensions) {
|
|
|
700
721
|
if (enableCameraArgv) {
|
|
701
722
|
await startCamera(cameraType, undefined);
|
|
702
723
|
}
|
|
703
|
-
let audioDeviceName =
|
|
724
|
+
let audioDeviceName = '';
|
|
704
725
|
try {
|
|
705
|
-
audioDeviceName = await (0, sensors_helper_1.initMicrophone)(
|
|
726
|
+
audioDeviceName = await (0, sensors_helper_1.initMicrophone)({
|
|
727
|
+
audioDeviceNameInConfig: await configFactory.getAudio(),
|
|
728
|
+
audioNameArgv: microphoneArgv,
|
|
729
|
+
});
|
|
706
730
|
}
|
|
707
|
-
catch (
|
|
708
|
-
|
|
709
|
-
|
|
731
|
+
catch (ex2) {
|
|
732
|
+
const ex = ex2;
|
|
733
|
+
console.warn(RUNNER_PREFIX, (ex.message || ex.toString()));
|
|
734
|
+
process.exit(1);
|
|
710
735
|
}
|
|
711
736
|
await configFactory.storeAudio(audioDeviceName);
|
|
712
737
|
console.log(RUNNER_PREFIX, 'Using microphone ' + audioDeviceName);
|
|
@@ -785,6 +810,9 @@ async function startCamera(cameraType, inferenceDimensions) {
|
|
|
785
810
|
console.log('Want to see a feed of the camera and live classification in your browser? ' +
|
|
786
811
|
'Go to http://' + (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost') + ':' + webserverPort);
|
|
787
812
|
console.log('');
|
|
813
|
+
console.log('Want to use predictions in your application? ' +
|
|
814
|
+
'Open a websocket to ws://' + (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].address : 'localhost') + ':' + webserverPort);
|
|
815
|
+
console.log('');
|
|
788
816
|
imageClassifier.on('result', async (ev, timeMs, imgAsJpg) => {
|
|
789
817
|
// AWS Integration
|
|
790
818
|
let awsResult;
|