Want to share a Demo i developed over the long weekend. This is related to the Internet of Things. A concrete Demo is shown towards the end, so please stay tuned all the way through to the end of this post 🙂
Interaction with present-day “Things”, especially in the slowly-adapting developing world presents few peculiarities with respect to using “Things” –
1. Most Things are not web-enabled.
2. Most Things are rather clumsy to use (Lack of space, inaccessibility, lack of time to use the already clumsy Things creatively, use-and-throw culture …)
3. A slowly adapting society. General state of passiveness in using Things more innovatively. Too many products and standards and the ensuing chaos.
4. <perhaps a lot more points>
Low usage of Things
This leads to low usage of Things. Low usage of Things implies less activity is generated and this potentially has ramifications on the flow of business vis-à-vis those Things. Obviously, if you do not (creatively) use your Things are much as you should, you do not generate enough activity. Sounds like the IoT wave may bypass a lot of existing Things, and there are lot of those “existing” Things already!
A Marketplace for “Interaction”?
So, if you have a set of Things but are as yet unaware of how to optimally extract creativity out of their (diversified) usage, you may well hear from someone else who has good knowledge in the the creative use of those same Things of yours. Creative usage, apart from the above mentioned “activity” benefits, also offers other benefits such as applying your Thing to optimally satisfy a target objective (for example – minimize the usage cost, maximize the usage-cycles, do multiple-tasks out of a single Thing ..)
That’s where a Market-place for “Interaction” with present-day Things comes in.
With an unkempt garden and (an equally unkempt) bookshelf, and a bunch of QR codes at my disposal (so typical of a developing world setting with as-is resources), i have created a Demo based on IoT which integrates a QR code scanner with Thing-APIs and Twitter to demonstrate the value of what i would call “Interaction-as-a-service”. Communication with “Things” takes place using Natural Language.
Implementation was done using NodeJS, MongoDB, Google Apps scripts, Twitter API, Thing APIs (Garden, book_shelf, weather) and Java.
Proposing “Interaction-as-a-service” and it’s value-add.
It’s winter. I (finally) Web-enable my unkempt garden plants. I have three plants —
1. Epipremnum aureum or Money Plant
This requires less sunlight, moderate amount of water, less temperature and is generally placed indoor. It’s value-add is reducing atmospheric pollutants.
2. Ocimum tenuiflorum or Holy Basil/Tulsi
This requires moderate sunlight, moderate amount of water, moderate temperature and is generally kept outdoor or indoor. It’s value-add in winter is to provide leaves that can be crushed to make medicinal tea.
3. Magnoliophyta or Flowering plant
This requires high sunlight, moderate amount of water, moderate temperature and is kept outdoor. It’s value-add is to provide colourful Flowers.
As said, my plants are arranged in a random manner, some of them overlapping the others. They also need to be watered. Some of them need more sunlight than the others, and they all have their rewards/value-adds in return.
Formulating an Interaction
In this scenario, i work on ordering my plants, watering them and placing them under sunlight or indoor as per their requirement. On doing so, i hope the plants to give me their respective value-adds in a matter of a few days.
This activity creates a simple Interaction style — prioritize leading to reward(Flowers).
Porting the Interaction
This interaction-style is then ported to another human-Thing interaction scenario, one involving my unkempt bookshelf. As a result of that, i expect the bookshelf to tell me which book(s) i should place in the front row so as to get the most suited recipes in this “context” (Winter).
Here is how the entire Human-Thing interaction and it’s porting to another scenario goes —
A concrete, working Demo is shown next.
Shown below in my unkempt garden ..
As we see, i have three plants which are entangled into each other and are not taken care of well, in terms of Sunlight, Water and Temperature.
Web-enabled unkempt garden
Then i web-enable the three plants using simple QR codes pointing to a page which shows their current status and a description.
How’re you plants?
The plant is scanned and this fires a tweet from @WOTTBOT (my Demo Bot) to my Twitter ID
(this QR scan picture is for representational purposes)
Now, a tweet is fired as shown below
@WOTTBOT further queries the plants’ current status and notifies me with it
Formulating the Interaction
Equipped with the current status of plants, i inform @WOTTBOT that i will work on my plants to improve their state. Here, i initialize the interaction style (prioritizing)
In response to this, using (ideally crowdsourced) information, @WOTTBOT tweets back the “reward” part of this Interaction style, as also a unique identifier it assigns to this Interaction-style.
What has happened in the processing is that an Umbrella-REST-API has created an Interaction REST API on-the-fly, on the resource “prioritizing on plant” and packed in all the required information (context = winter, sequence = GET,PUT, input=order, output=flowers)
The on-the-fly REST API is a resource that is itself an API. Thus, POSTing to this (API-)resource implies creating the API, PUTting to this (API-)resource implies porting this API and GETting this (API-)resource implies executing this API on the API-factory server.
To complete formulating this Interaction, i actually execute the watering and prioritizing activities on the plants and tweet the status back to @WOTTBOT, which then modifies the state of these plants
Porting the Interaction to a different Human-Thing scenario
Here is the unkempt Bookshelf of recipes
I have three books —
1. The Big Book of Juices
2. The Big Book of Soups and Stews
3. Ice cream CookBook
They’re kept in the recipe bookshelf in no certain order pertaining to the “context” (winter) that is retained from the previous interaction scenario
As i scan my bookshelf, @WOTTBOT asks me what i would like to do with it.
(Ideally through a Marketplace), the prioritize -> reward interaction is available to me for porting and applying to this scenario and i use it.
(this QR scan picture is for representational purposes)
Then, the on-the-fly interaction API created earlier is applied to the new Human-Thing scenario in the same context. This is done by invoking a REST GET on the ported API to execute it. Notice that the API identifier is passed here as a hashtag. Assuming that my web-enabled books are tagged with the context term “winter”, i get back the interaction expected out of me in this scenario
I am notified to put “The Big Book of Soups & Stews” in the front of the bookshelf so that i can prepare warm soups in Winter (context). Such an information, could again, be ideally crowdsourced in the library implementation of the ported Interaction. To execute such a complex action, the complex verb prioritize is split into a REST sequence GET->PUT for me
Interaction-Design diagram of such a system
Isn’t it time for Interaction-as-a-service? Some benefits of such a concept
1. Training (new) people on (new) Things
2. Using Things more creatively and in context
3. Improving the utilization of Things with an accompanied increase in business relating to those Things
4. <more points here?!>
PS: Plants are a good starting point to show formulating such an Interaction. They are domesticated, react predictably to Human input, have huge diversity and are readily available.