About the Author |
|
xi | |
About the Technical Reviewer |
|
xiii | |
Acknowledgments |
|
xv | |
Introduction |
|
xvii | |
Chapters at a Glance |
|
xix | |
|
Chapter 1 Introduction to IoT |
|
|
1 | (12) |
|
Choosing a Raspberry Pi Model |
|
|
2 | (2) |
|
|
4 | (1) |
|
Characterizing an IoT Project |
|
|
4 | (4) |
|
|
5 | (1) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
6 | (1) |
|
|
7 | (1) |
|
|
7 | (1) |
|
The Right Tools to Deal with Hardware |
|
|
8 | (1) |
|
Writing Code in Python and the Arduino IDE |
|
|
9 | (2) |
|
|
11 | (2) |
|
Chapter 2 Sensing Your IoT Environment |
|
|
13 | (72) |
|
|
14 | (1) |
|
IoT Characterization of This Project |
|
|
14 | (1) |
|
How Does This Device Hook Up to the IoT? |
|
|
15 | (7) |
|
|
16 | (2) |
|
|
18 | (4) |
|
Building Your First IoT Swarm |
|
|
22 | (38) |
|
Installing Arduino Support on the PC or Mac |
|
|
22 | (1) |
|
Your First Sketch for the ESP8266 |
|
|
23 | (1) |
|
|
24 | (10) |
|
|
34 | (26) |
|
|
60 | (1) |
|
Monitoring and Debugging the System with the Raspberry Pi (the Smart Guy on the Block) |
|
|
61 | (16) |
|
LightSwarm Logging Software Written in Python |
|
|
62 | (15) |
|
|
77 | (6) |
|
What Else Can You Do with This Architecture? |
|
|
83 | (1) |
|
|
84 | (1) |
|
Chapter 3 Building an IoT Weather Station |
|
|
85 | (28) |
|
IoT Characterization of This Project |
|
|
86 | (1) |
|
How Does This Device Hook Up to the IoT? |
|
|
87 | (1) |
|
|
88 | (1) |
|
What Are Grove Connectors |
|
|
88 | (1) |
|
The Project -- SkyWeather2 |
|
|
89 | (2) |
|
The Architecture of SkyWeather2 |
|
|
91 | (2) |
|
What Do You Need to Build This Project? |
|
|
93 | (1) |
|
Connecting and Testing the Hardware |
|
|
94 | (2) |
|
Weatherization and the 3D Printed Box for SkyWeather2 |
|
|
96 | (2) |
|
|
98 | (8) |
|
Non-normal Requirements for Your Pi |
|
|
98 | (1) |
|
The SkyWeather2 Python3 Software |
|
|
99 | (1) |
|
|
99 | (2) |
|
The Software-Defined Radio |
|
|
101 | (1) |
|
The SkyWeather2 Configuration Software |
|
|
102 | (1) |
|
The Dash App Local Display |
|
|
103 | (3) |
|
|
106 | (1) |
|
Supplying Your Data to the World -- WeatherSTEM |
|
|
107 | (1) |
|
Tweeting Your Weather Data |
|
|
108 | (3) |
|
A Little History and Science |
|
|
109 | (2) |
|
|
111 | (2) |
|
Chapter 4 Changing Your Environment with IoT and iBeacons |
|
|
113 | (44) |
|
|
114 | (3) |
|
IoT Characterization of This Project |
|
|
115 | (1) |
|
How Does This Device Hook Up to the IoT? |
|
|
116 | (1) |
|
|
116 | (1) |
|
|
117 | (7) |
|
Python3 Bluetooth iBeacon Scanner |
|
|
119 | (4) |
|
Philips Hue Lighting System |
|
|
123 | (1) |
|
|
124 | (1) |
|
BeaconAir Hardware, Software, and Configuration |
|
|
124 | (22) |
|
BeaconAir Hardware Description |
|
|
125 | (1) |
|
BeaconAir Software Description |
|
|
125 | (15) |
|
BeaconAir Configuration File |
|
|
140 | (3) |
|
|
143 | (1) |
|
|
144 | (2) |
|
Issuing Commands to LightSwarm |
|
|
146 | (1) |
|
Installing BlueZ and Phue on the Raspberry Pi |
|
|
147 | (5) |
|
|
147 | (3) |
|
|
150 | (1) |
|
|
150 | (1) |
|
Making BeaconAir Start on Bootup |
|
|
151 | (1) |
|
|
152 | (1) |
|
|
152 | (1) |
|
The Classic Distributed System Problems |
|
|
153 | (2) |
|
|
155 | (2) |
|
Chapter 5 Connecting an IoT Device to a Cloud Server: IoTPulse |
|
|
157 | (50) |
|
IoT Characterization of This Project |
|
|
158 | (1) |
|
The Internet of Things on the Global Network |
|
|
159 | (6) |
|
|
160 | (2) |
|
|
162 | (1) |
|
Display and Report Generation |
|
|
162 | (1) |
|
The IBM Cloud Internet of Things Solution |
|
|
163 | (2) |
|
|
165 | (32) |
|
|
169 | (3) |
|
3D Printing Files for the IoT Case |
|
|
172 | (5) |
|
|
177 | (1) |
|
|
177 | (17) |
|
Reviewing the Arduino IDE Serial Monitor Results |
|
|
194 | (3) |
|
Joining IBM Cloud and the IoT Foundation |
|
|
197 | (6) |
|
Sending Your Data to Cloud |
|
|
198 | (3) |
|
Examining Real-Time Data on the IBM Cloud IoT Platform |
|
|
201 | (2) |
|
|
203 | (3) |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
205 | (1) |
|
|
206 | (1) |
|
Chapter 6 Using IoT for RFID and MQTT and the Raspberry Pi |
|
|
207 | (38) |
|
IoT Characterization of This Project |
|
|
208 | (1) |
|
|
209 | (2) |
|
|
211 | (1) |
|
Hardware Used for IoTRFID |
|
|
212 | (1) |
|
Building an MQTT Server on a Raspberry Pi |
|
|
213 | (2) |
|
The Software on the Raspberry Pi |
|
|
215 | (4) |
|
Installing the MQTT "Mosquitto" |
|
|
215 | (1) |
|
Configuring and Starting the Mosquitto Server |
|
|
216 | (2) |
|
Starting the Mosquitto Server |
|
|
218 | (1) |
|
Testing the Mosquitto Server |
|
|
218 | (1) |
|
|
219 | (10) |
|
|
219 | (1) |
|
Installing Arduino Support on the PC or Mac |
|
|
220 | (1) |
|
|
221 | (1) |
|
What Is This Sensor We Are Using? |
|
|
222 | (1) |
|
|
222 | (3) |
|
|
225 | (4) |
|
The Software for the IoTRFID Project |
|
|
229 | (13) |
|
|
230 | (1) |
|
|
230 | (6) |
|
Testing the IoTRFID System |
|
|
236 | (1) |
|
Setting Up the Mosquitto Debug Window |
|
|
236 | (2) |
|
Set Up a Subscriber on the Raspberry Pi |
|
|
238 | (3) |
|
Testing the Entire IoTRFID System |
|
|
241 | (1) |
|
What to Do with the RFID Data on the Server |
|
|
242 | (1) |
|
|
243 | (2) |
|
Chapter 7 Computer Security and the IoT |
|
|
245 | (24) |
|
IoT: Top Five Things to Know About IoT Computer Security |
|
|
246 | (4) |
|
Number 1 This Is Important. You Can Prove Your Application Is Insecure, but You Can't Prove Your Application Is Secure |
|
|
247 | (1) |
|
Number 2 Security Through Obscurity Is Not Security |
|
|
247 | (1) |
|
Number 3 Always Connected? Always Vulnerable |
|
|
248 | (1) |
|
Number 4 Focus on What Is Important To Be Secure in Your IoT Application |
|
|
248 | (1) |
|
Number 5 Computer Security Rests on Three Main Aspects: Confidentiality, Integrity, and Availability |
|
|
248 | (2) |
|
|
250 | (1) |
|
Assigning Value to Information |
|
|
250 | (2) |
|
Building the Three Basic Security Components for IoT Computers |
|
|
252 | (12) |
|
Confidentiality -- Cryptography |
|
|
252 | (6) |
|
Integrity -- Authentication |
|
|
258 | (6) |
|
Availability -- Handling DOS/Loss of Server/Watchdogs |
|
|
264 | (1) |
|
|
264 | (2) |
|
|
266 | (1) |
|
|
267 | (2) |
|
Appendix A Suggestions for Further Work |
|
|
269 | (4) |
|
|
270 | (3) |
Index |
|
273 | |