【雕爷学编程】MicroPython动手做(33)——物联网之天气预报2

news/2024/6/29 0:09:19

天气(自然现象)
是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象,即某瞬时内大气中各种气象要素(如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等)空间分布的综合表现。

天气过程就是一定地区的天气现象随时间的变化过程。各种天气系统都具有一定的空间尺度和时间尺度,而且各种尺度系统间相互交织、相互作用。许多天气系统的组合,构成大范围的天气形势,构成半球甚至全球的大气环流。天气系统总是处在不断新生、发展和消亡过程中,在不同发展阶段有着其相对应的天气现象分布。

在这里插入图片描述
天气预报
是应用大气变化的规律,根据当前及近期的天气形势,对某一地未来一定时期内的天气状况进行预测。它是根据对卫星云图和天气图的分析,结合有关气象资料、地形和季节特点、群众经验等综合研究后作出的。如我国中央气象台的卫星云图,就是我国制造的“风云一号”气象卫星摄取的。利用卫星云图照片进行分析,能提高天气预报的准确率。天气预报就时效的长短通常分为三种:短期天气预报(2~3天)、中期天气预报(4~9天),长期天气预报(10~15天以上),中央电视台每天播放的主要是短期天气预报。

天气预报的主要内容是一个地区或城市未来一段时期内的阴晴雨雪、最高最低气温、风向和风力及特殊的灾害性天气。就中国而言,气象台准确预报寒潮、台风、暴雨等自然灾害出现的位置和强度,就可以直接为工农业生产和群众生活服务。天气预报是根据气象观测资料,应用天气学、动力气象学、统计学的原理和方法,对某区域或某地点未来一定时段的天气状况作出定性或定量的预测。它是大气科学研究的一个重要目标。对人们生活有重要意义。

在这里插入图片描述
在这里插入图片描述
6、当地天气预报及六项生活指数

#MicroPython动手做(33)——物联网之天气预报
#当地天气预报及六项生活指数

from mpython import *
import network
import json
import urequests

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

def get_seni_weather(_url, _location):
    _url = _url + "&location=" + _location.replace(" ", "%20")
    response = urequests.get(_url)
    json = response.json()
    response.close()
    return json


w1 = get_seni_weather("https://api.seniverse.com/v3/weather/daily.json?key=SSY9pi-U4QH-ZDrf", "ip")
w2 = get_seni_weather("https://api.seniverse.com/v3/life/suggestion.json?key=SSY9pi-U4QH-ZDrf", "ip")
oled.fill(0)
oled.DispChar((''.join([str(x) for x in [w1["results"][0]["location"]["name"], "   ", w1["results"][0]["daily"][0]["text_day"], "   ", w1["results"][0]["daily"][0]["low"], "  - ", w1["results"][0]["daily"][0]["high"], " 度"]])), 0, 0, 1)
oled.DispChar((str("穿衣指数 : ") + str(w2["results"][0]["suggestion"]["dressing"]["brief"])), 0, 16, 1)
oled.DispChar((str("运动指数 : ") + str(w2["results"][0]["suggestion"]["sport"]["brief"])), 0, 32, 1)
oled.DispChar((str("紫外线指数 : ") + str(w2["results"][0]["suggestion"]["uv"]["brief"])), 0, 48, 1)
oled.show()

mPython X 实验图形编程

在这里插入图片描述

当地天气预报及六项生活指数

在这里插入图片描述

7、按下AB键查询今明二天的天气和生活指数

#MicroPython动手做(33)——物联网之天气预报
#按下AB键查询今明二天的天气和生活指数

from mpython import *
import network
import json
import urequests
import time
import music

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

def on_button_a_down(_):
    time.sleep_ms(10)
    if button_a.value() == 1: return
    music.play('G5:1')
    oled.fill(0)
    oled.DispChar((''.join([str(x) for x in [w1["results"][0]["location"]["name"], "今天", w1["results"][0]["daily"][0]["text_day"], "", w1["results"][0]["daily"][0]["low"], "  - ", w1["results"][0]["daily"][0]["high"], " 度", w1["results"][0]["daily"][0]["high"]]])), 0, 0, 1)
    oled.DispChar((str("穿衣指数 : ") + str(w2["results"][0]["suggestion"]["dressing"]["brief"])), 0, 16, 1)
    oled.DispChar((str("运动指数 : ") + str(w2["results"][0]["suggestion"]["sport"]["brief"])), 0, 32, 1)
    oled.DispChar((str("紫外线指数 : ") + str(w2["results"][0]["suggestion"]["uv"]["brief"])), 0, 48, 1)
    oled.show()

def on_button_b_down(_):
    time.sleep_ms(10)
    if button_b.value() == 1: return
    music.play('B5:1')
    oled.fill(0)
    oled.DispChar((''.join([str(x) for x in [w1["results"][0]["location"]["name"], "明天", w1["results"][0]["daily"][1]["text_day"], "  ", w1["results"][0]["daily"][1]["low"], "  - ", w1["results"][0]["daily"][1]["high"], " 度", w1["results"][0]["daily"][1]["high"]]])), 0, 0, 1)
    oled.DispChar((str("穿衣指数 : ") + str(w2["results"][0]["suggestion"]["dressing"]["brief"])), 0, 16, 1)
    oled.DispChar((str("感冒指数 : ") + str(w2["results"][0]["suggestion"]["flu"]["brief"])), 0, 32, 1)
    oled.DispChar((str("旅游指数 : ") + str(w2["results"][0]["suggestion"]["travel"]["brief"])), 0, 48, 1)
    oled.show()

def get_seni_weather(_url, _location):
    _url = _url + "&location=" + _location.replace(" ", "%20")
    response = urequests.get(_url)
    json = response.json()
    response.close()
    return json

button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)

button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)


w1 = get_seni_weather("https://api.seniverse.com/v3/weather/daily.json?key=SSY9pi-U4QH-ZDrf", "ip")
w2 = get_seni_weather("https://api.seniverse.com/v3/life/suggestion.json?key=SSY9pi-U4QH-ZDrf", "ip")
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
music.play('E5:1')
oled.fill(0)
oled.DispChar("按下AB键查询天气预报", 0, 16, 1)
oled.show()

mPython X 实验图形编程

在这里插入图片描述
在这里插入图片描述

按下AB键查询今明二天的天气和生活指数

在这里插入图片描述

8、使用mindplus sever服务器获取天气预报

无需注册,不用密钥,不要设置,挺简单的一个办法

#MicroPython动手做(33)——物联网之天气预报
#使用mindplus sever服务器获取天气预报

from mpython import *
import urequests
import network
import ntptime
import music
import json


brightness=9

weather_serveraddr = "http://server.mindplus.top"

weather_appid = "31982666"

weather_appsecret = "E6MtBcxQ"

def weather_getWeather(_weather, _city):
  if weather_serveraddr=="http://www.tianqiapi.com":
    nowResult = urequests.get(weather_serveraddr+"/api/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]
  else:
    nowResult = urequests.get(weather_serveraddr+"/api/weather/?appid="+weather_appid+"&appsecret="+weather_appsecret+"&version=v6&cityid="+_city)
    json=nowResult.json()
    nowResult.close()
    return json[_weather]


my_wifi = wifi()
my_wifi.connectWiFi("zhz","zy156721")
while not (my_wifi.sta.isconnected()):
  pass
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
oled.fill(0)
oled.DispChar("福建 福州", 0, (1-1)*16, 1)
oled.show()
ntptime.settime(8, "ntp.ntsc.ac.cn")
oled.DispChar(weather_getWeather("wea", "101230101"), 0, (2-1)*16, 1)
oled.DispChar((str("最低温度:") + str(weather_getWeather("tem2", "101230101"))), 0, (3-1)*16, 1)
oled.DispChar((str("最高温度:") + str(weather_getWeather("tem1", "101230101"))), 0, (4-1)*16, 1)
oled.show()

使用mindplus sever服务器获取天气预报

在这里插入图片描述

Mind+ 实验图形编程

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1405331.html

相关文章

8.1Jmeter5.1:Jmeter SSL

Jmeter配置证书请求双向认证SSL的web接口 需求:需要通过Jmeter配置证书请求双向认证SSL的web接口 提供的证书:P12格式 备注:Jmeter需要导入的证书是keystore证书 那么要先把P12转成keystore文件 1、使用p12生成keystore文件 keytool介绍 这里需要提到提到jdk自带的key…

. 在css中的应用

正好看到一个用 &. 的css语句,感觉不太明白就去查了一下,感觉C站上缺少相关内容,所以这里就来补上一篇 &. 实际上是一种sass语法,在 Sass 中 & 表示父选择器的引用,可以用于创建更具体的选择器&#xff0…

利用abapGit的离线模式导出、导入开发对象

1. 背景 abapGit是为ABAP服务器开发的开源Git客户端,用于在ABAP系统之间导入和导出ABAP对象。 使用abapGit,可以将ABAP对象从任何系统导出到另一个系统,通常是从本地系统导出到云,或者从一个云系统导出到另一个云系统。 当然从…

【LeetCode|编译原理】剑指 Offer 20. 表示数值的字符串

文章目录 题目链接标签步骤实现代码&#xff08;C&#xff09; 题目链接 剑指 Offer 20. 表示数值的字符串 标签 有限状态自动机(FA) 步骤 Step1. 去除字符串左、右空格&#xff1b; string strip(string str) {int start -1;for (int i 0; i < str.length(); i) {i…

sessionStorage的用法

1.存值 设置值的方式&#xff1a;setItem(String,String)&#xff0c;或者sessionStorage.key&#xff1a;这个key是可以随便直接取个名字就行了。 sessionStorage.setItem(a,111); // 将111的值存在了a的变量中注:设置的值只能是string&#xff0c;字符串&#xff0c;如果是…

阿里巴巴国际站、速卖通如何通过测评补单打造爆款产品?

在现如今竞争激烈的跨境电商行业中&#xff0c;测评补单虽然被认为是公开的秘密&#xff0c;但无论是消费者还是官方都对其持反感和不屑的态度。然而&#xff0c;在互联网时代&#xff0c;如果产品价格、运营等没有绝对的优势&#xff0c;尤其对于新手店铺&#xff0c;要在市场…

Shell脚本学习-while循环2

案例&#xff1a;使用while守护进程的方式监控网站&#xff0c;每隔10秒确定一次网站是否正常。 [rootvm1 scripts]# cat url_monitor1.sh #!/bin/bashif [ $# -ne 1 ]thenecho "USAGE: $0 url"exit 1 fiwhile true doif [ curl -I -s -w "%{http_code}" -…

RF PCB的9条改进型建议

1.小功率的RF的PCB设计中,主要使用标准的FR4材料(绝缘特性好、材质均匀、介电常数ε=4,10%)。主要使用4层~6层板,在成本非常敏感的情况下可以使用厚度在1mm以下的双面板,要保证反面是一个完整的地层,同时由于双面板的厚度在1mm以上,使得地层和信号层之间的FR4介质较厚,…