Showing posts with label Cloud. Show all posts
Showing posts with label Cloud. Show all posts

Monday, May 8, 2017

Intelligent Bot and Machine Learning

One of the field that is at the top of my current interests is Machine Learning (ML).
For now I have not blogged a lot about it. I think the main reason is that it is a subject by itself more complicated than IoT, and I find more difficult to think about what could be covered in the short space of a blog's post.

But ML is really changing the way we use computer to create a simpler and better life. And it has cross junctions with IoT.

Many are working on the theme of developing a smart computer interface able to understand what the user wants and to answer or accomplish the tasks requested.
We have all a SmartPhone, and many of us know Siri or Google Assistant, or Alexa, or Cortana.

The nice idea I want to put here is that you can add to the site of your organization or your company a "smart chat", a new channel, that can help to quickly get "some" answers, without the need of a human ready to answer.

You will find some interesting sites, like


offering you a platform to build a Chatbot, where language comprehension is based on ML techniques.

Oracle is working on developing its Intelligent Bot platform, that will be included and integrated in its PaaS; It should be called Intelligent Bot Cloud Services (IBCS) and available in really few months.
I'm working on these building blocks to define the architecture of the solution for some customers, and I think that soon I'll have some interesting things to show.
In addition, in the free time, I'm working to add a Chatbot interface to my HomeAuto solution, giving me full control of my Home, using Telegram or Facebook Messenger. It will take some time, but I'm excited to test and try.
And, as soon it will be available in Italy, I'll add Alexa Voice Control.

Yes, a lot of things. Stay tuned.

Ah, one last things: maybe this is a post written by my Bot. Who knows.

Monday, February 13, 2017

Cloud and 12-factor App

If you want to build Applications that are easily deployed to a Cloud Platform, that can be easily distributed, for example over Containers, and can scale well, you need to adopt a different approach from, for example, the one used to develop Enterprise Applications based on JEE.

A set of recommendations and best practices are summarized in the so-called “12 Factor App”.
One page worth the reading:

Each of the Twelve Factors is explained in a separate page (follow the link).

Thursday, January 12, 2017

Oracle IoT CS: BI Integration

IoT CS are mainly an easy way to manage a large set of devices and connect and acquire messages coming from them (Connect, Manage, Acquire).

But the Real Value comes from what you do on data coming from devices, on these messages.

Oracle IoT Cloud Service provides you an easy path to integrate with other Oracle Cloud Services.
For example, you can easily integrate with Oracle Business Intelligence Cloud Service.

In this video on YouTube, you can see a short demo on how to integrate with Oracle BICS and how to enable predictive mainteinance,

Wednesday, November 23, 2016

Samsung Artik

Sounds really interesting.

Samsung has not only bought the Startup SmartThings, but have also developed an entire eco-system for developing and running IoT systems.

It is called Artik.

Artik is composed by:
  • A set of development boards (Artik Modules)
  • An IoT Cloud Service (Artik Cloud)
  • SW to simplify the development of solutions, both on modules, gateways, Cloud (
What is really interesting, in my personal view, is that Artik has the broadest support for the protocols that are considered key in a IoT solution.

Monday, November 7, 2016

Oracle IoT Cloud Service: Assett Monitoring

Oracle IoT Cloud Service will offer some "mini SaaS" applications, almost ready to use.

The first available is the Assett Monitoring Application.
If you have access to one instance of Oracle IoT CS you can easily create your own instance of the Assett Monitoring Application and start configuring it.

Inside the application, you can define your Assett Types and associated Devices.
You can define Places on a Map and define the assumed location for these assetts.

Then you can start monitoring these assett and define Rules; for example rules that are fired when an assett leaves a floor or when some value coming from devices rises above a defined threshold.

A nice video showing what and how you can do all these things is available here:

 
And this is an example of what you can realize:
 
NewImage

Friday, November 4, 2016

Constrained devices, MQTT, TLS

Yesterday evening I was doing some tests with an Arduino MKR1000 board.
It is a new board released some months ago. It is part of the Arduino family, but has some features specifically targeted to the IoT world.
It has WIFI on-board, has an encryption chip, and you can use MQTT.
Arduino has made available a Cloud Service (cloud.arduino.cc) where you can freely register your devices and test communication.

For example you can register several properties for each device (temperature, ...) and with an-easy-to-use API send updates.
The communication is based on MQTT over TLS.

Just a minute, I thought: but with TLS you need to encrypt the channel.
The usual handshake will happen: the broker has to send its certificate to the device and the certificate must be verified.
How is the board doing this?

The documentation is not complete, but walking around Internet and forums you find the answer
(thanks Google !).

The board contains a set of CA certificates, and for sure it is set up to recognize the site  

mqtt.arduino.cc

The problem arises when you try to use MQTT + TLS to connect to your gateway (RPI 3, in my case).
Here you not only need to set-up keys and certificates on the gateway, but also you need to upload the root CA on the MKR1000 board.

How can you do that?

Well, not easy. MKR1000 doesn't have a traditional file system and you cannot FTP files.
There is an utility. But it take some time to understand how to use it.
I'll try (probably) in the week-end.

Conclusion: a constrained device is less simple to set-up than a Linux based device.
Basically, this is one reason why they use Gateways. Your "things" communicate with a gateway locally and the gateway, on behalf, send messages to the IoT Cloud Service.

Stay tuned.

Thursday, September 8, 2016

Field gateway and AWS IoT Cloud

Very often devices are resource constrained.
For example, if you’re building a prototype using a (compatible) Arduino Uno, you have only few 100-kbs of memory to write your sketch.

This means that not always your devices are capable of supporting TLS and establishing a direct connection to an IoT Cloud Service.

In other cases, you don’t want a direct connection, for example for security reasons.

In this case, the recommended topology is based on the adoption of a “Field Gateway”. Your devices are directly connected to the gateway, they send messages to the gateway and the gateway forward these messages to the IoT Cloud Service.

If you’re using (and this is a good and one of the most commonly used approach) MQTT, then you can install a local MQTT broker on the gateway and use the “Bridge functionality” to relay messages from the local broker to the MQTT broker provided by the IoT Cloud Service.

If you plan to make use of Amazon AWS IoT Cloud, here you can find a well-made guide to configure the bridge. The local broker is Eclipse Mosquito.

Friday, August 19, 2016

Intel Edison and BLE

BLE stands for Bluetooth Low Energy.

Intel Edison supports out-of-the-box (no additional shields required) two communication ways:

  • WIFI
  • BLE

One scenario where you can think to adopt an Intel Edison board is where you want to use Edison as a Field Gateway. Sensors are connected to small, low-power, resource constrained boards like Arduino 101 (https://www.arduino.cc/en/Main/ArduinoBoard101).

They read the data from sensors and communicate these data to the Edison Gateway using BLE.

Then Edison aggregates and sends out these data using WIFI. For example using MQTT messages to an IoT Cloud Service.

BLE is low power, is easily supported by constrained resources boards, but can be employed only for short range communications (for example in the use case of the “Connected Car”).

I’ll cover BLE and BLE on Edison in next blog posts. Stay tuned.

Wednesday, July 20, 2016

IBM Bluemix, IoT and Coursera

Mooc from companies like Coursera are a great way for improving your knowledge and acquire new skills and competencies.

I have recently completed this course on IBM IoT Cloud platform

https://www.coursera.org/learn/developer-iot

I have found really interesting:

  • The rising importance of JavaScript and NodeJS for IoT development
  • How is easy to develop Gateways and Cloud based applications for real-time handling of telemetry data, using Visual Language NodeRED (based on NodeJS)
  • How IBM Bluemix works
  • The central role played by MQTT (well, it was invented by IBM)

If you need more insight into IBM Bluemix IoT and in general IoT Cloud platforms, I would recommend this course. Worth spending some euro to get a Verified Certificate.

 

Monday, June 27, 2016

What languages for IoT?

Ian Skerrett, from Eclipse Foundation, has written a nice blog post about
  • What are the most used languages?
  • The most adopted Cloud Providers?
  • ..
for Iot

https://ianskerrett.wordpress.com/2016/04/14/profile-of-an-iot-developer-results-of-the-iot-developer-survey/

Wednesday, June 8, 2016

Oracle IoT Cloud Service: concepts and introduction.

Risultati immagini per picture for idea concept
Probably this will become a rather long blog post. I hope interesting too.
First of all, let’s recall what we commonly mean with the name “Thing”.
A “Thing” is a real-world (physical) object, that has attached a device, with:
  • computing capability
  • sensors
  • actuators
  • connectivity to the network
A Thing, through the attached device, therefore is capable to run some code (more or less powerful), is able to measure some physical properties (for example, the location, the temperature), is able to act on the physical world, for example turning on a light or an engine, and can communicate through the network.
The last capability probably is considered the most important. Without network connectivity we can call it “an embedded device”, but we don’t use the term “Thing”, in the sense of IoT.
Now, with more and more “devices” capable of computing capabilities and connectivity, the set of solutions available in the industrial and “Makers” world is rapidly increasing.
One example? The first one that comes to my mind: imagine a fleet of trucks transporting food that needs to be kept at low temperature. Or maybe medicines.
You want to be able to:
  • control the temperature inside the truck (the fridge)
  • control the location of the truck (Is the driver taking a too long nap?)
  • verify if the fridge is open and for how long
Well, today you can.You need:
  • A “computing board"
  • A GPS sensor
  • A temperature sensor
  • A 4G shield, to connect through 4G network and send messages.
Now, what you want to do with these “travelling” devices and their streams of data?
Well, you may have many different requirements.
I’ll try to list some:
  • Security is important
  • You want to register “devices” in order to avoid that “a fake” truck drive you mad
  • Receive in a reliable way messages from devices with data
  • Analyze in real time these data, in order to identify quickly that something wrong is happening (temperature is rising above threshold) and send a SMS alert to the driver
  • reset a board.
 As I have already written in this blog before, a really interesting board is Intel Edison. It is low cost (less than 100$) but really powerful. You can connect many different sensors. It can run Linux and (Oracle) Java. The most interesting thing is that it hosts a CPU based on X86 architecture. You realize what it means.
But, how to support the collection and analysis of all the data coming from, for example, 1000 trucks traveling around your country?
You can use Oracle IoT Cloud Service.
It is a Cloud Service provided by Oracle, as part of its PaaS platform, with many interesting functionalities for IoT.
With Oracle IoT CS you can develop applications, running on the device, in Java, C, NodeJS. In the rest of the post I’ll consider Java development.
First of all, with Oracle IoT CS, you can register a device. Only registered (and activated devices) can send messages to the IoT CS.
You can register a single device, using the Web UI, or register many devices with a batch, using a csv file.
When you register a device, you associate an ID and a “secret” to the device. These will be used to uniquely identify a device and secure the communication.
Next step is to install, on the device, the Device Client Library, provided by Oracle. You can download it from the Oracle site. At the end, you will need to put in the classpath a single JAR file ( device-library.jar).
Afterwards you will need to generate “a trusted assets store”, that will contain the keys and certificates needed to protect, with TLS, the communication between the device and IoT CS. The trusted assets store (a keystore generated with a provided Oracle tool) is private to the single device.
After having registered the device (or the set of devices) you will need to define a “Device Model”. A Device Model defines the interface between your “Things” and Oracle IoT CS. Again, you do this using Oracle IoT Cs Web UI (or, as we will see in another post, calling a REST API).
The Device Model defines:  format of messages exchanged, actions (methods) that you can call on the “Thing”, format of Alert messages.
A Device can have more than one Device Model attached.
Next step is to give a name to the IoT application you’re creating. You will associate the Device Model to the application and in this way you will be able to monitor the flow of messages from the IoT CS console.
Another step is to develop, compile and test the Java application that will run on the board. It will use a set of classes provided by the Device Client Library. For example the “Device Virtualization API”, that abstracts and simplifies the interactions between the devices and IoT CS. Behind the scene, the communication is based on messages exchanged through REST calls, protected by TLS.
At this point you’re able to start sending messages to Oracle IoT CS  and monitor the flows of messages using the Web UI.


NewImage

In the picture you see that the IoT application ApplicationEdison1 has received 12 messages.
And you can imagine 1000 connected devices sending their messages. Each one identified by the device id and some other metadata.
Now, the Analytics part: you want to analyze the streams and identify when some conditions are met (for example: temperature greater than 10 degree (10 C)).
Oracle IoT gives you an already configured and integrated instance of Oracle Stream Explorer.

NewImage

You can define a Source of Data, starting from a Device Model, and can define an “Exploration”. In this exploration you can specify filters conditions and therefore you will define an output stream that will give only device-id and timestamp for those messages where the condition is met (temperature > 10 )
Lastly, you can define an action, and send the output stream to a Java app that expose a REST service. This Java app will receive a JSON message for each situation where the threshold is crossed (T > 10) and can trigger what you want (for example, send an SMS).
The Java App can be hosted in Oracle Java Cloud Services or Oracle Application Container Cloud Services (based on Docker).
Ok… this is only a first introduction to concepts and what you can do with Oracle IoT CS.

One last thing: as you can see from my Linkedin profile, I work for Oracle. But I’m interested in many (iot) things and, as I have a degree in Physics, I’m always happy when I have time to play with measures and electronics.
Stay tuned.

Saturday, April 30, 2016

Intel IoT, Cloud and MQTT

I really think that MQTT is one of the most important communication protocols for IoT.

People contributing to the Intel IoT Dev Kit has added on Github guides to develop clients for several Cloud Platforms.

Here for example you find the guide for AWS:

https://github.com/intel-iot-devkit/intel-iot-examples-mqtt/blob/master/aws-mqtt.md

I'll give a close look.

Sunday, January 11, 2015

Google Fit

It is going to happen.

Computing is becoming more and more ubiquitous.
It is more and more common to have enough computing power in a "small device", that can be for example a smartphone, a smartwatch, a wearable.
In addition, these devices have a set of sensors that enables to:
  • Track your position;
  • Measure the number of steps you do;
  • Measure your speed;
  • Read other important parameters like: temperature, your heart rate, and so on;
Obviously the next step is to develop complete systems to track your health, your level of fitness, to be able to figure out how to improve.

Both Apple and Google have presented a platform with the goal to transform your smartphone  in an intelligent device that can help with your fitness and health.

In the Android World, Google have proposed Google Fit. It is both an App and a complete development environment.
I have discovered it by change: last week I have taken a new Android Phone, a nice Samsung S5, and I have found this little, someway minimalist app, that track my activity time: Google Fit.
Nice, almost in every week I try to introduce some physical exercise in my weekly routine.

I have made some inquires and I have discovered that Google Fit is a complete platform, to enable developers to design and realize nice fitness apps.

It is a Cloud Service, that enables you to store fitness data and retrive by Apps and Web Application, through a REST API.
It is an Android API. to develop Apps.

I have given a look: for now it is an initial step towards a more complete platform. But it will become more and more interesting as soon as new Apps based on Google Fit API will be released.

Stay tuned.