SwitchBot温湿度計(ハブ2)で室温異常を無料でLINEに自動通知する方法【GAS+公式LINE Bot】

SwitchBot温湿度計で室温異常を無料でLINEに自動通知する方法【GAS+公式LINE Bot】 見守りグッズ
SwitchBot温湿度計で室温異常を無料でLINEに自動通知する方法【GAS+公式LINE Bot】
記事内に広告が含まれている場合があります。

家の室温が高すぎたり低すぎたりすると、自動でLINEに通知が届く――そんな便利な仕組みを、SwitchBotの温湿度計とGAS(GoogleAppsScript)、公式LINEBotを使って作ります。

全くの初心者である私が、これに挑戦する理由は、子どもたちがお留守番をする機会が増えたり、自分の部屋で寝るようになったことで、部屋の温度管理が以前より気になるようになりました。

まだエアコンを自分で調整できない子どもにとって、真夏にエアコンが壊れてしまったり、リモコンをうっかり押して設定が変わってしまうことは大きなリスクです。

特に暑い季節は命の危険にもつながります。

そこで今回は、SwitchBot温湿度計とGAS、そして公式LINEBotを連携させ、室温の異常を自動でLINE通知できる仕組みを作ります。

このLINE通知の仕組みを作るにあたって

  • SwitchBotトークン
  • SwitchBot温湿度計デバイスID
  • LINEチャネルアクセストークン
  • LINEユーザーID

というものが必要になります。

それぞれの取得方法は下記の記事でまとめていますので、まだ取得されていない方はまずはそれぞれのトークンとIDの取得を行いましょう。

初心者でもこの記事だけで完成させられるように、コードと設定方法をまとめました。

ここから先はSeitchBotLINEそれぞれのトークンとIDを取得した状態を前提としています。

1. 設定に使用したもの

この記事(SwitchBotハブから室温異常をLINE通知する方法)の手順では、実際に以下の機材を使って設定を行いました。

同じ環境で試したい場合は、同じ機材をそろえるとスムーズです。

  • SwitchBotトークン&デバイスID(前記事で取得済み)
  • LINEチャネルアクセストークン&ユーザID(前記事で取得済み)
  • SwitchBotハブ2(温度・湿度計測とハブ機能が1台になっている)
  • スマートフォン(iOS / Android)
  • SwitchBotアプリ
  • LINEアカウント(通知を受け取るために必要)
  • 公式LINEアカウント(通知を送信するために必要)
  • Googleアカウント(GoogleAppsScriptで使用)
SwitchBot
SwitchBot
開発元:wonderlabs, Incorporated
無料
posted withアプリーチ

2. 室温チェックと通知の流れ

  1. GASがSwitchBotAPIで室温を取得
  2. 設定した閾値(例:30℃以上または15℃以下)と比較
  3. 条件に一致したらLINEに通知
スポンサーリンク

3. GASコード(完成版)

以下のコードは

  • SwitchBotから温度を取得
  • 温度のチェックとLINE通知

を行うための完成版コードになります。

私はこのコード1つで室温異常の際にLINEに通知することが可能になりました。

そのままコピペして使用可能ですが、1〜4列目はそれぞれのトークン、IDに書き換えが必要です。

この完成版コードは次の手順で使用します。

通知機能を設定するには、事前にSwitchBotトークンとデバイスIDの取得方法LINEチャネルアクセストークン&ユーザーIDの取得方法を済ませておく必要があります。

// ————— 設定 —————
var SWITCHBOT_TOKEN = "あなたのSwitchBotトークン";          // SwitchBotアプリの開発者設定から取得
var DEVICE_ID = "あなたの温度計のデバイスID";                // SwitchBot APIから確認済みのID
var LINE_CHANNEL_ACCESS_TOKEN = "あなたのLINEチャネルアクセストークン"; // LINE Developersで発行した長期トークン
var LINE_USER_ID = "あなたのLINEユーザーID";                 // Webhookイベントで取得したUから始まるID

// ————— SwitchBotから温度を取得 —————
function getSwitchBotTemperature() {
  var url = "https://api.switch-bot.com/v1.1/devices/" + DEVICE_ID + "/status";
  var headers = { "Authorization": SWITCHBOT_TOKEN };
  var options = { method: "get", headers: headers };
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());

  if (data && data.body && typeof data.body.temperature !== "undefined") {
    return data.body.temperature;
  }
  return null;
}

// ————— LINEにメッセージ送信 —————
function sendLineMessage(message) {
  var url = "https://api.line.me/v2/bot/message/push";
  var payload = {
    to: LINE_USER_ID,
    messages: [{ type: "text", text: message }]
  };
  var options = {
    method: "post",
    contentType: "application/json",
    headers: { "Authorization": "Bearer " + LINE_CHANNEL_ACCESS_TOKEN },
    payload: JSON.stringify(payload)
  };
  UrlFetchApp.fetch(url, options);
}

// ————— 温度チェック&通知 —————
function checkTemperatureAndNotify() {
  var minEmergency = 16;  // 緊急下限
  var minWarning = 18;    // 注意下限
  var maxWarning = 26;    // 注意上限
  var maxEmergency = 30;  // 緊急上限

  var temp = getSwitchBotTemperature();

  if (temp === null) {
    Logger.log("温度取得に失敗しました");
    return;
  }

  var message = null;
  if (temp < minEmergency) {
    message = "【緊急】子ども部屋が低すぎ!現在:" + temp + "℃";
  } else if (temp < minWarning) {
    message = "【注意】子ども部屋が寒めです。現在:" + temp + "℃";
  } else if (temp > maxEmergency) {
    message = "【緊急】子ども部屋が高すぎ!現在:" + temp + "℃";
  } else if (temp > maxWarning) {
    message = "【注意】子ども部屋が暑めです。現在:" + temp + "℃";
  } else {
    Logger.log("温度は安全範囲内:" + temp + "℃");
  }

  if (message) {
    sendLineMessage(message);
  }
}

// ————— テスト用にLINE通知だけ送る関数 —————
function testSendLine() {
  sendLineMessage("【テスト】LINE通知の確認です");
}

4. GAS(Google Apps Script)の設定手順

GAS(Google Apps Script)から新しいプロジェクトを作成する

前述のGASコード完成版を貼り付け2〜5段目をSwitchBotとLINEのトークン、IDに書き換えていきます。

①の▼から

②「checkTemperatureAndNotify」を選択

③の保存を行い実行する

5. 動作確認

通知の温度設定を変更してみて、公式LINEから個人LINEへ緊急の通知が来るかチェクします!

↓↓↓

個人LINEへ通知が来たので正常に作動しているようです!(動作確認の1000は戻します!

6. 室温異常をLINE通知する温度と文言を設定する

あとは異常を通知する温度設定と文言を必要であれば変更します。

変更前の状態だと、

  • 室温16℃以下→【緊急】子ども部屋が寒すぎ!現在:〇〇℃
  • 室温18℃以下→【注意】子ども部屋が寒めです。現在:〇〇℃
  • 室温26℃以上→【注意】子ども部屋が暑めです。現在:〇〇℃
  • 室温30℃以上→【緊急】子ども部屋が高すぎ!現在:〇〇℃

とLINE通知されるように設定されています。

以下の部分を変更することでカスタマイズ可能です!

変更は保存しておきましょう

GAS(Google Apps Script)の設定手順

通知の細かい設定はトリガーから設定を変更できるのでお好みに設定したら完了です!(上の画像は私の設定)

上の画像設定(トリガー設定)の状態で、

  • 室温が異常時のみ通知が来る
  • 異常が続いたら1時間に1回通知が来続ける

👇のような感じでした


コピペのままだと異常室温の条件が狭かったため、頻繁に通知が来てしまいました。

設定温度はご自身の環境に合わせてくださいね!

スポンサーリンク

7. 注意点

  • SwitchBot APIは無料枠で1分1回程度まで
  • LINEチャネルアクセストークンは長期有効タイプを使用
  • セキュリティのため、トークンは公開しない

8. まとめ

これでSwitchBot温湿度計で室温の異常を無料でLINEで通知が可能になりました。

  • SwitchBotとLINEの連携で、室温の異常をすぐに把握できる
  • 旅行中や外出中でもスマホに通知
  • 今後は湿度や複数条件通知にも応用可能
  • 子どもや、親の熱中症、ヒートショック対策にも!

今回、全く無知の状態からここまで完了するのに私5時間かかりました(泣)

ネットで調べた情報と、チャットGPT先生に泣きつきながらもなんとかなんとか、完成しました。

この記事に紹介した方法は、いろいろ試した結果私がうまくいった方法をまとめています。

先ほども言ったように、全くの無知なので想定範囲外のことにはお答えできませんのでご了承ください。

チャットGPT先生に現状を伝えたら打開策を練ってくれますので、もしこの方法でつまづいてしまった方は、ぜひチャットGPTに相談してみてください。(トークン、IDなど個人情報は入力しないように注意!)

まだトークンやIDの取得が終わっていない方は、

関連記事

コメント

タイトルとURLをコピーしました