秦皇岛岛主 发表于 2017-7-6 16:36:45

uPyCraft-micropython教程之获取天气

忙活了一天,终于有时间玩micropython了,一看时间是下午3点半,哭晕。。。。今天学习了一下http的get和post,用get请求完成了一个获取天气的应用,供大家参考学习一.注册网站
https://www.seniverse.com
使用它的免费服务,一天可以请求400次,基本天气信息都有了

二. 注册完成后会有API-KEY,请保存下来




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

四 开始实验
1.将uPy_Lib目录下的urequests.py拖动到板子的lib目录下(注意这个文件我做了更改,官方原版不支持params)
图片
2. 使用下面这个代码,保存成py文件,下载到板子上并运行
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'):
    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']['location']['name'])
    print(j['results']['now']['text'])
    print(j['results']['now']['temperature'])

五.实验效果



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

lkk255 发表于 2019-8-16 15:40:29

心知天气控制台是不是还要绑定api的呀,怎么测试都不成功~求指点

gada888 发表于 2020-6-30 21:50:16

学习学习

1028213292 发表于 2021-9-9 10:09:55

您好,urequests.py这个文件需要做哪些更改?刚开始学习,有点不懂
页: [1]
查看完整版本: uPyCraft-micropython教程之获取天气