Implementation guide: Old McDonald’s smart IoT farm
- Using the implementation guide
- Implementation architecture
- Development platform - Boomi Flow
- Data management - Boomi Data Hub
- Integration - Boomi Integration
- Analytics & CRM - Salesforce
- Geolocation - Google Maps
- Meet the implementation team
- Further reading
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!
- Let’s see a video of the app in action!
- Here is a video walkthrough of the build.
- This is the app URL: https://flow.manywho.com/6c2556ca-efb2-4793-ab99-2aa62150e3b1/play/Smartfarm/?flow-id=8620b7e2-f638-4c68-8c91-bfea878684ae
- Import the flow in your own tenant and customize it the way you like, with this sharing token of the flow: Egt5HUQpaVVlaFZnWdMO5Yj00wjNkuYLFiTbUArOYE4FZt0BAoihtyUSU7Qev+es
- Download the player code from here.
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.
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.
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.
Sequence diagram of the information flow
(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.
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:
As far as software goes…
We are using wifi to connect the XDK, gateway device, and the computer.
Application development, integration, analytics
Happy building! 🙂
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!)
- Plug in the keyboard and the monitor to the gateway device.
- The gateway device comes with Ubuntu Core and the Snappy package manager installed. Navigate to the Ubuntu command prompt.
- We will need the IP of the gateway device. Let’s connect by ethernet to the wifi router and get the IP assigned.
- Use puTTY to login as ubuntu@ip with password as ubuntu.
Step 2: Configuring the gateway device
- Configure the gateway device to connect to the Internet over wifi.
- Download the HiveMQ broker to your computer. Use SFTP to transfer to the gateway device. Unzip the files.
- Start the server with standard configurations.
- Download a Boomi atom and follow the same steps as above.
- Start the atom.
Step 3: Setting up the XDK Workbench
- 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.)
- Compile the code.
- Connect the XDK to your laptop and flash the code to XDK from the workbench.
- 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.
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.
- Configuring the values
- Creating the case page
- Creating the case details page
- Creating the product catalog page
- Creating the macros
- Building the smart farm flow
- Creating a new player
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.
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:
- Orchestrating MQTT event from/to device topics
- Batching sensor data for luminosity, temperature and humidity to upload to Salesforce Analytics
- Creating a case in Salesforce for CRM
- Retrieving product catalog from Hub
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.
<p><iframe style="border: 0;" src="https://www.google.com/maps/embed/v1/place?q=42.362728,-71.085352&key=<<enter Google Key>> width="100%" height="450" frameborder="0"></iframe></p>
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
- 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
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.
- Boomi Flow
- Flow Documentation
- Flow – API reference
- Flow – Repositories
- Flow insights with Dashboard
- Implementing Flow reporting on Postgres
Here are a list of things (Sample app, sample macros, sample code, sample request/responses, etc.) that you can start using right away.
- Flow sharing token: Egt5HUQpaVVlaFZnWdMO5Yj00wjNkuYLFiTbUArOYE4FZt0BAoihtyUSU7Qev+es
- List of sample request/responses
- The macros
- Sample XML
- 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!