Mastering internet of things design and create your own IoT applications using Raspberry Pi 3
The Internet of Things (IoT) is the fastest growing technology market. Industries are embracing IoT technologies to improve operational expenses, product life, and people's well-being. Mastering Internet of Things starts by presenting IoT fundamentals and the smart city. You will learn the impo...
Saved in:
| Main Author | |
|---|---|
| Format | eBook |
| Language | English |
| Published |
Birmingham
PACKT Publishing
2018
Packt Publishing, Limited |
| Edition | 1st ed. |
| Subjects | |
| Online Access | Get full text |
| ISBN | 1788397436 9781788397438 1788397487 9781788397483 |
| DOI | 10.0000/9781788397438 |
Cover
Table of Contents:
- Defining the conceptual identity of the thing -- Adding existing location information -- Collecting location information -- Registering the device -- Updating a registration -- Creating a controller -- Identifying things -- Finding friends in the roster -- Limiting the search domain -- Performing the search -- Picking suitable devices -- Making new friends -- Reacting to roster events -- Adding a friend -- Losing a friend -- Reacting to revoked presence subscriptions -- Reacting to presence changes -- Interacting with devices -- Subscribing to sensor data events -- Reacting to sensor data events -- Collecting relevant sensor data -- Calculating control output -- Performing control action -- Recovering from stale states -- Re-subscribing to sensor data -- Invalidating existing friendships -- Reconfiguring the controller -- Decommissioning of devices -- Summary -- Chapter 11: Product Life Cycle -- Defining ownership of data -- Choosing who should own the data -- Understanding ownership of physical objects -- Defining ownership of information -- Understanding provisioning -- Using a Thing Registry to register ownership -- Provisioning of a claimed thing -- Ending ownership -- Adding provisioning support to our devices -- Searching for a provisioning server -- Creating a provisioning client -- Adding provisioning support -- Registration of device -- Transmitting the conceptual identity -- Reacting to claims -- Updating the registration of our device -- Reacting to being disowned -- Managing the owner side -- Deciding what to do -- Managing owned devices -- Using tokens for identification -- Testing provisioning -- Provisioning your devices -- Claiming a device -- Adding rules -- Summary -- Chapter 12: Concentrators and Bridges -- Introducing concentrators -- Understanding concentrators in XMPP -- Modeling a Programmable Logic Controller
- Creating the digital output object instance class -- Setting remotely updated output values -- Testing your LWM2M device -- Configuring the bootstrap server -- Configuring the LWM2M server -- Interacting with your devices -- Summary -- Chapter 9: Social Interaction with Your Devices Using XMPP -- Introducing XMPP -- Using XML -- Understanding the value of brokers -- Providing global scalability -- Extending server functionality -- Authenticating clients -- Understanding XMPP addresses -- Using trust-based communication to secure the network -- Understanding XMPP communication patterns -- Understanding stanzas -- Extending XMPP -- Selecting a client library -- Selecting a broker -- Adding XMPP to our devices -- Connecting to our broker -- Getting persisted credentials -- Preparing the connection for first-time use -- Connecting to the server -- Following the connection process -- Registering a new account -- Maintaining the connection -- Managing the roster -- Making sensor data available over XMPP -- Understanding the conceptual model -- Creating an XMPP sensor server -- Returning momentary values -- Returning historical values -- Returning writable values -- Triggering events -- Publishing control parameters -- Understanding the conceptual model -- Creating an XMPP control server -- Adding a chat interface -- Creating an XMPP chat server -- Testing your devices -- Testing the human interface -- Testing the machine interface -- For further study -- Summary -- Chapter 10: The Controller -- Discovering things on the internet -- Introducing Thing Registry -- Propagating information -- Claiming ownership of things -- Transferring the conceptual identity to the owner -- Using thing registries in XMPP -- Registering our devices -- Looping through available components -- Finding the thing registry -- Creating a Thing Registry client
- Bridging protocols
- Monitoring connection events -- Recovering from lost connections -- Publishing sensor data -- Choosing relevant values -- Choosing a quality of service -- Publishing the light field -- Checking encrypted communication -- Adding MQTT support to the actuator -- Subscribing to topics -- Handling incoming commands -- Testing MQTT -- Security considerations -- Managing authentication -- Managing privacy -- Managing interoperability -- Managing authorization -- Summary -- Chapter 5: Publishing Data Using HTTP -- Introducing the HTTP protocol -- Locating a resource -- Understanding the Request/Response pattern -- Handling sessions -- Limiting connectivity -- Choosing a connection direction -- Understanding methods -- Updating resources -- Interacting with resources -- Encoding content -- Applying headers -- Optimizing requests -- Sending content -- Understanding status codes -- Using encryption -- Validating certificates -- Redefining the web -- Preparing our project -- Creating an HTTP server -- Adding dynamic synchronous resources -- Choosing representation -- Returning an XMLresponse -- Adding a schema reference -- Adding momentary values -- Returning an image response -- Explicitly encoding your content -- Adding dynamic asynchronous resources -- Decoding content -- Performing control action -- Summary -- Chapter 6: Creating Web Pages for Your Devices -- Adding file-based resources to your projects -- Converting Markdown to HTML in real time -- Adding simple Markdown content to the sensor project -- Calling our sensor API from JavaScript -- Adding simple Markdown content to the actuator project -- Calling our actuator API from JavaScript -- Adding default redirections -- Plotting graphs -- Reading historical values from the database -- Plotting historical values -- Displaying the plot -- Generalizing the page -- Creating a menu system
- Creating the master document -- Referencing the menu -- Authenticating users -- Adding a login page -- Creating our user -- Creating a very simple user database -- Posting login form -- Parsing the form -- Redirecting the user -- Authenticating the user -- Protecting our web services -- Getting a session token -- Validating tokens -- Using tokens in JavaScript -- Summary -- Chapter 7: Communicating More Efficiently Using CoAP -- Introducing CoAP -- Using UDP -- Efficiently distributing data -- Understanding the Observe pattern -- Securing CoAP communication -- Understanding DTLS sessions -- Encoding content -- Adding CoAP to our devices -- Creating a CoAP endpoint -- Publishing interval-based observable data -- Publishing event-based observable data -- Choosing the desired representation -- Returning CoAP content -- Adding a control resource to our actuator -- Responding to change requests -- Adding output triggers -- Testing your devices -- Discovering the contents of your device -- Controlling your device -- Securing your devices -- Limitations of CoAP -- Summary -- Chapter 8: Interoperability -- Understanding the benefits of interoperability -- The benefits of application-layer standards -- Understanding coupling -- Achieving interoperability using CoAP -- Discovering resources using CoRE -- Understanding the LWM2M object model -- Understanding the LWM2M infrastructure -- Understanding LWM2M server operations -- Using IPSO Smart Objects -- Adding LWM2M to our devices -- Creating an LWM2M client -- Performing the bootstrap procedure -- Registering with the LWM2M servers -- Following the progress -- Defining Smart Objects -- Creating the digital input object class -- Creating the digital input object instance class -- Defining trigger intervals for observable resources -- Notifying subscribers manually -- Instantiating the digital input object
- Cover -- Title Page -- Copyright and Credits -- Dedication -- Packt Upsell -- Contributors -- Table of Contents -- Preface -- Chapter 1: Preparing Our First Raspberry Pi Project -- Getting what you need -- Downloading the IoT Dashboard -- Installing Windows 10 on your Raspberry Pi -- Starting your Raspberry Pi -- Connecting to your Raspberry Pi -- Downloading the Arduino IDE -- Installing Firmata on your Arduino board -- Testing your Arduino board -- Choosing a development environment -- Using the IoT Gateway project and libraries -- Creating your first project -- Adding NuGet packages -- Aggregating capabilities -- Initializing the application -- Communicating with the Arduino -- Testing the app -- Deploying the app -- Summary -- Chapter 2: Creating a Sensor to Measure Ambient Light -- Preparing our project -- Initializing the inventory library -- Initializing the persistence library -- Sampling raw sensor data -- Performing basic error correction -- Canceling noise -- Removing random spikes -- Converting to a physical quantity -- Illustrating measurement results -- Calculating basic statistics -- Defining data persistence -- Storing measured data -- Removing old data -- Summary -- Chapter 3: Creating an Actuator for Controlling Illumination -- Preparing our project -- Defining control parameters -- Understanding relays -- Connecting our lamp -- Connecting an LED -- Controlling output -- Persisting control parameter states -- Logging important control events -- Using Raspberry Pi GPIO pins directly -- Checking whether GPIO is available -- Initializing the GPIO output pin -- Setting the GPIO pin output -- Summary -- Chapter 4: Publishing Information Using MQTT -- Introducing the MQTT protocol -- Understanding the Publish/Subscribe pattern -- Preparing our project -- Selecting an MQTT broker -- Creating a Device ID -- Connecting to the broker