📝 はじめに
こんにちは、piyovate です!
これまで、Raspberry Piを活用して社内の温湿度を可視化するシステムを作ってきました。
このシステムでは、平日9時〜18時かつ営業日のみ温湿度を表示する仕様としていました。
今回はその制限を撤廃し、「常時表示」できるように仕様変更しました。
🎯 今回の概要
- 土日・祝日・営業時間外の判定処理を削除
-
checkBusinessStatus()
を削除し、判定処理そのものを撤廃 -
updateComfortStatus()
を常時実行、10分おきに更新 - ※せっかく祝日APIなどを整備していたので、少し悲しい気持ちもあります…😢
📌 これまでの仕様とその課題
これまでは以下のような条件付きで温湿度を表示していました:
- 土日・祝日は
"休業日"
- 平日でも 9:00〜18:00 を外れると
"営業時間外"
- 上記以外でのみ
"温度🥵 / 湿度💧"
のような絵文字付きで表示
これにより夜間や休日は温湿度の確認ができないという制限がありました。
そこで今回、判定処理をまるごと削除し、いつでも温湿度を確認できるようにしました。
🛠️ 実際の修正内容
✅ updateComfortStatus()
のみをシンプルに残す
// 表示更新処理(判定なしで常時取得)
async function updateComfortStatus() {
const statusIcon = document.getElementById('status-icon');
const menuStatusIcon = document.getElementById('menu-status-icon');
try {
const res = await fetch(ENV_CONFIG.rasPiPico_apiUrl);
const data = await res.json();
const temp = data.temperature.replace('C', '');
const humid = data.humidity.replace('%', '');
const tempIcon = getTempEmoji(temp);
const humidIcon = getHumidEmoji(humid);
const displayText = `温度${tempIcon} / 湿度${humidIcon}`;
if (statusIcon) statusIcon.textContent = displayText;
if (menuStatusIcon) menuStatusIcon.textContent = displayText;
console.log(`表示内容: ${displayText}(温度:${temp}℃ 湿度:${humid}%)`);
} catch (err) {
console.error('データ取得エラー:', err);
const errorText = '⚠️データ取得エラー';
if (statusIcon) statusIcon.textContent = errorText;
if (menuStatusIcon) menuStatusIcon.textContent = errorText;
}
}
✅ 定期実行も変更なし(毎10分)
updateComfortStatus();
setInterval(updateComfortStatus, 600000); // 本番環境:10分
💭 補足
実は祝日APIで休日判定を自動化したり、定休日とマージしたりと、
それなりに頑張ってロジックを作っていたのですが……
この仕様変更で完全に不要になってしまいました 😭
ただし、**「使いやすさ最優先」**という意味では、常時表示は大きな改善です!
コードもスッキリして、メンテナンスしやすくなりました。
🔗 シリーズリンク
📚 シリーズ全記事はこちら:Qiitaストックページ