The Internet of Things (IoT) has grown exponentially in recent years, with billions of devices now interconnected around the world. Nonetheless, it is still challenging to deploy an IoT product completely from scratch. Let’s face it – it’s HARD (time consuming, expensive) to develop IoT device hardware and firmware, smartphone apps, and backend systems – and then integrate them into a working whole. Firmware OTA updates are tricky. Analytics and metrics are usually an afterthought. If every company and IoT device goes their own way, it feels like:
- Wasting a lot of time re-inventing the wheel
- Creating a lot of incompatible systems
This is where Espressif has stepped in to offer an IoT shortcut marketed as ESP RainMaker. Think of RainMaker as a pre-built IoT skeleton that you simply flesh out with your product-specific details. It’s flexible to use as an out-of-the-box solution or as a customizable platform to meet your product requirements. In this blog post, we’ll explore the RainMaker platform and how it can help accelerate your IoT development process.
Who Is Espressif?
Espressif is a Chinese semiconductor company that specializes in the design and manufacture of low-power Wi-Fi and Bluetooth-enabled microcontrollers and systems-on-chip (SoCs). They have a global customer base and are considered one of the leading players in the IoT semiconductor market.
Their flagship product line is the ESP32 series of SoCs, modules and dev kits, which are widely used by developers and hobbyists for IoT projects due to their low power consumption, ease of use and affordability. Espressif also provides software development kits (SDKs) and tools to help developers create applications for their products.
What is RainMaker?
RainMaker IoT Solution & Platform
RainMaker is a suite of tools and services that simplifies the process of developing and deploying IoT applications. It is designed to work with Espressif’s ESP32-based products, and includes the following major components:
- Device SDK: A set of libraries that developers can use to add RainMaker functionality to their ESP32-based devices.
- Mobile Apps: prewritten iOS and Android apps that automatically adjust their UI and functionality to match the capabilities of the IoT devices they control. Customize and apply your branding. End users can quickly set up their devices by scanning a QR code or entering the device’s serial number. Once a device is registered, the app provides a centralized mechanism to monitor and control connected devices.
- Voice Assistant Integration: Alexa and Google Assistant
- OTA Updates: RainMaker provides a built-in OTA update mechanism, allowing developers to easily push firmware updates to devices remotely. This eliminates the need for manual firmware updates and ensures that devices always have the latest features and security patches.
- Metrics & Analytics Dashboard (“Insights”): a web-based management interface for IoT vendors to view their device metrics such as memory usage, unexpected reboots, network performance, log messages and any other custom data that the vendor wants to expose. See the screenshot of a sample Insights Dashboard below.
Sample RainMaker Insights Dashboard
RainMaker Technical Highlights
High Level Architecture – Device, Cloud & Mobile App
- Messaging between the cloud and the IoT device is encrypted MQTT using X.509 certificates and TLS.
- Messaging between the cloud and the Smartphone App is REST.
- Event-driven architecture.
- The AWS cloud backend is based on Amazon’s Serverless architecture (LAMBDA). As such it auto-scales and provides a “deploy-and-forget” experience for the IoT device vendor.
- Local Control: RainMaker allows for local control of devices, enabling users to interact with devices even when the internet WAN connection is lost (but WiFi LAN must still be available).
- Pairing an IoT Device with a Phone involves scanning a QR code (or entering a serial number) which allows the Phone to connect to the Device over BLE. The phone then provisions the Device with WiFi credentials.
- Secure Boot with encrypted firmware updates
- Support for multiple RTOS’s (FreeRTOS, Zephyr, NuttX, …)
- RainMaker source code is provided (in C)
How Much Configuration & Customization Does RainMaker Require?
On the device side, obviously you need to create the functionality (“application”) associated with your IoT device.
RainMaker provides a library (in source form) to add RainMaker functionality to your application. This functionality includes:
- Defining device type (e.g. smart bulb) / attributes (e.g. brightness)
- Defining how device attributes should be rendered in the Smartphone App
- Raising notifications and alerts in the Smartphone App
- Expose additional data to be monitored by the Dashboard.
- Set OTA upgrade policies
- Define & Manage work queues
RainMaker Within the IoT Device Architecture
It works out-of-the-box without any configuration or custom setup. Of course, you’re free to customize it (e.g. branding) if you want.
It works out-of-the-box without any configuration or custom setup. Since the backend is not end-customer facing, there is really no reason to brand it. You’re welcome to add additional functionality if needed.
Can I Develop My Own Cloud Backend?
Yes, in principal. You don’t have to pay Espressif for a license to their AWS backend if you’re willing to undertake the development effort to create your own and the maintenance effort and cost to run it. If you want, you could tweak the protocols and do whatever you want. Of course, you need to weigh developing your own backend against the time and cost involved. In the writer’s opinion, time-to-market is probably going to strongly encourage using Espressif’s off-the-shelf backend.
Who Owns the End Customers & Business Data?
RainMaker gets deployed in the vendors’ own AWS account and the vendor completely owns the platform as well as the end-customers and business data that is gathered.
How Does Rainmaker Compare to Other IoT Platforms?
Cardinal Peak has extensive experience with a range of IoT platforms. If you are wondering how RainMaker compares to these, we got you. Many IoT platforms are offered by software companies who provide a “black box” IoT solution, meaning that the code is not viewable or modifiable. While they offer many options to customize their platforms, there is a limit to the customization. As a semiconductor company offering both hardware and software, Espressif takes a different approach with RainMaker. It is based on the open source Apache 2.0, and allows developer to modify, sublicense and distribute the source code to meet specific product requirements. The phone app and device SDKs also offer fully custom code development. However, RainMakers’ cloud backend is proprietary and that code is not modifiable.
As part of the development of this blog post, the author presented a RainMaker demo internally at Cardinal Peak. An ESP32-S3 DevKit served as the hardware platform. The demo included live video of the device loaded with a simple app toggle an LED using a built-in pushbutton:
The demo showed how to compile the test app using Espressif command lines tools, how to use the IOS RainMaker app to control the DevKit, and how to monitor the log messages from the device. For IOS screen mirroring, the author used the free Windows app “LonelyScreen”.
The demo proceeded with a successful OTA upgrade using the Espressif web dashboard:
Finally, the demo concluded with a quick look at the Espressif Insights dashboard for analytics and metrics:
Espressif RainMaker is a powerful and comprehensive IoT platform that simplifies the development and deployment of IoT products. By offering a complete ecosystem with hardware, firmware, cloud, and Smartphone Apps, RainMaker empowers developers to create and deploy IoT applications quickly and efficiently. Whether you’re a seasoned IoT developer or new to the field, RainMaker provides the tools and resources you need to bring your IoT projects to life.
Reach out today to connect with Cardinal Peak’s IoT engineering experts. We have extensive experience developing connected devices and connecting them to the cloud, including leveraging or migrating from IoT platforms or custom development.
For more information, check out:
- our IoT and smart home product design case study
- blog on migrating from IoT platforms
- blog on common challenges with IoT platforms.