LoginSignup
2
0

More than 1 year has passed since last update.

ポータブル電源 EcoFlow River2 MaxをAPIで情報取得する

Last updated at Posted at 2023-06-05

 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は標準出力でありますので、データーベース出力に書き替える必要があるのは、言わずもがなです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0