はじめに
こんにちは、IoT ソリューションアーキテクトの新澤です。皆さんは家庭の電力使用をどのように管理していますか ? 電気代の値上げがニュースを賑わせている昨今、多くの方が毎月の電気代を見て「もう少し節約できる方法はないだろうか」と感じたことがあるのではないでしょうか。
そんな悩みを解決する一つの方法として、HEMS (Home Energy Management System) という仕組みがあります。HEMS とは、家庭内の電力使用を可視化し、効率的に管理するためのシステムです。スマートメーターと連携して各電化製品の消費電力をリアルタイムでモニターに表示します。これにより、どの家電がどれだけ電力を使っているかが一目でわかり、節電のための行動を促進します。(政府の「グリーン政策大綱」によると、2030 年までに全世帯への設置が目標とされています。)
実は市販の HEMS 装置を導入していなくとも、直接電力メーターから消費電力を取得することが可能なのです。東京電力パワーグリッドなどの送配電事業者が提供する 電力メーター情報発信サービス (B ルートサービス) を利用することで、スマートメーターで計測されたデータを取得できるようになります。
今回の企画では、この B ルートサービスを利用して、Wi-SUN USB アダプターと RaspberryPi、AWS を使って家庭の消費電力の可視化ダッシュボードを作り、電力使用の傾向を把握する仕組みを紹介します。さらに、Amazon Bedrock を用いてデータを分析し、天気予報から間接的に消費電力を予測する仕組みにも挑戦します。
(画像 : 経済産業省:省エネって何? から引用)

ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
1. 全体構成
アーキテクチャ図
データ取得について
スマートメーターからのデータ取得部分については、ラトックシステム株式会社の Wi-SUN USB アダプター「RS-WSUHA-P」を使ってスマートメーターから瞬時消費電力量を取得するする構成とします。

利用する AWS のサービス
2. 事前準備 (B ルート申し込み)
3. 利用するデバイス
4. RaspberryPi (AWS IoT Greengrass) の環境構築
Raspberry Pi の情報
今回の企画で利用した Raspberry Pi の情報は以下の通りです。
uname -a Linux raspberrypi 6.6.47+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.47-1+rpt1 (2024-09-02) aarch64 GNU/Linux
Linux のディストリビューション情報
Linux のディストリビューション情報は以下のとおりです。
$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
4-1. RS-WSUHA-1 の準備
RS-WSUHA が使用するシリアルポートを調査します。
tty デバイス表示 (接続前)
RS-WSUHA を RaspberryPi の USB ポートに挿さない状態で、以下のコマンドをターミナルに入力します。現状の tty デバイスがリスト表示されるのを確認します。
$ ls -l /dev/tty*
tty デバイス表示 (接続後)
RS-WSUHA を RaspberryPi の USB ポートに挿して、再度以下のコマンドをターミナルに入力します。
$ ls -l /dev/tty*
tty デバイスの追加
すると、以下のような RS-WSUHA が追加されています。
/dev/ttyUSB0
tty デバイスを記録
この情報 (上記の場合は /dev/ttyUSB0) は、以降のステップで使用しますのでメモしておきます。
4-2. AWS IoT Greengrass コアのインストール
AWS のリソースを操作する際にはクレデンシャル情報が必要となります。十分な権限を持つクレデンシャルを用意し、以下のコマンドで環境変数へ設定してください。
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_DEFAULT_REGION=ap-northeast-1
Java ランタイムのインストール
Greengrass を動作させるためには Java のランタイムが必要です。以下のコマンドでインストールします。今回使用した JDK のバージョンは 17.0.12 です。
sudo apt install default-jdk
Greengrass インストーラーの取得
Greengrass のログを確認
以下のコマンドを RapberryPi のターミナルで実行すると、ログを確認できます。正しく起動していることを確認しましょう。
sudo tail -f /greengrass/v2/logs/greengrass.log
4-3. スマートメーターコンポーネントの登録
レシピの入力 :
「レシピを YAML として入力」オプションを選択し、以下の YAML をレシピとして貼り付けます。レシピとは、コンポーネントのメタデータとライフサイクルを定義するファイルです。これにはコンポーネントの識別情報、設定、依存関係、インストールおよび実行手順が含まれ、レシピを使うことで、開発者はコンポーネントの動作や設定を細かく制御でき、IoT デバイス上で一貫した方法でソフトウェアを展開・管理することができます。
RecipeFormatVersion: "2020-01-25"
ComponentName: "com.example.myraspberrypi_smartmeter"
ComponentVersion: "1.0.0"
ComponentType: "aws.greengrass.generic"
ComponentDescription: "A Greengrass component that sends smart meter data to AWS IoT Core on Raspberry Pi."
ComponentPublisher: "Your Name"
ComponentConfiguration:
DefaultConfiguration:
UPDATE_INTERVAL: 5
SIMULATION_MODE: "False"
SECRET_NAME: "RouteB_Secret"
SERIAL_PORT: "/dev/ttyUSB0"
accessControl:
aws.greengrass.ipc.mqttproxy:
com.example.myraspberrypi_smartmeter:mqttproxy:1:
policyDescription: "Allows access to publish to AWS IoT Core"
operations:
- "aws.greengrass#PublishToIoTCore"
resources:
- "power/consumption"
aws.greengrass.SecretManager:
com.example.myraspberrypi_smartmeter:secrets:1:
policyDescription: "Allows access to RouteB_Secret"
operations:
- "aws.greengrass#GetSecretValue"
resources:
- "*"
Manifests:
- Platform:
os: "linux"
Lifecycle:
Install:
Script: |
mkdir -p {artifacts:path}/venv
python3 -m venv {artifacts:path}/venv
. {artifacts:path}/venv/bin/activate
pip install --upgrade pip
pip install awsiotsdk pyserial
RequiresPrivilege: "true"
Run:
Script: |
. {artifacts:path}/venv/bin/activate
python3 {artifacts:path}/smart_meter_raspberrypi.py
Artifacts:
- Uri: "s3://myartifacts/1.0.0/smart_meter_raspberrypi.py"
Lifecycle: {}
レシピの設定
以下の設定値を適宜変更してください。
ComponentPublisher : コンポーネントの提供元として、あなたの名前を指定してください。
SECRET_NAME : B ルート認証情報が格納されている AWS Secrets Manager の Secret Name を記載します (後述)。
UPDATE_INTERVAL : データ収集の間隔を秒単位で指定できます。
SIMULATION_MODE : "True" に設定すると、HEMS ハードウェアがなくてもテストが可能です。ダミーデータとしてサイン波を生成し、通常モードと同様の AWS IoT Core のトピックに Publish します。
SERIAL_PORT : ステップ 5 で取得した RS-WSUHA-P が接続されるシリアルポートを指定します。
Artifacts Uri : ステップ 2 (アーティファクトのアップロード) でアップロードした S3 バケットとオブジェクトのパスを指定してください。
コンポーネントの作成の設定
レシピの入力が完了したら、「作成」ボタンをクリックしてコンポーネントを作成します。これらの手順を完了すると、スマートメーターカスタムコンポーネントが AWS IoT Greengrass に登録されます。ただし、この段階ではコンポーネントはクラウド上に存在するだけで、実際に Raspberry Pi で動作させるにはデプロイ手順が必要です。まずは、次のステップでコンポーネントが正しく機能するために不可欠な AWS Secrets Manager の設定を行います。この設定が完了してから、後ほど Raspberry Pi へのコンポーネントのデプロイを行うことになります。
5. AWS Secrets Manager の設定
6. コンポーネントのデプロイ
設定のマージ
マージする設定領域に以下のコードを貼り付けます。arn は作成済みの実際のシークレット arn の値に変更してください。
{
"cloudSecrets": [
{
"arn": "arn:aws:secretsmanager:ap-northeast-1:476910375916:secret:RouteB_Secret-CGwOkk"
}
]
}
デプロイの確認
7. Amazon Timestream の設定
8. AWS IoT Core の設定
9. Amazon Managed Grafana の設定
10. AWS Lambda の設定
11. Amazon Bedrock の設定
12.まとめ
市販の HEMS 対応分電盤を導入すれば、各部屋ごとの電力消費をより細かく把握できますので、より具体的で実用的なパターンを見出すことができるかもしれません。また、消費電力に影響を与える要因は気温だけではなく、曜日や季節、人の有無など、様々な要素が絡み合っています。
HEMS のデータを地域の気象データ、地域イベント情報、電力会社の需給予測などと組み合わせることで、家庭レベルから地域レベルまでの多層的な電力消費予測などさまざまなユースケースが実現できそうです。
また、本テーマに関連する内容として、今月リリースされた別の記事「 スマート x サステナブルビル管理をミニチュア建物で実現してみよう !」も合わせてご参照ください。この記事では、現実の建物環境を再現したミニチュアモデルにおいて、室温や空気の質をデータに基づいて適切に管理して省エネルギーを実現するデモの構築方法を紹介しています。IoTと建物管理の可能性をより深くご理解いただけると思います。
筆者プロフィール
新澤 雅治 (Niizawa Masaharu)
アマゾン ウェブ サービス ジャパン合同会社
IoT スペシャリスト ソリューションアーキテクト
製造業、 IT ベンダーを経て AWS に 入社。現在は IoT スペシャリストソリューションアーキテクトとして、主に製造業のお客様の Industrial IoT 関連案件の支援に携わる。

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages