Implementation guide: Old McDonald’s smart IoT farm

OVERVIEW

In a land far far away, there lives an old farmer called Old McDonald. Old McDonald is a very wise man. He knows if he can harness the mighty powers of IoT to do his bidding, his life will be easier.

How does one harness IoT in a farm, exactly? Glad you asked! You see, Boomi for IoT, is all about achieving a business outcome from device data. Of course, we have an app for that!

Now let’s see how we are building this, and how you can too. 

We will need 

  • Sensors – Devices that can continuously monitor the environment (things like humidity or temperature), and can transmit that data.
  • Intelligent machines – Machines that can behave in a certain way, based on predetermined rules and configuration. (For example, a sprinkler that is turned on, if humidity falls below a threshold value.)
  • Edge IoT gateway device – A device that acts as a ‘gate’ between the sensors and the intelligent machines and can send/receive data via the Internet.
  • Software that can run on the gateway device – A lightweight runtime engine that can read data from sensors, store business rules, and trigger predetermined actions. (For example, If humidity falls below Y, turn on actuator.)
  • And of course, we need one app to rule them all.

What will the app do?

  • At the very least, if sensor data deviates from threshold values, the app will create a case automatically. It can also alert a human, if required.
  • The app should be able to show device locations on the map, thus making maintenance and monitoring easier.
  • What if the app could let Old McDonald and his reps overwrite the business rules implemented on the gateway? (For example, be able to turn /off maintenance mode remotely?)
  • The app should be able to track device history and provide visual representation of device data.

(All trademarks belong to their respective owners.)

USING THE IMPLEMENTATION GUIDE

We hope this implementation guide exceeds your expectations.

Boomi for IoT lets you achieve business outcomes from device data. Irrespective of the infrastructure decision you take, Boomi provides you a single platform for application integration, API management, workflow automation, and edge integration for IoT.

This guide shows you how we have implemented an IoT proof of concept. The edge gateway device that connects the sensors to the light is running an Atom. The web app is built using Flow.

The implementation is technology-agnostic. We happened to use Bosch and Dell devices; implementation can be adapted to the technology stack you have in hand.

We have images of the process diagrams in AtomSphere, that give you an idea how we are configuring the integration. We have used MQTT for this implementation. You can find a complete list of AtomSphere connectors here.

With Boomi Flow, you can download a token that lets you upload the app in your tenant. We have hardcoded the values, we would be getting from the third-party services, so you can understand/update the business logic at your own leisure. There are step-by-step procedures available for you to build the app from scratch, as well.

Boomi Hub is providing business context for the sensor data. We have a sample XML profile ready for you.

Please feel free to use/reuse as much of the content as you like. 

Happy building.

VIDEOS

A picture is worth a thousand words. Wonder who came up with that! Must be before the time of videos. 

We have two short videos which you may find helpful. The first one walks you through how we built the implementation. The second video shows you how the app works.

IMPLEMENTATION ARCHITECTURE

High-level overview 

Sequence diagram of the information flow Seq.png

(1) The sensor data for lux, temperature and humidity is sent as JSON to the MQTT broker running in the IoT gateway.
(2) The Boomi Atom picks the events, and uploads it in batches to Salesforce Analytics using CSV. This is how we are populating the datastore.
(3) The feed detects that the intensity of light has come down. The Atom intercepts the event, and sends back a message to turn the backup light on.
(4) Atom creates a case in Salesforce CRM.
(5) and (6) Flow pulls the data from Salesforce CRM and Analytics to provide a consolidated view.
(7)  Manual control to switch off/on the device is triggered by passing a message to the CloudMQTT broker.
(8) The MQTT listener on Atom running on the gateway device picks up the message, and puts it into MQTT topic running on the gateway.
(9) The MQTT listener running on the device picks up the message and turns on/off the device.
(10) The case is closed.


REQUIREMENTS

Should you wish to use the hardware/software configurations we have used, we have procedures on how to set everything up and running!

We are using the following hardware:

  1. Bosch XDK
  2. Dell Edge Gateway 5000  
  3. Keyboard and monitor (For initial setup)

As far as software goes…

  1. Bosch XDK Workbench  
  2. HiveMQ public broker
  3. CloudMQTT
  4. PuTTY for SSH
  5. A Dell Boomi local atom

Networking 
We are using wifi to connect the XDK, gateway device, and the computer.


Application development, integration, analytics

  1. Boomi Flow
  2. Boomi Integrate
  3. Boomi Hub
  4. Salesforce

Happy building! 🙂


INSTALLATION

Step 1:  Installing HiveMQ and the atom on the IoT gateway device

We are using a Dell gateway device, because we believe Dell makes the bestest machines. However, you can install the atom on any device you may have in hand. Yes, even a Raspberry Pi works. (Oh btw, check out Dell Boomi senior engineer Rob Valcich playing with AtomSphere, Salesforce, and Philips Hue here. Good fun!)

  1. Plug in the keyboard and the monitor to the gateway device.
  2. The gateway device comes with Ubuntu Core and the Snappy package manager installed. Navigate to the Ubuntu command prompt.
  3. We will need the IP of the gateway device. Let’s connect by ethernet to the wifi router and get the IP assigned.
  4. Use puTTY to login as ubuntu@ip with password as ubuntu.

Step 2: Configuring the gateway device

  1. Configure the gateway device to connect to the Internet over wifi.
  2. Download the HiveMQ broker to your computer. Use SFTP to transfer to the gateway device. Unzip the files.
  3. Start the server with standard configurations.
  4. Download a Boomi atom and follow the same steps as above.
  5. Start the atom.

Step 3: Setting up the XDK Workbench

  1. Open the XDK workbench and import the relevant project.
    The project does two things.  It connects to the wifi and uses three
     MQTT topics.
    We have two topics for sensors: a] Sensor/light (XDK sends the lux as a JSON), and Sensor/environment.
    We have one topic for actuators: Actuator/light (XDK receives message “ONRED” or “OFFRED” to switch on /off the LED on XDK).
    (Bosch XDK  has sample projects which we can use to understand how to interact with sensor data and actuators, as also to work with MQTT. We can simulate the MQTT interactions on the Hive MQTT broker, if we do not have an IoT device at hand for testing. In the proof-of-concept we built, the feed was converted to JSON before sending it to the MQTT broker.)  
  2. Compile the code.
  3. Connect the XDK to your laptop and flash the code to XDK from the workbench.
  4. We will write the logic using the Boomi platform to listen and send data to MQTT topics sensor/light and actuator/light.

DEVELOPMENT PLATFORM — FLOW

Boomi Flow is the development platform we are building the entire web app in. We are also using Flow to build the UI for various charts, and for orchestrating user actions like remotely controlling the IoT device or closing a case.

This is what the flow diagram of the app looks like: 

If you want to see how we are implementing the business logic or configuring the various pages or charts, here is the sharing token of the flow: Egt5HUQpaVVlaFZnWdMO5Yj00wjNkuYLFiTbUArOYE4FZt0BAoihtyUSU7Qev+es 

The values we are getting from the various service integrations are hardcoded in this example. During implementation, you can add the necessary API calls. 

Want to build the app yourself? We have got you covered.
  1. Configuring the values
  2. Creating the case page
  3. Creating the case details page
  4. Creating the product catalog page
  5. Creating the macros
  6. Building the smart farm flow
  7. Creating a new player
  8. Appchievement
In real life…

Data will not come from pre-populated values! Please see the relevant sections on XDK, MDM, AtomSphere, and Salesforce, to see how we are connecting things with other things 🙂 to build the production version of the smart farm app.

You are welcome to use/modify the flow!

Needless to say, Flow is technology-agnostic. You can use whatever technology/hardware you prefer, and customize the app for your own use.


DATA MANAGEMENT — BOOMI DATA HUB

We are using Boomi Hub for master data management.

Find detailed procedures and the sample XML here.

INTEGRATION — BOOMI INTEGRATION

With Boomi Integrate, we can work with any combination of applications — public or proprietary, hosted or on-prem, in the public cloud or private clouds — with Boomi’s library of connectors and super-simple SDK.
The IoT smart farming app:

 


ANALYTICS & CRM — SALESFORCE

CRM — Salesforce

We are using the default Flow Salesforce service for case management. While the demo app uses hardcoded values, in a real-world scenario updating case data in Salesforce, and downloading cases from Salesforce, are both done by the app. 


ANALYTICS — Salesforce

(Shameless plug! We are working on how to integrate flows with the Salesforce Einstein AI service. Check this out!)


GEOLOCATION — GOOGLE MAPS

The Google Maps API is used as below.

Precise coordinates can be fetched from a location sensor or from any publicly available APIs.


MEET THE IMPLEMENTATION TEAM

Technical lead and project coordinator

  • Premjit Mishra, Senior Integration Advisor, Dell  

Editorial lead and project coordinator

  • Sudarshana Banerjee, Content Manager – Boomi Flow, Dell 

Contributors

  • Shadaab Mohiuddin, Senior Integration Advisor, Dell  
  • Sreedevi Katabattuni, Integration Advisor, Dell
  • Pragnya Paramita, Product Marketing Manager – Boomi Flow, Dell

We owe a special thank you to.. 

  • Michael Morton, CTO, Boomi, Dell 
  • Steve Wood, CPO, Boomi, Dell
  • Manoj Gujarathi, Product Manager – Boomi Flow, Dell
  • Christopher Timmerman, Senior Global Director Support, Dell

GLOSSARY

Actuator: An actuator is a component of a machine that is responsible for moving and controlling a mechanism or system.


Edge computing: Edge computing is a method of optimizing cloud computing systems, by taking the control of computing applications, data, and services away from some central nodes, to the other logical extreme (the “edge”) of the Internet” which makes contact with the physical world.


IoT: IoT or Internet of Things is a network of devices connected to each other or the internet. The Gartner Group predicts that by 2020, IoT will reach 26 billion connected devices. Find more information here.


IoT gateway: An IoT gateway is a physical device or software program that serves as the connection point between the cloud and controllers, sensors and intelligent devices. Find more information here.


Lux:  Is the unit of light intensity from the sensors.


MQTT: MQTT or Message Queuing Telemetry Transport is an ISO standard (ISO/IEC PRF 20922) publish-subscribe-based messaging protocol, working on top of the TCP/IP protocol. MQTT is designed for connections with remote locations where a “small code footprint” is required or the network bandwidth is limited. The publish-subscribe messaging pattern requires a message broker. Find more information here.


Smart farming: Farming that includes devices that can be controlled remotely via the internet.


Topic: A topic is a UTF-8 string, which is used by the broker to filter messages for each connected client. Find more information here.


DOWNLOADS

Here are a list of things (Sample app, sample macros, sample code, sample request/responses, etc.) that you can start using right away.

  1. Flow sharing token: Egt5HUQpaVVlaFZnWdMO5Yj00wjNkuYLFiTbUArOYE4FZt0BAoihtyUSU7Qev+es
  2. List of sample request/responses
  3. The macros
  4. Sample XML
  5. Player code

Do you have a question you would like to ask? Want to send us feedback? We love hearing from our builders! Please click the Help button on the bottom right-hand corner of the screen to start a conversation. 

Want a little help in building your own IoT app? Please get in touch with Dell Boomi Professional Services. We have got you covered!

Happy building!