Está en la página 1de 7

Contents

I INTRODUCTION & CONCEPTS 17

1 Introduction to Internet of Things . . . . . . . . . . . . . . . . . . . . . . . . . . 19


1.1 Introduction 20
1.1.1 Definition & Characteristics of IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2 Physical Design of IoT 23
1.2.1 Things in IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.2.2 IoT Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3 Logical Design of IoT 29
1.3.1 IoT Functional Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3.2 IoT Communication Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3.3 IoT Communication APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.4 IoT Enabling Technologies 35
1.4.1 Wireless Sensor Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.4.2 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.4.3 Big Data Analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.4.4 Communication Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.4.5 Embedded Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.5 IoT Levels & Deployment Templates 38
1.5.1 IoT Level-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.5.2 IoT Level-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.5.3 IoT Level-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.5.4 IoT Level-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.5.5 IoT Level-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.5.6 IoT Level-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 Domain Specific IoTs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


2.1 Introduction 48
2.2 Home Automation 48
2.2.1 Smart Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 Smart Appliances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 Intrusion Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 Smoke/Gas Detectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3 Cities 50
2.3.1 Smart Parking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.2 Smart Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.3 Smart Roads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.4 Structural Health Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.5 Surveillance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.3.6 Emergency Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4 Environment 52
2.4.1 Weather Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4.2 Air Pollution Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4.3 Noise Pollution Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.4.4 Forest Fire Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.4.5 River Floods Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.5 Energy 54
2.5.1 Smart Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.5.2 Renewable Energy Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.5.3 Prognostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.6 Retail 56
2.6.1 Inventory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.6.2 Smart Payments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.6.3 Smart Vending Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.7 Logistics 57
2.7.1 Route Generation & Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.2 Fleet Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.3 Shipment Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.4 Remote Vehicle Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.8 Agriculture 59
2.8.1 Smart Irrigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.8.2 Green House Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.9 Industry 60
2.9.1 Machine Diagnosis & Prognosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.9.2 Indoor Air Quality Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.10 Health & Lifestyle 62
2.10.1 Health & Fitness Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.10.2 Wearable Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3 IoT and M2M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65


3.1 Introduction 66
3.2 M2M 66
3.3 Difference between IoT and M2M 67
3.4 SDN and NFV for IoT 69
3.4.1 Software Defined Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.2 Network Function Virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4 IoT System Management with NETCONF-YANG . . . . . . . . . . . . . 79


4.1 Need for IoT Systems Management 80
4.2 Simple Network Management Protocol (SNMP) 81
4.2.1 Limitations of SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.3 Network Operator Requirements 82
4.4 NETCONF 83
4.5 YANG 84
4.6 IoT Systems Management with NETCONF-YANG 91
4.6.1 NETOPEER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

II DEVELOPING INTERNET OF THINGS 97

5 IoT Platforms Design Methodology . . . . . . . . . . . . . . . . . . . . . . . . . 99


5.1 Introduction 100
5.2 IoT Design Methodology 100
5.2.1 Step 1: Purpose & Requirements Specification . . . . . . . . . . . . . . . . . . . . . . 100
5.2.2 Step 2: Process Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
5.2.3 Step 3: Domain Model Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.2.4 Step 4: Information Model Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.2.5 Step 5: Service Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.2.6 Step 6: IoT Level Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.2.7 Step 7: Functional View Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.2.8 Step 8: Operational View Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.2.9 Step 9: Device & Component Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.2.10 Step 10: Application Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.3 Case Study on IoT System for Weather Monitoring 111
5.4 Motivation for Using Python 115

6 IoT Systems - Logical Design using Python . . . . . . . . . . . . . . . . 121


6.1 Introduction 122
6.2 Installing Python 123
6.3 Python Data Types & Data Structures 123
6.3.1 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3.2 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.3.3 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.3.4 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.3.5 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.3.6 Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.4 Control Flow 129
6.4.1 if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.4.2 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.4.3 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4.4 range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4.5 break/continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4.6 pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.5 Functions 132
6.6 Modules 135
6.7 Packages 137
6.8 File Handling 138
6.9 Date/Time Operations 140
6.10 Classes 141
6.11 Python Packages of Interest for IoT 144
6.11.1 JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.11.2 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.11.3 HTTPLib & URLLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
6.11.4 SMTPLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

7 IoT Physical Devices & Endpoints . . . . . . . . . . . . . . . . . . . . . . . . 153


7.1 What is an IoT Device 154
7.1.1 Basic building blocks of an IoT Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.2 Exemplary Device: Raspberry Pi 155
7.3 About the Board 155
7.4 Linux on Raspberry Pi 156
7.5 Raspberry Pi Interfaces 162
7.5.1 Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.5.2 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.5.3 I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.6 Programming Raspberry Pi with Python 162
7.6.1 Controlling LED with Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.6.2 Interfacing an LED and Switch with Raspberry Pi . . . . . . . . . . . . . . . . . . . . . 164
7.6.3 Interfacing a Light Sensor (LDR) with Raspberry Pi . . . . . . . . . . . . . . . . . . . 166
7.7 Other IoT Devices 167
7.7.1 pcDuino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.7.2 BeagleBone Black . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.7.3 Cubieboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

8 IoT Physical Servers & Cloud Offerings . . . . . . . . . . . . . . . . . . . 171


8.1 Introduction to Cloud Storage Models & Communication APIs 172
8.2 WAMP - AutoBahn for IoT 172
8.3 Xively Cloud for IoT 176
8.4 Python Web Application Framework - Django 179
8.4.1 Django Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
8.4.2 Starting Development with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
8.5 Designing a RESTful Web API 188
8.6 Amazon Web Services for IoT 193
8.6.1 Amazon EC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.6.2 Amazon AutoScaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.6.3 Amazon S3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.6.4 Amazon RDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.6.5 Amazon DynamoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.6.6 Amazon Kinesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8.6.7 Amazon SQS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
8.6.8 Amazon EMR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
8.7 SkyNet IoT Messaging Platform 211

9 Case Studies Illustrating IoT Design . . . . . . . . . . . . . . . . . . . . . . 217


9.1 Introduction 218
9.2 Home Automation 218
9.2.1 Smart Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.2.2 Home Intrusion Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.3 Cities 237
9.3.1 Smart Parking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
9.4 Environment 247
9.4.1 Weather Monitoring System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.4.2 Weather Reporting Bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
9.4.3 Air Pollution Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
9.4.4 Forest Fire Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

9.5 Agriculture 275


9.5.1 Smart Irrigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

9.6 Productivity Applications 278


9.6.1 IoT Printer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

III ADVANCED TOPICS 283

10 Data Analytics for IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285


10.1 Introduction 286
10.2 Apache Hadoop 292
10.2.1 MapReduce Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
10.2.2 Hadoop MapReduce Job Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
10.2.3 MapReduce Job Execution Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
10.2.4 Hadoop Cluster Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

10.3 Using Hadoop MapReduce for Batch Data Analysis 301


10.3.1 Hadoop YARN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

10.4 Apache Oozie 311


10.4.1 Setting up Oozie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
10.4.2 Oozie Workflows for IoT Data Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

10.5 Apache Spark 320


10.6 Apache Storm 325
10.6.1 Setting up a Storm Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

10.7 Using Apache Storm for Real-time Data Analysis 330


10.7.1 REST-based approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
10.7.2 WebSocket-based approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

10.8 Structural Health Monitoring Case Study 342

11 Tools for IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351


11.1 Introduction 352
11.2 Chef 352
11.2.1 Setting up Chef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
11.3 Chef Case Studies 355
11.3.1 Multi-tier Application Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
11.3.2 Hadoop Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
11.3.3 Storm Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
11.4 Puppet 372
11.5 Puppet Case Study - Multi-tier Deployment 374
11.6 NETCONF-YANG Case Studies 377
11.6.1 Steps for IoT device Management with NETCONF-YANG . . . . . . . . . . . . . . . 378
11.6.2 Managing Smart Irrigation IoT System with NETCONF-YANG . . . . . . . . . . . 379
11.6.3 Managing Home Intrusion Detection IoT System with NETCONF-YANG . . . . 392
11.7 IoT Code Generator 405

Appendix-A - Setting up Raspberry Pi . . . . . . . . . . . . . . . . . . . . 413

Appendix-B - Setting up Ubuntu VM . . . . . . . . . . . . . . . . . . . . . . 419

Appendix-C - Setting up Django . . . . . . . . . . . . . . . . . . . . . . . . . 432

Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441