This page contains all the edits and changes in the WoT book. If you notice any errors, typos, or mistakes, we would really appreciate if you could post them on the book forum or simply contact us directly.
Chapter 1
Chapter 2
Chapter 3
Chapter 4
- “At the time of writing, Node 4.x is the latest long-term support (LTS) version of Node.js, therefore the code in the book may not work with Node v > 4.x”
Chapter 5
- Figure 5.7 – 2nd arrow (“syn ack”) should be the other way around
- section 5.4.2, “butcan” should be “but can”
- p134 “TPC/IP” should be “TCP/IP”
- Add LPWAN to the chapter 5 network graph (todo new graph)
Chapter 6
Chapter 7
- p181, Step 2: Create the Express Routes, it states: “You define those routes in two files available in the routes/ folder (actuators.js and sensors.js), which are shown in the next two listings.” Listing 7.3 that follows shows sensors.js but there is no listing for actuators.js before it moves on to Step 3. –> need to add missing listing for actuators.js
- Listing 7.9 should contain the update converter.js code: https://github.com/webofthings/wot-book/blob/master/chapter7-implementation/part1-2-direct-gateway/middleware/converter.js
Chapter 8
Chapter 9
- Section 9.2.1: JSON Web Tokens do NOT provide encryption, unless you use a companion standard called JWE, which you should do if you are unable to transfer your data over TLS or DTLS. The JSON is simply BASE64 + an encrypted signature based on the JSON content with a pre-shared key between servers. This allows the server to trust the content of JWT, but does not do anything to hide that content. In most cases, you’d still want to transmit the JWT over a TLS connection. Meanwhile people can learn about the difference between JWT and JWE here: https://securedb.co/community/jwt-vs-jws-vs-jwe/
var action = req.body;
action.id = uuid.v1();
action.status = “pending”;
action.timestamp = utils.isoTimestamp();
utils.cappedPush(actions.resources[req.params.actionType].data, action);
res.location(req.originalUrl + ‘/’ + action.id);next();
});
* Fake Array.Observe if not available
*/
var ArrayObserver = Array.observe || function (resource, callback, extra) {
resource.push = function (data) {
Array.prototype.push.call(resource, data);
callback([{object: resource}]);
};
};
Chapter 10
p298: The Maker channel on IFTTT has been renamed to “Maker Webhook”.