[读书笔记]从物联到万联——Node.js与树莓派万维物联网构建实战

前言

  • 本文是“从物联到万联,Node.js与树莓派万维物联网构建实战”一书的读书笔记,该书翻译自“Building the Web of Things with examples in Node.js and Raspberry Pi (by Guinard &Trifa)”。

  • 书中相关源码可以通过@github访问,读者可以通过@webofthings来访问作者搭建好的web物联网应用。

  • 本文重点关注书中相关实例的实现及其依赖的一些关键概念,对一些基础知识和简单代码逻辑不做过多解释。主要总结实际操作碰到的问题和解决问题的思路。


第一个物联网聚合应用

1) 无法加载jquery.min.js

出现错误:”Failed to load resource: net::ERR_CONNECTION_RESET jquery.min.js:1“

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

考虑国内无法访问ajax.googleapis.com,我们可以将jquery下载到本地再修改src指向本地路径,也可以搜索网络上可用的jquery。以下我们替换这一行代码为:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

重新打开html文件即可,注意进入浏览器可以在设置里面打开“开发人员模式”,切换到console选项卡查看打印的log。以下是该物联网聚合应用运行成功后的截图:


2)源码分析

//#A First, get the temperature in the user location from Yahoo

//#B Then get the temperature from the WoT Pi in London

//#C Prepare the text to publish and use it to update the content of the LCD screen

//#D POST the message to the LCD actuator

//#E Set a timer that will call the takePicture() function in N seconds (after the LCD content has been updated)

//#F Generates the text to display with the user name, location and Pi temperature

//#G Retrieve the current image from the Webcam in our office

//#H Update the HTML img tag with the image URL

以上英文还是比较好翻译的,如果不太确定,可以借助有道词典翻译下:

//#A首先,从雅虎获取用户位置的温度

//#B然后从伦敦的WoT Pi得到温度

//#C准备好要发布的文本并使用它来更新LCD屏幕的内容

//#D将信息发送到LCD驱动器

//#设置一个计时器,在N秒内调用takePicture()函数(LCD内容更新后)

//#F生成显示用户名、位置和Pi温度的文本

//#G从我们办公室的摄像头中获取当前的图像

//#H用图像URL更新HTML标签

这样我们就大概理清了这个web程序“ex-5-mashup.html”的大致逻辑就是:分别从雅虎和WOT Pi得到温度数据,经过处理之后把要发送的数据通过Web API发送给树莓派,等待一段时间,通过摄像头查看LCD数据的响应结果。


开始异步编程

关于IO模型的相关知识,可以参考“UNIX高级编程”的相关议题。

1)使用request库发起http请求

npm init

npm install request --save

node *.js

代码清单 3.7

var request = require('request');

request('http://webofthings.org', function (error, response, body) { //#A

if (!error && response.statusCode === 200) {

console.log(body); //#B

}

});

//#A This is an anonymous callback that will be invoked when the request library did fetch the webofthings homepage from the Web

//#B This will display the HTML code of the page

以上看出,request库的第二个参数是一个匿名回调函数,当request库从第一个参数指定的URL获取到web网络数据后,该匿名函数被调用;这里的function有三个参数,当这个异步操作过程出现任何错误时,会将错误内容返回给error,response返回响应头,body返回响应正文。匿名函数体我们直接通过console.log将body内容打印处理。


2018.09.22更新

第7章 实现Web智能产品

本章涵盖的内容如下:

  • 探索Web智能产品的三种可能模式

  • 通过Web协议访问传感器和执行器

  • 使用Node.js和Express 在树莓派上面构建REST和W

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Revin_zheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值