お問い合わせ
トップ » SORACOM IoT DIY レシピ » IoT で熱中症リスクを多言語でお知らせ

SORACOM IoT レシピ:IoT で熱中症リスクを多言語でお知らせ

温湿度センサーで取得した温度と湿度から SORACOM Flux で 暑さ指数(WBGT)などを算出し、AI で多言語アナウンス文を生成してチャットで通知する

公開日: 2025年5月

レシピ難易度: ★☆☆☆☆

安全で快適な作業環境や居室空間を維持管理するために、暑さ指数 (WBGT) や乾燥指数 (絶対湿度) あるいは不快指数を常時監視したり通知したいケースで活用する IoT レシピです。また、広く注意喚起するために、日本語だけでなく利用者にあわせて多言語なアナウンス文を生成します。

本レシピでは、SORACOM IoT ストアで購入できるセンサー内蔵 IoT デバイス「LTE-M CO2センサー RS-LTECO2」または「GPSマルチユニット SORACOM Edition」によって送信される温度と湿度を利用し、SORACOM Flux で暑さ指数 (WBGT) や乾燥指数 (絶対湿度) 、不快指数を算出します。さらに算出された各指数に応じたアナウンス文を日本語だけでなく多言語で生成 AI が出力し、それをチャットに通知します。ローコード IoT アプリケーションビルダー SORACOM Flux を利用することで、これまで必要だったクラウド上でのアプリケーション構築を不要とし、すばやいアプリケーション構築を実行します。

本レシピを行うのに必要な時間、概算費用

本レシピは以下の通りです。

  • 必要な時間: 約 45 分
  • 概算費用:
    • 初期費用: 12,100円
      • LTE-M CO2センサー RS-LTECO2 の場合
        ( GPSマルチユニット SORACOM Edition(バッテリー内蔵タイプ)スターターキット の場合は 12,100円 )
      • 月額費用: 1,091円
        • SORACOM Air: 月額 330 円
        • SORACOM Harvest Data: 月額 171 円
        • SORACOM Flux: 月額 590 円 (Developerプランにおいてクレジット使用量の上限値を変更した場合)

※ 概算費用: ハードウェアや SORACOM 各種サービスの概ねの費用 (送料などの付帯費用や無料枠適用は考慮しないものとしています)

使用する SORACOM サービス

全体構成

    1. センサーが SORACOM Unified Endpoint に対して温度と湿度を送信する。
    2. SORACOM Flux の IoT デバイスイベントソース がイベントをトリガー。
    3. Republish アクション が前処理としてデバイスごとの温度と湿度のデータ形式の違いを整形して共通化し、その出力を受け取る。
    4. Republish アクション で温度と湿度から湿球温度を近似計算して、後段に出力する。
    5. Republish アクション で暑さ指数 (WBGT) 、不快指数を算出して後段に出力する。
    6. AI アクションで各指数に応じた注意喚起などを含むアナウンス文を生成し、多言語で後段に出力する。
    7. 生成された多言語なアナウンス文をチャットに通知する。

    本IoTレシピでは、暑さ指数 (WBGT) を計算するために、温度と(相対)湿度から湿球温度を近似計算しています。また、黒球温度は乾球温度より 10度高いものと仮定して、近似計算で算出された屋内の暑さ指数に対して、屋外の暑さ指数は推定値である旨を記載するようにしています。より正確な暑さ指数を必要とする場合は、自然湿球型温度計と黒球温度計を備えた暑さ指数計や、JIS規格の電子式黒球温度計などの利用を検討して下さい。

    本レシピを GPSマルチユニットSORACOM Edition(バッテリー内蔵タイプ)で使用する場合は、バッテリー駆動の状態で温度と湿度を測定して下さい。充電中 (電源からの給電中) は端末内の温度が上昇し、温度と湿度の測定が影響を受けるため、測定精度が製品仕様として表示されているセンサー性能の対象外となります。

    本レシピではチャットサービスとして Google Chat を使用しています。他の通知方法として、Slack や Microsoft Teams、 メールへの通知も可能です。Slack の場合は、[Slack 通知] アクションを、Microsoft Teams への通知は、[Webhook] アクションで設定可能です。詳しくは、下記のUsers ドキュメントを合わせて確認して下さい。
    Slack 通知アクション
    Microsoft Power Automate を使用して Microsoft Teams のチャネルにメッセージを送信する
    メッセージの本文の表記方法は本レシピで実施する [Webhook] アクションでの設定と異なる場合があります。詳しくは上記 ドキュメントだけでなく、チャットツールのユーザーガイドも参考にして設定して下さい。

    このコンテンツの進め方

    上から内容を読み進みながら作業を行なっていきます。また左サイドに追従する目次からページ内の移動が可能です。

    本コンテンツは現状のままで提供され、株式会社ソラコムは、誤りがないことの保証を含め、明示であると黙示であるとを問わず、本コンテンツの記載内容につき、いかなる種類の表明も保証も行いません。

    掲載情報の閲覧及び利用により、利用者自身、もしくは第三者が被った損害に対して、直接的、間接的を問わず、株式会社ソラコムは責任を負いかねます。

    本コンテンツを実践する中で用意された機器、利用されたサービスについてのご質問は、それぞれの機器やサービスの提供元にお問い合わせをお願いします。機器やサービスの仕様は、本コンテンツ作成当時のものです。

    株式会社ソラコムが提供する機器・サービスについてのご質問はフォームで受け付けております。機器・サービスご利用前の導入相談は https://soracom.jp/contact/ に、機器・サービスご利用開始後のサポートは、SORACOMユーザーコンソール内のサポートサイトから「リクエストを送信」(要ログイン)にてお問い合わせください。

    Copyright (c) 2023 SORACOM, INC.

    準備

    本レシピを行うためには以下のものをご用意ください。

    ハードウェア

    品名数量価格備考
    LTE-M CO2センサー RS-LTECO2 スターターキット112,1000円キットの中には以下のものが含まれています。
    ・LTE-M環境センサー本体 x 1台
    ・SORACOM 特定地域向け IoT SIM (plan-D ナノサイズ) x 1枚
    ・USB Micro-Bケーブル x 1本
    ・USB AC アダプタ x 1個

    本レシピは、GPSマルチユニット SORACOM Edition (バッテリー内蔵タイプ)スターターキットでも利用ができます。
    パソコン1インターネット接続が可能でサイトへの接続が自由であること。 Google Chrome 等の最新ブラウザーが利用可能な事。
    ※ 金額はレシピ作成時となります。金額は税込み・送料別です。

    ご購入について

    ハードウェアは以下よりご購入いただけます。

    その他必要なもの

    必要なもの費用作成方法など
    SORACOM アカウント無料※SORACOM アカウントの作成
    ※ アカウント作成・維持の費用の料金です。

    スターターキットが届いたら

    本レシピで使用するスターターキットのデバイスは、SIM を挿入することでセルラー通信 (LTE-M) を通じてクラウドにデータを送信します。最初に、スターターキットに同梱されている SIM を SORACOM に登録します。

    ※既に設定済みの デバイスについてレシピを実施する場合は次へお進みください。

    登録の方法は発注済みの SIM を登録する(JP)をご覧ください。約5分で完了します。登録が完了すると SORACOM ユーザーコンソール の SIM 管理の一覧に表示されますので、確認してください。

    SIM には管理するための任意の名前を設定できます。設定する SIM の名前の列にある 鉛筆マーク をクリックします。

    後の設定で分かりやすいように名前をつけ、[保存] をクリックします。(ここでは例として、”recipe_2025” としています)

    SIM に名前が設定できました。

    SORACOM の便利な使い方: SIM の「名前」機能
    名前の付け方は IoT SIM の名前を設定するをご覧ください。
    SIM には「名前」を付けることができ、これで整理が可能です。特に複数の SIM (ボタン含む) をお持ちの際には、名前を付けることを強くお勧めいたします。

    SIM のデバイスへの取り付けと初期設定を実施する ( LTE-M CO2 センサー RS-LTECO2 の場合 )

    本レシピでは、LTE-M CO2 センサー RS-LTECO2 または GPS マルチユニット SORACOM Edition どちらか一方を設定すれば利用できます。ここでは LTE-M CO2 センサー RS-LTECO2 の初期設定について説明します。

    ※GPS マルチユニット SORACOM Edition を使用する場合は次へお進みください。

    SIM をデバイスに取り付ける

    SORACOM 特定地域向け IoT SIM (以下 SIM) をカードから切り離し、LTE-M CO2 センサー側面の SIM スロットに挿入します。SIMは端子面を上、切り欠きを右奥にして差し込み、太さのあるマイナスドライバーなどでカチッと手応えがあるまでSIMを押し入れます。

    SIMの裏表、向きに注意してください。間違っていると正常にセットできません。また、破損の原因になりますので強い力を加えないでください。

    SIMを取り外すときも、マイナスドライバーなどでカチッと手応えがあるまで押すとSIMが出てきます。

    SORACOM Harvest Dataの設定

    SORACOM の IoT データ収集・蓄積サービス SORACOM Harvest Data を利用して、送信する環境データを保存する準備を行います。グループの作成と、作成したグループへ SIM を所属させる事から始めます。

    SORACOM Harvest Data とは?
    IoT デバイスからのデータの収集や蓄積、およびファイルを保存するサービスが SORACOM Harvest (ソラコム ハーベスト) です。IoT デバイスからのデータの収集・蓄積対応しているのが SORACOM Harvest Data、画像ファイルやログファイルといったファイルに対応しているのが SORACOM Harvest Files となります。

    グループとは?
    SORACOM サービスのほとんどがグループという単位に対して設定するようになっています。SORACOM Harvest Data 等、SORACOM サービスのほとんどが SIM に直接設定をするのではなくグループに設定をします。そして、SIM をグループに所属させることで SORACOM サービスが利用できるという間接的な仕組みです。

    グループを作成してから SIM を所属させる方法の他、グループの作成と SIM の所属を同時に行う方法もあります。本レシピでは後者の「同時に行う」手順で進めていきます。

    グループの作成とSIMの追加

    SORACOM ユーザーコンソールの SIM 管理画面から SIM にチェックを付け、[操作]>[所属グループ変更]とクリックします。

    「新しい所属グループ」のプルダウンボックスをクリックした後、[新しいグループを作成…]をクリックします。

    「グループ作成」の グループ名 欄に任意の名前を入力して[グループ作成]をクリックします。(ここでは例として、”温湿度のFlux連携” としています)

    新しい所属グループが先ほど作成したグループになっていることを確認したら[グループ変更]をクリックします。

    自動的に SIM 管理画面に戻ります。
    SIM の「グループ」に先ほど作ったグループが設定されていることを確認してください。

    以上で、グループの作成と所属の作業は完了です。

    バイナリパーサーとメタデータサービスの設定

    この手順では、環境センサーのデータを SORACOM Harvest Data で扱えるように変換するバイナリパーサーと、デバイスのデータ送信間隔設定を変更できるようにするメタデータサービスを設定します。

    バイナリパーサー、メタデータサービスとは?
    バイナリパーサーは Unified Endpoint 宛てに送られたバイナリデータを JSON というテキスト形式のデータに変換する機能です。
    メタデータサービスは デバイス上のアプリケーションがIoT SIMの情報をHTTP経由で簡単に取得し、システムの自動化や設定変更を行うことができる機能です。

    SIM 管理画面から、利用するSIMに割り当てたグループ名をクリックします。

    [基本設定] >[SORACOM Air for Cellular 設定]をクリックして開きます。

    「メタデータサービス」のスイッチをクリックして有効(スイッチが水色)にし、[読み取り専用] がチェックされていることを確認します。
    「バイナリパーサー」のスイッチをクリックして有効(スイッチが水色)にし、フォーマットに以下のテキストをコピー&ペーストで入力、「保存」ボタンをクリックします。

    co2:0:uint:16 temp:2:int:16:/10 humid:4:uint:16:/10 interval:6:uint:8

    バイナリデータの形式に合わせてバイナリパーサーのフォーマットを設定します。フォーマットの形式はユーザーサイトの カスタムフォーマット で確認できます。

    ボタンの上に「Soracom Air 設定が更新されました」と表示されることを確認します。(表示は10秒程度で消えます)

    以上で「メタデータサービス」と「バイナリパーサー」の設定が完了しました。

    SORACOM Harvest Dataの有効化

    この手順ではデータを保存する SORACOM Harvest Data を有効にします。先ほどの設定を行ったページの[基本設定] >[SORACOM Harvest 設定]をクリックして開きます。

    「SORACOM Harvest 設定」で、スイッチをクリックして有効(スイッチが水色)にし、[保存] をクリックします。


    その後表示される「SORACOM Harvest が有効になっています」のダイアログでは[OK]をクリックしてください。

    以上で「SORACOM Harvest Data」の設定が完了しました。

    SORACOM ユーザーコンソールの SIM 管理画面より、設定する SIM のチェックをオンにし「詳細」をクリックします。

    [タグ]タブをクリックし。[+]ボタンをクリックします。

    タグの名前と値を以下のように入力し、[保存]ボタンをクリックします。

    名前
    interval10

    これで設定は完了です。すでに LTE-M CO2 センサーの電源を入れている場合は、電源を入れ直してください。

    動作確認

    LTE-M CO2 センサーを動作させ、 SORACOM Harvest Data の画面に表示されることを確認します。

    LTE-M CO2 センサー本体を同梱の USB ケーブルと AC アダプタで電源に接続してください。本体上面の LED がすべて緑色に点灯後、しばらくすると CO2 濃度に合わせた表示に切り替わります。このとき一番左の LED の表示色で LTE-M 接続状態が確認できます。 他の LED と同じ表示色であれば正常に接続しています。

    LTE-M CO2 センサーには LTE-M 接続のための APN 設定および SORACOM Unified Endpoint へのデータ送信があらかじめ設定済みです。そのため、動作直後から環境データの取得とデータ送信が開始します。

    SIM 管理画面から SIM にチェックをつけて[操作]>[データを確認]を選択し、 SORACOM Harvest Data の画面を表示します。

    以下のようなグラフ表示になれば、データを正しく保存できています(動作直後はデータ数が少なく表示されます)。SORACOM Harvest Data の操作として、画面左側のグラフ種類を変更したり、画面右上の「自動更新」のスイッチで自動的に新たなデータを表示したり、画面右側の凡例から表示する値を選択できます。

    グラフに表示するデータの項目は以下の通りです。

    項目単位説明センサー仕様
    co2ppm二酸化炭素濃度方式:PASens®方式計測可能レンジ:0 ~ 5000ppm精度:50ppm±5%
    temp温度計測可能レンジ:5 ~ 60℃精度:±0.2℃
    humid湿度計測可能レンジ:0 ~ 100%精度:±3.5%RH(±2%@20~80℃)
    intervalデータ送信間隔

    SORACOM Harvest Data のデータ保存期間は 40 日です。保存期間は有償の データ保存期間オプション で延長できます。

    他の温湿度センサーを利用するには ( 例:GPS マルチユニット など )

    本レシピは、LTE-M CO2センサー RS-LTECO2 だけでなく GPS マルチユニット SORACOM Edition でも利用できます。
    デバイスへのSIMの取り付けや初期設定について、ユーザーガイドを参考に進めてください。

    ※既に LTE-M CO2センサー RS-LTECO2 を設定済みの場合は次へお進みください。

    初期設定の方法

    本レシピ利用のために初期設定で必要な項目

    項目設定
    グループ名温湿度のFlux連携
    送信内容温度と湿度
    データの送信間隔10 (分)

    本レシピを GPSマルチユニットSORACOM Edition(バッテリー内蔵タイプ)で使用する場合は、バッテリー駆動の状態で温度と湿度を測定して下さい。充電中 (電源からの給電中) は端末内の温度が上昇し、温度と湿度の測定が影響を受けるため、測定精度が製品仕様として表示されているセンサー性能の対象外となります。

    SORACOM Flux アプリを作成する

    デバイスの送信データ形式の差を吸収する前処理プロセスの作成

    SORACOM ユーザーコンソールにログインした後 [メニュー]>[SORACOM Flux]>[Flux アプリ]とクリックします。

    [+ 新しい Flux アプリ を作成する] をクリックします。


    Flux アプリに任意の名前をつけて [作成] をクリックします。( Flux アプリの名前は後から変更できます。 )

    新しいチャネルを作成します。最初にイベントソースを選びます。イベントソースとは、Flux アプリを起動するトリガーとなる要素です。ここでは、 IoT デバイスによる SORACOM へのデータ送信をトリガーに起動させるイベントソースの[IoT デバイス]を選び、[次へ]をクリックします。

    チャネルに任意の名前をつけて、”イベントソース設定”のボタンをクリックし “無効” (灰色の状態) にします。そして “グループ” で、デバイスに設定した SIMグループの名前を検索して選択し、 [チャネルを作成する] をクリックします。

    IoT デバイスイベントソースはアプリ作成完了後に再度 “有効” (水色の状態) にします。アプリ作成の過程で無駄にイベントをトリガーを防ぐことができます。

    作成したチャネルの画面が開きますが、閉じると Flux アプリの作成状況を確認できます。Flux アプリは以下のような状態です。作成したチャネルの部分をクリックします。

    [アクション] をクリックし、[+ アクションを追加] をクリックします。

    デバイスから送信されるデータ形式の差を吸収する前処理をするため、データを変換する[Republish]アクションを選び、[OK]をクリックします。

    最初に RS-LTECO2 センサーのデータの前処理を行います。アクションには任意の名前がつけられますが、ここでは処理内容が分かりやすいように ”RS-LTECO2 の前処理” とします。[CONDITION] 入力エリアの “アクションの実行条件” 欄に以下のように入力します。

    payload.temp != null && payload.humid != null

    画面を下方向にスライドし、

    [CONFIG] 入力エリアの “データを変換する” をチェックします。“Content” 欄の初期値の文字列 ${payload} を消去し、以下のように入力します。なお、入力欄右下の水色のマークをドラッグすることで、入力欄を大きくして入力しやすくできます。

    {
      "temp": ${payload.temp},
      "humi": ${payload.humid},
      "co2": ${payload.co2},
      "interval": ${payload.interval}
    }

    さらに画面を下方向にスライドし、[OUTPUT] 入力エリアの “アクションのアウトプットを別のチャネルに送信する” は “有効” (水色の状態) 、“送信先チャネル” は “新しくチャネルを作成する” がチェックされた状態で、チャネル名として分かりやすいように “前処理データの出力チャネル” と入力し、 [作成する] をクリックします。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。今作成した Republish アクションと並列する 他のデバイス (例として GPS マルチユニット) 用の前処理のアクションを作成するため、前段のチャネルをクリックします。

    [アクション] をクリックし、[+ アクションを追加] をクリックします。

    データを変換する[Republish]アクションを選び、[OK]をクリックします。

    今度は GPSマルチユニットのデータの前処理を行います。アクションには任意の名前がつけられますが、ここでは処理内容が分かりやすいように ”GPS マルチユニットの前処理” とします。[CONDITION] 入力エリアの “アクションの実行条件” 欄に以下のように入力します。

    payload.temp != null && payload.humi != null

    画面を下方向にスライドし、[OUTPUT] 入力エリアの “アクションのアウトプットを別のチャネルに送信する” は “有効” (水色の状態)が選択された状態で 、“送信先チャネル” は “既存のチャネルを選択する” をクリックします。先ほど作成したチャネル名 “前処理データの出力チャネル” を選択し、 [作成する] をクリックします。

    本レシピでは、GPSマルチユニットのデータ形式に合わせるため、GPSマルチユニット前処理用の Republish アクションではデータの変換を行いません。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。前処理データの出力チャネルをクリックします。

    暑さ指数 (WBGT) などの指数を算出するプロセスの作成

    [アクション] をクリックし、[+ アクションを追加] をクリックします。

    暑さ指数 (WBGT) を算出するための各種指数の計算処理を行います。ここでは[Republish]アクションを選び、[OK]をクリックします。

    アクションには任意の名前がつけられますが、ここでは処理内容が分かりやすいように ”湿球温度の近似計算” とします。

    [CONFIG] 入力エリアの “データを変換する” をチェックします。“Content” 欄の初期値の文字列 ${payload} を消去し、以下を貼り付けます。なお、入力欄右下の水色のマークをドラッグすることで、入力欄を大きくして入力しやすくできます。

    {
      "td":${round(payload.temp*10)/10},
      "rh":${round(payload.humi*10)/10},
      "tg":${ceil((payload.temp +10)*10)/10},
      "tw":${payload.temp * Math.atan(0.151977 * Math.sqrt(payload.humi + 8.313659)) + Math.atan(payload.temp + payload.humi) - Math.atan(payload.humi - 1.676331) + 0.00391838 * (payload.humi ** 1.5) * Math.atan(0.023101 * payload.humi) - 4.686035},
      "vh":${(216.7 * (6.1078 * 10 ** ((7.5 * payload.temp) / (payload.temp + 237.3))) * payload.humi / 100) / (payload.temp + 273.15)}
    }

    ここでは、まず暑さ指数 (WBGT) や不快指数 (DI, Disconfort Index) の算出に必要な、自然湿球温度(tw)を気温と湿度から近似計算しています。近似計算には、Roland Stull による近似式 (Wet-Bulb Temperature from Relative Humidity and Air Temperature: Journal of Applied Meteorology and Climatology, 50, 2267-2269 (2011) ) を使用しています。この近似式は、−20℃から50℃の気温、5%から99%の湿度で、−1℃から+0.65℃の誤差(平均誤差 0.3℃未満)で湿球温度を近似計算することができるとされています。
    この近似計算に必要な数学関数として Math.atan (アークタンジェント) と Math.sqrt (平方根) を使用しています。乾球温度(td)は気温とします。そして、自然湿球温度(tw) は近似計算する一方で、黒球温度(tg)については乾球温度(td)に+10したものとして仮定してます。このため、日射や輻射熱の大きい屋外でのWBGTは単純計算された黒球温度(tg)を使用した推定値となることに留意してください。

    画面を下方向にスライドし 、[OUTPUT] 入力エリアの “アクションのアウトプットを別のチャネルに送信する” が “有効” (水色の状態) であり、“送信先チャネル” は “新しくチャネルを作成する” がチェックされた状態で、チャネル名として “湿球温度などの出力” と入力し、[作成する] をクリックします。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。今作成した、”湿球温度などの出力チャネル” をクリックします。

    次に、近似計算によって得られた湿球温度と気温、仮定した黒球温度を用いて、WBGT値を計算します。[アクション] をクリックし、[+ アクションを追加] をクリックします。

    [Republish]アクションを選び、[OK]をクリックします。


    アクションには任意の名前がつけられますが、ここでは処理内容が分かりやすいように ”暑さ指数 (WBGT) の算出” とします。

    [CONFIG] 入力エリアの “データを変換する” をチェックします。“Content” 欄の初期値の文字列 ${payload} を消去し、以下を貼り付けます。なお、入力欄右下の水色のマークをドラッグすることで、入力欄を大きくして入力しやすくできます。

    {
    "td": ${payload.td},
    "rh": ${payload.rh},
    "tg": ${payload.tg},
    "tw": ${ceil(payload.tw*10)/10},
    "vh": ${floor(payload.vh*10)/10},
    "wbgt_indoor":${ceil((payload.tw * 0.7 + payload.td * 0.3)*10)/10},
    "wbgt_outdoor":${ceil((payload.tw * 0.7 + payload.td * 0.2 + payload.tg * 0.1)*10)/10},
    "di":${ceil((0.72 * (payload.td + payload.tw) + 40.6)*10)/10}
    }
    

    下方向にスライドし、[OUTPUT] 入力エリアの “アクションのアウトプットを別のチャネルに送信する” は “有効” (水色の状態) 、“送信先チャネル” は “新しくチャネルを作成する” がチェックされた状態で、チャネル名として分かりやすいように “WBGTの出力” と入力し、 [作成する] をクリックします。


    ここまでで、暑さ指数 (WBGT) と 不快指数 (DI)、乾燥指数 (VT) を計算しました。
    暑さ指数 (WBGT) とは熱中症を予防することを目的として提案されている暑さの指標です。25度以上が警戒レベルとされ、熱中症患者の発生率が高まり始める段階です。WBGT が 28度以上の厳重警戒レベルになると熱中症患者の発生率が著しく増加するとされています。
    不快指数 (DI) は気温と湿度による蒸し暑さの指数とされており、一般的に 70以上で不快、80以上でほとんどの人が不快に感じると言われています。
    乾燥指数 (VT) は 容積ベースの絶対湿度(グラム/立法メートル)で、インフルエンザの流行予測に利用されています。絶対湿度が 11を下回るとインフルエンザウィルスが長時間生存しやすく流行し始めるとされています。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。いま作成したチャネルをクリックします。

    AI で多言語アナウンスを生成するプロセスの作成

    [アクション] をクリックし、[+ アクションを追加] をクリックします。

    算出した各種指標に対して、AI で多言語のアナウンス文を生成するため、アクションは[AI]を選び、[OK]をクリックします。

    アクションに任意の名前をつけて、画面を下方向にスライドし 、[CONFIG] 入力エリアの “AI モデル” 欄で “Google Gemini 2.0 Flash-Lite” を選択します。

    “プロンプト” 欄には以下の文章を貼り付けます。

    # リクエスト内容
    取得された現在の環境データに基づき、暑さ指数(WBGT)、乾燥指数、不快指数、CO2濃度などの環境要因に関する注意喚起を多言語で行うアナウンス文を生成してください。目的は、データが示す環境における潜在的なリスクを伝え、人々に安全な行動を促すことです。アナウンス文では、安全ではないレベルの指標について受け取る人の安全を最優先する内容で作成してください。表現は明確かつ、過度に不安を煽らないように配慮してください。
    
    # 取得された現在の環境データ(利用可能な変数)
    - 屋内のWBGT: ${payload.wbgt_indoor} 度
    - 日差しのある屋外のWBGT推定値: ${payload.wbgt_outdoor} 度 (推定値であることを明示します)
    - 気温: ${payload.td} ℃
    - 湿度: ${payload.rh} %
    - CO2濃度: ${event.payload.co2} ppm
    - 不快指数: ${payload.di}
    - 乾燥指数: ${payload.vh}
    
    # 各指標の判定基準とレベル定義
    - 暑さ指数(WBGT):
        - 31度以上: 危険レベル (運動は原則中止)
        - 28度〜31度未満: 厳重警戒レベル (熱中症患者が著しく増加。激しい運動は中止)
        - 25度〜28度未満: 警戒レベル (積極的に休憩・水分補給。長時間の激しい運動は避ける)
        - 21度〜25度未満: 注意レベル (熱中症の兆候に注意。適宜水分補給)
        - 21度未満: 安全レベル
    - 乾燥指数:
        - 7以下: 警戒レベル (インフルエンザ流行しやすい。加湿・換気推奨)
        - 7〜11以下: 注意レベル (インフルエンザ流行が確認され始める。加湿・換気を意識)
        - 11を超える: 安全レベル
    - 不快指数(DI):
        - 85以上: 暑くてたまらない (ほとんどの人が不快)
        - 80〜85未満: 暑くて汗が出る (多くの人が不快)
        - 75〜80未満: やや暑い (半数の人が不快)
        - 70〜75未満: 暑くない (快適、人によっては不快)
        - 70未満: 快適
    - CO2濃度:
        - 1500ppm以上: 換気不良レベル (眠気や集中力低下の可能性。要換気)
        - 1000ppm〜1500ppm未満: 注意レベル (換気を推奨)
        - 1000ppm未満: 良好レベル
    
    # 出力形式
    必ず以下のJSON構造に従ってフォーマットしてください。
    以下で定義するアナウンス文の構造に従ってJSONをフォーマットすることとし、配列やリストとして構造化はしないで下さい。
    
    {
      "title": {
        "ja":"",
        "en":"",
        "zh":"",
        "pt":"",
        },
      "message": {
        "ja":"",
        "en":"",
        "zh":"",
        "pt":"",
        },
      "footer": {
        "ja":""
        }
    }
    
    # アナウンスで使用する言語と優先順位
    主言語は日本語(ja)です。第一外国語は英語(en)、第二外国語は中国語(zh)、第三外国語はポルトガル語(pt)です。
    
    # アナウンスで使用する言語
    - 主言語: 日本語 (ja)
    - 第一外国語: 英語 (en)
    - 第二外国語: 中国語 (zh)
    - 第三外国語: ポルトガル語 (pt)
    
    # アナウンス文の生成ルール
    アナウンス文は、タイトル("title")、本文("message")、フッター("footer")の3つのセクションで構成されます。
    
    # アナウンス文のタイトル("title")
    最も伝えるべき内容を簡潔に表現します。アナウンスで使用する言語ごとに一文の文字列として表現します。
    
    # アナウンスの本文("message")
    現在の環境データで取るべき行動を具体的にかつ簡潔に伝えます。アナウンスで使用する言語ごとに2-3の文の文字列として表現します。
    
    # アナウンスのフッター("footer")
    取得している環境データを日本語(ja)のみで簡潔に羅列します。文章である必要はなくデータを羅列する、まさにフッターです。

    “AI からの返答を JSON 形式にする” チェックボックスをチェック (水色のチェック状態) します。

    プロンプトとは?
    このような、生成 AI に対する指示を“プロンプト” と呼び、入力内容の補足や、必要な処理、出力すべき情報などを指示します。使い慣れたことば (自然言語) で指示ができるため、修正や変更も簡単に行うことができます。短い指示であっても、生成 AI が不足する情報を自律的に補って処理を進めることもできます。特に重要な指示については、複雑な表現やあいまいな表現は避けて簡潔で具体的な指示を出すことが必要です。

    画面を下方向にスライドし 、[OUTPUT] 入力エリアの “アクションのアウトプットを別のチャネルに送信する” を “有効” (水色の状態) にします。“送信先チャネル” は “新しくチャネルを作成する” がチェックされた状態で、任意のチャネル名を入力し [作成する] をクリックします。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。いま作成したチャネルをクリックします。

    チャットにアナウンスを通知する

    AI が生成した多言語のアナウンス文をチャットで通知します。本レシピでは Google Chat で設定しますが、他のチャットツールや e メールでの設定も可能です。

    [アクション] をクリックし、[+ アクションを追加] をクリックします。

    Google Chat に webhook で連携するため、[Webhook] アクションを選び、[OK]をクリックします。

    アクションに任意の名前をつけて、画面を下方向にスライドします。

    CONFIG 入力エリアの “URL” 欄に入力する Google Chat のWebhook URL が必要になります。

    ここで、Google Workspace の Google Chat のスペースに移動します。本レシピでは、通知用のスペースを新規作成します。すでに作成済みのスペースもご利用できます。

    スペースの名前などを設定して [作成] をクリックします。

    スペースの設定の、[アプリと統合] をクリックします。

    [+ Webhook を追加] をクリックします。

    着信 Webhook に任意の名前を入力し、[保存] をクリックします。

    作成された Webhook のメニューをクリックし、[リンクをコピー]をクリックします。

    SORACOM Flux の設定画面に戻り、”URL” 欄の初期値の文字列を消去して、コピーした Google Chat の Webhook のリンクを貼り付けます。

    画面を下方向にスライドし 、“HTTP ボディ” 欄の “application/json” をクリックし有効な状態(水色の状態)にします。次の欄の初期値の文字列 ${payload} を消去し、以下のように入力します。なお、入力欄右下の水色のマークをドラッグすることで、入力欄を大きくして入力しやすくできます。

    {"text":"Flux アプリからの通知です! \n ----- \n ${payload.output.title.ja} | ${payload.output.title.en} | ${payload.output.title.zh} | ${payload.output.title.pt} \n ----- \n ${payload.output.message.ja} \n ${payload.output.message.en} \n ${payload.output.message.zh} \n ${payload.output.message.pt} \n ----- \n ${payload.output.footer.ja} "}

    入力できたら、[作成する] をクリックします。

    作成したアクションの画面を閉じると Flux アプリは以下のような状態です。

    これで、Flux アプリの設定はほぼ完了です。

    Flux アプリをテストする

    SORACOM Flux のテスト実行機能を利用し、実行履歴を確認する

    Flux アプリが正常に稼働するかテストします。IoT デバイスイベントソースのチャネルの部分をクリックします。


    [テスト実行] をクリックし、”Body” 欄の初期値の文字列 {} を消去し以下の文字列を貼り付けます。

    {"co2":1200,"temp":28.5,"humid":68.5,"interval":10}

    [実行] をクリックします。

     [実行履歴] をクリックします。

    この画面では、Flux アプリの実行履歴 (ログ) を確認することができます。[新しいイベントを取得]をクリックします。

    今回は Flux アプリを、テスト実行する API イベントでトリガーしたので、API イベントの履歴がトップに表示されています。右側のアイコンが1つを除きすべて緑チェックであることを確認します。一方のデバイス用の前処理プロセスが稼働するとき、もう一方のデバイス用の前処理プロセスは稼働しないので、1つアクションが実行されないのは正常です。

    実行履歴でエラーが発生している場合は、赤いバツ印のマークがトップに表示されます。実行履歴内で赤く ”x ERROR” とマークされているチャネルやアクションを確認して、該当箇所の設定を再確認して下さい。
    その後、本レシピの流れに沿って IoTデバイスイベントがトリガーされ稼働する各アクションの設定内容を順番に確認してください。

    チャットが通知されたことを確認する

    通知先として設定した Google Chat のスペースを確認します。

    受信したメッセージは以下のようなイメージです。

    Flux アプリの最初のトリガーとなる IoT デバイスイベントソースを有効化する

    テスト実行が問題無ければ、忘れずに無効にしていた IoT デバイスイベントソースの設定をします。IoT デバイスイベントソースのチャネルの部分をクリックします。


    イベントソース設定のボタンをクリックし  “有効” (水色の状態) にし、[変更を保存] をクリックします。変更が保存されると、[変更を保存] ボタンの点滅が停止します。

    SORACOM Flux 上での設定は以上です。これで、センサーデバイスに指定した時間間隔で環境データが SORACOM に送信され、自動的に暑さ指数 (WBGT) の算出や多言語アナウンスの生成、チャットへの通知が実行されます。

    以上で全ての設定が終了です。

    あとかたづけと注意事項

    本 IoT レシピで作成した Flux アプリは 10分に1回稼働します。このとき、

    • IoT デバイスイベントソースが1回トリガーされます。

    つまり、10分ごとに1度のアプリの稼働でイベントソースが1回トリガーされます。これは、1日あたり144回イベント数がカウントされ、1ヶ月間 (31日) で 4,464回のイベント数がカウントされます。さらに、

    • AI アクションが1回実行されます。
    • AI モデル “Google Gemini 2.0 Flash-Lite” 1回の実行で 3クレジットが使用されます。

    つまり、10分ごとに1度のアプリの稼働でクレジット使用量は 3 です。これは、1日あたり 432 クレジットが使用され、1ヶ月間 (31日) の稼働で 13,392 クレジットが使用されます。

    SORACOM Flux では、イベント数とクレジット使用量について、プランごとに無料で利用できるバンドルが設定されています。また、意図せず従量課金が発生しないように、バンドルと同等の上限が設定されています。例えば、Developer プランでは月間で、10,000イベント数と 1,500クレジットがバンドルされているため、本 IoT レシピで作成した Flux アプリをそのままの設定で利用すると、3日強でバンドルされているクレジット使用量の無料利用枠を使い切ることになります。他にも、Flux アプリのカスタマイズや他にも Flux アプリを作成する場合には、イベント数とクレジット使用量がプランごとに設定されているバンドル利用量の上限に達する可能性があるため、イベント数とクレジット使用量の上限の変更 (従量課金でのご利用) やプランのアップグレードをご検討下さい。

    なお、初期設定では各プランのバンドルと等しい上限がイベント数とクレジット使用量に設定されているため、自動的に超過料金が発生することはありませんが、上限に達した場合はイベントソースやアクションは実行されなくなります。Developer プランでもイベント数やクレジット使用量の上限を変更することで従量課金で SORACOM Flux をご利用頂けます。例えば、Developer プランのクレジット使用量の上限値を初期値の 1,500 クレジットから 13,392 クレジットに変更することで、本レシピの AI アクションを 1ヶ月間 (31日) 連続で稼働することができ、そのときの SORACOM Flux の利用料金は 590円です。

    例えばクレジット使用量の上限は以下の画面で設定変更できます。

    SORACOM ユーザーコンソールにログインした後 [メニュー]>[SORACOM Flux]>[Flux アプリ]とクリックします。イベント数または、クレジット使用量について、[~上限を変更する] をクリックします。

    以下は、クレジット使用量の上限を変更する画面です。設定したい上限値を入力し、[次へ] をクリックします。

    変更内容について確認し、[上限を変更する] をクリックすることで上限値が変更されます。上限値を変更したうえで、イベント数やクレジット使用量がプランごとに設定されているバンドル利用量を超えると、従量課金で利用料金が発生します。

    設定変更について、詳しくは Users ドキュメント「イベント数、クレジット使用量の上限を設定する」を確認して下さい。

    次のステップ

    本レシピでは、SORACOM から入手可能な各種環境センサーによって取得された温度や湿度を利用し、暑さ指数 (WBGT) などを算出し、指標レベルに応じた注意喚起アナウンスを AI によって多言語で生成して、チャット通知する仕組みを作りました。ローコード IoT アプリケーションビルダー SORACOM Flux によって、外部のクラウドサービスを直接使用することなくローコードで IoT システムを素早く構築しています。次のステップとして以下のような応用が考えられます。

    • AIアクションで他の生成 AI モデルを利用し、より高い精度や複雑な状況における物体認識と分析を実施する
    • クラウドカメラの画像分析を組み合わせて、効果的に利用者にアナウンスを通知する

    このように、環境センサーと SORACOM Flux を組み合わせることで、後付けで 高度な環境情報を提供したり、生成 AI を組み合わせて多言語でアナウンスする IoT システムを素早く簡単に組み上げる事ができます。是非いろいろなユースケースでご活用ください。

    SORACOM IoT DIY レシピ »

    ご質問などはこちらよりお問い合わせください。