Skip to content

Add Connected Systems #781

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 7 commits into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import {EventType} from 'osh-js/core/event/EventType';
// #region snippet_datasource_sweapifetch
import SweApiFetch from "osh-js/core/datasource/sweapi/SweApi.datasource.js";
// #region snippet_datasource_consysapi
import ConSysApi from "osh-js/core/datasource/consysapi/ConSysApi.datasource.js";
import {Mode} from "osh-js/core/datasource/Mode";

let gpsDataSource = new SweApiFetch("android-GPS", {
let gpsDataSource = new ConSysApi("android-GPS", {
endpointUrl: 'api.georobotix.io/ogc/t18/api',
resource: '/datastreams/o7pce3e60s0ie/observations',
tls: true,
@@ -15,7 +15,7 @@ let gpsDataSource = new SweApiFetch("android-GPS", {
mode : Mode.REAL_TIME
});

// #endregion snippet_datasource_sweapifetch
// #endregion snippet_datasource_consysapi

gpsDataSource.subscribe(async (message) => {
let dataEvent;
Original file line number Diff line number Diff line change
@@ -8,10 +8,10 @@ const CopyWebpackPlugin = require("copy-webpack-plugin");

module.exports = {
// Tell Webpack which file kicks off our app.
entry: path.resolve(__dirname,'./datasource-sweapifetch.js'),
entry: path.resolve(__dirname,'./datasource-consysapi.js'),
// Tell Weback to output our bundle to ./dist/bundle.js
output: {
filename: 'bundle.datasource.sweapifetch.js',
filename: 'bundle.datasource.consysapi.js',
path: path.resolve(__dirname, 'dist')
},
// Tell Webpack which directories to look in to resolve import statements.
@@ -53,7 +53,7 @@ module.exports = {
compress: true,
port: 9000,
hot: true,
index: 'datasource-sweapifetch.html',
index: 'datasource-consysapi.html',
https:true
},
devtool: 'source-map',
@@ -74,8 +74,8 @@ module.exports = {
// by the Webpack dev server. We can give it a template file (written in EJS)
// and it will handle injecting our bundle for us.
new HtmlWebpackPlugin({
filename: "datasource-sweapifetch.html",
template: path.resolve(__dirname, 'datasource-sweapifetch.html')
filename: "datasource-consysapi.html",
template: path.resolve(__dirname, 'datasource-consysapi.html')
}),
new CopyWebpackPlugin([
{ from: path.resolve(__dirname,'data'), to: 'data'}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {EventType} from 'osh-js/core/event/EventType';
import SweApiDatasource from "osh-js/core/datasource/sweapi/SweApi.datasource.js";
import ConSysApi from "osh-js/core/datasource/consysapi/ConSysApi.datasource.js";
import {Mode} from "osh-js/core/datasource/Mode";
import DataSynchronizer from "../../../source/core/timesync/DataSynchronizer";

@@ -14,19 +14,19 @@ const commonDatasourceOpts = {
},
};

const ds0 = new SweApiDatasource('MISB Drone - Video', {
const ds0 = new ConSysApi('MISB Drone - Video', {
...commonDatasourceOpts,
resource: '/datastreams/h225hesual08g/observations',
responseFormat: 'application/swe+binary',
});

const ds1 = new SweApiDatasource('MISB UAS - Platform Location', {
const ds1 = new ConSysApi('MISB UAS - Platform Location', {
...commonDatasourceOpts,
resource: '/datastreams/o7pce3e60s0ie/observations',
responseFormat: 'application/swe+json',
});

const ds2 = new SweApiDatasource('MISB UAS - Platform Attitude', {
const ds2 = new ConSysApi('MISB UAS - Platform Attitude', {
...commonDatasourceOpts,
resource: '/datastreams/mlme3gtdfepvc/observations',
responseFormat: 'application/swe+json',
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {EventType} from 'osh-js/core/event/EventType';
import SweApiDatasource from "osh-js/core/datasource/sweapi/SweApi.datasource.js";
import ConSysApi from "osh-js/core/datasource/consysapi/ConSysApi.datasource.js";
import {Mode} from "osh-js/core/datasource/Mode";
import DataSynchronizer from "../../../source/core/timesync/DataSynchronizer";

@@ -18,19 +18,19 @@ const commonDatasourceOpts = {
prefetchBatchSize: 50
};

const ds0 = new SweApiDatasource('MISB Drone - Video', {
const ds0 = new ConSysApi('MISB Drone - Video', {
...commonDatasourceOpts,
resource: '/datastreams/8ni90dbu4uf0g/observations',
responseFormat: 'application/swe+binary',
});

const ds1 = new SweApiDatasource('MISB UAS - Platform Location', {
const ds1 = new ConSysApi('MISB UAS - Platform Location', {
...commonDatasourceOpts,
resource: '/datastreams/fled6eics1cl4/observations',
responseFormat: 'application/swe+json',
});

const ds2 = new SweApiDatasource('MISB UAS - Platform Attitude', {
const ds2 = new ConSysApi('MISB UAS - Platform Attitude', {
...commonDatasourceOpts,
resource: '/datastreams/adheadf9nghts/observations',
responseFormat: 'application/swe+json',
2 changes: 1 addition & 1 deletion showcase-dev/examples/mqtt-utility/mqtt-utility.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import MqttProvider from "osh-js/core/mqtt/MqttProvider";
import {randomUUID} from "osh-js/core/utils/Utils";
import ObservationFilter from "../../../source/core/sweapi/observation/ObservationFilter";
import ObservationFilter from "../../../source/core/consysapi/observation/ObservationFilter";

const textAreaElement0 = document.getElementById("data-container0");
const textAreaElement1 = document.getElementById("data-container1");
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@
<select name="services" id="services" size="1">
<option value=""></option>
<option value="sos">sos</option>
<option value="sweapi">sweapi</option>
<option value="consysapi">consysapi</option>
</select>
<button id="replay">Replay</button>
<button id="realtime">RealTime</button>
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ import CurveLayer from 'osh-js/core/ui/layer/CurveLayer.js';
import SosGetResult from 'osh-js/core/datasource/sos/SosGetResult.datasource.js';
import {Mode} from 'osh-js/core/datasource/Mode';
import DataSynchronizer from "../../../source/core/timesync/DataSynchronizer";
import SweApiDatasource from "../../../source/core/datasource/sweapi/SweApi.datasource";
import ConSysApi from "../../../source/core/datasource/consysapi/ConSysApi.datasource";
import {EventType} from "../../../source/core/event/EventType";

function getRandomArbitrary(min, max) {
@@ -17,7 +17,7 @@ const dataContentElt = document.getElementById("data-content");
const masterTimeElt = document.getElementById("master-time");

let initSos = false;
let initSweapi = false;
let initConsysapi = false;

let chartDataSource = new SosGetResult("weather", {
endpointUrl: "sensiasoft.net/sensorhub/sos",
@@ -38,7 +38,7 @@ const sosDataSynchronizer = new DataSynchronizer({
});

async function startSosExample() {
await sweapiDataSynchronizer.disconnect();
await consysapiDataSynchronizer.disconnect();
replayButtonElt.onclick = async () => {
await sosDataSynchronizer.setTimeRange(
new Date(Date.now() - 60 * 1000 * 60 * 2).toISOString(),
@@ -105,31 +105,31 @@ const commonDatasourceOpts = {
prefetchBatchSize: 250
};

const droneLocationDataSource = new SweApiDatasource('MISB UAS - Platform Location', {
const droneLocationDataSource = new ConSysApi('MISB UAS - Platform Location', {
...commonDatasourceOpts,
resource: '/datastreams/fled6eics1cl4/observations',
responseFormat: 'application/swe+json',
});

const droneOrientationDataSource = new SweApiDatasource('MISB UAS - Platform Attitude', {
const droneOrientationDataSource = new ConSysApi('MISB UAS - Platform Attitude', {
...commonDatasourceOpts,
resource: '/datastreams/adheadf9nghts/observations',
responseFormat: 'application/swe+json',
});

const sweapiDataSynchronizer = new DataSynchronizer({
const consysapiDataSynchronizer = new DataSynchronizer({
replaySpeed: 2,
masterTimeRefreshRate: 250,
startTime: START_TIME,
endTime: END_TIME,
dataSources: [droneOrientationDataSource, droneLocationDataSource]
});

async function startSweApiExample() {
async function startConSysApiExample() {
await sosDataSynchronizer.disconnect();
replayButtonElt.onclick = async () => {
await sweapiDataSynchronizer.setMode(Mode.REPLAY);
// await sweapiDataSynchronizer.setTimeRange(
await consysapiDataSynchronizer.setMode(Mode.REPLAY);
// await consysapiDataSynchronizer.setTimeRange(
// START_TIME,
// END_TIME,
// 2.0,
@@ -138,12 +138,12 @@ async function startSweApiExample() {
// );
replayButtonElt.disabled = true;
realtimeButtonElt.disabled = false;
await sweapiDataSynchronizer.connect();
await consysapiDataSynchronizer.connect();
}

realtimeButtonElt.onclick = async () => {
await sweapiDataSynchronizer.setMode(Mode.REAL_TIME);
// await sweapiDataSynchronizer.setTimeRange(
await consysapiDataSynchronizer.setMode(Mode.REAL_TIME);
// await consysapiDataSynchronizer.setTimeRange(
// 'now',
// '2055-01-01',
// 1.0,
@@ -153,20 +153,20 @@ async function startSweApiExample() {
realtimeButtonElt.disabled = true;
replayButtonElt.disabled = false;

await sweapiDataSynchronizer.connect();
await consysapiDataSynchronizer.connect();
}

sweapiDataSynchronizer.subscribe(message => displayData(message), [EventType.DATA]);
sweapiDataSynchronizer.subscribe(message => displayMasterTime(message), [EventType.MASTER_TIME]);
consysapiDataSynchronizer.subscribe(message => displayData(message), [EventType.DATA]);
consysapiDataSynchronizer.subscribe(message => displayMasterTime(message), [EventType.MASTER_TIME]);
}

const listBoxElement = document.getElementById('services');
listBoxElement.onchange = (event) => {
let value = event.target.value;
if(value === 'sos') {
startSosExample();
} else if(value === 'sweapi') {
startSweApiExample()
} else if(value === 'consysapi') {
startConSysApiExample()
}
}

14 changes: 7 additions & 7 deletions showcase-dev/index.js
Original file line number Diff line number Diff line change
@@ -21,13 +21,13 @@ var samples = [
url: "datasource-file"
},
{
name: "DataSource SweApiFetch",
description: "Display GPS data using the SweApiFetch datasource",
url: "datasource-sweapifetch"
name: "Connected Systems DataSource",
description: "Display GPS data using the ConSysApi datasource",
url: "datasource-consysapi"
},
{
name: "DataSource SweApiFetch Json",
description: "Display data using the SweApiFetch datasource in JSON format",
name: "SOS DataSource Swe Json",
description: "Display data using the SOS datasource in SWE JSON format",
url: "datasource-swejson"
},
{
@@ -56,8 +56,8 @@ var samples = [
url: "multi-datasources-synchronized"
},
{
name: 'Switch between Replay & realtime using SOS or SWEAPI service',
description: 'Switch between Replay & realtime using SOS or SWEAPI service',
name: 'Switch between Replay & realtime using SOS or Connected Systems API service',
description: 'Switch between Replay & realtime using SOS or Connected Systems API service',
url: 'switch-realtime-batch'
},
{
2 changes: 1 addition & 1 deletion showcase-dev/webpack.config.js
Original file line number Diff line number Diff line change
@@ -77,7 +77,7 @@ module.exports = [{
let directories = [
'datasource-audio',
'datasource-file',
'datasource-sweapifetch',
'datasource-consysapi',
'datasource-swejson',
'datasource-video',
'datasources-synchronized',
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ import TimeController from 'osh-js/vue/components/TimeController.vue';

import DataSynchronizer from 'osh-js/core/timesync/DataSynchronizer';
import {Mode} from 'osh-js/core/datasource/Mode';
import SweApiDatasource from "osh-js/core/datasource/sweapi/SweApi.datasource";
import ConSysApi from "osh-js/core/datasource/consysapi/ConSysApi.datasource.js";

export default {
components: {
@@ -55,7 +55,7 @@ export default {
prefetchBatchSize: 250
};

const chartDataSource1 = new SweApiDatasource('Simulated Weather Sensor - weather', {
const chartDataSource1 = new ConSysApi('Simulated Weather Sensor - weather', {
...commonDatasourceOpts,
resource: '/datastreams/0tsop3f16nvp8/observations',
responseFormat: 'application/swe+json',
Original file line number Diff line number Diff line change
@@ -8,9 +8,9 @@ const path = require('path');

// Now, using the cesiumConfig in your real configuration
const config = {
entry: path.resolve(__dirname,'chart-archive-realtime-synchronized-sweapi.js'),
entry: path.resolve(__dirname,'chart-archive-realtime-synchronized-consysapi.js'),
output: {
filename: 'bundle.chart-archive-realtime-synchronized-sweapi.js',
filename: 'bundle.chart-archive-realtime-synchronized-consysapi.js',
path: path.resolve(__dirname, 'dist'),
},

@@ -85,15 +85,15 @@ const config = {
compress: true,
port: 9000,
hot: true,
index: 'chart-archive-realtime-synchronized-sweapi.html',
index: 'chart-archive-realtime-synchronized-consysapi.html',
https:true
},
plugins: [
new VueLoaderPlugin(),
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: path.resolve(__dirname, 'chart-archive-realtime-synchronized-sweapi.html'),
filename: './chart-archive-realtime-synchronized-sweapi.html',
template: path.resolve(__dirname, 'chart-archive-realtime-synchronized-consysapi.html'),
filename: './chart-archive-realtime-synchronized-consysapi.html',
favicon: path.resolve(__dirname,'favicon.ico')
}),
new DefinePlugin({
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@
import TimeController from 'osh-js/vue/components/TimeController.vue';
import FFMPEGView from 'osh-js/core/ui/view/video/FFMPEGView';
import DataSynchronizer from 'osh-js/core/timesync/DataSynchronizer';
import SweApiFetch from 'osh-js/core/datasource/sweapi/SweApi.datasource.js';
import ConSysApi from 'osh-js/core/datasource/consysapi/ConSysApi.datasource.js';
import {Mode} from 'osh-js/core/datasource/Mode';
import VideoView from 'osh-js/core/ui/view/video/VideoView';
import VideoDataLayer from 'osh-js/core/ui/layer/VideoDataLayer';
@@ -49,19 +49,19 @@ export default {
prefetchBatchSize: 250
};

const dataSource0 = new SweApiFetch("drone-Video", {
const dataSource0 = new ConSysApi("drone-Video", {
...opts
});

const dataSource1 = new SweApiFetch("drone-Video1", {
const dataSource1 = new ConSysApi("drone-Video1", {
...opts
});

const dataSource2 = new SweApiFetch("drone-Video2", {
const dataSource2 = new ConSysApi("drone-Video2", {
...opts
});

const dataSource3 = new SweApiFetch("drone-Video3", {
const dataSource3 = new ConSysApi("drone-Video3", {
...opts
});

6 changes: 3 additions & 3 deletions showcase/examples/mqtt/mqtt.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// create data source for Android phone GPS
import SweApiFetch from 'osh-js/core/datasource/sweapi/SweApi.datasource.js';
import ConSysApi from 'osh-js/core/datasource/consysapi/ConSysApi.datasource.js';
import PointMarkerLayer from 'osh-js/core/ui/layer/PointMarkerLayer.js';
import LeafletView from 'osh-js/core/ui/view/map/LeafletView.js';
import ChartJsView from 'osh-js/core/ui/view/chart/ChartJsView';
@@ -16,7 +16,7 @@ const mqttProps = {
password: 'WR6zlso9h#'
};

let gpsDataSource = new SweApiFetch("android-GPS", {
let gpsDataSource = new ConSysApi("android-GPS", {
endpointUrl: 'api.georobotix.io/ogc/t18/api',
resource: '/datastreams/rbnag2hrc04mm/observations',
tls: true,
@@ -25,7 +25,7 @@ let gpsDataSource = new SweApiFetch("android-GPS", {
mode: Mode.REAL_TIME
});

const isaDataSource = new SweApiFetch("ISA-bio-sensor", {
const isaDataSource = new ConSysApi("ISA-bio-sensor", {
endpointUrl: 'api.georobotix.io/ogc/t18/api',
resource: '/datastreams/b4runsn23q66o/observations',
tls: true,
Loading