Cognitive computing and IoT—a high-level architecture. How will these technologies impact our day to day lives? As we are talking about billions of connected devices (as per Gartner report, by 2020, about 26 billion devices will be connected to the Internet), I also mentioned the requirements around minimal power consumption, minimal transfer of data, better addressing and discoverability, real time consumption of signals and a whole lot of technology challenges and a vision for a new architecture for a connected world.
In this blog, I would like to deep dive into my architectural vision of a connected world.
Let’s start with what exists today. Creating an IoT Solution requires a fundamental set of capabilities which is provided by an IoT platform. An IoT platform enables creating IoT solutions rapidly and at a minimum provides the following base set of capabilities.
- An ability to register and connect things (devices).
- Ability to send and receive messages using some protocol.
- Manage subscription of these devices.
- Storage of messages.
- Visualization of messages.
- Analyzing the messages.
- Taking action after analyzing the messages.
- Security and Privacy.
- Life cycle and governance.
The end IoT solution is comprised of an IoT platform and a set of capabilities/services to realize the business outcome. For instance an IoT solution would rely on services that helps in analyzing and filtering volumes of messages, creating flows and rules to determine what action needs to be executed, real time monitoring and services that would leverage and correlate existing data and use existing solutions to create new solutions and derive outcomes delivered over various channels.
With respect to IoT protocols, standards like MQTT & CoAP have evolved which are better suited for constraint environments than the standard web protocol (HTTP) and choosing a protocol depends on your application needs. There are evolving proposals like HPACK – Header Compression for HTTP/2 for compressing header fields in the requests which can be looked at for constrained devices. The point is with existing or new protocols, the IoT platform and sender/receiver needs to be aware of the protocol.
Also supporting a new device/hardware configuration, requires an effort to make a set of libraries available which helps to get started on the device. I talked about the current set of devices and programming model, in my earlier blog – “IoT Experimentation Kit". The programming model supported for each device would be different. Also management of billions of devices, life-cycle, code update’s and firmware upgrades are still not be solved at large.
While existing IoT platforms provides a kick start, there is a need for a higher level of abstraction for devices, protocols, life cycle management and deployment in the near future.
Secondly with devices being an integral part of our lives in a connected world, I envision a much stronger interconnect not just between machines, but also machine to human interaction and the whole cognitive aspects around it, where machines and humans (as well as machine to machine interaction) interacts using natural language, understand the context (based on the domains where IoT is applied) , learn’s over a period of time from your behavioral patterns and suggest recommendations.
With the above aspects in mind, I propose the following:
- An abstract communication protocol for devices.
- A Twitter based architecture model for IoT (let’s call it iTweet) with sophisticated event driven capabilities.
- A deployment model similar to container solutions like Docker for IoT.
A New IoT Cognitive Architecture
Don’t you think it would be cool if device can tweet about their status using natural language (instead of signals) and followers could pick up their status and do the next level of processing or take no action.
How about a car engine oil component communicating #change oil, which is followed by your maintenance engine guy which comes and changes the car oil. Here individual components can be followed by device or humans who may end up taking a corrective action.
How about you communicating to device #Wakeup at 7:00 after checking PNR #XXX or once your start you car, you get all reports of your car components in your dashboard –
#cartyrefront4 less by 2%
How about you asking a question about your car via a tweet –
@nb -> what is the mileage @xyz so far.
How about your car learning from your behavior and data and providing suggestions via tweets –
@xyz -> @nb you can improve the mileage by the following…
The implementations and deployment can vary. You can have a private community to receive/restrict messages and follow various public communities (weather forecasts etc) to utilize the data and act on it.
With respect to protocol, the application/device doesn’t need to worry about underlying protocols (MQTT, Coap, etc.) and communicate via the highest level of abstraction -> the human natural language. The device can be equipped to take care of underlying implementations or hand off all communications to a controller which decides the next course of action and provides the next step to these devices. The device itself may not be equipped to handle context, understanding languages and context and have the lowest power consumption and totally rely on the controller which communicates the right signals for devices to carry out.
Even a simple curl like implementation can use a device to send messages and perform the bulk of processing happening in controllers, like
#devicexx icurl “engine being shut down”
As we deploy IoT in different domains, the devices, controllers and underlying implementation would be well equipped to handle languages and context for that domain. The controller can leverage cognitive services to understand the language and the context in that domain. A connected home would use a different terminology than a connected car.
This is just one aspect, how about a private WhatsApp group for your devices, sharing their status and taking corrective action or a social community of connected cognitive devices, interconnected with your actual social profiles. Gartner predicts Customer experience innovation is one of Top Trends for 2015 and coming up with innovate solutions would be a key going forward.
I have talked about the consumer perspective only, but the same concepts can be extended to any service lifecycle of an object in any industry, right from its inception to its predictive maintenance and using this information as part of existing application or new value added solutions to create innovate products and make lives safer and simpler.
Docker for IoT (Deployment, Upgrades and, More)
How about developing a code which runs on a constrained device as well as run on our Laptop.?
As we look at developing new IoT based applications, deploying it to devices and supporting multiple hardware configurations, rolling out new changes, we need a container technology like docker to take care of many such challenges. Docker is gaining momentum as it solves a key problem (read my blog on Micro Services with Docker). I have seen some early traction already and companies are coming up with solutions to deploy docker containers to constraint devices. Imagine you can use your existing skills like Node.js, python to build out applications and deploy to connected device. Also roll out and upgrades means changing docker images, which would make it whole lot easier. Watch out this space as we see new technology enablers which would make it easier for rapid IoT deployments.
Stay tuned, exciting times ahead.