こんにちは、まめです。
前回は、温度・湿度を条件にして加湿器を自動で動かしました。
今回はその続きで、
「温湿度データを記録して、後から振り返れるようにする」
ことをやってみます。
自動化は、
記録 → 可視化 → 調整
この流れができると一気に実用度が上がります。
◆ 今回やること
- 温度・湿度をCSVファイルに保存する
- 日時付きでログを残す
- Pythonでグラフを作る
難しそうに見えますが、やることはシンプルです。
◆ まずはデータをCSVに保存する
今回は、1行ずつ追記していく形でログを残します。
import requests
import csv
from datetime import datetime
import os
TOKEN = "ここにあなたのAPIトークン"
HEADERS = {
"Authorization": TOKEN,
"Content-Type": "application/json; charset=utf8"
}
METER_ID = "温湿度計のdeviceId"
CSV_FILE = "temperature_log.csv"
def get_status(device_id):
url = f"https://api.switch-bot.com/v1.1/devices/{device_id}/status"
res = requests.get(url, headers=HEADERS)
return res.json()["body"]
status = get_status(METER_ID)
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
temperature = status["temperature"]
humidity = status["humidity"]
file_exists = os.path.isfile(CSV_FILE)
with open(CSV_FILE, "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow(["datetime", "temperature", "humidity"])
writer.writerow([now, temperature, humidity])
print("ログを保存しました")
これを定期実行すれば、
自動で温湿度ログが溜まっていく仕組みになります。
◆ 保存されたCSVの中身
datetime,temperature,humidity 2025-01-01 08:00:00,22.4,48 2025-01-01 09:00:00,23.1,45 2025-01-01 10:00:00,23.5,42
とてもシンプルですが、これで十分です。
◆ グラフを作ってみる
次に、このCSVを読み込んでグラフ化します。
まずは必要なライブラリをインストールします。
pip install matplotlib pandas
そして、グラフ作成用のコードです。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("temperature_log.csv")
df["datetime"] = pd.to_datetime(df["datetime"])
plt.figure(figsize=(10, 5))
plt.plot(df["datetime"], df["temperature"], label="Temperature")
plt.plot(df["datetime"], df["humidity"], label="Humidity")
plt.xlabel("Time")
plt.ylabel("Value")
plt.legend()
plt.tight_layout()
plt.show()
◆ 何が分かるようになる?
- 部屋が暑くなりやすい時間帯
- 加湿器が効いているかどうか
- しきい値が適切かどうか
「なんとなく快適」から、
データを見て調整する段階に進めます。
◆ 応用アイデア
- 1日・1週間・1か月単位で集計
- 電池残量も一緒に記録
- Googleスプレッドシートに保存
ここまで来ると、完全に自分専用の環境モニタリングです。
◆ 次回予告
次回は、今回のログをさらに活かします。
【第6回】異常を検知して通知してみた(温度・湿度アラート)
- 急激な温度変化を検知
- しきい値超過で通知
- 「見てなくても分かる」仕組み
ログ × 自動化の完成形に近づいてきます。
ここまで読んでいただき、ありがとうございます。
「この先も読んでみたい」と思ってもらえたら嬉しいです。
