こんにちは、まめです。

前回は、温度・湿度を条件にして加湿器を自動で動かしました。
今回はその続きで、

「温湿度データを記録して、後から振り返れるようにする」
ことをやってみます。

自動化は、
記録 → 可視化 → 調整
この流れができると一気に実用度が上がります。

 

 

 


◆ 今回やること

  • 温度・湿度を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回】異常を検知して通知してみた(温度・湿度アラート)

  • 急激な温度変化を検知
  • しきい値超過で通知
  • 「見てなくても分かる」仕組み

ログ × 自動化の完成形に近づいてきます。


ここまで読んでいただき、ありがとうございます。
「この先も読んでみたい」と思ってもらえたら嬉しいです。