EcoFlow社のポータブル電源は管理サイトにアクセスすれば、電源の情報を取得できます。稼働記録を取るために、都度ディスプレイを見て、数値入力するなんてことは避けたいものです。
私は、寿命が長いといわれるリン酸鉄リチウム電池シリーズのRiver2商品を購入しました。サポートセンターに問い合わせたところ、Delta Miniの事例とは少し異なる様です。River2での事例として、私が確認した事例を紹介します。
Keyの取得
サポートセンターに問い合わせると、幾つかの質問に答える必要がありました。
[購入者]
・名前:
・住所:
・電話番号:
[対象商品]
・製品型名:
・シリアルナンバー:
・購入時期:
・購入店舗:
[追加情報]
・領収書の写し
・EcoFlowアプリのアカウント(メールアドレス)
使途不明な事項に回答する必要がありました。これに応答すると、サポートセンターからcurlコマンドの例文が提示されました。
コマンド応答例
$ curl -X GET \
https://api.ecoflow.com/iot-service/open/api/device/queryDeviceQuota?sn=シリアルナンバー \
-H 'Content-Type: application/json' -H 'appKey: 鍵1' -H 'secretKey: 鍵2'
{"code":"0","message":"Success","data":{"soc":72,"remainTime":1998,"wattsOutSum":9,"wattsInSum":20}}
$
上記例では、シリアルナンバー・鍵1・鍵2と表現していますが、実際は英数字列です。"code"が"0"のときは成功しているようです。スマートフォンアプリと数値比較すると、"data"の意味するところを推定できます。
key値 | value値 | 単位 |
---|---|---|
soc | 電池残量 | % |
remainTime | 残り時間 | 60で割った商が時間、余りが分 |
wattsOutSum | 消費電力 | W |
wattsInSum | 充電電力 | W |
curlコマンドからnodejsへの移植例
シェルコマンドだと問い合わせの都度プロセスが立ち上がるのが気になります。nodejsのhttpsを使えば、プロセスフォークを止めることができます。
$ node <</E
require("https").request(
"https://api.ecoflow.com/iot-service/open/api/device/queryDeviceQuota?sn=シリアルナンバー",
{headers: {"Content-Type": "application/json",
"Content-Length": "0",
"appkey": "鍵1",
"secretkey": "鍵2"}
}, _0=>{const w=[]
_0.on("data", _1=>w.push(_1))
_0.on("end", ()=>console.log(String(w)))
}).end()
/E
{"code":"0","message":"Success","data":{"soc":72,"remainTime":1998,"wattsOutSum":9,"wattsInSum":20}}
console.logは標準出力でありますので、データーベース出力に書き替える必要があるのは、言わずもがなです。