segunda-feira, 8 de fevereiro de 2016

IoT simplified by IoTSurfboard

IoT, the Internet of Things, is about putting things on the internet, making the world smarter and connected. Is one of the last steps until we reach ubiquonUbiquitous computing. I remember when I heard about it in the college... Now it is happening.
The problem I see that if I want to create applications using things I will have to get in the middle of the chaos that is happening right now. Of course, in the software side there're great initiatives, such as RHIOT and MQTT, but in the hardware side, well, I bought a lot of sensors, devices and I always have to spend some time with it to actually start creating applications.. Then I found the IoT Surfboard project.

About IoTSurfboard

The project leader is the java champion Vinicius Senger and it is aimed to allow from beginners to experts to create IoT applications. It is a board that is based on Arduino and comes with components and sensors already integrated:

IoT Surfboard
IoTSurfboard components

The good thing is that its API is powerful and allow non programmers to read the sensors only sending simple commands to the serial port such as temp(returns the current temperature), light(returns the light intensity based on a LSD sensor) and also switch relays using, for example, relay?1, relay?0 and much more!
For advanced users, the board can have its featured extended by, for example adding a Zigbee module, integrating it with a RaspberryPi or integrating it with known technologies, such as MQTT. There are hundreds of possibilities!

How it works?

These are the exact steps I followed on my Linux machine:
  • After unboxing the board, I connected it to some of my available USB ports. It will blink some leds, like it is booting, so I waited a few minutes;
An adult with his toy

  • Then I opened Arduino IDE and selected the port where the surfboard is connected(menu tools -> port);

  • Next I selected the serial monitor and typed speaker?1 and then I heard beeeeeeppppp and my wife got mad because our baby was sleeping, after I typed speaker?0 and the beeeeeeppppp stopped.
And that's our hello world! As you can see, you can make the basic usage of surfboard by simply sending commands and reading the response in the serial port where the surfboard is connected. I did not install anything, I just connected the device and started sending commands.

The surfboard, of course, has a lot of other features. Here's a self explanatory summary of basic commands to read sensors and control some I/O:

temp humidity light pot clock alcohol*

Leds and speaker:
red?0­1 green?0­255 blue?0­255 speaker?0­1
relay?0­1 transistor?01

* The alcohol sensor must be connected manually

There are also a few advanced commands:

?: Return all the board features in JSON format;
??: All the details plus ID, serial and key of the board;
sensors: all the sensors state in JSON format.


The IotSurfboard is a great starting point for who is looking to start creating IoT applications. Next post regarding IotSurfboard we will talk about its Java API!

quarta-feira, 3 de fevereiro de 2016

Kie Server Manager JavaFX Client 1.0-ALPHA2

Last post I have announced my PET project called Kie Server Management Client, which is a JavaFX desktop application to remotely manage a Kie Server. This is a post about the 1.0-ALPHA2 release.
We still have no installer and who wants to try it must know Maven and use Java 8. I do plan a better release in 1.0.Final, but this is a project I work on my spare time, so I can't promise too much.

New features

User Tasks Management

Now it is possible to list the user tasks of a given process instance and all the user tasks of a Container:

Listing user tasks for a given process instance ID

Jobs Management

Now it is possible to schedule cancel and requeue Jobs:

Jobs requests management


The following video shows the new features in action:

 What's next?

We still have a bunch of features and improvements to add! Process Variables and the Query screen should be next (ALPHA3)!

quinta-feira, 21 de janeiro de 2016

Announcing KIe Server Manager Client 1.0-ALPHA1

I am proud to announce the release 1.0-ALPHA1 of the Kie Server Management Client.

What is the KIe Server Manager Client?

It is a tool to manage containers from a given Kie Server, manage its process and send Drools commands to it. For further information regarding Kie Server, please see this article in Master the Boss:
Running Rules on WildFly with Kie Server

The following screenshots were taking from the tool and a video was recorded:


Containers list

Building commands to send to the server

Processes definitions
Processes Instances

Importing existing containers


How do I run it?

Currently it is a tool for more technical people, so I did not bother to create distribution packages or provide further non technical instructions. To run it you need:

  • Maven 3+
  • Java 8u60+

  • Download the source on this link:
    • Download the zip directly and unzip in some directory
    • Clone the repository using git clone
  • Go to the project repository and then kie-server-fx-app
  • Run  maven exec:
    • $ mvn exec:java -Dexec.mainClass="org.fxapps.App"

The first run might take a while because it will download all the dependencies.


Technical details

This application uses JavaFX and Java 8. The Kie Server client API is used to communicate with the server and the requests are performed asynchronously.

Manage containers

It is possible to create and dispose containers. It is also possible to export the whole set of containers to be imported later again.

Process Definition explorer

It is possible to see details about each process available in a given container.

Commands execution

The tool allows you to send Drools commands to a given container using a text editor with validation. The  response is also displayed in a text format.

Process Instance Management

Using Kie Server Manager client we can list the process instances, abort and send signal.

Export objects in multiple objects

It is possible to see objects in plain text, CSV or JSON. It allow the users to export it.

What's next?

The following features are missing in this release;

Improve Start process

It will be only implemented for jBPM 6.4 because we will have the functionality of embedding forms in our application and it will make easy to start processes and pass the correct parameters. Currently we can only start processes without passing parameters

Support domain objects

Currently it is possible to send a signal to a specific process instance or to the container and run rules. However, it is not possible to fill it with custom domain object. The future application should allow users to upload model artifacts in order make easy the payload creation

User Tasks management

Only tasks definitions are implemented in this version. In next release it should be possible to manage user tasks(start, claim, cancel, etc. The reason is that we are also waiting from the jBPM functionality mentioned previously.


Jobs are not implements and it will be available in a future version as well.

Commands Builder

Currently it is not possible to make automatic marshall of custom objects to be used internally in commands and we must edit the command JSON directly. A feature that should be possible in future releases is the command builder, where you can set fields using the interface and avoid editing the JSON payload directly. It depends on domain objects support

Process diagram

It will also be possible to achieve when jBPM 6.4 is released. Process diagram will be included for definitions and processes instances.

Improve Query

Add a more sophisticated query screen, with more query options to query processes and other things.

Process Instances variables

Add the functionality to edit process instance variables.