Nature Remo E liteで自宅の電力使用量をスプレッドシートへ記録

## はじめに
格安電力会社に変更したら電力使用量を確認できる表示が無かったため、Nature Remo E lite とGoogleAppsScript (以降 GAS)で自作した記録です。

(2025-03-19 追記) 積算電力のオーバーフローの処理に必要な値を追加。

## 使用機材
・Nature Remo E lite https://amzn.to/3TNQi3n


## 1.電力メーター情報発信サービス（Bルートサービス）への申請
[Bルート認証ID、パスワードを取得したい](https://remoe-support.nature.global/hc/ja/articles/11587684205593)


## 2.Nature Remo E lite のセットアップ
[Nature Remo E / E lite セットアップマニュアル(初期設定方法)](https://remoe-support.nature.global/hc/ja/articles/11587279441561-Nature-Remo-E-E-lite-%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB-%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95)


## 3.Nature Cloud APIへのアクセストークンを取得

[Oauth2を通してアクセストークンを取得する](https://developer.nature.global/#oauth2)
>自分のアクセストークンは、http://home.nature.global より新規発行や失効することができます。

## 4.スプレッドシートを開き、電力データ収録するGASを作成
「拡張機能」「Apps Script」でGAS作成。
途中でエラーが起きても大丈夫なよう、スプレッドシートへの書き込みは最後にまとめてやる。

``` javascript:NatureRemoE.gs

function getMyHousePower() {

  //Nature Cloud APIへのアクセストークン
  let accessToken = '***************';

  //Nature Remo Cloud APIへリクエスト送り取得したJSONデータを変数に格納
  let params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}
  };
  let requestUrl = 'https://api.nature.global/1/appliances';
  
  let response = UrlFetchApp.fetch(requestUrl, params);
  let json = JSON.parse(response.getContentText());

  //Google Sheetのシート名を取得（Google Sheetのシート名がデフォルトの"シート1"の場合）
  let book = SpreadsheetApp.getActiveSpreadsheet();
  let sheet1Data = book.getSheetByName("シート1");


  //現在の日時を取得
  let date = new Date();
  let val_time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');


  //APIから取得したJSON形式のデータから積算電力と瞬間電力の値を取得
  let val_power1 = 0
  let val_power1_unit = 0
  let val_power2 = 0
  let effective_digits = 0;
  
  for(let i = 0 ; i < json[0]["smart_meter"]["echonetlite_properties"]["length"] ; i++ ){
  
    if(json[0]["smart_meter"]["echonetlite_properties"][i]["name"] == "normal_direction_cumulative_electric_energy" ){
      val_power1 = json[0]["smart_meter"]["echonetlite_properties"][i]["val"];
    }

    if(json[0]["smart_meter"]["echonetlite_properties"][i]["name"] == "cumulative_electric_energy_unit" ){
      val_power1_unit = json[0]["smart_meter"]["echonetlite_properties"][i]["val"];
    }

    if(json[0]["smart_meter"]["echonetlite_properties"][i]["name"] == "measured_instantaneous" ){
      val_power2 = json[0]["smart_meter"]["echonetlite_properties"][i]["val"];
    }

    if(json[0]["smart_meter"]["echonetlite_properties"][i]["name"] == "cumulative_electric_energy_effective_digits" ){
      effective_digits = json[0]["smart_meter"]["echonetlite_properties"][i]["val"];
    )
    
  }


  //ここから　書き込み処理
  //Google Sheetの2行目に行を挿入する
  sheet1Data.insertRows(2,1);

  //2行目1列目に現在の日時を入力
  sheet1Data.getRange(2,1).setValue(val_time);
 
  //積算電力の単位をkWhに変換して2行目2列目に入力
  sheet1Data.getRange(2, 2).setValue(val_power1 *( 0.1 ** val_power1_unit) );  
  
  //瞬間電力の単位はWなのでそのまま2行目3列目に入力  
  sheet1Data.getRange(2, 3).setValue(val_power2);  

  //積算電力のオーバーフロー数をkWhに変換して2行目4列目に入力  
  sheet1Data.getRange(2, 4).setValue(10**effective_digits *( 0.1 ** val_power1_unit) ); 
  
}
 

```

## 5. GASを定期的に実行するため、トリガーを設定

「拡張機能」「AppsScript」「トリガー」で「トリガーを追加」し、イベントのソースを”時間主導型”、時間ベースのタイプを"分ベースのタイマー”、時間の間隔を”30分おき”に設定する。


## 追記
スプレッドシートのグラフで満足できなければ https://lookerstudio.google.com を使う。




## 参考
https://qiita.com/t-chi/items/01b9a9b98fbccef880c3