Archivo de la categoría: Free Station

FreeStation source code release

Open Source

Time ago I write about FreeStation. I start working hardly 11 months ago for deliver as my final career project to graduate as computer science engineer in Spain. I am very happy with the result and the development, because I learn a lot in the process and I get a calification of 9.5 over 10 points the last September 14th.

I use a lot free software in this development. As result I’m on moral obligation of release all my code as free software too. For me, it is a pleasure contribute to spread knowledge with free software. I choose AGPLv3 license for code and GNU FDL for documentation.

All the source code and documentation is uploaded in my GitHub account. There are three different parts:

All comments are welcome. I accept patches and contributions. I expect keep developing new features and if some organization or person wants use it. Also, I am available to hire as freelance for develop new customized code or adapt FreeStation or other software to your personal needs.

In the other hand, if you learn something useful from my code or you are using my code in your projects, etc, maybe you want to consider invite me with a beer 😉

 Now it is time that I keep working hard and demostrate my skills to the world.

FreeStation: a little sneak peek

Several months have passed since I wrote about Freestation. I would like show some advances and write about my dissertation project that I hope to finish for the 2th June as last day for deadline on this course.

An introduction reminder

FreeStation is a program built for help to distribute easy and reliable software and information on point of interest (POI).

Basically, a POI is huge device that you can find on universities, libraries, hospitals, police stations, train stations, etc.

For example, this are a couple of images of POIs:

DNI POI on police station
DNI POI on police station

This is POI on a police station for perform changes with a DNI (National Idenfication Document on Spain). It shows a keyboard, trackball and DNI card reader for easy operations with credential authentication using DNI.

It has normal power connection but it also has internet connection for load data. On the following image:

Front detail of DNI POI on a police station
Front detail of DNI POI on a police station

As you can apreciate, it shows with more details a screen showing input boxes for the user and a simple interface with buttons. The height POI is adjusted to people in wheelchairs (a laudable feature for accessibility).

Another example of POI:

Adif POI on a train station
Adif POI on a train station

This image corresponds to another POI on a Adif’s train station. It has a different design, totally vertical with a big screen rotated. Unfortunaly when I take the photo it was turned off, but I think that it is a tactil screen model with internet connection too.

It incorporates a audio system maybe useful for blind people and as possible confirmation for using audio notification. Sadly, it is enough high for wheelchairs people, so maybe the only functions could be a information panel with low interaction. I can’t ensure this, because I never can see running this POI when I travel.

Finally another radical example of POI (three different examples should be enough for ilustrate my point):

SESCAM POI on a hospital
SESCAM POI on a hospital

This is another interesting POI that has a intercommunication phone for direct assistance, keyboard, tracball mouse and sanitary card reader. It also has a tray as printer for deliver useful data to the user. Sadly, when I take the photo the POI also is turned off.

So, this is only a reduced set of examples of a huge variety of POIs. Usually you can find the same model for each same hospital, train station, police station, university, etc. Each model runs practically the same model of software and hardware features. But, when the time past, it is highly probably that some POIs have breakdows, energy loss, software bugs, unconsistence of versions, etc.

So, FreeStation try to repair and unify this problems for offer a kindly solution, because it is important deploy same versions between POIs, recieve notifications when a POI it is offline for a breakdown, auto-restart the POI if some hard bug happens, etc.


The Freestation architecture is mainly based on client-server model. Each component is easy to tweak or customize and it doesn’t require technical knowledge for diary use.

Architecture - Server and clients infrastructure
Architecture – Server and clients infrastructure

Let me introduce you the architecture with real screenshots of the application and some diagrams.

Server architecture

FreeStation server runs over a software stack consisting of several technologies and components. It handles all the communication with every client.

It has a friendly webserver GUI panel administration based on PHP + Javascript.

FreeStation Server Webserver GUI
FreeStation Server Webserver GUI

As you can see, you can start/stop/restart the server, see real status and different useful output logs for analyce and diagnose whatever event.

It allows easily make the common tasks for deploy and configure a high amount of clients with POIs.

Under the webserver GUI, it runs a daemon process as backend based on python. Each action and task is handled internally and dispatched on fast way.

The backend can make asynchronous communication with clients. For that the backend uses ICE (Internet Comunication Engine of ZeroIce).

This allows a reliable and robust way to transfer huge information datasets between a big amount of clients and the server.

For example, you also can see a list of current clients handled by the server with stats:

FreeStation Server GUI - List of clients
FreeStation Server GUI – List of clients

The list shows each client hostname, IP address, last connection, requests, status and some actions for each client. You can add/remove/edit clients and all the data associated with a clients would be updated.

Client architecture

A client run only on a POI and periodically poll to the server for updates or information. Clients need a specification for deploy widgets and the data associated for each widget.

A widget on Freestation terminology is a abstract element that performs a atomic operation and provides communication for the data handled inside the widget.

For complex operations a widget could associate with more widgets for perform a sofisticated task or simply commnicate data with other widgets. The widgets only run on clients, but all them are configured only from a server.

This describe a orchestra model where the server acts like a manager and clients with widgets acts like a choir.

That means that a client only can communicate with the server and it is not allowed the communication between clients. But this can be easily a SPOF (Single Point Of Failure) for server. So, it is planned on a future allow several masters servers as failover and syncronize and replicate data between masters.

In other hand, an a server, you have a list of widgets available to configure on a client.

FreeStation Server GUI - List of total widgets
FreeStation Server GUI – List of total widgets

For example, you can choose deploy and configure a USB Storage widget and a Mount Device widget on a client. That widgets could associate operations for list several files of books about medicine. When the user pick a set and choose save to a usb key, the Mount Device detect the usb key and usb storage widget write the data. The result it is a happy user that obtain the needed information quickly and without problems.

FreeStation Server - Associate widget to client
FreeStation Server – Associate widget to client


You can associate the needed widgets for a client and configure/edit each widget with custom params (for example, only allow 5 items for save on Mount Device):

FreeStation Server - Configure Widget for a client
FreeStation Server – Configure Widget for a client

Another example, you can choose a Video widget and display a video on POI for idle mode. When the user touch or interact with the POI, you can load a Browser Widget with a concrete webpage. Additionally as some institution you can choose a simple logo widget for display your institution logo on screen.

When a client is totally configured, then can be deployed on POI (normal desktop computer customized). A simple example of client screen deployed:


FreeStation Client - Welcome wigdets configured
FreeStation Client – Welcome wigdets configured

There are not limit defining or using new widgets. So in theory, the widget model scale for each custom need for a institution.

Free & easy to scale to your needs

With FreeStation some basic widgets are offered, but on the future, it could has repository widgets associated, widget patners and offer a rich market for developers that they are interested on develop custom widgets for companies, institutions, hospitals.

Soon, I plan to release the code as AGPLv3 on Github. Still I need polish some widgets, finish a real demo case for my dissertation and literally write a boring book with approximattelly 200 pages (currently, I have around 80 bad structure pages written).

So, the project is nearly to finish and with lucky I can finish before to 2th june deadline (and 15 th june official presentation) and finally has a big engineer diploma on my wall, yay!

Meanwhile, there are nearly two months of hard work, But shhh … I found a secret weapon 😉


Secret hard work weapon
Secret hard work weapon



Free Station: plataforma para el desarrollo de sistemas de distribución de software libre en puntos de información

Free Station logo
Free Station

Free Station o “Librenería“ es el software cliente y servidor que pretendo desarrollar como mi Proyecto de Fin de Carrera (PFC) en la UCLM bajo la dirección de mi director de proyecto Carlos González Morcillo

La librenería o FreeStation (en adelante FS) es un software para centros o puntos de acceso de distribución de información de software libre orientado a centros de enseñanza y universidades.

Estructura del sistema

El sistema estará compuesto por un armario de diseño con un ordenador empotrado con pantalla táctil y una cámara para reconocer movimientos y gestos. En dicho dispositivo se encuentra un software cliente que alberga repositorios de software modularizables configurados por el centro de enseñanza o universidad, con software como imágenes de distribuciones GNU/Linux, software específico para los alumnos o aplicaciones educativas para interactuar con el dispositivo.

El dispositivo puede incorporar una unidad de CD-ROM y USB con la que el usuario/docente puede grabar los datos proporcionados por el sistema en pocos segundos y hacerse una copia de todo software y contenido libre (documentación,multimedia, etc) disponible. Ademas el sistema cuenta con otra aplicación servidor, que distribuye diariamente a todos los clientes el software y los módulos actualizados.

POI y proceso de distribución

Los terminales de puntos de interés (del inglés POI o Point Of Interest) han avanzado significativamente con la tecnología de los últimos años, habilitando su integración en casi cualquier lugar con un uso sencillo. Esta tecnología integrada ha permitido la interacción en edificios con sus visitantes.

En determinadas instituciones como colegios, institutos, universidades, ayuntamientos u oficinas de turismo es común ver pequeños puntos donde se encuentran terminales mostrando información a los transeúntes. Algunos terminales incorporan la interacción mediante teclado, ratón o incluso de forma táctil, pero la interacción puede ser mucho más completa.

En la panorámica del proceso de distribución de información o más concretamente del proceso de distribución software, la tendencia actual marca la utilización de las redes tecnológicas. La potencia actual de las mismas las caracteriza de arquitecturas que aprovechan la evolución de contenidos y ventajas que satisfacen la necesidades de información de los usuarios.

Componente social

Combinando el componente social de un objeto que se encuentra en el exterior con la inmensidad de contenidos que pueden ofrecer una red tecnológica es posible realizar una distribución de contenidos uniforme orientada adocencia, turismo o cualquier sector que requiera de un despliegue de contenidos.La distribución de software conlleva una responsabilidad asociada al marco de la legalidad.

Beneficios y problemas jurídicos

Cualquier software dispone de una licencia que habilita una serie de acciones permitidas, como es la distribución. En lo particular, pueden surgir problemas jurídicos derivados si un POI no se cuenta con la debida autorización. Luego estableciendo una determinada base tecnológica con tendencia en la distribución de software libre, las problemáticas legales en este aspecto suelen ser nulas o muy reducidas.

Por otro lado, la distribución de software beneficia al usuario final ya que la compra individual supone requerir o disponer de unos costes asumibles por cada software particular. La independencia de elección entre un gran catálogo de software ahorra tiempo al usuario en la búsqueda y obtención del mismo.

Este enfoque añade una serie de ventajas asociadas, como la alta disponibilidad de nuevas versiones y actualizaciones de seguridad. En el caso del Software Libre, estas características de alta disponibilidad pueden traducirse igualmente en la personalización de distribuciones para diversos colectivos de usuarios. Estos paquetes de contenido específicos (formados por software, documentación y ficheros multimedia) pueden ser adaptados a necesidades concretas (docentes, de investigación o profesionales), ahorrando gran cantidad de tiempo al usuario final.

Conclusión y cierre

El desarrollo y progresos de mi PFC, será documentado y comentado mediante mi blog personal, como próposito de ejercicio de difusión y creación posterior de la memoria final del proyecto. Todas las aportaciones, comentarios, críticas constructivas son bien recibidos.