IoT - a techie's viewpoint
Version 0.2, 6 October, 2017
Just starting!
This book will end up being a substantial expansion of the
talks I have been giving on the
Internet of Things .
It's a pretty skinny book at the moment, but will grow
regularly.
Contents
Presentations
-
General IoT talk given to ACS and various universities in
2015-2016
Internet of Things
-
Talk given on security at
Deep Sensor conference
Perth, April, 2017
Experiments with 6LoWPAN (articles from Linux Journal)
-
Low power wireless and Linux
-
Low power wireless: Routing to the internet
-
Low power wireless: CoAP
And a fourth article which didn't get published
-
Low power wireless: CoAP discovery and observers
PART 1: Introduction
-
Introduction (last modified v0.1)
-
Business models (last modified v0.2)
- Resources
- What is the Internet of Things
- Predictions
- The Gartner Hype Cycle
- IoT growth areas
- Conclusion
-
Architectural models (last modified v0.3)
- Resources
- Architectural frameworks
- Functional viewpoint
- Design patterns
- Client architectures
- Implementation
PART 2: Sensors
-
Temperature sensors (last modified v0.3)
- Resources
- Introduction
- Types of temperature sensor
- Properties of temperature sensors
- Some theory, and how it pans out
- Messaging protocols
-
Sensor device descriptions (last modified v0.1)
- Resources
- Introduction
- W3C semantic sensor network
- OIC sensor descriptions
- IPSO sensors
- SenML: Media Types for Sensor Measurement Lists
- Conclusion
PART 3: Microcontrollers and microprocessors
-
Introduction (last modified v0.1)
- Resources
- Microcontrollers and Microprocessors
- Architecture: Harvard and von Neumann
- Microcontrollers
- Microcontroller boards
- Microprocessors
- System on a Chip (SoC)
- Programming languages
- Operating Systems
- IETF Terminology for Constrained Nodes
- Conclusion
-
Arduino (minimal) (last modified v0.1)
- Resources
- Specification
- C Programming
- C++ Programming
- Programming environment
- Basic programming
- Interacting with the Arduino through a serial port using Firmata
-
Operating Systems (last modified v0.1)
-
Programming Languages (last modified v0.2)
- Resources
- Introduction
- Low memory
- Medium memory
- Standard memory
- Web applications
- Big data
PART 4: Networking
-
Introduction to IoT networking (last modified v0.1)
- Resources
- Existing protocols
- Newer short range protocols
- Newer long range protocols
-
IEEE802.15.4 (last modified v0.1)
- Resources
- List of 6lowpan products and suppliers
- Introduction
- Packet size
- Types of device
- Addressing
- Layer 3
- Security
- Case study: OpenLabs 802.15.4 radio
-
Low-Power Wide-Area Networks (minimal) (last modified v0.1)
-
6LoWPAN (last modified v0.1)
- Resources
- Introduction
- Packet sizes
- Auto-configuration
- Router adverts
- Security
- Higher layer protocols
- Conclusion
-
ZigBee and Z-Wave (never will be much) (last modified v0.1)
-
Experiments with 6LoWPAN (last modified v0.1)
PART 5: Middleware
-
Remote Programming Models (minimal) (last modified v0.1)
- Resources
- Introduction
- IP
- TCP and UDP
- TCP programming
- UDP programming
- Higher-level programming
- Conclusion
-
REST (last modified v0.1)
- Resources
- Introduction
- Eight fallacies of distributed computing
- URIs and resources
- URIs and REST
- REST verbs
- HATEOAS
- Representing links
- Transactions with REST
- Richardson maturity model
- RAML
- Conclusion
-
HTTP and REST (last modified v0.1)
- Resources
- Overview
- URLs
- HTTP verbs
- HTTP message headers
- Status codes
- Link relations
- HTML links
- REST HTTP client-side programming APIs
- REST HTTP servers: Apache
-
CoAP and REST (minimal) (last modified v0.1)
- Resources
- Introduction
- UDP
- Request/Response Model
- String format
- Message reliability
- Resource discovery
- Summary
-
MQTT (nothing yet) (last modified v0.1)
-
Serialisation (last modified v0.2)
- Resources
- Introduction
- XML
- JSON
- Binary JSON (CBOR)
- Google Protocol Buffers
PART 6: Security
-
Security introduction (last modified v0.1)
- Resources
- Threats
- The security triad and beyond
- IoT attack surfaces
- Defence mechanisms
- Summary
-
Identity (last modified v0.1)
- Introduction
- Eectronic Product Codes
- IP addresses
- MAC addresses
- Physical unclonable function
-
Microcontroller and microprocessor security (last modified v0.1)
- Resources
- Introduction
- In-system programming
- Java Card
- Reducing attacks
- Boot process
- Global Platform: high level requirements
- ARM secure element
- Freescale i.MX6 UltraLite
- Apple iOS security architecture
- Summary
-
ARM security (last modified v0.1)
PART 7: Home systems
-
Architecture (last modified v0.3)
- Resources
- Architecture
- Initial setup
- Non-WiFi devices
-
IPv6 on consumer home routers (last modified v0.4)
- Resources
- Introduction
- IPv4 and IPv6
- Setting up the home routers
- IPv6 addresses
- Types of IPv6 addresses
- How are IPv6 addresses generated?
- Am I IPv6 enabled?
- Who is on my network?
- No NAT for IPv6
- Conclusion
-
OpenWrt on a Raspberry Pi (last modified v0.4)
- Resources
- Introduction
- OpenWrt
- Setting up the new router behind the old router
- Setting up another network on the new router
- Debugging
- Setting up the new router in front of the old router
- Gotcha: mislocated server
- Gotcha: no PPPoE connection
- Router speeds
- But where is IPv6?
- Firewall rule
- Static IP addresses
- DNS
- Routing
- Conclusion
-
IETF homenet specifications (last modified v0.1)
- Resources
- Introduction
- Why not NAT?
- IPv6 address types
- Subnets
- Choice of address
- Router configuration
- Naming devices
- Discovering devices
-
Yeelight (last modified v0.1)
- Resources
- Yeelight bulbs
- Apps and services
- Google Home control
- LAN control
- Adverts and search
- Commands
-
Lanbon light switches (last modified v0.3)
- Resources
- Lanbon switches
- HTTP servers
- LAN mode
- Reverse engineering the Lanbon API
- Device id
- Device type
- Commands
- Source code
- Sending commands
- Master mode
- 'Keep alive' messages
- Device discovery
- State changes
- Device names
- Programs
- Conclusion
-
OpenHAB (minimal, last modified v0.3)
-
Open Assistant (minimal, last modified v0.3)
PART 8: Big data
PART 9: Artificial Intelligence
-
Mycroft (last modified v0.3)
- Resources
- Introduction
- Architecture of Mycroft
- Working with the virtual environment
- Building the documentation
- Setting location
- Case study: talking to Logitech's Harmony Hub
- Mycroft using the Google AIY Voicehat on the RPi 3B+
PART 10: Micro transactions
-
IOTA (last modified v0.2)
PART 11: Industry groups
-
Open Connectivity Foundation (OCF) (last modified v0.1)
- Resources
- Introduction
- Specifications
- Entities and servers
- Operations
- Resource types
Acknowledgements
I have used the following in these pages
Copyright © Jan Newmarch, jan@newmarch.name
"The Internet of Things - a techie's viewpoint" by Jan Newmarch is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at https://jan.newmarch.name/IoT/.
If you like this book, please donate using PayPal