取得天氣的網站:
國際組織OpenWeather:https://openweathermap.org/
1.註冊成為會員,網址:https://home.openweathermap.org/users/sign_up
2.收到確認信,請確認。
3.收到API-KEY的信,下圖塗掉即為敏哥上網申請的KEY。
4.測試,打開網頁,輸入下列網址,記得要換上您的KEY
http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID={your key}
5.選擇網站上Maps放大查詢百香果故鄉-埔里的氣象資料
6.改用URL查詢
https://api.openweathermap.org/data/2.5/weather?q=Buli,TW&units=metric&lang=zh_tw&appid={your key}
7.把上述資料,填入https://jsoneditoronline.org/,就可以觀察JSON格式
8. 使用IDLE撰寫讀取百香果故鄉氣象資料的程式,記得KEY要換成您申請的。
1 2 3 4 5 6 7 8 9 | import requests r = requests.get( 'https://api.openweathermap.org/data/2.5/weather?\ q=Buli,TW&units=metric&lang=zh_tw&\ appid={your key}' ) print(r.text) |
9.執行結果
10.轉換成json格式進行資料操作,記得KEY要換成您申請的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import requests import json r = requests.get( 'https://api.openweathermap.org/data/2.5/weather?\ q=Buli,TW&units=metric&lang=zh_tw&\ appid={your key}' ) j = json.loads(r.text) weatherID = j["weather"][0]["id"] # 天氣狀況代碼 weatherDesc = j["weather"][0]["description"] # 天氣狀況 print(weatherID) print(weatherDesc) print(r.text) |
11.執行結果
12.使用upycraft工具來編輯ESP8266的程式
boot.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Complete project details at https://RandomNerdTutorials.com try: import usocket as socket except: import socket from machine import Pin import network import esp esp.osdebug(None) import gc gc.collect() ssid = {your ssid} password = {your password} station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass print('Connection successful') print(station.ifconfig()) led = Pin(2, Pin.OUT) |
weather.py (本程式有參考旗標出版)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import network, urequests, ujson, machine res = urequests.get( # API 網址 "https://api.openweathermap.org/data/2.5/weather?" + "q=" + "Buli" + ",TW" + # 指定城市與國別 "&units=metric&lang=zh_tw&" + # 使用攝氏單位 "appid=" + # 以下填入註冊後取得的 API key {your key}) j = ujson.loads(res.text); # 從 JSON 轉成字典 gLED = machine.Pin(12, machine.Pin.OUT) # 控制綠燈 rLED = machine.Pin(15, machine.Pin.OUT) # 控制紅燈 weatherID = j["weather"][0]["id"] # 天氣狀況代碼 weatherDesc = j["weather"][0]["description"] # 天氣狀況 if weatherID < 800: # 雨天 rLED.value(1) # 亮紅燈 gLED.value(0) else: # 沒下雨 rLED.value(0) # 亮綠燈 gLED.value(1) print("目前天氣:", str(weatherID)) print("代碼意義:", weatherDesc ) |
13.記得存檔並下載到ESP8266,執行結果
延伸文章:https://passionfruittaiwan.blogspot.com/2020/05/python.html
沒有留言:
張貼留言