-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
Like described in Master Plan AsTeRICS Ergo the plan for AsTeRICS-Ergo is to be able to use:
-
different functionalities ("Apps")
e.g. "Environmental Control" or "Augmentative and Alternative Communication (AAC)" - with different input modalities
e.g. mouse, buttons or speech
This page describes the idea for a technical architecture to achieve this.
With issue https://github.com/asterics/AsTeRICS/issues/163 of the AsTeRICS-Repo there will be a new path/folder "webapps" for the AsTeRICS webserver. It will contain all "Apps" where each app has one specific functionality. Already existing Apps are:
- Current "AsTeRICS-Ergo" (Environmental Control)
- WebACS -> Web version of the AsTeRICS configuration suite
Apps will be divided in three categories:
-
Management Apps
help to manage, list, open, install or remove other apps -
Functional Apps
will realize a specific functionality like environmental control or AAC -
Input Apps
can be used to configure special input modalities like camera mouse or FABI buttons
Every app will have an own folder in "webapps", have an own "index.html" and will be independent from the other apps. So it will be possible that different apps are written in different web-technologies (Angular, React, pure JS+HTML, ...)
An management apps will have the prefix "AsTeRICS" in the name in order to differenciate them from other apps. In the first version there will be two basic management Apps:
-
AsTeRICS Start
lists all currently installed apps and provides a possibility to start them. May looks similar to the current start-page of AsTeRICS-Ergo (see: https://asterics.github.io/AsTeRICS-Ergo/mock.html#!/home ) -
AsTeRICS Appstore
allows to install new apps or delete existing ones. In the first version installing a new app will be possible by providing and locating a .zip archive containing the needed files, in later version these package could come from a webserver on the internet.
Functional apps can implement any useful functionality like environmental control or AAC. Characteristics of a functional app:
- has an own AsTeRICS model in the background (if needed). E.g. the current environmental control has the model
envControl.acs
which contains instances for IrTrans/FS20. The own model/models are included in the *.zip package. - communication with ARE REST-interface to start/stop models and send/receive data to/from model components
- saves own configuration data (e.g. learned commands in envControl)
- there is one ARE instance in the background, where one model of a functional app runs at a time
Input Apps are used to configure an alternative input modality and/or run software that is needed for it. Characteristics:
- has an own AsTeRICS model in the background (if needed). this model can convert actions of the input device to e.g. to keyboard-actions or configure hardware (e.g. flipMouse).
- also communication with ARE REST-interface and own configuration data
- have an own ARE instance in the background where one input-app runs at a time. So there can be a maximum of two ARE instances running, one for a functional app and one for an input app.
- data/content of input apps is stored in the same ARE-folder like functional apps. So the only difference is that models of input apps run on a second ARE runtime.
In the future AsTeRICS-Ergo becomes the "Web-Version" of AsTeRICS. So there will be the existing AsTeRICS release containing ARE and ACS and the AsTeRICS-Ergo release, which contains ARE and webapps. So AsTeRICS-Ergo in the future:
- will be distributed with an own installer, like now.
- will contain pre-installed apps that are suitable for most users (e.g. environmental control, AAC). Additional apps like WebACS can be installed manually. Alternatively on the first run the user will be asked which apps to activate (to show in "AsTeRICS Start" - the list of available apps)
Each app will be developed as own git-project containing the webapp-files and some build-tool (e.g. ant) that generates a package-file that can be installed in AsTeRICS-Ergo.
- Show "AsTeRICS AppStore" app in normal app-list or is it a special button/link on a special place in the UI?
- format and content of an app-package (e.g. *.zip)? Digital Signature? metadata format?
- Where to save configuration data of webapps?
- "Standard" for actions/keycodes for all Apps in order to control them? E.g. standard actions for "next item", "prev item", "select", "back" ... is neccessary in order to configure one alternative input device and control everything with it.
- How to start a second ARE instance via ARE-REST-interface?! What about installation Scenario 2 in Master Plan AsTeRICS Ergo - here it is maybe neccessary to run the first ARE instance remote (e.g. on a raspberryPi) and the second ARE instance on the host (e.g. PC). It is not clear how to achieve this or if this is really neccesary.
- How to share common used javascript-functions/libraries across all apps (e.g. communication with ARE REST-interface)?
- Should it be possible that more than one webapp is running at the same time? E.g. split-screen with camera mouse on one part of the screen, environmental control on the other part?!
- This repository (AsTeRICS Ergo) is in reality just an "Functional App" of AsTeRICS Ergo. So this repository at some point maybe should be renamed to "AsTeRICS Ergo Environmental Control"
- Another "Functional App" is currently in development: the AsTeRICS Ergo Grid. However the Grid is not a pure "Functional App" because it will also be usable completely standalone, without any AsTeRICS/AsTeRICS Ergo backend. However it will also be possible to control AsTeRICS models with the grid, so it is also in the category of "Functional Apps".