WFduino第31課JSON格式資料運用

開放資料 (英語:Open data) 指的是一種經過挑選與許可的資料,這些資料不受著作權專利權,以及其他管理機制所限制,可以開放給社會公眾,任何人都可以自由出版使用,不論是要拿來出版或是做其他的運用都不加以限制。(註1)

政府資訊公開法(註2)有政府資訊公開的相關規定,行政院及各縣市政府也都有相關資料公開網站。(註3)

這些開放的資料很多都是使用JSON格式(註4),因此使用時需要一點點技巧。

WFduino使用了幾個積木,幫助學生可以簡單的解讀這些資料。

——————————–

積木說明

————————

填上將要讀取資料的來源網站網址(副檔名為.json)

JSON資料檔一般都有很多筆資料,每一筆資料裡面有很多不同的欄位存放不同的資料。

填入要讀取第幾筆資料,和要讀取的欄位名稱,執行時就會去找到該筆資料

然後就可以顯示該筆資料內容

可以顯示這個JSON資料檔總共有幾筆資料。

注意:

1.因為網路讀取資料,會因網路品質影響讀取速度,請加[等待…秒],讓資料能順利讀取。

2.因為scratch積木限制,欄位名稱[content]無法直接輸入,請新增變數,再使用設定變數為欄位名稱的方式,填上變數。或是用清單列表。

—————————————

高雄捷運站列車到站廣播系統(資料來源已經不存在)

—————————————-

讀取高捷左營站的列車到站時間資料,顯示資料並說出下一班列車到站時間。

1.高雄捷運動態資料下載,請點選[https://data.kaohsiung.gov.tw/opendata/DetailList_Mrt.aspx],選擇站點,按下載

 

2.將JSON檔網址複製下來,左營站的網址是:[https://data.kaohsiung.gov.tw/opendata/MrtJsonGet.aspx?site=115]

3.啟動WFduino

4.[雲端積木]前面的方框打勾

5.設計程式

程式說明:

1.主畫面

2.主程式:

1.設定讀取的json檔欄位為[arrival]

2.重複讀取、顯示、廣播到站資料。

3.[說zh這裡是高雄捷運左營站],說出站名

4.[雲端資料JSON從(https://data.kaohsiung.gov.tw/opendata/MrtJsonGet.aspx?site=115)取得],設定要讀取高捷左營站的資料,前面先取得網址。

5.[讀取第1筆欄位(MRT)的雲端資料],讀取json檔第1筆資料中欄位為[arrival]的資料。這裡是指[往南岡山]下一班列車到站時間。

6.[等待5秒],確定網路資料傳輸

7.[說zh………],說出[往南岡山]下一班列車到站時間。

8.讀取第2筆往小港的資料並說出。

程式下載:高捷.sb2

參考資料:蔣天華老師講義

延伸:

1.當到站時,廣播的台詞應該要不同,請修改。

2.配合 [新DiFi第21課OLED(有機發光二極體) ]或[WFduino第33課液晶顯示器(LCD)]或[新DiFi第19課液晶顯示器(LCD)],可以在OLED或LCD上顯示到站資訊。

———————————————

空氣品質指標(AQI)自動警報系統

———————————————

1.啟動WFduino

2.[雲端積木]前面的方框打勾

3.到 (行政院環境保護署-空氣品質監測網) 點連結  http://taqm.epa.gov.tw/taqm/tw/AqiMap.aspx  ,查離學校最近的測站名稱,記下來。

4.點右邊連結 [ AQI.sb2   ] (868-3737848.sb2)下載程式,開啟。

5.點右上角[綠旗],輸入[測站名稱],按[Enter]

6.自動顯示現在的AQI值及警示畫面。

PS:測站名稱前的1閃爍表示正在搜尋資料,請稍後。

程式說明:

A、舞台:

用不同顏色來表示空氣品質

B、主程式:

1.先提問[測站名稱],將答案(測站名稱)存入列表備用。

2.到環保署公開資料庫(註5),讀取json資料。

3.先計算要讀的測站是第幾筆資料。

4.讀取測站的AQI值,並加上時間記錄在硬碟中。(註6)

5.依據AQI值,判斷要顯示(說)哪一種警告畫面及背景。(註7)
    請自行發揮創意設計。

6.修改程式下面的等待時間可以改變讀取更新的時間。

也可以再加上設定,當空氣品質不好超標時,自動在line群組發出警示訊息,通知全校(群組)老師。

請參考:
WFduino第29課家電也會和你line
http://blog.ilc.edu.tw/blog/blog/868/post/97509/675501

————————————–

PM2.5自動警報系統

———————————–

1.啟動WFduino

2.[雲端積木]前面的方框打勾

3.到 (行政院環境保護署-空氣品質監測網) 點連結  http://taqm.epa.gov.tw/taqm/tw/AqiMap.aspx  ,查離學校最近的測站名稱,記下來。

4.點右邊連結 [ PM2.5.sb2  ] (https://2blog.ilc.edu.tw/wp-content/uploads/sites/268/868/868-3740572.sb2)下載程式,開啟。

5.點右上角[綠旗],輸入[測站名稱],按[Enter]

6.自動顯示現在的PM2.5值及警示畫面。

程式說明:

A、舞台:

用不同顏色來表示PM2.5濃度

B、主程式:

1.先提問[測站名稱],將答案(測站名稱)存入列表備用。

2.到環保署公開資料庫(註5),讀取json資料。

3.先計算要讀的測站是第幾筆資料。

4.讀取測站的PM2.5值,並加上時間記錄在硬碟中。(註6)

5.依據PM2.5值,判斷要顯示(說)哪一種警告畫面及背景。(註7)
    請自行發揮創意設計。

6.修改程式下面的等待時間可以改變讀取更新的時間。

也可以再加上設定,當空氣品質不好超標時,自動在line群組發出警示訊息,通知全校(群組)老師。

請參考:
WFduino第29課家電也會和你line
http://blog.ilc.edu.tw/blog/blog/868/post/97509/675501

——————————————

顯示所有空氣品質監測資料

——————————————

1.啟動WFduino

2.[雲端積木]前面的方框打勾

3.到 (行政院環境保護署-空氣品質監測網) 點連結  http://taqm.epa.gov.tw/taqm/tw/AqiMap.aspx  ,查離學校最近的測站名稱,記下來。

4.點右邊連結 [ 空氣品質監測資料(修改).sb2  ] (https://2blog.ilc.edu.tw/wp-content/uploads/sites/268/868/868-3740629.sb2)下載程式,開啟。

5.點右上角[綠旗],輸入[測站名稱],按[Enter]

6.自動顯示現在的空氣品質監測值。

程式說明:

1.先提問[測站名稱],將答案(測站名稱)存入列表備用。

2.到環保署公開資料庫(註5),讀取json資料。

3.先計算要讀的測站是第幾筆資料。

4.製作一個[監測值名稱]的清單,將要讀取的監測值名稱依序填入。

4.依序讀取測站的各項監測值,並加上時間記錄在硬碟中。(註6)

5.修改程式下面的等待時間可以改變讀取更新的時間。

注意:資料寫入清單請加上等待時間,避免寫入錯誤。

—————————————————————-

儲存資料再利用(google試算表轉換成JSON格式)

—————————————————————–

1.將上面儲存的[air.txt]檔案,存到google雲端硬碟變成google試算表。

請參考WFduino第二十六課資料存取(http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968)

再到第一列上面插入一列空白列,將各欄位名稱填上去。

2.點[檔案],[發佈到網路]

3.點[發佈],[確定]。將google試算表發佈出去。

4.將試算表網址中的[代碼]複製下來(/d/……………./edit#gid)/d/後面到/edit#之間的字,例如:

https://docs.google.com/spreadsheets/d/1U23565222bbv0TZRGotfHVI/edit#gid=2096

5.將[代碼]貼在下面網址中間,

https://spreadsheets.google.com/feeds/list/[代碼]/1/public/values?alt=json

例如:https://spreadsheets.google.com/feeds/list/1U23565222bbv0TZRGotfHVI/1/public/values?alt=json

就完成google試算表的JSON格式了。

6.將上面網址貼在瀏覽器就可以看到google試算表的JSON檔

7.程式運用

取用資料時,讀取積木上的欄位名稱要記得是 [  gsx$+google試算表的欄位名稱 ]

例如:google試算表的欄位名稱為[time],積木上的欄位名稱要變成[gsx$time],要小寫喔

檔案下載:google試算表轉換成JSON.sb2

檔案網址請修改成您的網址才能正確顯示喔!

延伸:

google表單收集的資料,可以製作google試算表,也可以轉成JSON格式,讓scratch使用。

———————-

延伸:

1.中研院PM2.5 開放資料入口網站

https://pm25.lass-net.org/zh_tw/

JSON 格式 API(更新頻率:每 5 分鐘)

空氣盒子的PM2.5開放資料網址如下:

https://pm25.lass-net.org/data/last-all-airbox.json

請寫程式將您家附近測站的PM2.5資料抓下使用。

2.南投地區PM2.5開放資料網址如下:

http://www.airq.org.tw/Home/AboutData_ZH

JSON 格式 API(更新頻率:每 10分鐘)

http://www.airq.org.tw/Home/realtime10m

請寫程式將您家附近測站的PM2.5資料抓下使用。

——————–

註1:
https://zh.wikipedia.org/wiki/%E9%96%8B%E6%94%BE%E8%B3%87%E6%96%99

註2:政府資訊公開法
http://law.moj.gov.tw/LawClass/LawAll.aspx?PCode=I0020026

註3:政府資料開放平臺 http://data.gov.tw/

政府資料開放平臺,是中華民國政府根據《政府資訊公開法》規定,採開放資料的精神,所建立的一個跨部門計畫。

該計畫目前採取了CSV、XML、JSON、OLAP、TXT等格式提供資料集,任何人(包括企業)在其使用規範內,可以利用該平臺所提供的開放資料自由運用(包括重製、改作、公開傳輸、產生衍生物等)。 

註4:
https://zh.wikipedia.org/wiki/JSON#WEB.E5.BC.80.E5.8F.91
JSON(JavaScript Object Notation)是一種由道格拉斯·克羅克福特構想設計、輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。儘管JSON是Javascript的一個子集,但JSON是獨立於語言的文字格式,並且採用了類似於C語言家族的一些習慣。

JSON原始檔格式不容易判讀,可以利用線上編輯器整理,讓資料更容易觀看。

點 http://json2table.com/ 開啟轉換網頁

將原來的JSON網頁內容,全選複製後貼上這個網頁的最左邊那一欄。

然後點上面的 [ > ] 

再點上面的 [ Table ]或 [Tree],就可以看到比較整齊的列表。

註5:OpenData.epa 行政院環境保護署 環境資源資料開放平台
http://opendata.epa.gov.tw/
空氣品質指標(AQI)資料說明

http://opendata.epa.gov.tw/Data/Details/AQI/?show=all

主要欄位說明測站名稱(SiteName)、縣市(County)、空氣品質指標(AQI)、空氣污染指標物(Pollutant)、狀態(Status)、二氧化硫(ppb)(SO2)、一氧化碳(ppm)(CO)、一氧化碳8小時移動平均(ppb)(CO_8hr)、臭氧(ppb)(O3)、臭氧8小時移動平均(ppb)(O3_8hr)、懸浮微粒(μg/m3)(PM10)、細懸浮微粒(μg/m3)(PM2.5)、二氧化氮(ppb)(NO2)、氮氧化物(ppb)(NOx)、一氧化氮(ppb)(NO)、風速(m/sec)(WindSpeed)、風向(degrees)(WindDirec)、資料建置日期(DataCreationDate)、懸浮微粒移動平均值(μg/m3)(PM10_AVG)、細懸浮微粒移動平均值(μg/m3)(PM2.5_AVG)

空氣品質指標(AQI)資料
http://opendata2.epa.gov.tw/AQI.json

註6:資料存取應用請參考:
WFduino第二十六課資料存取 

http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968

註7:
http://taqm.epa.gov.tw/taqm/tw/b0201.html
空氣品質指標(AQI)與健康影響,空氣品質指標(AQI)與活動建議

註8:

http://taqm.epa.gov.tw/taqm/tw/b0201.aspx
空氣品質指標為依據監測資料將當日空氣中臭氧(O3)、細懸浮微粒(PM2.5)、懸浮微粒(PM10)、一氧化碳(CO)、二氧化硫(SO2)及二氧化氮(NO2)濃度等數值,以其對人體健康的影響程度,分別換算出不同污染物之副指標值,再以當日各副指標之最大值為該測站當日之空氣品質指標值(AQI)。

http://taqm.epa.gov.tw/taqm/tw/b0202.aspx
細懸浮微粒( PM2.5 )

PM2.5係指微粒氣動粒徑小於2.5微米,單位以微克/立方公尺表示之,由於PM2.5較PM10更容易深入人體肺部,對健康影響更大,若細微粒又附著其他污染物,將更加深呼吸系統之危害。
懸浮微粒( PM10 )
係指粒徑在10微米以下之粒子,又稱浮游塵。主要來源包括道路揚塵、車輛排放廢氣、露天燃燒、營建施工及農地耕作等,或由原生性空氣污染物轉化成之二次污染物,由於粒徑小於10微米以下,能深入人體肺部深處,如該粒子附著其他污染物,則將加深對呼吸系統之危害。
二氧化硫( SO2 )
除自然界產生外,一般為燃料中硫份燃燒與空氣中之氧結合者,為一具刺激臭味之無色氣體,易溶於水,與水反應為亞硫酸;於空氣中可氧化成亞硫酸,為引起酸雨的主要物質之一。
氮氧化物( NOx )
氮氧化物主要包括一氧化氮(NO)及二氧化氮(NO2),其生成原因係來自燃燒過程中,空氣中氮或燃料中氮化物氧化而成,一氧化氮為無色無味氣體,稍溶於水,燃燒過程生成之氮氧化物以一氧化氮為主要成份,光化學反應中可反應成二氧化氮。
二氧化氮為具刺激味道之赤褐色氣體,易溶於水,與水反應為亞硝酸及硝酸;參與光化學反應,吸收陽光後分解成一氧化氮及氧,在空氣中可氧化成硝酸鹽,亦是造成雨水酸化原因之一。
一氧化碳( CO )
除森林火災、甲烷氧化及生物活動等自然現象產生外,主要來自石化等燃料之不完全燃燒產生,無色無味,比空氣輕,由於一氧化碳對血紅素的親和力比氧氣大得多,因此,可能造成人體及動物血液和組織中氧氣過低,而產生中毒現象。
臭氧( O3 )
係一種由氮氧化物、反應性碳氫化合物及日光照射後產生之二次汙染物。具強氧化力,對呼吸系統具刺激性,能引起咳嗽、氣喘、頭痛、疲倦及肺部之傷害,特別是對小孩、老人、病人或戶外運動者有較大影響,同時對於植物,包括農作物有不良影響,對於人造材料,諸如橡膠(輪胎等)及油漆等,均能造成危害。

http://taqm.epa.gov.tw/taqm/tw/b0203.aspx
即時空氣品質指標(AQI)計算方式如下:

各測項即時濃度依下列公式計算後,再對應下表得出O3、PM2.5、PM10、CO、SO2、 NO2等6個測項之即時副指標值,再取出其中最大值為即時空氣品質指標,該最大值測項即為指標污染物:

O3,8hr取最近連續8小時移動平均值 (例如今日上午10點發布的O3的8小時濃度平均值,是取今日上午2點至上午9點監測數據的平均值。)
O3取即時濃度值
PM2.50.5 × 前12小時平均 + 0.5 × 前4小時平均 (前4小時2筆有效,前12小時6筆有效)
PM100.5 × 前12小時平均 + 0.5 × 前4小時平均 (前4小時2筆有效,前12小時6筆有效)
CO取最近連續8小時移動平均值 (例如今日上午10點發布的CO的8小時濃度平均值,是取今日上午2點至上午9點監測數據的平均值。)
SO2取即時濃度值
SO2,24hr取最近連續24小時濃度平均值 (例如今日上午10點發布的SO2的24小時濃度平均值,是取前1天上午10點至今日上午9點監測數據的平均值。)
NO2取即時濃度值

污染物濃度與即時副指標值對照表

    1. 一般以臭氧(O3)8小時值計算各地區之空氣品質指標(AQI)。但部分地區以臭氧(O3)小時值計算空氣品質指標(AQI)是更具有預警性,在此情況下,臭氧(O3)8小時與臭氧(O3)1小時之空氣品質指標(AQI)則皆計算之,取兩者之最大值作為空氣品質指標(AQI)。
    2. 空氣品質指標(AQI)301以上之指標值,是以臭氧(O3)小時值計算之,不以臭氧(O3)8小時值計算之。
    3. 空氣品質指標(AQI)200以上之指標值,是以二氧化硫(SO2)24小時值計算之,不以二氧化硫(SO2)小時值計算之。

    —————————————

    相關連結:

    PM2.5環境監測超簡單(第二十四課) 
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/652136

    WFduino第二十六課資料存取 
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968

    空氣品質指標(AQI)自動警報系統(簡易版) 
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/677018

    空氣品質指標(AQI)自動警報系統(WFduino第30課)
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/677043

    WFduino第29課家電也會和你line
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/675501

    課程目錄 
    http://blog.ilc.edu.tw/blog/blog/868/post/97509/64143 

    roc

    宜蘭縣國小資訊小站

    您可能也會喜歡…