Internet of Things: A Hands-on Approach
Arshdeep Bahga and Vijay Madisetti
Price
995
ISBN
9788173719547
Language
English
Pages
520
Format
Paperback
Dimensions
216 x 280 mm
Year of Publishing
2015
Territorial Rights
Restricted
Imprint
Universities Press

This book is written as a textbook for educational programs at colleges and universities. It can also be used by IoT (Internet of Things) vendors and service providers for training their program developers. The authors have used an immersive ‘hands on’ approach, similar to the one adopted in the companion book, Cloud Computing: A Hands-on Approach, to help readers gain expertise in developing working code for real-world IoT applications.

It is organised into three main parts. Part I covers the building blocks of Internet of Things (IoT) and their characteristics. Domain specific IoT and their real-world applications are described along with a generic design methodology and an IoT system management approach using NETCONF-YANG.  Part II introduces the reader to the programming aspects of IoT with a view to developing rapid prototypes of complex IoT applications. A primer on Python, the programming language used in this book, is included to bring readers to a common level of expertise. Packages, frameworks and cloud services including WAMP-AutoBahn, Xively cloud and Amazon Web Services that can be used to develop IoT systems are described. The Raspberry Pi device has been chosen for the examples in this book. Case studies with complete source code for various IoT domains such as home automation, smart environment, smart cities, logistics, retail, smart energy, smart agriculture, industrial control and smart health are described.  Part III introduces the reader to advanced topics in IoT, including IoT data analytics and tools for IoT.  Case studies on collecting and analyzing data generated by IoT in the cloud are described.

Arshdeep Bahga is a research scientist at Georgia Institute of Technology. His research interests include cloud computing and big data analytics. He has authored several scientific publications in peer-reviewed journals in the areas of cloud computing and big data.

Vijay Madisetti is a professor of computer engineering at Georgia Institute of Technology. He is a Fellow of IEEE and has received the 2006 Terman Medal from the American Society of Engineering Education and HP Corporation.

I INTRODUCTION & CONCEPTS
1 Introduction to Internet of Things
1.1 Introduction
1.1.1 Definition & Characteristics of IoT
1.2 Physical Design of IoT
1.2.1 Things in IoT
1.2.2 IoT Protocols
1.3 Logical Design of IoT
1.3.1 IoT Functional Blocks
1.3.2 IoT Communication Models
1.3.3 IoT Communication APIs
1.4 IoT Enabling Technologies
1.4.1 Wireless Sensor Networks
1.4.2 Cloud Computing
1.4.3 Big Data Analytics
1.4.4 Communication Protocols
1.4.5 Embedded Systems
1.5 IoT Levels & Deployment Templates
1.5.1 IoT Level-1
1.5.2 IoT Level-2
1.5.3 IoT Level-3
1.5.4 IoT Level-4
1.5.5 IoT Level-5
1.5.6 IoT Level-6
2 Domain Specific IoTs
2.1 Introduction
2.2 Home Automation
2.2.1 Smart Lighting
2.2.2 Smart Appliances
2.2.3 Intrusion Detection
2.2.4 Smoke/Gas Detectors
2.3 Cities
2.3.1 Smart Parking
2.3.2 Smart Lighting
2.3.3 Smart Roads
2.3.4 Structural Health Monitoring
2.3.5 Surveillance
2.3.6 Emergency Response
2.4 Environment
2.4.1 Weather Monitoring
2.4.2 Air Pollution Monitoring
2.4.3 Noise Pollution Monitoring
2.4.4 Forest Fire Detection
2.4.5 River Floods Detection
2.5 Energy
2.5.1 Smart Grids
2.5.2 Renewable Energy Systems
2.5.3 Prognostics
2.6 Retail
2.6.1 Inventory Management
2.6.2 Smart Payments
2.6.3 Smart Vending Machines
2.7 Logistics
2.7.1 Route Generation & Scheduling
2.7.2 Fleet Tracking
2.7.3 Shipment Monitoring
2.7.4 Remote Vehicle Diagnostics
2.8 Agriculture
2.8.1 Smart Irrigation
2.8.2 Green House Control
2.9 Industry
2.9.1 Machine Diagnosis & Prognosis
2.9.2 Indoor Air Quality Monitoring
2.10 Health & Lifestyle
2.10.1 Health & Fitness Monitoring
2.10.2 Wearable Electronics
3 IoT and M2M
3.1 Introduction
3.2 M2M
3.3 Difference between IoT and M2M
3.4 SDN and NFV for IoT
3.4.1 Software Defined Networking
3.4.2 Network Function Virtualization
4 IoT System Management with NETCONF-YANG
4.1 Need for IoT Systems Management
4.2 Simple Network Management Protocol (SNMP)
4.2.1 Limitations of SNMP
4.3 Network Operator Requirements
4.4 NETCONF
4.5 YANG
4.6 IoT Systems Management with NETCONF-YANG
4.6.1 NETOPEER
II DEVELOPING INTERNET OF THINGS
5 IoT Platforms Design Methodology
5.1 Introduction
5.2 IoT Design Methodology
5.2.1 Step 1: Purpose & Requirements Specification
5.2.2 Step 2: Process Specification
5.2.3 Step 3: Domain Model Specification
5.2.4 Step 4: Information Model Specification
5.2.5 Step 5: Service Specifications
5.2.6 Step 6: IoT Level Specification
5.2.7 Step 7: Functional View Specification
5.2.8 Step 8: Operational View Specification
5.2.9 Step 9: Device & Component Integration
5.2.10 Step 10: Application Development
5.3 Case Study on IoT System for Weather Monitoring
5.4 Motivation for Using Python
6 IoT Systems - Logical Design using Python
6.1 Introduction
6.2 Installing Python
6.3 Python Data Types & Data Structures
6.3.1 Numbers
6.3.2 Strings
6.3.3 Lists
6.3.4 Tuples
6.3.5 Dictionaries
6.3.6 Type Conversions
6.4 Control Flow
6.4.1 if
6.4.2 for
6.4.3 while
6.4.4 range
6.4.5 break/continue
6.4.6 pass
6.5 Functions
6.6 Modules
6.7 Packages
6.8 File Handling
6.9 Date/Time Operations
6.10 Classes
6.11 Python Packages of Interest for IoT
6.11.1 JSON
6.11.2 XML
6.11.3 HTTPLib & URLLib
6.11.4 SMTPLib
7 IoT Physical Devices & Endpoints
7.1 What is an IoT Device
7.1.1 Basic building blocks of an IoT Device
7.2 Exemplary Device: Raspberry Pi
7.3 About the Board
7.4 Linux on Raspberry Pi
7.5 Raspberry Pi Interfaces
7.5.1 Serial
7.5.2 SPI
7.5.3 I2C
7.6 Programming Raspberry Pi with Python
7.6.1 Controlling LED with Raspberry Pi
7.6.2 Interfacing an LED and Switch with Raspberry Pi
7.6.3 Interfacing a Light Sensor (LDR) with Raspberry Pi
7.7 Other IoT Devices
7.7.1 pcDuino
7.7.2 BeagleBone Black
7.7.3 Cubieboard
8 IoT Physical Servers & Cloud Offerings
8.1 Introduction to Cloud Storage Models & Communication APIs
8.2 WAMP - AutoBahn for IoT
8.3 Xively Cloud for IoT
8.4 Python Web Application Framework - Django
8.4.1 Django Architecture
8.4.2 Starting Development with Django .
8.5 Designing a RESTful Web API
8.6 Amazon Web Services for IoT
8.6.1 Amazon EC2
8.6.2 Amazon AutoScaling
8.6.3 Amazon S3
8.6.4 Amazon RDS
8.6.5 Amazon DynamoDB .
8.6.6 Amazon Kinesis
8.6.7 Amazon SQS
8.6.8 Amazon EMR
8.7 SkyNet IoT Messaging Platform
9 Case Studies Illustrating IoT Design
9.1 Introduction
9.2 Home Automation
9.2.1 Smart Lighting
9.2.2 Home Intrusion Detection
9.3 Cities
9.3.1 Smart Parking
9.4 Environment
9.4.1 Weather Monitoring System
9.4.2 Weather Reporting Bot
9.4.3 Air Pollution Monitoring
9.4.4 Forest Fire Detection
9.5 Agriculture
9.5.1 Smart Irrigation
9.6 Productivity Applications
9.6.1 IoT Printer
III ADVANCED TOPICS
10 Data Analytics for IoT
10.1 Introduction
10.2 Apache Hadoop
10.2.1 MapReduce Programming Model
10.2.2 Hadoop MapReduce Job Execution
10.2.3 MapReduce Job Execution Workflow
10.2.4 Hadoop Cluster Setup
10.3 Using Hadoop MapReduce for Batch Data Analysis
10.3.1 Hadoop YARN
10.4 Apache Oozie
10.4.1 Setting up Oozie
10.4.2 Oozie Workflows for IoT Data Analysis
10.5 Apache Spark
10.6 Apache Storm
10.6.1 Setting up a Storm Cluster
10.7 Using Apache Storm for Real-time Data Analysis
10.7.1 REST-based approach
10.7.2 WebSocket-based approach
10.8 Structural Health Monitoring Case Study
11 Tools for IoT
11.1 Introduction
11.2 Chef
11.2.1 Setting up Chef
11.3 Chef Case Studies
11.3.1 Multi-tier Application Deployment
11.3.2 Hadoop Cluster
11.3.3 Storm Cluster
11.4 Puppet
11.5 Puppet Case Study - Multi-tier Deployment
11.6 NETCONF-YANG Case Studies
11.6.1 Steps for IoT device Management with NETCONF-YANG
11.6.2 Managing Smart Irrigation IoT System with NETCONF-YANG
11.6.3 Managing Home Intrusion Detection IoT System with NETCONF-YANG
11.7 IoT Code Generator
Appendix-A - Setting up Raspberry Pi
Appendix-B - Setting up Ubuntu VM
Appendix-C - Setting up Django
Bibliography
Index