IoT データ可視化サービス Ambient を使って Nature Remo E lite から取得した電力使用量をグラフ化する(まとめ)
どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)
Nature Remo や SwitchBot の API を使っていろいろと値を取得できるようになりました。
curl コマンドなので、その場、その場の値は取得できるものの、取得した値を使って何かをしたい!
ということで Nature Remo E lite から取得した消費電力の可視化をやってみよう!(・∀・)
IoT データ可視化サービス Ambient
グラフとして可視化するために Ambient という IoT データ可視化サービスを使います。
無料ユーザ登録すると簡単にグラフ化ができるようになります。
Ambient のユーザ登録は、「Ambient」のサイトの右上の「ユーザー登録(無料)」ボタンから行います。
Ambientのユーザ登録
ユーザ登録ボタンをクリック
必要事項を入力
メールが送信されるので、メールにあるリンクをクリック
ログインのリンクをクリック
Ambientのログイン
登録したユーザでログインします。
ログインするとユーザーキーとチャネル一覧が表示されます。
ユーザーキーは、プログラムをするときに必要になるため、控えておきましょう。
チャネルを作る
上図の「チャネルを作る」ボタンをクリックします。
1ユーザで8個までチャネルを作れ、1チャネルで8種類のデータを扱えます。
チャネルが作成されるとチャネル名、チャネルID、リードキー、ライトキーが自動で設定されます。
「チャネルID」、「ライトキー」は、プログラムをするときに必要になるため、控えておきましょう。
チャネルとグラフの設定
設定欄にある「…▼」をクリックすると表示される「設定変更」をクリックします。
「チャネル名」、「説明」、「データー1~8」を設定して、「チャネル属性を設定する」ボタンをクリックします。
今回はチャネル名「電気使用量グラフ」、説明「電気使用量の1分ごとのグラフ」、データー1「電力使用量(w)」と入力しました。
チャネル一覧に戻るので「入力したチャネル名」をクリックします。
まだ何もグラフを作っていないのでメニューバーだけ表示されます。
下図の赤枠部分「グラフ設定」ボタンをクリックします。
「チャネル/データ設定」をクリックします。
チャート設定を入力します。
今回はチャート種類「棒グラフ(時系列)」、d1:電力使用量「左軸」、日時指定「チェック」にしました。
まだデータを登録してないので、データがないグラフが表示されます。
グラフの大きさは、左下の三角の部分をドラッグすると変更できます。
続いてデータを登録するプログラムを作っていくことになります。
プログラムから Ambient にデータを登録するのですが、先にプログラムから Ambient を使えるようにしないとイケません。
今回はプログラム言語を Windows の Python にして Ambient の Python ライブラリを使うことにします。
https://www.python.org/downloads/ によると2022/02/28時点での Windows の最新版は、3.10.2のようですが、かげさんのデスクトップ PC には、Python 3.9.5 が入っているので、それを使います。
Python ライブラリのインストール
Ambient の上部にあるメニューから「ドキュメント」-「チュートリアル」を選択します。
サイドバーにチュートリアルが表示されるので「ライブラリー/リファレンス」-「 Python ライブラリー」を選択します。
Github にライブラリーがあるので下記のコマンドを実行します。
pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
するとエラーメッセージと警告メッセージが表示されました。
素直にバージョン、3.10.2をインストールしておけばよかったかもしれない…(´;ω;`)
F:\Python\Python39>pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
Collecting git+https://github.com/AmbientDataInc/ambient-python-lib.git
Cloning https://github.com/AmbientDataInc/ambient-python-lib.git to c:\users\xxxxxxxx\appdata\local\temp\pip-req-build-b7yxv3_4
Running command git clone -q https://github.com/AmbientDataInc/ambient-python-lib.git 'C:\Users\xxxxxxxx\AppData\Local\Temp\pip-req-build-b7yxv3_4'
ERROR: Error [WinError 2] 指定されたファイルが見つかりません。 while executing command git clone -q https://github.com/AmbientDataInc/ambient-python-lib.git 'C:\Users\xxxxxxxx\AppData\Local\Temp\pip-req-build-b7yxv3_4'
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?
WARNING: You are using pip version 21.1.2; however, version 22.0.3 is available.
You should consider upgrading via the 'f:\python\python39\python.exe -m pip install --upgrade pip' command.
警告メッセージの方は、かげさんが使っている pip は バージョン 21.1.2 ただし、バージョン22.0.3 が利用可能らしい。
ご丁寧にバージョンアップのコマンドも表示されているので pip をバージョンアップしちゃいましょう
F:\Python\Python39>f:\python\python39\python.exe -m pip install --upgrade pip
Requirement already satisfied: pip in f:\python\python39\lib\site-packages (21.1.2)
Collecting pip
Downloading pip-22.0.3-py3-none-any.whl (2.1 MB)
|████████████████████████████████| 2.1 MB 2.2 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.1.2
Uninstalling pip-21.1.2:
Successfully uninstalled pip-21.1.2
Successfully installed pip-22.0.3
これで pip のバージョンは 22.0.3 になりました。
さて、エラーの方ですが
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?
ということで、git コマンドがインストールされていないか、パスが通っていないとのこと。
うーん、かげさんの場合、GitHub を使うのに SourceTree をインストールしたので git は入っていると思ったのだが…
次は git をインストールした方が良さそうですね。
Git for Windows のインストール
https://git-scm.com/ より Git for Windows をインストールします。
「Download for Windows」を選択。
64ビットWindowsにインストールするので「64-bit Git for Windows Setup.」を選択。
ユーザアカウント制御は「はい」を選択
ライセンス条項を読んで「Next」
インストール先フォルダを指定して「Next」
コンポーネントの選択は、エクスプローラの設定を外して、毎日Git for Windowsの更新するにチェックで「Next」
スタートメニューのフォルダは、そのままで「Next」
Gitで使うデフォルトエディタの指定は、かげさんの場合、EmEditorを指定して「Next」。(エディタは特になんでも良ければ、そのまま「Next」)
初期リポジトリの設定は、そのまま「Next」
環境設定のPATHは、他のソフトからでも使えるようにしたいので「Git from the command line and also from 3rd-party software」を選択
SSH実行の設定は、そのまま「Next」
HTTPS関連の設定は、そのまま「Next」
改行コードの処理の選択は、何もしてほしくないので「Checkout as-is, commit as-is」を選択
ターミナルエミュレータの設定は、Windows標準ので良いので「Use Windows' default console window」を選択
git pull関連は、よくわからないのでそのまま「Next」
クレデンシャルヘルパーの設定は、よくわからないのでそのまま「Next」
拡張オプションの設定は、そのまま「Next」
よくわからないので、そのまま「Next」
インストールが始まります。
インストール完了
Ambient の Python ライブラリのインストール
Git for Windows をインストールしたので、Ambient の Python ライブラリのインストールします。
※Git for Windows インストール前に開いていたコマンドプロンプトは、Git の PATH がまだ通っていないので、新たにコマンドプロンプトを起動してからコマンドを実行します。
pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
成功しました。
続いて、Pyhon で Nature Remo Cloud API を使って Nature Remo E lite の消費電力量を取得して Ambient に登録するプログラムを書きます。かげさんの場合、こんな感じ
import requests
import datetime
import ambient
REMO_API_TOKEN = "Nature Remo Cloud API アクセストークン"
AMBEIENT_CHANNEL_ID = "Ambient チャネル ID"
WRITE_KEY = "Ambient ライトキー ID"
# スマートメーターの情報から電力情報を取得
def getPower():
url = 'https://api.nature.global/1/appliances'
headers = { 'Authorization': 'Bearer ' + REMO_API_TOKEN, 'accept':'application/json' }
appliances = requests.get( url, headers = headers ).json()
#デバッグ(うまく行かないときは、appliancesを出力して確認する)
#print(appliances)
# 電力情報を取得
# 次の行の[0]の部分は、使っているRemoの設定により異なります。
list = appliances[0]['smart_meter']['echonetlite_properties']
dict = {}
for item in list:
key = item['name']
dict[key] = item['val']
power = int( dict['measured_instantaneous'])
print('Power Now:' + str(power))
return str(power)
# メイン処理
def main():
print('Start')
# 電力値取得
power = getPower()
# Ambient に送信
am = ambient.Ambient( AMBEIENT_CHANNEL_ID, WRITE_KEY)
r = am.send( {'created': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'd1': power} )
#デバッグ(うまく行かないときは、rを出力して確認する)
#print(r)
print('End')
# ここからスタート
if __name__=="__main__":
main()
▼2022/04/27追記ここから
このプログラムは、 Nature Remo E lite と Nature Remo のスマートリモコンを併用している場合、 Nature Remo にリモコンを追加で登録したタイミングで 20 行目の電化製品のインデックス番号(appliances[0] の 0 の部分の値)の修正が必要になる場合があります。リモコンを追加することで Nature Remo が管理する電化製品が増えappliancesのインデックス番号が後ろにズレることがあるためです。
▲2022/04/27追記ここまで
「スマホの Nature Remo アプリのエネルギー表示」と「前の記事のプログラムで出力したデータを Ambient でグラフ化したデータ」を見比べてみた。
うん、データの出力時間の間隔の違いから出ている差もあるだろうし、概ね似たような感じなんで良いのではなかろうか?
違うのは「赤枠の部分」だが、Python プログラムがバグっていた(日時の書式指定が間違っていた)部分(前述のソースは修正済みです)と Nature Remo E lite でデータ取得されていない部分なので。
おそらくデータ取得されていないのは Nature Remo E lite が赤点滅しているときだと思うんで仕方ないかな。
赤点滅している理由も「Nature Remo E lite が赤の早い点滅(クラウドに接続できていない)なのに Cloud API が使える(謎)」に書いたように、よく分からないし…(´・ω・`)
まぁ、Nature Remo Cloud API を curl コマンドからだけでなく、Python からも操作できるのを確認できたし、グラフ化もできたので良しとしよう!(・∀・)
ここまではOKだ
連携した太陽光発電システムの発電状況をリアルタイムに確認でき、家庭の蓄電池をスマートフォンのNature Remo アプリからコントロール可能。外出時に家の外から電力の消費状況を確認したり機器の操作ができます。
エネマネ(エネルギーマネジメント)とは、電気の使用量をモニタリングし、最適化することです。エネマネをうまく行うことができれば、省エネで電気代を抑えることができ、限られた地球資源の効率利用につながります。Nature Remo Eは、これまで敷居の高かった家庭のエネマネを、誰でも手軽に使えるようにしたいと考えました。
コメント
このブログの新着コメントをRSSリーダに登録する為のxml