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. // print status

  6. Serial.println("Running GetWeatherByAddress - Run #" + String(numRuns++) + "...");

  7. // create a TembooChoreo object to send a Choreo request to Temboo

  8. TembooChoreo GetWeatherByAddressChoreo;

  9. // invoke the Temboo client

  10. GetWeatherByAddressChoreo.begin();

  11. // add your temboo account info

  12. GetWeatherByAddressChoreo.setAccountName(TEMBOO_ACCOUNT);

  13. GetWeatherByAddressChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);

  14. GetWeatherByAddressChoreo.setAppKey(TEMBOO_APP_KEY);

  15. // set the name of the choreo we want to run

  16. GetWeatherByAddressChoreo.setChoreo("/Library/Yahoo/Weather/GetWeatherByAddress");

  17. // set choreo inputs; in this case, the address for which to retrieve weather data

  18. // the Temboo client provides standardized calls to 100+ cloud APIs

  19. GetWeatherByAddressChoreo.addInput("Address", ADDRESS_FOR_FORECAST);

  20. // add an output filter to extract the name of the city.

  21. GetWeatherByAddressChoreo.addOutputFilter("city", "/rss/channel/yweather:location/@city", "Response");

  22. // add an output filter to extract the current temperature

  23. GetWeatherByAddressChoreo.addOutputFilter("temperature", "/rss/channel/item/yweather:condition/@temp", "Response");

  24. // add an output filter to extract the date and time of the last report.

  25. GetWeatherByAddressChoreo.addOutputFilter("date", "/rss/channel/item/yweather:condition/@date", "Response");

  26. // run the choreo

  27. GetWeatherByAddressChoreo.run();

  28. // when the choreo results are available, print them to the serial monitor

  29. while(GetWeatherByAddressChoreo.available()) {

  30. char c = GetWeatherByAddressChoreo.read();

  31. Serial.print(c);

  32. }

  33. GetWeatherByAddressChoreo.close();

  34. }

复制代码

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

图6.运行结果

图7.应用状态流量监控

图8.应用状态请求事件

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

(0)

相关推荐