IoT・電子工作

Raspberry PiとPythonで作るIoTスマートホーム:温湿度センサーをLINEに通知する方法

「IoTって面白そうだけど、なんだか難しそう…」そんなふうに思っていませんか?

実は、Raspberry PiPython、そして無料で使えるLINE Messaging APIを組み合わせると、自宅の温度・湿度をスマホにリアルタイム通知するシステムが意外と簡単に作れます。今回はその仕組みをゼロからご紹介します 🎉

この記事はこんな方におすすめです。

  • ✅ Raspberry Piを持っているけど使い道に迷っている
  • ✅ Pythonの基礎は知っているけど電子工作は初めて
  • ✅ スマートホームに興味があって、まず何か作ってみたい

難易度は初〜中級者向けです。ざっくりとした流れがつかめるはずなので、ぜひ最後まで読んでみてください!

今回作るものの全体像

Raspberry Pi sensor
Raspberry Pi sensor / Photo by Pixabay via Pexels

まずは完成形をイメージしてみましょう。

イメージとしては「Raspberry Piが定期的に室温と湿度を測って、LINEに『今日の室温は28℃だよ』と報告してくれる秘書」のような感じです 📱

必要なものはこちら。

  • Raspberry Pi(3B以降推奨)
  • DHT11またはDHT22センサー(温湿度センサー)
  • ジャンパワイヤー数本
  • ブレッドボード(あると便利)
  • LINEアカウント(無料)

DHT11は安価で入手しやすいのでおすすめです。DHT22は精度が高い代わりに少し値が張りますが、どちらでも同じコードで動作します。

STEP 1:センサーの配線をしよう

DHT11センサーのピン配列を確認しておきましょう。センサーを正面から見たとき、左からVCC(電源)・DATA(データ)・GND(グランド)の順になっています。

Raspberry PiのGPIOピンとの接続はこのようにします。

  • VCC → Raspberry Pi の 3.3V ピン(1番ピン)
  • DATA → GPIO4(7番ピン)
  • GND → GNDピン(6番ピン)

⚠️ 配線ミスはセンサー故障の原因になるので、電源を入れる前に必ず確認しておきましょう。

STEP 2:Pythonライブラリをインストールする

Raspberry Piのターミナルを開いて、必要なライブラリを入れます。

# システムを最新化
sudo apt update && sudo apt upgrade -y

# pip3のインストール(未インストールの場合)
sudo apt install python3-pip -y

# Adafruitの公式DHT用ライブラリをインストール
pip3 install adafruit-circuitpython-dht
sudo apt install libgpiod2 -y

# HTTP通信用ライブラリ
pip3 install requests

ここが重要です。adafruit-circuitpython-dhtは古いAdafruit_DHTライブラリの後継で、現在のRaspberry Pi OSではこちらを使うのが正解です。古い情報のまま進めると動かないことがあるので要注意 ⚡

STEP 3:LINE Messaging APIの準備

LINEへの通知には、LINE Notifyを使うのが一番手軽です。

LINE Notifyのトークンを取得する手順はざっくりこんな感じです。

  1. LINE Notify公式サイト(notify-bot.line.me)にLINEアカウントでログイン
  2. 「マイページ」→「トークンを発行する」をクリック
  3. 通知を受け取りたいトーク名(自分宛て or グループ)を選択
  4. 発行されたトークンをコピーしておく(この画面を閉じると二度と見られないので注意!

トークンは後でコードに貼り付けます。絶対に他人に見せないようにしましょう 🔐

STEP 4:Pythonで温湿度を取得してLINEに送る

いよいよメインのコードです!ポイントを整理してから見てみましょう。

  • DHT11センサーから温度・湿度を取得する
  • 取得したデータをLINE Notifyに送信する
  • スケジューラで定期実行する(今回はscheduleライブラリを使用)
import time
import board
import adafruit_dht
import requests
import schedule

# ===== 設定エリア =====
LINE_TOKEN = "ここにLINE Notifyのトークンを貼り付ける"
NOTIFY_INTERVAL_MINUTES = 30  # 何分ごとに通知するか
# ======================

# DHT11センサーの初期化(GPIO4を使用)
dht_device = adafruit_dht.DHT11(board.D4)

def get_sensor_data():
    """センサーから温度・湿度を取得する関数"""
    try:
        temperature = dht_device.temperature  # 摂氏で取得
        humidity = dht_device.humidity        # %で取得
        return temperature, humidity
    except RuntimeError as e:
        # センサーは読み取りエラーが起きやすいので再試行する
        print(f"センサー読み取りエラー: {e}")
        return None, None

def send_line_notify(message):
    """LINE Notifyにメッセージを送信する関数"""
    url = "https://notify-api.line.me/api/notify"
    headers = {"Authorization": f"Bearer {LINE_TOKEN}"}
    payload = {"message": message}

    response = requests.post(url, headers=headers, data=payload)

    if response.status_code == 200:
        print("LINE通知を送信しました ✅")
    else:
        print(f"送信失敗: {response.status_code}")

def job():
    """定期実行される処理"""
    temperature, humidity = get_sensor_data()

    if temperature is not None and humidity is not None:
        message = (
            f"\n🌡️ 室温・湿度レポート"
            f"\n📍 温度: {temperature:.1f}℃"
            f"\n💧 湿度: {humidity:.1f}%"
            f"\n⏰ {time.strftime('%Y-%m-%d %H:%M')}"
        )
        send_line_notify(message)
    else:
        print("センサーデータの取得に失敗しました。再試行します…")

# 最初に1回すぐ実行
job()

# 指定した間隔で繰り返し実行
schedule.every(NOTIFY_INTERVAL_MINUTES).minutes.do(job)

print(f"{NOTIFY_INTERVAL_MINUTES}分ごとに温湿度をLINEに通知します。Ctrl+Cで停止。")

while True:
    schedule.run_pending()
    time.sleep(1)

コードのポイントをまとめるとこんな感じです。

  • adafruit_dht.DHT11(board.D4):GPIO4に接続したDHT11センサーを初期化
  • RuntimeErrorをキャッチ:DHT系センサーは読み取りに失敗することが多いので、エラー処理が必須
  • scheduleライブラリ:Pythonだけで簡単に定期実行を実現できる優れもの
  • LINE NotifyのエンドポイントにPOSTするだけ:とてもシンプルな仕組みですよね

scheduleライブラリがまだ入っていない場合はpip3 install scheduleを実行してください。

STEP 5:実行して動作確認しよう


コードをsmart_home.pyとして保存したら、以下のコマンドで実行します。

python3 smart_home.py

実行後すぐにLINEに通知が届けばOKです 🎊

もしセンサーのエラーが続く場合は、以下を確認しておきましょう。

  • ✅ 配線が正しく接続されているか
  • libgpiod2がインストールされているか
  • ✅ センサーのVCCが3.3Vにつながっているか(5Vだと壊れることがあります)

応用編:Raspberry Pi起動時に自動で動かす

毎回手動で起動するのは面倒ですよね。crontabを使えば、Raspberry Piが起動するたびに自動でスクリプトを実行できます。

# crontabを編集
crontab -e

# 以下の行を追加(ファイルパスは環境に合わせて変更)
@reboot python3 /home/pi/smart_home.py &

これでRaspberry Piを再起動するだけで、自動的にスマートホームシステムが動き始めます。一気に「本物感」が出ますよね 😄

まとめ


今回はRaspberry Pi・DHT11センサー・Python・LINE Notifyを組み合わせて、自宅の温湿度をスマホに通知するIoTシステムを作りました。

「IoTって難しそう」が「これ、自分でも作れる!」に変わったんじゃないでしょうか 💪

センサーをDHT22に変えれば精度がアップしますし、データをCSVに記録してグラフ化する、複数センサーで部屋ごとに監視するなど、アイデア次第でどんどん発展させられます。ぜひ自分だけのスマートホームを作ってみてください!

次回は、取得した温湿度データをグラフ化してダッシュボードを作る方法もご紹介する予定です。お楽しみに 🚀

📡 Arduinoをもっと深く学ぼう!

Arduino・ラズパイ・ロボットプログラミングを体系的に学びたい方へ。おすすめのUdemyコースや電子部品もまとめています。

Arduinoロボット入門のおすすめコース・部品を見る →

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

Arduinoをはじめよう 第4版 (Make: PROJECTS)

もしも

Arduinoをはじめよう 第4版 (Make: PROJECTS)

Arduino公式推薦の定番入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です