From 5a839e7e6a8af8bd85f44b6c991fce57ecdb4be3 Mon Sep 17 00:00:00 2001 From: Sandro Weber <webers@in.tum.de> Date: Mon, 21 Feb 2022 14:05:49 +0100 Subject: [PATCH] testing with protobufjs until protoc compiled with import_type=commonjs --- package-lock.json | 89 +++++++++++++++++-- package.json | 2 +- public/index.html | 1 - src/components/entry-page/entry-page.js | 5 ++ .../nrp-core-dashboard/nrp-core-dashboard.js | 4 +- src/services/nrp-core/mqtt-client-service.js | 22 +++-- 6 files changed, 109 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 987f269..5b03215 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2055,6 +2055,60 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, "@restart/context": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", @@ -2565,6 +2619,11 @@ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", + "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + }, "@types/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", @@ -7489,11 +7548,6 @@ "slash": "^3.0.0" } }, - "google-closure-library": { - "version": "20220104.0.0", - "resolved": "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20220104.0.0.tgz", - "integrity": "sha512-gHrIxIKcnn9pR/8sVwCLH6C4urmAekSYZKYzTawKG72HQsRnadXOCuRTA+kf6nagDCbsu6HzhSWA2rMBb2L1Aw==" - }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -10711,6 +10765,11 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -13332,6 +13391,26 @@ "warning": "^4.0.0" } }, + "protobufjs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", + "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", diff --git a/package.json b/package.json index 02d0c98..23c65b4 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "@material-ui/lab": "4.0.0-alpha.57", "bootstrap": "4.5", "flexlayout-react": "0.5.5", - "google-closure-library": "20220104.0.0", "jquery": "3.6.0", "jszip": "3.2.0", "mqtt": "4.3.5", "nrp-jsproto": "1.1.1-alpha.10", + "protobufjs": "6.11.2", "react": "^17.0.1", "react-bootstrap": "1.4.0", "react-dom": "^17.0.1", diff --git a/public/index.html b/public/index.html index 0224056..085cd72 100644 --- a/public/index.html +++ b/public/index.html @@ -28,7 +28,6 @@ <title>Neurorobotics Platform</title> </head> <body> - <script src="./google-closure-library/closure/goog/base.js"></script> <script src="https://iam.ebrains.eu/auth/js/keycloak.js"></script> <noscript>You need to enable JavaScript to run this app.</noscript> diff --git a/src/components/entry-page/entry-page.js b/src/components/entry-page/entry-page.js index d6302fe..d74877e 100644 --- a/src/components/entry-page/entry-page.js +++ b/src/components/entry-page/entry-page.js @@ -4,6 +4,7 @@ import NrpHeader from '../nrp-header/nrp-header.js'; import './entry-page.css'; import PlaceholderImage from '../../assets/images/Artificial_Intelligence_2.jpg'; +import NrpCoreDashboard from '../nrp-core-dashboard/nrp-core-dashboard.js'; export default class EntryPage extends React.Component { render() { @@ -28,6 +29,10 @@ export default class EntryPage extends React.Component { <p>Experiment 2 Placeholder</p> </div> <div className='sidebar-right'></div> + <div> + <div><b>!!! NRP Core testing !!!</b></div> + </div> + <NrpCoreDashboard /> </div> ); } diff --git a/src/components/nrp-core-dashboard/nrp-core-dashboard.js b/src/components/nrp-core-dashboard/nrp-core-dashboard.js index 108037b..5b39b84 100644 --- a/src/components/nrp-core-dashboard/nrp-core-dashboard.js +++ b/src/components/nrp-core-dashboard/nrp-core-dashboard.js @@ -14,8 +14,8 @@ export default class NrpCoreDashboard extends React.Component { MqttClientService.instance.connect(this.mqttBrokerUrl); } - onMqttClientConnected() { - this.client.subscribe('#', (err) => { + onMqttClientConnected(mqttClient) { + mqttClient.subscribe('#', (err) => { if (err) { console.error(err); } diff --git a/src/services/nrp-core/mqtt-client-service.js b/src/services/nrp-core/mqtt-client-service.js index 06ac19e..890bb0c 100644 --- a/src/services/nrp-core/mqtt-client-service.js +++ b/src/services/nrp-core/mqtt-client-service.js @@ -1,7 +1,7 @@ import mqtt from 'mqtt'; import { EventEmitter } from 'events'; -import 'nrp-jsproto/nrp-jsproto'; +import * as proto from 'nrp-jsproto/nrp-engine_msgs-protobufjs'; let _instance = null; const SINGLETON_ENFORCER = Symbol(); @@ -16,7 +16,7 @@ export default class MqttClientService extends EventEmitter { throw new Error('Use ' + this.constructor.name + '.instance'); } - //console.info(proto); + console.info(proto); } static get instance() { @@ -33,6 +33,7 @@ export default class MqttClientService extends EventEmitter { this.client.on('connect', () => { console.info('... MQTT connected'); console.info(this.client); + this.emit(MqttClientService.EVENTS.CONNECTED, this.client); }); this.client.on('error', this.onError); this.client.on('message', this.onMessage); @@ -46,9 +47,20 @@ export default class MqttClientService extends EventEmitter { console.info('MQTT message: [topic, payload, packet]'); console.info([topic, payload, packet]); - /*try { - let dump = - }*/ + try { + if (topic.endsWith('/type')) { + let msg = String(payload); + console.info('"' + topic + '" message format = ' + msg); + } + else { + let msg = proto.Engine.DataPackMessage.decode(payload); + console.info('DataPackMessage'); + console.info(msg); + } + } + catch (error) { + console.error(error); + } } } -- GitLab