4507|4

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

Arduino YúN 测评(三)Yahoo天气-TemBoo云 [复制链接]

开始体验Arduino YúN的云平台接入之旅了,为什么这块小板子会被命名为YúN呢,看完这篇文章相信大家会感叹设计者的才华。关于Arduino的发展历史在之前的测评中只字未提,直到我在知乎看到一个关于"Arduino 为什么这么红火?跟其它类似开发板的主要区别是什么?"的问题之后我想有必要简单说几点,因为从多数回答者对Arduino的认知来看,很多人对Arduino不足够认识。仅仅被认为是采用了爱特梅尔AVR 8bit单片机的入门级板卡,提供定制的IDE开发,使用类似c++封装的库进行开发,仅此而已,而且被贴上了"玩具"、"原型评估"等标签。   

从我手中的Arduino YúN板卡以及我对Arduino发展历史的综合认识之后我认为Arduino不仅仅是一款"玩具",更是一种时代发展的体现,为何当初Massimo Banzi 、David Cuartielles会设计出Arduino这种原型的板卡,不简简单单是个巧合,更多的是一种事物发展的规律和时代需求。而反观今天半导体行业种种芯片都提供傻瓜式的开发包和工具,比如各个厂商在控制器外设驱动代码采用图形化配置界面尝试(ST的Cube,FSL的PE等),软件开发组件图形化选择模式,拖拽式逻辑,图形化GUI设计理念等,都离不开这个主题。以及如今ARM大力推广的Mbed生态链都是一种创新的尝试,让开发变得更Easy,然而对于做底层的人习惯性的喜欢和REG打交道,不太适应时代的主题,不愿意接受新事物,总是认为这些仅仅是"玩具"、"原型评估"、"快速开发"等标签,从技术角度说这些东西确实不怎么好,起码不怎么接地气。但是我想说这是趋势,毕竟这些工作不是那么有思想性,完全可以用统一的模式来归一化处理。Arduino的库我之前也没什么好感,总感觉玩玩还行,用就算了吧,这种想法真是大错特错,IC的圈子这么庞大复杂,都靠个人开发真的太累了,关键是如果没有Arduino我想这些库也没有办法做到一次编写,人人使用的境界。




好了,回归正题,我们开始看Arduino原生支持最好的云平台TemBoo,主页是http://www.temboo.com,介绍性的文字这里就不赘述了,直接去官方了解吧,这样更快更直接更有效率。关于TemBoo的应用ArduinoYúN支持的是最好的也是最全面的,我们通过下面的图来看一下都支持哪些有趣的小项目,有发邮件、获取Yahoo天气服务等。


图1.TemBoo示例程序

这里我们使用获取Yahoo天气的例子来做一下演示,首选需要注册一个TemBoo的账户,然后创建一个应用,创建之后会生成账户TEMBOO_APP_KEY_NAME和TEMBOO_APP_KEY,这个需要填写到我们的代码中。关于temboo库的细节特性就不做过多介绍了,直接看官方的文档吧,很详细,大概提供100+ API供ArduinoYúN使用。


图2.应用信息

然后需要修改地址,也就是请求哪个地方的天气信息,这个支持多种调用方式,这里使用byAddress的方式,将地址修改为待查看天气的地址即可。这里我使用杭州为例,修改如下String ADDRESS_FOR_FORECAST = "Hangzhou, Zhejiang, China";

当然这里我们可以先通过这个地址查看杭州的天气信息,便于后面做比对使用,地址是 https://weather.yahoo.com/china/zhejiang/hangzhou-2132574/


图3.杭州天气温度&时间


图4.杭州天气风力

Yahoo不愧是大公司,前端做的漂亮,后台做的强悍,有些骨子里的东西真的不好超越,Arduino YúN也是,国人很难做出类似的"玩具"。


图5.代码全貌

代码很简单,主要是对 TembooChoreo GetWeatherByAddressChoreo的理解,参考官方的API文档。

  1. void loop()
  2. {
  3.   // while we haven't reached the max number of runs...
  4.   if (numRuns <= maxRuns) {
  5.       
  6.     // print status
  7.     Serial.println("Running GetWeatherByAddress - Run #" + String(numRuns++) + "...");

  8.     // create a TembooChoreo object to send a Choreo request to Temboo
  9.     TembooChoreo GetWeatherByAddressChoreo;
  10.    
  11.     // invoke the Temboo client
  12.     GetWeatherByAddressChoreo.begin();

  13.     // add your temboo account info
  14.     GetWeatherByAddressChoreo.setAccountName(TEMBOO_ACCOUNT);
  15.     GetWeatherByAddressChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
  16.     GetWeatherByAddressChoreo.setAppKey(TEMBOO_APP_KEY);
  17.    
  18.     // set the name of the choreo we want to run
  19.     GetWeatherByAddressChoreo.setChoreo("/Library/Yahoo/Weather/GetWeatherByAddress");
  20.    
  21.     // set choreo inputs; in this case, the address for which to retrieve weather data
  22.     // the Temboo client provides standardized calls to 100+ cloud APIs
  23.     GetWeatherByAddressChoreo.addInput("Address", ADDRESS_FOR_FORECAST);

  24.     // add an output filter to extract the name of the city.
  25.     GetWeatherByAddressChoreo.addOutputFilter("city", "/rss/channel/yweather:location/@city", "Response");
  26.    
  27.     // add an output filter to extract the current temperature
  28.     GetWeatherByAddressChoreo.addOutputFilter("temperature", "/rss/channel/item/yweather:condition/@temp", "Response");

  29.     // add an output filter to extract the date and time of the last report.
  30.     GetWeatherByAddressChoreo.addOutputFilter("date", "/rss/channel/item/yweather:condition/@date", "Response");

  31.     // run the choreo
  32.     GetWeatherByAddressChoreo.run();
  33.         
  34.     // when the choreo results are available, print them to the serial monitor
  35.     while(GetWeatherByAddressChoreo.available()) {
  36.          
  37.       char c = GetWeatherByAddressChoreo.read();   
  38.       Serial.print(c);
  39.     }
  40.     GetWeatherByAddressChoreo.close();

  41.   }
复制代码
最后编译上传程序,打开串口观察结果是否和前面网页上显示的一致,顺便帖两张TemBoo里面的应用状态图。


图6.运行结果


图7.应用状态流量监控


图8.应用状态请求事件

好了这篇测评就到这里了,想表达的东西很多,可惜楼主困了,思路有点乱也没构思怎么写,都是想到什么就敲下了什么,大家当消遣吧,不能算是专业的测评文字,下次再分享点有逻辑的文字,这板子很不错值得购买。

Arduino YúN 测评(一)简介/拆包

Arduino YúN 测评(二)大道至简


Arduino YúN 测评(四)OpenWRT生态







最新回复

我现在也挺喜欢这种简洁开发的形式,我觉得Arduino给整个行业带来的最大一个变革,就是改变了传统的reg和lib的开发,把封装再拔高到模块和接口,甚至找到一种更简单的面向设计师的语言processing,不得不说它就是给爱好者而不是工程师打造的。反而这样做下来爱好者也能用的很好,工程师也能很快的做出效果给自己信心。  详情 回复 发表于 2015-9-10 13:06
点赞 关注
个人签名电工
 

回复
举报

1274

帖子

2

TA的资源

版主

沙发
 
 

回复

7628

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 
我现在也挺喜欢这种简洁开发的形式,我觉得Arduino给整个行业带来的最大一个变革,就是改变了传统的reg和lib的开发,把封装再拔高到模块和接口,甚至找到一种更简单的面向设计师的语言processing,不得不说它就是给爱好者而不是工程师打造的。反而这样做下来爱好者也能用的很好,工程师也能很快的做出效果给自己信心。

点评

free回复的深刻啊,我越来越喜欢这种方式了  详情 回复 发表于 2015-9-10 13:40
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

4
 
freebsder 发表于 2015-9-10 13:06
我现在也挺喜欢这种简洁开发的形式,我觉得Arduino给整个行业带来的最大一个变革,就是改变了传统的reg和li ...

free回复的深刻啊,我越来越喜欢这种方式了
个人签名电工
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

5
 
2015-09-10 20:38 更新
修改了三处错别字。。
个人签名电工
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表