Presently the components of OpenVisualizer operate within a single process. We wish to experiment with extending this operation However, in a realistic sensor networking implementation, we do not wish to deploy a PC as an LBR! This page presents the first steps toward segmenting the components of OpenVisualizer across processes and machines, using an architecture as shown in the diagram below.
Gliffy | ||
---|---|---|
|
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 | ||
---|---|---|
|
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 GUI | LBR |
---|---|
On startup, create a signal handler on SIGUSR1 | |
At some later time...
| |
Signal received, and handler connects to WebSocket server on forwarded portws://<remoteip>localhost:8000 /lbr |
The signal above assumes the LBR is in the form of the openVisualizerCli module, which probably is the simplest solution.
...
JSON provides a convenient and widely accepted mechanism for implementation of the structured messages we must pass between LBR and GUI host.
Messages include:
Message | Description |
---|---|
mote-inventory | A list An array of the connected motes. Sent just after establishing the connection to the GUI host. |
mote-status | A dictionary of An object with the elements of a Mote Status report. Like OpenVisualizer, these reports are generated at some defined rate. |
event-count | A dictionary of An object with the current count of eventseach event. |
Messaging Between Processes
...