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を使ったお天気情報の取得”を参考にさせていただきました。