uPyCraft-micropython教程之获取天气

2017-07-061.5万
AI 快速预览详细 收起
本文介绍了如何使用uPyCraft-micropython通过HTTP GET请求获取天气信息。首先需要在seniverse网站注册并获取API-KEY,然后准备Firebeetle-ESP32或Firebeetle-ESP8266主板,并使用uPyCraft 0.21版本。通过修改urequests.py文件支持params参数,编写代码连接WiFi并发送GET请求,最终获取并打印出实时天气数据。这个项目简单易懂,适合家长和孩子一起学习编程。
忙活了一天,终于有时间玩micropython了,一看时间是下午3点半,哭晕。。。。今天学习了一下http的get和post,用get请求完成了一个获取天气的应用,供大家参考学习一.  注册网站
https://www.seniverse.com
使用它的免费服务,一天可以请求400次,基本天气信息都有了

二. 注册完成后会有API-KEY,请保存下来
uPyCraft-micropython教程之获取天气图2



三. 准备材料
   1. firebeetle-esp32或firebeetle-esp8266主板
   2. uPyCraft 0.21版本(7月6日发布)

四 开始实验
1.  将uPy_Lib目录下的urequests.py拖动到板子的lib目录下(注意这个文件我做了更改,官方原版不支持params)
图片
2. 使用下面这个代码,保存成py文件,下载到板子上并运行
[mw_shl_code=python,true]import urequests as requests
import time
import network
import ujson

API_KEY = 'mggxhv8zbogqbmqj'
UID = "UF239A86CE"

LOCATION = 'beijing'
URL = 'https://api.seniverse.com/v3/weather/now.json'
UNIT = 'c'
LANGUAGE = 'en'

SSID="DFROBOT_AP"
PASSWORD="12345678"
wlan=None
s=None

def connectWifi(ssid,passwd):
  global wlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid,passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
  return True

def fetchWeather(location):
    result = requests.get(URL, params={
        'key': API_KEY,
        'location': location,
        'language': LANGUAGE,
        'unit': UNIT
    })
    return result.text

if __name__ == '__main__':
    connectWifi(SSID,PASSWORD)
    result = fetchWeather(LOCATION)
    print(result)
    j=ujson.loads(result)
    print("\r\n\r\n")
    print(j['results'][0]['location']['name'])
    print(j['results'][0]['now']['text'])
    print(j['results'][0]['now']['temperature'])[/mw_shl_code]

五.  实验效果
uPyCraft-micropython教程之获取天气图1


看看北京的天气如何,竟然下雨了
将LOCATION改为chengdu,就可以查看我大成都天气了,方法简单,就不再上图了

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
1028213292
1028213292
您好,urequests.py这个文件需要做哪些更改?刚开始学习,有点不懂
gada888
gada888
学习学习
lkk255
lkk255
心知天气控制台是不是还要绑定api的呀,怎么测试都不成功~求指点
- 没有更多了 -