Skip to main content

IoT on Google Cloud Platform

Google wants people to use its Cloud Platform for connecting and managing IoT devices through IoT Core and use other GCP components like BigQuery to analyze data produced by those devices. While these products are fantastic, they also have some real world challenges.

IoT Core provides a managed service for connecting IoT devices. It talks with both HTTP and MQTT protocols and features one-click integration with Cloud PubSub easing most of the infrastructure tasks. However there are some limitations:

  1. You cannot use any random MQTT topic to send/receive messages as you would expect on a custom MQTT bridge. There are special topic formats to send messages and also to receive commands.
  2. IoT Core uses Public-Private Key cryptography to secure devices. All IoT devices must first authenticate using the Public Key in a JWT token and then start sending and receiving messages.
While these may seem like reasonable restrictions, one has to keep in mind that hardware vendors are still stuck in the 90's. Many of them use outdated languages and are reluctant to change any aspect of their devices script to make them talk to IoT Core. Vendors also want to move a subscription model where they charge a monthly fee to access the MQTT bridge hosted by them where their devices would send messages. As such their reluctance to adapt to IoT Core is much higher. The only real option left is to create a component which bridges the gap between hardware vendor's MQTT bridge and IoT Core which is a bad idea for so many reasons. Google must release a pre-approved list of vendors whose devices are compatible with IoT Core so that they can increase the adoption of GCP.

The other problem that one faces while using GCP is in building the UI. Most of IoT customers want real-time graphs for their devices and while Google does have Data Studio, it is not meant for real-time streaming data. To create a custom solution, one has to hook directly into PubSub and plot the streaming data received from there. For historical graphs, Data Studio along with BigQuery might be a option but one has to be very wary of costs which can escalate quickly while using BigQuery. Also the only way to embed a DataStudio graph in a web page is to use IFrame which leaves a very bad user experience. Google must provide a managed service for building charts (real-time or historical) which should be much better than what they currently provide with DataStudio.

GCP is a fantastic platform for building IoT solutions and if Google listens to its customers and provides a fully managed end-to-end solution for most scenarios, it will be a game changer and real challenger to Azure and AWS IoT solutions.

Comments

  1. Nice reading, I love your content. This is really a fantastic and informative post. Keep it up and if you are looking for Machine Learning Services then visit Emflair Technologies.

    ReplyDelete

Post a Comment

As far as possible, please refrain from posting Anonymous comments. I would really love to know who is interested in my blog! Also check out the FAQs section for the comment policy followed on this site.

Popular posts from this blog

Pi Hole - Ad blocking (Turbocharged!)

The entire internet is now made up of ads. To easily navigate it and find the information you are looking for, most people use ad blocking software. It improves page loading times and also uses less data (sometimes by up to 10 times!)
Google Chrome is the de facto browser of choice for most people. Google's main business is advertising. So you can see how ad-blocking software collides with Google's business objectives. When Chrome was trying to be popular, it started allowing plugins like AdBlock Plus etc. Then slowly it started partnering with them for "Acceptable Ads Program" for a lot of money. Now after cementing its position as the most popular browser, Google is now coming down hard on ad blocking software. It is turning off a Chrome API (webRequest API) which most ad blocking plug-ins use to block ads.
Enter Pi Hole. This is an amazing use of Raspberry Pi which blocks ads before they enter your network. It keeps a blacklist of most popular ad serving domains …

Centralized Configuration for .NET Core using Azure Cosmos DB and Narad

We are living in a micro services world. All these services are generally hosted in Docker container which are ephemeral. Moreover these service need to start themselves up, talk to each other, etc. All this needs configuration and there are many commercially available configuration providers like Spring Cloud Config Server, Consul etc. These are excellent tools which provide a lot more functionality than just storing configuration data. However all these have a weakness - they have a single point of failure - their storage mechanism be it a file system, database etc. There are ways to work around those but if you want a really simple place to store configuration values and at the same time make it highly available, with guaranteed global availability and millisecond reads, what can be a better tool than Azure Cosmos DB!
So I set forth on this journey for ASP.NET Core projects to talk to Cosmos DB to retrieve their configuration data. For inspiration I looked at Steeltoe Configuratio…

Proud to be a Bihari?

After nearly an year, this December I had a chance to visit Bihar. My visits normally consist of resting in my home in Patna and occasional visits to my uncle's place. But this time it was different. I had to go to Gaya to attend my cousin sister's marriage ceremony. Stepping out of Patna made me question - Am I really proud to be a Bihari?

Patna is like any other city in India, struggling with pollution, traffic jams, crime, etc. Being snuggled in my bed in Patna had made me forget the reality of what Bihar really is; after all its been nearly 10 years since I had traveled to any town outside of Patna in Bihar. So, the illusion was broken the moment my uncle's brand new Maruti A-Star moved out of outskirts of Patna, to what is supposedly the "National Highway". If you haven't guessed it already, its an apology of a road.