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
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
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
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
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
Let me introduce you the architecture with real screenshots of the application and some diagrams.
FreeStation server runs over a software stack consisting of several technologies and components. It handles all the communication with every client.
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
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.
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
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
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
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
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