obniz:お天気取得
天気予報を取得して、obnizのディスプレイとPC/スマホ等の画面に天気予報を表示するプログラムです。
OpenWeatherMapのAPIを利用します。これには、利用者登録をしてAPI Keyを取得する必要があります。
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.13.0/obniz.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var tempMax;
var tempMin;
var weatherDesc;
// 取得する地域
var city = "Tokyo,jp";
var httpObj = new XMLHttpRequest();
// openweathermapからJSONデータ取得
httpObj.open("GET", "http://api.openweathermap.org/data/2.5/forecast?q=Tokyo,JP&appid=<<your API Key>>", true);
httpObj.onload = function(){
var data = JSON.parse(this.responseText); // JSON形式データを変換
var cityName = data.city.name; // 都市名を取得
// データ整形
var day = ["今日"];
var tag = "";
var Kelv = 273.16;
tag += "<p>" + cityName + "</p>";
tag += "<table>";
for(var i=0; i<1; i++){ // 明日とか取得する場合にはiを増やす
tempMax = Math.floor((Number(data.list[i].main.temp_max) - Kelv) * 10)/10 + " ℃"; // 最高気温
tempMin = Math.floor((Number(data.list[i].main.temp_min) - Kelv) * 10)/10 + " ℃"; // 最低気温
weatherDesc = data.list[i].weather[0].main;
var icon = "<img src='http://openweathermap.org/img/w/" + data.list[i].weather[0].icon + ".png'>"; // お天気アイコン
tag += "<tr>";
tag += "<td>" + day[i] + "</td>";
tag += "<td>" + icon + "</td>";
tag += "<td>最高</td><td>" + tempMax + "</td>";
tag += "<td>最低</td><td>" + tempMin + "</td>";
tag += "</tr>";
}
tag += "</table>";
var result = document.getElementById("result");
result.innerHTML = tag;
}
httpObj.send(null);
var weatherDate = new Date();
//年・月・日・曜日を取得
var year = weatherDate.getFullYear();
var month = weatherDate.getMonth()+1;
var week = weatherDate.getDay();
var day =weatherDate.getDate();
var yobi= new Array("日","月","火","水","木","金","土");
var obniz = new Obniz("<<your obniz ID>>");
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print(month+"月"+day+"日 "+yobi[week]+"曜日");
obniz.display.print("天気 : " + weatherDesc);
obniz.display.print("最高 : " + tempMax);
obniz.display.print("最低 : " + tempMin);
};
</script>
</head>
<body>
<h1>お天気情報取得</h1>
<div id="result">Getting weather...</div>
</body>
</html>
“人生は読めないブログ”さんの、”JavaScript:JSONを使ったお天気情報の取得”を参考にさせていただきました。