みなさん、こんにちは。
これからの季節、ますます心配になるのが熱中症ですよね。特に小さなお子さんや高齢の方がいらっしゃるご家庭では、室内の温度管理には気を使われていることと思います。
以前のブログでM5StickCを使ってAmbientに温度と湿度を送信するシステムをご紹介しました。
また、Alexaに任意の言葉を発話させるシステムもご紹介しました。
そこで今回は、この2つのシステムを組み合わせることで、Ambientから取得した温度と湿度データが設定した閾値を超えた場合に、Alexaが熱中症アラートを発話するという、実用的なシステムを作ってみましたのでご紹介します。
システムの構成
Ambientから最新の温度と湿度データを取得し、あらかじめ設定した閾値(例えば、温度28℃、湿度60%)を超えた場合に、Alexaが音声で「熱中症に注意してください」といったアラートを発話します。これにより、部屋の状況を常に監視し、危険な状況になる前に自動で注意を促すことができます。
このシステムは、Raspberry Pi 上で動作させることを想定しています。というのも、Alexaに言葉を喋らせる alexa-remote-control がRaspberry Pi上で動いているからです。ただし、Raspberry Pi にこだわらなくても alexa-remote-control が動作する多くのLinux環境で動作可能です。
熱中症アラートシステムの構築方法
1. プログラムのクローン
まずは、alexa-remote-control を設定済みの Raspberry Pi にログインし、以下のGitHubリポジトリからプログラムをクローンします。
git clone https://github.com/taoman26/heatstroke_alert.git
2. 必要条件
このシステムを動作させるためには、いくつか準備が必要です。
- Python 3.6以上
ambient-python-lib
ライブラリ(GitHubリポジトリからインストールすることを推奨)alexa-remote-control
が適切にセットアップされていること(今回の場合はセットアップ済みのRaspberry Piを使うことを想定)
3. インストール方法
クローンしたディレクトリに移動し、必要なPythonパッケージをインストールします。
pip3 install -r requirements.txt
もし ambient-python-lib
のインストールで問題が発生する場合は、直接GitHubからインストールしてみてください。
pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
4. 設定方法
heatstroke_alert.py
ファイルを開き、以下の設定パラメータの行を探してご自身の環境に合わせて編集してください。
Ambient設定
M5StickCでAmbientにデータを送信しているチャネルID、ライトキー、リードキーを設定します。また、Ambientに送信している温度と湿度のデータ番号に合わせてd1
やd2
などを設定してください。
AMBIENT_CHANNEL_ID = "あなたのチャネルID"
AMBIENT_WRITE_KEY = "あなたのライトキー"
AMBIENT_READ_KEY = "あなたのリードキー"
temperature = data[0].get('d1') # データー1に温度を設定した場合はd1を設定します
humidity = data[0].get('d2') # データー2に湿度を設定した場合はd2を設定します
Alexa設定
Alexaに発話させたいデバイス名(例:”リビングルーム”)と、alexa-remote-control.sh
のフルパスを設定します。
ALEXA_DEVICE_NAME = "あなたのAlexaデバイス名" # 例:"リビングルーム"
ALEXA_CONTROL_PATH = "/path/to/alexa-remote-control.sh" # alexa-remote-control.shのフルパス
アラート閾値
熱中症アラートを発話させる温度と湿度の閾値を必要に応じて変更してください。
TEMPERATURE_THRESHOLD = 28.0 # 温度閾値(℃)
HUMIDITY_THRESHOLD = 60.0 # 湿度閾値(%)
アラート間隔
一度アラートを発話した後、再度アラートを発話するまでの時間間隔を設定します(秒単位)。
ALERT_INTERVAL = 1800 # 30分(秒単位)
5. 使用方法
設定が完了したら、以下のコマンドでプログラムを実行します。
python3 heatstroke_alert.py
以下のようなメッセージが表示されれば成功です。(以下はアラート発話がされなかった例)
2025-05-27 11:00:01,851 - HeatstrokeAlert - INFO - 熱中症アラートプログラムを開始します
2025-05-27 11:00:01,852 - HeatstrokeAlert - INFO - 前回のアラート時間: 2025-05-27 09:50:02
2025-05-27 11:00:02,440 - HeatstrokeAlert - INFO - 取得したデータ - 温度: 26.39℃, 湿度: 45.16%
2025-05-27 11:00:02,440 - HeatstrokeAlert - INFO - 閾値以下のため、アラートは送信しません
2025-05-27 11:00:02,440 - HeatstrokeAlert - INFO - プログラムが正常に終了しました
このプログラムを定期的に実行させたい場合は、cronを使用すると便利です。例えば、10分ごとに実行するには、crontab -e
で以下の行を追加します。「あなたのパス」にはあなたのログインユーザー名を入力してください。
*/10 * * * * cd /home/あなたのパス/heatstroke_alert && python3 heatstroke_alert.py
6. ログの確認
プログラムの実行ログは、システムのログに出力されます。
- Ubuntuなどのシステムの場合
grep "heatstroke_alert" /var/log/syslog
- CentOSなどのシステムの場合
grep "heatstroke_alert" /var/log/messages
標準出力にも同時にログが表示されますので、そちらでも確認できます。
まとめと活用例
この熱中症アラートシステムは、これからの季節に非常に役立つこと間違いなしです。特に、離れて暮らす高齢の親御さんをお持ちの方は、Ambientで室温の推移を把握できるだけでなく、自動でアラートを発話してくれるため、見守り用途としても最適です。
ぜひ、このシステムを試してみて、大切な方を熱中症から守りましょう!
本日も最後までお読みいただきありがとうございました。
それでは、よいIoTライフを!