Internet of Things: A Hands-On Approach
Internet of Things (IoT) refers to physical and virtual objects that have unique identities and are connected to the internet to facilitate intelligent applications that make energy, logistics, industrial control, retail, agriculture and many other domains "smarter". Internet of Things is a new revolution of the Internet that is rapidly gathering momentum driven by the advancements in sensor networks, mobile devices, wireless communications, networking and cloud technologies. Experts forecast that by the year 2020 there will be a total of 50 billion devices/things connected to the internet. This book is written as a textbook on Internet of Things for educational programs at colleges and universities, and also for IoT vendors and service providers who may be interested in offering a broader perspective of Internet of Things to accompany their own customer and developer training programs. The typical reader is expected to have completed a couple of courses in programming using traditional high-level languages at the college-level, and is either a senior or a beginning graduate student in one of the science, technology, engineering or mathematics (STEM) fields. Like our companion book on Cloud Computing, we have tried to write a comprehensive book that transfers knowledge through an immersive "hands on" approach, where the reader is provided the necessary guidance and knowledge to develop working code for real-world IoT applications. Additional support is available at the book's website: www.internet-of-things-book.com The book is organized into 3 main parts, comprising of a total of 11 chapters. Part I covers the building blocks of Internet of Things (IoTs) and their characteristics. A taxonomy of IoT systems is proposed comprising of various IoT levels with increasing levels of complexity. Domain specific Internet of Things and their real-world applications are described. A generic design methodology for IoT is proposed. An IoT system management approach using NETCONF-YANG is described. Part II introduces the reader to the programming aspects of Internet of Things with a view towards rapid prototyping of complex IoT applications. We chose Python as the primary programming language for this book, and an introduction to Python is also included within the text to bring readers to a common level of expertise. We describe packages, frameworks and cloud services including the WAMP-AutoBahn, Xively cloud and Amazon Web Services which can be used for developing IoT systems. We chose the Raspberry Pi device for the examples in this book. Reference architectures for different levels of IoT applications are examined in detail. Case studies with complete source code for various IoT domains including 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 on IoT including IoT data analytics and Tools for IoT. Case studies on collecting and analyzing data generated by Internet of Things in the cloud are described.