Enabling IOT for UC’s Native RO

By — Avantika Dwivedi (Product Ordering Ecosystem, Engineering)

UC Blogger
Urban Company – Engineering
6 min readNov 9, 2023

--

After servicing over 10 Lakh ROs of every possible brand, we realised that the high cost of maintaining a water purifier was due to the frequent wear and tear of filters, leading to expensive yearly RO water purifier maintenance costs. We knew we had to change this.

So after years of design and R&D and based on the experience of serving 10 lac+ ROs, we have finally come up with our own NATIVE RO water purifiers which are truly a design and engineering marvel.

They look brag worthy and they are the only ROs in India which require service once in two years. Here’s a sneak peek into the incredible product we’ve developed. Also do not forget to checkout our website.

Truly Smart ROs

Our ROs do not need service for 2 years and in backend we constantly monitor its health.

This is where our team at UC came in and made this RO “smart”. We enabled following:

→ Real time tracking of metrics like water health, consumption, filter life etc in app
→ Notifying customers about due services and having alerting systems to proactively track issues in RO.

How did we do it

To enable customers to track their RO metrics in the app we have used the IOT enabled chip from IOTFY, which is integrated with the UC systems. We will talk about this integration in 2 steps:

  1. RO Setup
  2. RO Data transfer

The journey of making RO setup seamless

When someone buys an RO from UC, in order to enable IOT features they have to do one time setup. This enables the IOT module present inside the RO to access wifi and start sending data to servers.

One of the way to access wifi is using “EZ Mode”. How does EZ Mode work?

Wifi username and password need to be sent to the WiFi module in PCB. So we ask users to enter wifi credentials into the app and then broadcast these packets. Wifi router installed at home then sends these to the WiFi module.

Connecting RO to internet using EZ Mode

Our connection success rate with “EZ mode” were not great — 66% for android and 27% for IOS. Major reasons being:

  • Our WiFi module (within RO) could only sniff packets transferred over 2.4Ghz. This means we have to somehow ensure broadcasting is happening over 2.4Ghz. This is tough because most of the households have dual bandwidth (5Ghz and 2.4Ghz), especially for IOS where our mobile doesn’t show which bandwidth is being used.
  • The router also brings in its own unknowns. While from the mobile we try to ensure that 2.4Ghz is being used. Router can still end up using a 5Ghz band to transfer packets to PCB.

Hence, we decided to let go of the unknowns router brings by removing the router itself from the picture. And decided to fix this by using “AP Mode” for establishing connection.

Using AP Mode for WiFi access

In AP Mode, the router is not responsible for broadcasting wifi credentials, which is how it works differently from EZ Mode. Below are the steps to pass wifi credentials to the WiFi module inside RO using this mode:

  1. RO is brought into “onboarding mode”. In this mode RO creates a hotspot.
  2. Mobile directly connects to hotspot, enabling a direct communication channel between RO and mobile.
  3. Wifi credentials entered by the user are then passed over this channel to the WiFi module (inside RO).
Connecting RO to internet using AP Mode

While using AP Mode brought IOS connectivity to 95%, surprisingly our Android connectivity went down. On digging deeper we realised that unlike IOS, a lot of nuances in Android come due to different OEMs.

In android devices different OEMs end up treating Wi-Fi network differently. After testing across multiple devices, we figured the major reason for our low connectivity was due to “Hiding AP”.

Hiding AP (hotspot) created by Wifi-Module in RO: As shown in the diagram below, there are 2 main steps: bind and configure. While in the bind step AP is open, during configure we were hiding it so that it cannot be accessed by others. Now a lot of OEMs have custom handling for hidden Wi-Fi, leading to connectivity not happening for them. To solve for this unknown, we decided not to hide the Wi-Fi and instead just kept it password secured. This change led to our android connectivity reaching 95% as well.

Sequence diagram for all the interactions that happen to enable data transfer

Other issues included:

  • Wi-Fi scan throttling: Wi-Fi scan throttling occurs when an android device controls internet connection to conserve battery life or reduce data usage. This restricts how often an application can scan nearby Wi-Fi. This leads to Wi-Fi not getting scanned in some cases causing connectivity failure. Get more information on Wi-Fi throttling here.
  • Battery optimisation settings: This is a feature in android to conserve battery usage and hence enhance battery life. This mode prevents the device from syncing and accessing the network, again leading to connectivity failure. We tried to turn this off, but this didn’t see any major jump in connectivity.

To solve above issues, we have asked our users to make sure their phone’s battery is not low when trying to connect to RO.

RO Data Transfer

Post the connectivity has been established, RO keeps sending data to backend servers periodically. This data includes — TDS, water-flow, pump-running-hours, filter-used, water-pressure, pump-status and water-level. This data is then transmitted to our systems via APIs over HTTPs, where it is processed and stored (to be later used for alerting our customers).

RO Data Transfer

Using this data, we create intelligent insights to show to customers.

  1. Water consumption: Customers can track their daily water consumption in app.
  2. Water health: We show water TDS levels to customers to help them understand the quality of water they are consuming.
  3. Filter life: Customer can track life left for each filter in their app.
Screenshots from Urban Company app

Over and above these we have nudges and alerts to proactively detect abnormality in our RO.

  1. Filter health alert: When we detect that filter life remaining is less, we nudge customers to replace their filters by sending them notification for booking a repair request.
  2. Detecting filter blockage: Using water flow data and pump running data, we get alerted about any blockages in filters and we make sure right measures are taken either by sending a Technician to visit customers or nudging customers to book a service.
Screenshot from Urban Company app

Final Thoughts

At UC, we have consistently taken pride in delivering outstanding services to our customers. Our unwavering commitment to customer satisfaction has driven us to address the underlying issues causing recurring RO service problems. In addition to creating the most advanced RO system available, we have also integrated it with intelligent features to empower our customers to monitor the quality of the water they use.

Team

Ali Parkar, Ayush Agrawal, Deepak Jain, Parithimalan A

About the author

Avantika Dwivedi has been working in Urban Company for almost 2 years and has helped design and build systems that enables UC customers and partners to buy products. She is a firm believer in the power of a healthy lifestyle to enhance both physical and mental well-being.

Sounds like fun?
If you enjoyed this blog post, please clap 👏(as many times as you like) and follow us (@UC Blogger). Help us build a community by sharing on your favourite social networks (Twitter, LinkedIn, Facebook, etc).

If you are interested in finding out about opportunities, visit us at http://careers.urbancompany.com

--

--

UC Blogger
Urban Company – Engineering

The author of stories from inside Urban Company (owner of Engineering, Design & Culture blogs)