OpenWeather 公司在其網(wǎng)站 OpenWeatherMap https://openweathermap.org上提供天氣數(shù)據(jù)和預(yù)報(bào)以供檢索。這些數(shù)據(jù)可以集成到您自己的應(yīng)用程序中。可以通過(guò)提供的API 通過(guò) REST 接口進(jìn)行檢索,從而可以自動(dòng)化集成。除了收費(fèi)的詳細(xì)長(zhǎng)期預(yù)報(bào)外,還可以免費(fèi)調(diào)用當(dāng)前天氣數(shù)據(jù)和短期預(yù)報(bào)。

帶有 OPC Router的 REST 開(kāi)放天氣
以OpenWeatherMap為例,我們展示了使用OPC Router REST Plug-in來(lái)調(diào)用REST API 接口并展示如何
- 從 OpenWeatherMap 檢索天氣數(shù)據(jù)
- 處理 JSON 天氣數(shù)據(jù)
- 可以使用SQL Server 插件將數(shù)據(jù)存儲(chǔ)在 SQL 數(shù)據(jù)庫(kù)中
- 天氣數(shù)據(jù)可以使用 Telegram 插件通過(guò)電報(bào)發(fā)送
Weather API,天氣數(shù)據(jù)的 REST 接口
REST 接口是基于 Web 技術(shù)的數(shù)據(jù)接口。可以通過(guò) https 協(xié)議從 REST API 檢索數(shù)據(jù)。從技術(shù)上講,網(wǎng)頁(yè)是通過(guò) URL 調(diào)用的,就像在瀏覽器中一樣。參數(shù)被傳遞給網(wǎng)頁(yè)調(diào)用,這些參數(shù)作為參數(shù)字段附加到 URL。參數(shù)的含義在各自的REST API 文檔中定義。對(duì)于 OpenWeather 的 Weather API,文檔可在https://openweathermap.org/api在線獲取。對(duì)于每種形式的數(shù)據(jù)檢索(當(dāng)前天氣、每日預(yù)報(bào)/5 天/16 天/30 天等),都有一個(gè)單獨(dú)的REST API 端點(diǎn)(調(diào)用 URL)。
檢索倫敦當(dāng)前天氣的示例如下所示:JSON 格式的結(jié)果數(shù)據(jù)(調(diào)用僅返回測(cè)試數(shù)據(jù))
參數(shù)“q”包含城市和國(guó)家代碼。REST API 端點(diǎn)是“天氣”。參數(shù)通過(guò)“?”附加到端點(diǎn) 并用“&”鏈接。每個(gè)參數(shù)都用名稱和值聲明,用“=”分隔。
Weather API 使用參數(shù)“appid”作為身份驗(yàn)證來(lái)識(shí)別檢索客戶端。對(duì)于您自己的測(cè)試設(shè)置,您必須請(qǐng)求自己的 App-ID 來(lái)進(jìn)行數(shù)據(jù)檢索。App-ID 或 API KEY 可通過(guò)以下頁(yè)面https://home.openweathermap.org/users/sign_up注冊(cè)獲取。然后可以在“API 密鑰”下的用戶區(qū)域中查看 API KEY。
此處記錄了檢索任何位置的當(dāng)前天氣的描述:https ://openweathermap.org/current
OPC Router中 REST 接口的連接
為了使用 OPC Router 調(diào)用 REST 端點(diǎn),第一步是將 REST Plug-in 引入 HOST。為此創(chuàng)建了以下條目:
既然主機(jī)對(duì)于調(diào)用是已知的,一個(gè) REST 傳輸對(duì)象就可以在使用創(chuàng)建的主機(jī)的 OPC Router連接中使用。然后在傳輸對(duì)象中選擇相應(yīng)的端點(diǎn)并確定參數(shù)。對(duì)于當(dāng)前天氣的檢索,使用“天氣”端點(diǎn),在這種情況下,位置由位置 ID 確定(此處為 Schenefeld,ID=2839763)。
要查找您所在位置的 ID,只需在主頁(yè) ( https://openweathermap.org )上搜索您的城市。在您所在城市的預(yù)測(cè)頁(yè)面中,可以在 URL 中找到 ID:https: //openweathermap.org/city/ 2839763
此處使用 GET 作為 REST 方法,參數(shù)作為“QueryString”傳遞。按 ID 檢索當(dāng)前天氣的文檔可在此處找到:https ://openweathermap.org/current#cityid
通過(guò) REST 作為 JSON 文檔檢索天氣數(shù)據(jù)
REST API 調(diào)用返回一個(gè)帶有天氣數(shù)據(jù)的 JSON 文檔。此 JSON 文檔可以傳輸?shù)?/font>OPC Router連接中的JSON 傳輸對(duì)象:
執(zhí)行連接后,即可使用 JSON 結(jié)構(gòu)信息。因此,已經(jīng)在連接中放置了一個(gè) 30 秒的觸發(fā)器,并且已經(jīng)發(fā)布了連接,以便可以執(zhí)行它。
執(zhí)行連接后,可以在 JSON 傳輸對(duì)象的配置中使用“建議”功能來(lái)確定 JSON 文檔中的可用字段并使其可供選擇。箭頭按鈕可用于選擇要在連接中使用的字段。
對(duì)于這個(gè)例子,一些關(guān)于當(dāng)前天氣的基本信息是從 JSON 文檔中選擇的(溫度、氣壓、濕度、最低/最高每日溫度、風(fēng)速和風(fēng)向)。選擇數(shù)據(jù)字段后,將相應(yīng)顯示傳輸對(duì)象。
在 SQL 數(shù)據(jù)庫(kù)中存儲(chǔ)天氣數(shù)據(jù)
現(xiàn)在可以根據(jù)需要進(jìn)一步處理檢索到的天氣數(shù)據(jù)。在示例中,我們將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中并將其發(fā)送到消息服務(wù)。
OPC Router的 SQL Server 插件可用于將數(shù)據(jù)存儲(chǔ)在MS SQL 數(shù)據(jù)庫(kù)中。在插件配置中,指定了 SQL 數(shù)據(jù)庫(kù)的常用連接參數(shù),然后在選擇傳輸對(duì)象時(shí)可以使用表和存儲(chǔ)過(guò)程。該示例顯示了一個(gè)數(shù)據(jù)庫(kù)“天氣”,其中一個(gè)表“TBL_WEATHER_CURRENT”作為當(dāng)前天氣數(shù)據(jù)的存儲(chǔ)位置。選擇表并標(biāo)記要使用的列。
通過(guò)電報(bào)發(fā)送天氣信息
Telegram 插件不僅可用于通過(guò) SQL 分發(fā)天氣數(shù)據(jù),還可以作為示例直接通過(guò)推送消息到移動(dòng)設(shè)備(例如手機(jī))。使用 Telegram 插件可以連接所謂的Telegram Bot 。一方面,機(jī)器人可用于從移動(dòng)用戶向 OPC Router發(fā)送活動(dòng)命令,另一方面 OPC Router也可以向注冊(cè)用戶發(fā)送活動(dòng)消息。
對(duì)于我們的示例,我們生成了一個(gè)電報(bào)機(jī)器人,用于分發(fā)天氣信息。通過(guò) Telegram 應(yīng)用程序生成一個(gè)機(jī)器人:
最終結(jié)果:從 OpenWeather 到 SQL Server 再到 Telegram
除了 SQL Server 插件和 Telegram 插件之外,還有許多其他插件可用,通過(guò)這些插件可以將天氣數(shù)據(jù)傳輸?shù)礁鞣N系統(tǒng),以便根據(jù)天氣提供信息或優(yōu)化流程。