9785浏览
查看: 9785|回复: 3

[uPyCraft IDE] uPyCraft-micropython教程之获取天气

[复制链接]
忙活了一天,终于有时间玩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,就可以查看我大成都天气了,方法简单,就不再上图了

lkk255  中级技师

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

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

使用道具 举报

gada888  版主

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

学习学习
回复

使用道具 举报

1028213292  学徒

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

您好,urequests.py这个文件需要做哪些更改?刚开始学习,有点不懂
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail