Nebula is intended for use by developers or hobbyists who want to quickly and easily build cross platform applications for remote control, monitoring, security, messaging or countless other uses. Nebula provides the means for others to develop the ends. It contains all the classes and methods required to build, monitor and execute network commands. They can be copied directly into your source code or imported on an as-needed basis.
With that in mind it’s understandable that not much time was spent creating beautiful user interfaces for all the various use cases. Instead the focus was on network speed and data efficiency while providing working examples of the most common needs for constructing and managing a Virtual Private Network (VPN) consisting of commonly used devices in an Internet of Things (IOT) environment. It’s up to you as to how you want your application presented to your users.
The Running Activity
The Running screen consists of just a few elements. The top line lists the device’s name, current IP address and listening port. There are scrollable windows for selecting a command and a device to send the command to. There is a user display block that shows the name of the command that is being sent, the name of the device the command was sent to and the response from the device that received the command. On JAR devices there is a CLEAR button which is used to clear the user display. On Android devices a swipe-right on the user display will clear it. The user display is scrollable so you can see a history of the commands sent with responses returned. The SEND button shows the selected command and the selected device. When clicked the shown command will be sent to the shown device. The final element is a developer feature, Run Users Test Code, button which if clicked will run any code a developer adds to the testThis() method provided in the Running class. This has proven very useful in code development and debug situations.
Nebula does not need a User Interface(UI) to operate. The HTTP server starts listening for commands when the app is started and the HTTP client is ready to send a command when a programmed condition, like a switch open / close or a monitored value is too high or low, is met. Obviously only devices that have a display can show the Running screen. JAR devices that do not have a keyboard, monitor or mouse attached can be viewed and controlled either with a VNC connection or by using ssh with xterm (X11 X Windowing System). The section on Raspberry Pi and Beagleboard usage covers usage of both in detail. Arduino devices show their log output through the Serial Monitor of the Arduino IDE.