Official website

Tuesday, December 30, 2014

Leaving 2014...

As a token of my appreciation, you'll be entered into a drawing for a jReCo (Jubito Remote Control) once you...

What you'll get is an Arduino Nano, RF Receiver + Transmitter modules, soldered, with full support and software implementation as seen in this tutorial.

I select this project because it was my first flirt with Arduino and because everybody, or almost everybody start with controlling lights, which is a good starting point for home automation.

So, from back then, with a little bit of research, I ended up from this...

to that...

I hope to find it as amusing as I, and give you a boost of encouragement to start developing your own "things".

This "contest" will close at January 30th and the winner will be announced in this post and at the social networks.

I wish you a creative 2015, good luck!

Saturday, December 13, 2014

4th Annual Internet of Things Awards

UPDATE: Jubito is been selected! Vote for it!

Postscapes 4th Annual Internet of Things Awards - 2014/15. A showcase of the year’s best #IoT products and companies.

Everyone is invited to vote for their favorite IoT Award winners.

Nominate Jubito :)

Monday, December 8, 2014

The power of reflection

In this post we've explained a scenario that consisted by a number (3) of alternative responses. Someone might consider, what if I want to use the response or some other action, like evaluation, to another activity? Should I make duplicates or a number of responses for each one of them? The answer is no. This can be solved by creating the response or some action as a launcher. A launcher creates two instances. One that holds the action and the other the reflection. The reflection is indicated by asterisk symbol.

For example, if I create a new launcher 'demo_launcher' that holds 'Hello %user%' as action, then the system will create:

1. *demo_launcher: Hello %user%
2. demo_launcher: *demo_launcher

When 'demo_launcher' is called the response will look like this...

Hello john (where john the system login. Check Built-in functions and API for more info)

Now, from a different Instruction Set that returns for example the user status, *demo_launcher can be invoked like this..

get_user_stat: *demo_launcher. Your status is set to %whereami%.

which will return...
Hello john, your status is set to present.

I think it's a very straightforward methodology and will become a standard in the future versions.

Screenshots are from the development version which is not yet available. However the functionality remains.

Of course these actions can be applied to any system object, such the evaluator.

Chain reaction behind the scenes.

Launchers are extremely versatile. You can combine anything that supported from the framework in a single action.
So, the verdict is that if you want a complex Instruction Set it is wise first to create launcher components and then mixed in a single one.

You can review a complex AppConfig.xml configuration file.

Tuesday, December 2, 2014

Jubito at MobiHealth 2014

Jubito was proudly presented at the 4th International Conference on Wireless Mobile Communication and Healthcare by Kostas Giokas, Senior Researcher, Leader of the Applied Informatics in mHealth (AiM) research team, of the Biomedical Engineering Laboratory, Institute of Communications and Computer Systems, National Technical University of Athens.

JUBITO: An interoperable platform for wellness, was presented at the 4th International Conference on Wireless Mobile Communication and Healthcare, MobiHealth, on the 4th of Novermber, held in Athens, Greece.

Sunday, November 30, 2014

Set up a Gmail notifier

After setting up your gmail account, here's the post to show you how to use the %gmailcount% function to create a gmail notifier.

Go to Control Panel/Mail/Setup/Gmail

Type your username and your password and hit save.

Now we need to make a few scenarios. For instance when emails are more than one then respond with the number of them and so forth. But before we get into that, first we need to create the responses.

Go to Instruction Sets menu, hit Add New Instruction Set Add New Launcher and follow the screenshots. [ Update: For a more efficient way to create responses please read this post. ]

No new messages.
 You have, 1, unread message to your g-mail inbox.
You have, %gmailcount%, unread messages to your g-mail inbox.

Now we have to apply the logic we're talking about in a new Instruction Set.

In the action field copy/paste the following evalBool function...

{ evalBool(%gmailcount% <= 0); no-messages; ; } { evalBool(%gmailcount% == 1); gmail-one; ; } { evalBool(%gmailcount% > 1); gmail-count; ; }

One of each conditions will be evaluated and trigger the corresponding reply.

Finally we can make a daemon with the Scheduler, to perform checks every 5 minutes. From Scheduler menu hit Add New and type a name, select repeat in the period drop down, time in milliseconds e.g. 300000 for 5 minutes and action the Instruction Set that calls the evalBool function i.e. gmail. To avoid getting 'No new messages' every time, make a new Instruction Set that missing the no-messages evaluation.

Thursday, November 27, 2014

Web of Things and what's new on the upcoming version

In our days, there is a trend to talk about the Internet of Things, Machine to Machine, Web of Things, etc. However all of the above are considered an integral part of the IoT. I won't discuss any of them in detail, since there are too many articles over the internet.

A vast amount of information, is distributed via web services. Web services are an efficient way of communication, that support interoperable machine-to-machine interaction, over a network. As a developer, I need my platform to be able to consume all these services and produce innovative use-cases.

In this post I would like to share some of the latest developments, that would be available in the next version of Jubito. I'm talking about tailor made methods for native XML and JSON deserialization from web service/web API responses.

Some first tests using Yahoo Weather API.



The current release, based on 0.2.5 jaNET Framework comes with full partial support [ Still under development ]. To check the version, go to Terminal tab and type %about%.

Wednesday, October 15, 2014

Special thanks to Hackaday members!

I'm grateful to hackaday members. Thanks to your skulls, Jubito has earned its free hackaday t-shirt and sticker.
Your support gives me strength to keep going, something that I really appreciate!

Monday, October 13, 2014

Jubito @ IoT360 - The Gateway to Innovation

I just completed my registration to the IoT360. I'll be in Rome at 27-30 October if anyone interested to meet me in person. I'll be glad to see you there!
I still compose the paper that I will submit and deliver to the BLUE Track sessions (*) and I'll publish it here when it's finished. A draft is uploaded, you can preview it at the bottom of this post. You can check the eai360 Jubito page here.

The IOT360 is a unique event bringing a 360 degree perspective on IoT-related projects and activities and aiming to coach involved people on the whole path between research to innovation and all the way through to commercialization of ideas, projects and technologies.

The Summit is a powerful and inspirational event that brings together industry representatives, makers, vendors, experts, developers and others to plan, learn, network, collaborate, strategize and more effectively tap into the immense potential of the IoT domain.

The event offers a wide set of activities among which tutorials, presentations, panels and keynotes covering new methods to accelerate in the market, monetize technologies & IPR and raise funds in Europe. Structured professional networking to turn cutting edge into business through exploitation and commercialization opportunities is a key priority.
(*) People networking to build together the internet of things.
The Blue track is the instrument to meet people, companies and organizations. This session brings together such actors to share research plans, kick-start initiatives, formulates new projects and make business.
Agile one to one meetings among users facilitate a coral development of the EAI internet of things community.

Tuesday, July 29, 2014

Arduino RFID access control

In this tutorial I will demonstrate an RFID (Radio Frequency Identification) access control system.

What we need:
Once you wire the module, download the sketch and upload it to arduino.

Alternatively use codebender
Open the serial monitor and approach a token or a card to the antenna. You should receive the tag id.

Now we have readings let's handle them. It's in your discretion what to operate with those, but in this example we will make a simple check-in/check-out sequence.

As always, check your arduino configuration and then enable the serial port.

To achieve our goal we need to evaluate user status in order to switch from present to absent and vice versa when a tag is pointed. At Control Panel click Add New Instruction Set. Type rfideval in the name field (handler) or one of your choice and the evaluation that follows as the action...

{ evalBool("%whereami%" == "present"); check_me_out; check_me_in; }

'check_me_in' and 'check_me_out' are Instruction Sets that corresponds to our preferred actions. For example, saluting user using %salute% function, announce temperature even turning on a light. Also the %checkin% and %checkout% functions are mandatory to changing the current status.

To see how responses will look or sounds like, go to terminal tab and type...
  check_me_in; %whereami%
  check_me_out; %whereami%

...which  will execute the commands and after that get the status with %whereami% function.

We can also drive the check-out sequence within an event handler for extra functionality, like a countdown timer that give as time to leave before status is changed. This action can be achieved by pointing the check_me_out Instruction Set to event handler we just describe. The events will look like this...

judo sleep <ms>; %checkout%

The check_me_out Instruction Set now points to check-out-handler.

It would be wise to read about functions and API for extra customization. Also, it would be very handy to know how events work .It will help you to make multiple actions in a single command.

As we may already know, whatever collected by the serial port triggers corresponding events if they exists. This means that if we create a new event handler with name (id) same as RFID tag then it will be triggered when found.

Notice the last id in the serial monitor screenshot. When specific token (with id 6600942812) is acknowledged the event will trigger the evaluator 'rfideval' and change our status accordingly.

Thursday, July 24, 2014

A brief history of the Jubito of Things

When I first started working on this project and had its concept in my mind back in 2010, I had no idea what the Internet of Things (IoT) was. Actually, I'm not even sure if it was defined. So, this is what forced me to start building a platform that would probably inherit that kind of terminology.

I was always fascinated by automations and dreamed of a smart house that would allow devices, sensors, software applications and services to exchange data and finally populate customized environments. These environments would be used for automated tasks or controlled interactively by the user.

Then I decided to start building my own automation systems with various microcontrollers and sensors, scripts and programs to gather information and connect with hardware from other vendors, like IP-Cameras, etc. A lots of other, innovative ideas that came along. The problem I faced back at the time was that. I had a bunch of dispersed stuff that was useful on its own and incapable of operating as a centric block.

To be honest, I didn't have the full picture in my head from the beginning, but eventually it started maturing enough to become a resolver for most of my considerations.

An illustration of the infrastructure...

In this blog you'll find a bunch of tutorials and information about Jubito and how to interconnect your things. I hope to find it amusing and still do not hesitate to ask any guidance if needed.

Saturday, July 19, 2014

Jubito android app with voice control

The new coveted feature that incorporated in the new version of jubito app (v1.2) is the speech recognition and speech synthesis. It allows us to hit the speech button and come out with a preferred command. That means that from now on your instruction set names (including launchers and events) must listed speech friendly.

Assume that we have three different Instruction Sets that give us the weather conditions. Let's say 'weather today' that consists of a set of today's conditions, 'weather tomorrow' for the day after and 'forecast' for both situations.

For the example to take effect you need to check your weather settings.

Go to Control Panel/Instruction Sets/Add New Instruction Set enter weather_today as name (id) and set the line bellow as action...

Today %todayday% in Athens, %todayconditions%, between %todaylow% and %todayhigh% degrees.

For the other two options you can use...

Tomorrow %tomorrowday% in Athens, %tomorrowconditions%, between %tomorrowlow% and %tomorrowhigh% degrees.

Today %todayday% in Athens, %todayconditions%, between %todaylow% and %todayhigh% degrees. Tomorrow %tomorrowday% in Athens, %tomorrowconditions%, between %tomorrowlow% and %tomorrowhigh% degrees.

Optionally fill description and any other field you want in order to be accessed from the dashboard.

The % enclosures represents the built-in functions that are responsible to translate the retrieved weather data to values. Find more weather functions.

Now open the app and press speech button. The approach is very simple, we just speak the instruction set id (name) and its posted to the server. Once it acknowledged we'll be able to hear the response (from speech synthesis) or see any kind of action that use this example, for instance turn on an appliance. The only limitation we should conform is that we need to replace blank spaces with underscores. Update: Latest versions of Jubito, automatically replace blanks with underscores.

Alternatively before create an instruction set you can perform a preferable command and see how it prints out.


Video demo