SmartNode与物联网:项目2-4 天气预报提示器

学习目标:

1.理解并能够正确设置软件开关节点、http请求节点及调试节点;

2.了解函数节点及其应用;

3.体验动手制作天气预报提示器的乐趣。

一、项目描述

俗话说“天气即是天意”,天气状况对人类生活的影响不言而喻。农耕文化下,我们的祖先很早就发明了各种仪器来记录和预测气象,像东汉时期用来测风向的“相风铜乌”(如图1所示)、《史记》中记录的天平式测试仪等。随着气象学的发展,如今人们想要预知未来天气,只需拿起手机上网一查就会有精确的数字呈现,然而简便之余也失去了不少的乐趣。本节课我们将利用edison套件中的器材,动手制作一个天气预报提示器。

image371

图1相风铜乌

二、项目分析

制作天气预报提示器,首要解决的问题便是天气预报地址的获取,我们可利用http请求节点很好的解决这个问题,然后将消息通过调试节点显示在调试窗口,项目分析可参考表1。

表1 天气预报提示器的项目分析

项目名称 天气预报提示器
项目功能 获取某一地点的天气,并显示在调试窗口
器材清单 edison
工作流程  image373

三、基础知识

(一)软件开关节点

“软件开关”节点作为程序的起点,在Smart_Node中应用普遍,如图2所示。其功能类似于硬件开关,可直接控制程序的运行,在本项目中,我们使用“软件开关”节点控制天气预报的获取与否。

image375

图2 “软件开关”节点

()调试节点

“调试”节点在调试程序时会常用到,如图3所示。其作用类似于Arduino中的串口通信,可以将我们需要调试的数据呈现在“调试”窗口中。例如在本项目中实时读取某一地区天气状况。

image166

图3 “调试输出”节点

四、实现过程

(一)流程设计

为了实现只在我们需要时才获取天气,需使用“软件开关”节点进行控制,而为了获取我们想了解的天气状况,需使用“http请求”节点进行设置,最后使用“调试”节点将信息输出到调试窗口,参考流程如图4所示。

image378

图4 天气查询流程图

(二)节点设置

“软件开关”节点决定程序的运行与否。双击它可出现如图5所示界面,可将它想象成硬件开关,点击一次程序运行一次,再点击一次,程序运行停止,并且可在initVal中设置延时,即:延迟多长时间触发开关信号,这里我们将“initVal”设置为“1”,如图5所示。

 image375 屏幕快照 2016-03-16 上午2.38.33

图5 “软件开关”节点及其设置

“http请求”节点可以得到我们需要的网页地址。本项目中我们需要获取某一地址,因此使用的是GET方法,请求的是我们想了解的某一地区的天气预报的地址,例如北京天气预报的地址,即http://www.weather.com.cn/adat/cityinfo/101010100.html,填在网页地址一栏;因为输出的是字符串,因此在返回项中要选择UTF-8字符串,至于名称可根据程序的可读性进行设置,这里保持默认名称,即http请求,具体设置如图6所示。

 image382  image384

图6 http请求节点及其设置

想一想

1.什么情况下可以方法设置为“POST”、“PUT”、”DELETE”等?

2.什么情况下可以将返回设置为“二进制缓冲区”、“解析过的JSON对象”?

“调试”节点主要是对我们输出结果的正误进行检测和调节。该节点的设置比较简单,本项目中主要将“输出”设置为“消息属性”,将“输出到”设置“调试标签页”,具体如图7所示。

 image166  image168

图7 调试节点及其设置

试一试:在“输出”下拉框选择“完整的消息对象”,结果会有什么不同呢?

 

若在调试窗口显示的为如图8所示的内容,则表明天气预报获取成功,其中包括获取天气的地区、最高温度、最低温度等信息。

image388

图8 调试窗口内容

(三)测试效果

单击部署按钮,待部署成功后观察调试输出的信息是否符合预期,如有问题,在老师或同学的帮助下逐一排查解决。最后,与同学分享自己的作品和经验。

五、挑战自我

根据本节课制作的天气预报提示器,我们可在调试窗口中获得很多有用或没用的信息。那么能否对此做出进一步的修改和完善,比如只输出最高温度和最低温度?动手试试吧。

六、扩展阅读

“函数”节点可允许用户根据自己的需要编写JavaScript代码,以便灵活的完成更多有趣的事情,如图9所示为函数节点及其默认设置。可将msg看成一个结构体,它下面可以有很多变量,若返回msg,则会把上一节点的所有信息输出出来,若返回msg.payload,则只输出payload值。默认输出的是payload,很多节点都默认接收payload。当然编写函数时,还可参考信息标签页进行编写。

 image390  image392

图9 函数节点及其默认设置

在本项目中,若想只输出最高温度的值,则要对截取的字符进行计算,再结合substring方法即可实现。在这里我们截取的字符是(58,60),需注意的是,这是左闭右开的情况,即只输出第58和59两个字符,如图10所示。

 image394  image396

图10 函数节点及其设置

做一做:根据最高温度的函数节点设置,尝试完成最低温度的函数节点设置。

参考流程如图11所示。

image398

图11 天气预报提示器改进版流程图

发表评论

电子邮件地址不会被公开。 必填项已用*标注

跳至工具栏