Nature Remo E lite からスマートメーターの情報を取得する
どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)
「Nature Remo E lite を使ってやりたいこと」に書いた「電子レンジのドアを開けたときに特定の電力消費量を超えていると通知が出るシステム」を少しずつ作っていきます。
まずは「リアルタイムの電力消費量(瞬時電力計測値)」の取得から。
スマートメーターの情報を絞り込む
リアルタイムの電力消費量は、Nature Remo E lite を使ってスマートメーターの情報から取得する。
スマートメーターは、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だ
コメント
このブログの新着コメントをRSSリーダに登録する為のxml