Since its first contemporary vision in the early to mid-1990s, the Internet of Things (or IoT as it is commonly known) has grown in its usage, function and maturity. Today, there are a vast number of options available across various underlying platforms. From relatively cheap kits for hobbyists – to large scale industry solutions – the IoT demonstrates a diverse and scalable utilisation. With Gartner estimating that there will be nearly 20.8 Billion IoT devices in use by 2020, there are no signs of this technology slowing down either.
With IBM Maximo’s powerful and versatile Integration Framework (MIF), there are several possible ways to integrate IoT and Maximo. This includes direct connections from the IoT devices to Maximo:
And solutions in between the IoT device and Maximo such as IBM’s Bluemix which provide analysis and other functions before the data reaches Maximo:
The method used depends on factors including:
- The number of IoT devices being used
- Frequency of data collection
- If all raw data is required to be recorded in Maximo, or just specific/alert data
- Available storage and ongoing retention
In this blog, I’ll be focusing on a basic IoT Integration, pushing data on a regular interval from an IoT Device directly into Maximo. The device I used while writing this blog was a NodeMCU based on Arduino, however the same concepts and methodology can be used with other IoT devices too. The device I setup monitored temperature, humidity and lighting. I also included a 16 x 2 LCD display to show the readings on the device as well as it being pushed to Maximo.
With so many tutorials, how to guides and videos, I’ll not focus on setting up the sensors on the Arduino device, however if you would like a copy of the source code I wrote when setting up this example, please feel free to request it from me via email.
Once the sensors on the device are set up and tested using the LCD display, the next step is to interface this data across to Maximo. To do this, I would recommend using Web Services due to the basic libraries already available for IoT devices and its compatibility with the Maximo Integration Framework. Utilising Maximo standard functionality, I would also recommend using the Web Service from the IoT device to create meter readings for meters created in Maximo. I personally used Gauge meters while writing this blog, however the same method can be used for any meter type.
When creating the meter readings via Web Services, it is worth remembering that creating a custom Object Structure to do this may give you several errors around required fields etc. Instead, IBM has provided a useful technote on the out-of-the-box Object Structure available to do this. Here is the link.
With the Object Structure and Web Service created, the next step is to test that the Web Service can be accessed and utilised correctly. While this can be performed by using the IoT device itself, I would recommend using a Web Service Testing Software first. I used SoapUI but there are other software products available to do this.
Once tested, the next step is to add the Web Service post from the IoT device to Maximo. When doing this, remember to set a compatible content type (such as text/xml) and character set (such as UTF-8). A compatible post method should also be set (such as HTTP/1.1). As part of the Web Service call, the length of the Web Service also needs defining. On a number of web examples, I’ve seen this hardcoded into the web service. While this will technically work, it is better practice to make this a variable based on the actual length of the specific request. While much of the structure is set, the overall can still change. For example, the light reading going from 230 to 0 due to all the lights in the room being switched off!
While Web Services can be transferred using different structures, XML is supported by Maximo and allows you to easily transfer the structure from software like SoapUI directly to the IoT device. This reduces the chance of issues and simplifies the transition process from testing to utilisation.
Once transferred across, the final stage is to start up the IoT device and let it interface data to Maximo. All being well, you should see the data transferring across into Maximo and available for usage:
Once interfacing successfully, this data can be used in Maximo in a variety of different ways. Maximo allows the data to be easily exported back out for external analysis and trending. Below I’ve graphed the Temperature and Humidity over a week:
In future blogs, I will be covering more advanced integration between Maximo and IoT together with how this data can be used in Maximo and further analytics. If you have any queries or if there is anything specific you would like to see in these future blogs, please feel free to get in touch and ask!