本文主要介绍如何使用 Wio Terminal 的 WiFi 网络获取天气数据。

WiFi 配置

Wio Terminal 配备的无线网卡是 Realtek RTL8720,在开始本次学习之前,请确保你已经阅读 Wio Terminal 网卡固件更新,并完成固件更新和 Arduino 依赖库的安装。

我们知道,WiFi 有两种工作模式:AP 模式和 STA 模式。

  • AP(Access Point)也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个 AP。
  • STA(Station)也就是站点,每一个连接到无线网络中的终端(如笔记本电脑、PDA 及其它可以联网的用户设备)都可称为一个站点。

在本示例中,Wio Terminal 工作在 STA 模式。下面代码使用 rpcWiFi 库将 Wio Terminal 连接到指定的 WiFi 网络。

提示:需要将 ssidpassword 修改为你的 WiFi 网络。

#include "rpcWiFi.h"const char* ssid = "yourNetworkName";
const char* password =  "yourNetworkPassword";void setup() {Serial.begin(115200);while(!Serial); // Wait for Serial to be ready// Set WiFi to station mode and disconnect from an AP if it was previously connectedWiFi.mode(WIFI_STA);WiFi.disconnect();Serial.println("Connecting to WiFi..");WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi..");WiFi.begin(ssid, password);}Serial.println("Connected to the WiFi network");Serial.print("IP Address: ");Serial.println (WiFi.localIP()); // prints out the device's IP address}void loop() {}

天气 API

有很多提供天气信息的 Web API,可以参考《一些好用的天气 API》,本文使用高德地图 API 获取实时天气及天气预测。GET 请求的 URL 如下:

实时天气(当天)

https://restapi.amap.com/v3/weather/weatherInfo?city=441802&key=yourkey

天气预测(未来三天)

https://restapi.amap.com/v3/weather/weatherInfo?city=441802&key=yourkey&extensions=all

参数说明:

  • city 是城市编码,比如 441802 代表广州;
  • key 是应用对应的代码,需要在平台申请(提示:将 yourkey 替换为你申请的 Key 代码);
  • extensions 表示获取类型,缺省值是 base,表示获取实况天气,all 表示获取预报天气;
  • output 表示返回格式,可选 JSON 或 XML,默认返回 JSON 格式数据。

以实时天气 API 为例,返回的 JSON 数据如下:

{"status":"1","count":"1","info":"OK","infocode":"10000","lives":[{"province":"广东","city":"广州市","adcode":"440100","weather":"晴","temperature":"17","winddirection":"北","windpower":"≤3","humidity":"64","reporttime":"2021-12-12 19:00:44"}]
}

HTTP 客户端

下面代码使用 HTTPClient 创建 HTTP 连接,通过高德地图 API 请求实况天气信息,并输出到串口。

提示:将下面代码中的 ssidpassword 替换成你的 WiFi 网络;将 URL 中的 cityCode 替换成需要查询的城市,将 yourKey 替换成你的 Key。

#include <rpcWiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>const char* ssid = "yourNetworkName";
const char* password =  "yourNetworkPassword";const char* URL = "https://restapi.amap.com/v3/weather/weatherInfo?city=cityCode&key=yourKey";WiFiClientSecure client;void setup()
{Serial.begin(115200);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) { //Check for the connectiondelay(500);Serial.println("Connecting WiFi...");}Serial.print("Connected to the WiFi network with IP: ");Serial.println(WiFi.localIP());//client.setCACert(test_root_ca);
}void loop()
{if(&client) {   getWeather();}delay(30000);
}void getWeather()
{// Add a scoping block for HTTPClient https to make sure it is destroyed before WiFiClientSecure *client isHTTPClient https;Serial.print("[HTTPS] begin...\n");if (https.begin(client, URL)){Serial.print("[HTTPS] GET...\n");int httpCode = https.GET();if (httpCode > 0){Serial.printf("[HTTPS] GET... code: %d\n", httpCode);if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {String payload = https.getString();Serial.println(payload);}} else {Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());}https.end();} else {Serial.printf("[HTTPS] Unable to connect\n");}// End extra scoping block
}

编译上传到 Wio Terminal,打开 Arduino IDE 的串口监视器,输出内容如下:

Connected to the WiFi network with IP: 192.168.3.189
[HTTPS] begin... weather lives
[HTTPS] GET...
[HTTPS] GET... code: 200
{"status":"1","count":"1","info":"OK","infocode":"10000","lives":[{"province":"广东","city":"清城区","adcode":"441802","weather":"晴","temperature":"19","winddirection":"东北","windpower":"≤3","humidity":"54","reporttime":"2021-12-12 12:30:59"}]}

Wio Terminal 从网络获取天气数据相关推荐

  1. Android Volley 库通过网络获取 JSON 数据

    本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...

  2. 基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据

    前言:上一章节我们通过串口调试助手,成功获取到天气数据,这一节我们将通过MCU的串口发送.接收功能,实现MCU获取天气数据. 传送门:基于STM32F103的网络天气时钟(1)---------通过串 ...

  3. python自动获取天气_用python获取天气数据,并作定时播报

    原标题:用python获取天气数据,并作定时播报 数据挖掘入门与实战 公众号: datadw 思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早 ...

  4. python获取天气数据_python获取天气数据

    三.具体实现 """ =================================== -*- coding:utf-8 -*- Author :GadyPu E_ ...

  5. 获取天气数据 (根据天气接口返回的数据)

    第一次写博客(如有侵权请通知我,立马删除) 获取天气数据 (根据天气接口返回的数据) 接口:心知天气 ulr:https://api.seniverse.com/v3/pro/weather/grid ...

  6. python自动获取天气_python获取天气数据

    """ =================================== -*- coding:utf-8 -*- Author :GadyPu E_mail :G ...

  7. 物联网开发笔记(94)- 使用Micropython开发ESP32开发板之获取天气数据并用ILI9341屏幕显示

    一.目的 这一节我们学习如何使用乐鑫的ESP32开发板通过心知天气API控获取实时天气的数据,并使用串口SPI控制ILI9341 液晶屏,显示出来. 二.环境 ESP32(固件:esp32-20220 ...

  8. Android使用和风天气接口获取天气数据在APP中展示天气

    公司APP项目需要能能够显示当前天气,网上找了很多天气数据接口,总结下来要么收费,要么用起来不友好,最后还是用了郭霖推荐的和风天气接口 这里记录一下自己的使用过程 首先注册和风天气个人开发者,认证时间 ...

  9. Python / Micropython 获取天气数据

    来观察一下这个带参数的网址,注意参数的语法: http://api.openweathermap.org/data/2.5/weather?q=Chengdu,CN&APPID=xxxxxx ...

最新文章

  1. 接触追踪解决方案建立在UWB而不是蓝牙上
  2. ASN.1简介及OpenSSL中ASN.1接口使用举例
  3. 创建型模式--单例模式
  4. php字符串常用算法--字符串加密解密
  5. java swing 右键_java swing制作右键菜单
  6. 计算机视觉经典论文整理
  7. excel打印预览在哪里_打印小心机:轮页眉页脚的重要性
  8. (超详细版)Linux下Hadoop2.7.1集群环境的搭建(3台为例)
  9. 【10月17日】2020年十月蓝桥杯A组题目【感想与总结】(热乎的)
  10. 关于一些3D数学基础的习题,感兴趣的同行进来帮帮忙啦。
  11. SQL之正则表达式的简单使用
  12. ( 科来网络分析系统 )简单的抓包步骤,具体的后面文章说
  13. 大咖说|翼辉丁晓华:我们已经真正意义上感受到了原始创新带来的巨大价值
  14. gg修改器修改数值没有用怎么办_gg修改器如何使用?gg修改器使用方法
  15. 京东宙斯php,京东联盟API申请
  16. 性能测试实战(二):性能测试基础
  17. win10升级助手_不用QQ也能电脑远程,win10这隐藏功能太良心了!真后悔发现太晚...
  18. 二级LOGO设计代表什么
  19. 360插件化Replugin爬坑之路
  20. LTE学习笔记4之物理层信道与信号

热门文章

  1. 手游逆向专题<英雄联盟手游>: Unity内还原亚索渲染效果
  2. Android利用ffmpeg压缩视频
  3. 解决SQLyog连接mysql报错:Your password has expired
  4. java集合结构----集合框架以及背后的数据结构
  5. JAVA基础加强篇08——集合
  6. 火狐浏览器(69版)修改起始页,主页和新标签页
  7. linux双显卡配置_Linux系统怎么配置双显卡
  8. 计算机导论模拟测试练习(2018年秋)F. 习题课一 G. 习题课二 H. 跳马
  9. 鸿蒙系统可以跟ios媲美吗,任正非再次确认:不需要2年,鸿蒙系统就可以媲美ios系统...
  10. 微信公众号运营,这些运营技巧不能少