Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Presently the components of OpenVisualizer operate within a single process. However, in a realistic sensor networking implementation, we do not wish to deploy a PC as an LBR!  This page documents an experiment to segment presents the first steps toward segmenting the components of OpenVisualizer across processes and machines, using an architecture as shown in the diagram below.

Gliffy
nameembedded-distributed-architecture

As a first step toward this goal, we plan to separate the GUI to run on a PC, and an LBR to run on an inexpensive, low-power, embedded Linux device.

Gliffy
name

...

RemoteGui

Messaging

Presently we implement EventBus messaging with PyDispatch, which provides communication between threads in a single process. However, we must split the GUI from the LBR when the LBR is headless, like an embedded Linux device. In addition to host-to-host communication, we also may wish to segment the components in the LBR into separate processes, for example to reimplement serial communication in C.

...

Remote GUILBR
 On startup, create a signal handler on SIGUSR1

At some later time...
On startup:

  1. start WebSocket server on port 8000
  2. run plink to forward port 8000 to LBR
  3. run 2nd plink to execute a remote command on LBR, which sends the signal
    pkill -SIGUSR1 -f "python openVisualizerCli"
 
 Signal received, and handler connects to WebSocket server on forwarded port
ws://<remoteip>localhost:8000/lbr

The signal above assumes the LBR is in the form of the openVisualizerCli module, which probably is the simplest solution.

...