はじめに
この記事は、obniz性能を検証するために、Openweather APIを用いて、現在の天候状況をKeyestudio_HT16K33に表示してみた。備考:Keyestudio_HT16K33の表示範囲の限界があるため、天候状況を表す英単語の先頭文字を抽出して表示した。例えば、曇りの場合は、Cloud⇒C;晴れの場合は、Sun⇒S
必要なもの
(1)obniz board(2)Keyestudio_HT16K33
(3)Openweather API
(4)Wi-Fi
Openweather APIの発行
Openweatherの公式サイト:ここから実装
APIから取得したJsonを日本語化しないので、そのままで使う。 以下はコードです。weather_API.js
const location = "Tokyo";
const APIKEY = 'Your APIKEY';
obniz.onconnect = async function() {
matrix = obniz.wired("Keyestudio_HT16K33", {
gnd:0,
vcc:1,
sda:2,
scl:3
});
};
obniz.onloop = async function() {
const data = await (await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${location}&units=metric&appid=${APIKEY}`
)).json();
const currentWeather = data.weather[0].main;
matrix.brightness(7);
const ctx = obniz.util.createCanvasContext(matrix.width, matrix.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, matrix.width, matrix.height);
ctx.fillStyle = "white";
ctx.font = "7px sans-serif";
const text = currentWeather.slice( 0, 1 ) //現在の天候状況を表す英単語の先頭文字を抽出
ctx.fillText(text, 1, 7);
matrix.draw(ctx);
}
ちなみに、天候状況を表す英単語は:
"Rain",
"Snow",
"Thunderstorm",
"Drizzle",
"Fog",
"Squall",
"Clouds",
"Mist",
"Smoke",
"Dust",
"Haze",
"Sand",
"Ash",
"Tornado",
"Sun",