Internet of Things

The Internet of Things (IoT) is the interconnection of uniquely identifiable embedded computing devices within the existing Internet infrastructure. Typically, IoT is expected to offer advanced connectivity of devices, systems, and services that goes beyond machine-to-machine communications (M2M) and covers a variety of protocols, domains, and applications. The interconnection of these embedded devices (including smart objects), is expected to usher in automation in nearly all fields, while also enabling advanced applications like a Smart Grid.

The Internet of Things (IoT) is the network of physical objects accessed through the Internet, as defined by technology analysts and visionaries. These objects contain embedded technology to interact with internal states or the external environment. In other words, when objects can sense and communicate, it changes how and where decisions are made, and who makes them. A common first step toward the IoT is converting networks on proprietary protocols to IP-based networks. For enterprises, it requires partnerships between operational technology (OT) and IT to address security, performance, and interoperability.


The IoT needs standard protocols. Two of the most promising for small devices are - 

  1. CoAP(Constrained Application Protocol)
  2. MQTT(Message Queuing Telemetry Transport)
CoAP is designed for interoperability with the web. MQTT gives flexibility in communication patterns and acts purely as a pipe for binary data.

CoAP

CoAP is the Constrained Application Protocol from the CoRE (Constrained Resource Environments) IETF group. Like HTTP, CoAP is a document transfer protocol. Unlike HTTP, CoAP is designed for the needs of constrained devices.
CoAP packets are much smaller than HTTP TCP flows. Bitfields and mappings from strings to integers are used extensively to save space. Packets are simple to generate and can be parsed in place without consuming extra RAM in constrained devices.
CoAP runs over UDP, not TCP. Clients and servers communicate through connectionless datagrams. Retries and reordering are implemented in the application stack. Removing the need for TCP may allow full IP networking in small microcontrollers. CoAP allows UDP broadcast and multicast to be used for addressing.
CoAP follows a client/server model. Clients make requests to servers, servers send back responses. Clients may GET, PUT, POST and DELETE resources. CoAP is designed to interoperate with HTTP and the RESTful web at large through simple proxies. Because CoAP is datagram based, it may be used on top of SMS and other packet based communications protocols.

MQTT
MQTT is a publish/subscribe messaging protocol designed for lightweight M2M communications. It was originally developed by IBM and is now an open standard. MQTT has a client/server model, where every sensor is a client and connects to a server, known as a broker, over TCP.
MQTT is message oriented. Every message is a discrete chunk of data, opaque to the broker. Every message is published to an address, known as a topic. Clients may subscribe to multiple topics. Every client subscribed to a topic receives every message published to the topic.

ref:


Wiki - http://en.wikipedia.org/wiki/Internet_of_Things


Open Interconnect Consortium(OIC) - http://openinterconnect.org/


AllSeen Alliance - https://allseenalliance.org/


Industrial Internet Consortium - http://www.iiconsortium.org/


Google Nest and others group - http://www.threadgroup.org/


Apple HomeKit - https://developer.apple.com/homekit/


IoT overview - 


1. http://www.cisco.com/web/solutions/trends/iot/overview.html


2. http://www.microsoft.com/windowsembedded/en-us/internet-of-things.aspx


3. http://www-01.ibm.com/software/info/internet-of-things/


4. http://www.businessinsider.com/enterprise-growth-in-the-internet-of-things-market-2014-8


5. http://www.mckinsey.com/insights/high_tech_telecoms_internet/the_internet_of_things


MQTT, CoAP, IoT protocols - http://www.eclipse.org/community/eclipse_newsletter/2014/february/article2.php


CoRE (Constrained Resource Environments) - https://datatracker.ietf.org/doc/charter-ietf-core/

Open IoT stack for Java - http://iot.eclipse.org/java/download/


Intel IoT developer kit - https://software.intel.com/en-us/blogs/2014/09/08/announcing-intel-iot-developer-kit


Eclipse C/C++ IDE for Intel Galileo/Edison - https://software.intel.com/en-us/getting-started-for-c-c-plus-plus-eclipse-galileo-and-edison