Software Information

From Curuba Wiki
Jump to: navigation, search


[edit] Web/Mobile Application

[edit] Sencha Touch

The mobile application was built through a web-based framework, Sencha Touch (see the web site) that makes extensive use of JavaScript, CSS and HTML code. The framework is distributed under the GNU General Public License version 3. It offers a strong MVC structure and inheritance mechanism. It also gives the opportunity to create native applications for mobile devices based on the web code base.

We currently use the 2.1.1 version of Sencha Touch framework (see documentation here ).

[edit] MVC Architecture

The mobile application's code is designed around a strong MVC architecture. The data is provided by the server through AJAX communication. This design was chosen to simplify the mobile application while centralizing data management on the server. However, the usage of a JavaScript based application poses security concerns about cryptography.

[edit] Server

The center part of the project is a server, which manages communications, data and processing. It is the brain of the system. It is an applicaiton built for the NodeJS JavaScript server ( Any computer can be used as a server as long as NodeJS and the curuba applicaiton is installed. For the first development Curuba was created using a Raspberry Pi (

That's a moeaebrldk-r. Great thinking!

[edit] NodeJS

We wanted to reduce the number of programming languages in the project and the server had to to handle a large number of asynchronous requests. This is why we choose a NodeJS server: it runs JavaScript applications and is designed for distributed network application.

[edit] MySQL

A MySQL relation database is used to ensure data persistence. Over the years, growing amounts of statistics will be aggregated so that the database doesn't grow out of control.

[edit] Embedded software

There is an important part of the intelligence that is located in the microprocessor of the control module. In fact, handling Wi-Fi communication while controlling the power module is somewhat a big deal. Below is a detailed explanation of this part of the software.

[edit] Wi-Fi

TCP, stack, home-made protocol, etc.

[edit] Power modules control

GPIO, Isense with ADC, payloads etc.

[edit] CC3000 API

WLAN, sockets, etc.