Amazon 初売り

« IoTシステム技術検定試験 | トップページ | 今後書こうと思っている IoT やスマートホームの記事をリストアップ »

2022.02.12

Nature Remo E lite からスマートメーターの情報を取得する

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

Nature Remo E lite を使ってやりたいこと」に書いた「電子レンジのドアを開けたときに特定の電力消費量を超えていると通知が出るシステム」を少しずつ作っていきます。

まずは「リアルタイムの電力消費量(瞬時電力計測値)」の取得から。

スマートメーターの情報を絞り込む

リアルタイムの電力消費量は、Nature Remo E lite を使ってスマートメーターの情報から取得する。



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

スマートメーターは、Nature Remo E lite に登録されている電化製品という扱いだ。

なので「Nature Remo デバイスに登録した電化製品の情報を取得する」で紹介した下記のコマンドで取得する。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .

アクセストークンなどをマスクした状態で結果を表示すると、こんな感じになる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4114 100 4114 0 0 4114 0 0:00:01 --:--:-- 0:00:01 4968
[
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturer": "",
"name": "Smart Meter",
"image": "ico_smartmeter"
},
"type": "EL_SMART_METER",
"nickname": "スマートメーター",
"image": "ico_smartmeter",
"settings": null,
"aircon": null,
"signals": [],
"smart_meter": {
"echonetlite_properties": [
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475342",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-11T21:46:02Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "934",
"updated_at": "2022-02-11T21:46:02Z"
}
]
}
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "窓用エアコン",
"image": "ico_ac_0",
"settings": {
"temp": "24",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-08-10T18:00:01Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"country": "JP",
"manufacturer": "koizumi",
"remote_name": "kaw-12",
"series": "",
"name": "Koizumi AC 001",
"image": "ico_ac_1"
},
"type": "AC",
"nickname": "エアコン",
"image": "ico_ac_1",
"settings": {
"temp": "25",
"temp_unit": "c",
"mode": "cool",
"vol": "2",
"dir": "",
"dirh": "",
"button": "power-off",
"updated_at": "2021-09-15T03:48:30Z"
},
"aircon": {
"range": {
"modes": {
"blow": {
"temp": [
""
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"cool": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
"1",
"2"
]
},
"dry": {
"temp": [
"21",
"22",
"23",
"24",
"25",
"26",
"27",
"28",
"29"
],
"dir": [
""
],
"dirh": [
""
],
"vol": [
""
]
}
},
"fixedButtons": [
"power-off"
]
},
"tempUnit": "c"
},
"signals": []
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2021-06-20T10:07:47Z",
"updated_at": "2022-02-10T14:19:51Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "1W3XXXXXXXXXXX",
"firmware_version": "Remo/1.6.6",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": null,
"type": "IR",
"nickname": "13インチディスプレイ",
"image": "ico_tv",
"settings": null,
"aircon": null,
"signals": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "電源",
"image": "ico_io"
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "切り替え",
"image": "ico_forward"
}
]
}
]

このままだと、Nature Remo E lite に登録されている電化製品に加えて、Nature Remo 3 に登録されている電化製品まで表示されてしまう。

かげさんの場合、Nature Remo デバイスの情報はNature Remo E lite 、Nature Remo 3 の順番に表示される。なので jq で配列番号0を指定して Nature Remo E lite だけの情報を取得する。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0]

取得内容もスッキリした。

{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"device": {
"name": "Remo E lite",
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"created_at": "2022-01-25T14:43:37Z",
"updated_at": "2022-01-25T14:44:04Z",
"mac_address": "XX:XX:XX:XX:XX:XX",
"bt_mac_address": "XX:XX:XX:XX:XX:XX",
"serial_number": "4W1XXXXXXXXXXX",
"firmware_version": "Remo-E-lite/1.3.9",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturer": "",
"name": "Smart Meter",
"image": "ico_smartmeter"
},
"type": "EL_SMART_METER",
"nickname": "スマートメーター",
"image": "ico_smartmeter",
"settings": null,
"aircon": null,
"signals": [],
"smart_meter": {
"echonetlite_properties": [
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475491",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-11T23:20:01Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "940",
"updated_at": "2022-02-11T23:20:01Z"
}
]
}
}

スマートメーターの情報は、smart_meter 内の echonetlite_properties にあるので絞り込む。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0].smart_meter.echonetlite_properties

ここまで絞り込めた。

[
{
"name": "coefficient",
"epc": 211,
"val": "1",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "cumulative_electric_energy_effective_digits",
"epc": 215,
"val": "6",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "normal_direction_cumulative_electric_energy",
"epc": 224,
"val": "475804",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "cumulative_electric_energy_unit",
"epc": 225,
"val": "2",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "reverse_direction_cumulative_electric_energy",
"epc": 227,
"val": "74",
"updated_at": "2022-02-12T03:45:41Z"
},
{
"name": "measured_instantaneous",
"epc": 231,
"val": "380",
"updated_at": "2022-02-12T03:45:41Z"
}
]

echonetlite_properties のオブジェクトの意味

echonetlite_properties は、6種類のオブジェクト(情報)を持っている。

1種類につき4つのキーと値がセットになっている。

キー値の型意味

name string

ECHONET 機器オブジェクト詳細規定の英語版を参考にした名称。将来的に変更される可能性がある。

epc integer ECHONETプロパティ。機器の情報を取得するためのキー情報。
val string
updated_at time 最終更新時をRFC3339フォーマットで表現。

スマートメーターが持っている6つの値


配列番号

name epc(16進数の値) プロパティ名称
0 coefficient 211(0xD3) 係数
1 cumulative_electric_energy_effective_digits 215(0xD7) 積算電力量有効桁数
2 normal_direction_cumulative_electric_energy 224(0xE0) 積算電力量計測値(正方向)
3 cumulative_electric_energy_unit 225(0xE1) 積算電力量単位
4 reverse_direction_cumulative_electric_energy 227(0xE3) 積算電力量計測値(逆方向)
5 measured_instantaneous 231(0xE7) 瞬時電力計測値

先の取得したデータを例にして「スマートメーターの値から電力データを算出する」に従い値を読むと、こんな感じ。

積算電力量有効桁数:6桁(0-999999まで値を保持し、999999を超えると0に戻る)

積算電力量計測値(正方向):475804 x 係数:1 = 475804

積算電力単位=2:0.01kWh なので積算電力量計測値(正方向)=4758.04kWh

積算電力量計測値(逆方向):74 x 係数:1 = 74

積算電力単位=2:0.01kWh なので積算電力量計測値(逆方向)=0.74kWh

瞬時電力計測値:380 単位はW(ワット)

正方向(買電)・逆方向(売電)

まとめ

curl コマンドで jq による絞り込みして瞬時電力計測値するのは、下記のコマンドとなる。

curl -X GET "https://api.nature.global/1/appliances" -H "accept: application/json" -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" | jq .[0].smart_meter.echonetlite_properties[5]

なお、取得した値の型は文字列なので"値"となっている点に注意である。

ここまではOKだ



Nature Remo E liteは、家庭の電力量をリアルタイムにスマホでチェックしたり週、月、年ごとにグラフで比較できる電力モニタリングシステムです。デバイス1つで家全体の消費電力量が確認できます。

 このエントリーをはてなブックマークに追加

| |コメント (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。