Nature Remo E用のGem作った
2021/01/11
Nature Remo E / E lite用のAPIクライアント用のGemを作った。E liteでしか動作確認していないけど、Eでも使えるはず。
作った理由
- 単純にGemを作ってみたかった
- Nature RemoのGemは既に存在しているが、スマートメーターの値だけを取るだけなのにコードが長くなってしまうので、それ専用にGemを作ってコードを短くしたかった。
コードを短くすることができた具体例
【Nature Remo E lite】瞬時電力計測値をAmbientでグラフ化するで書いたコード
Before
require 'dotenv/load'
require 'nature_remo'
require 'ruby-ambient'
client = NatureRemo::Client.new(ENV['NATURE_REMO_API_TOKEN'])
response = client.appliances
appliances = JSON.parse(response.body, symbolize_names: true)
el_smart_meter = appliances.find { |appliance| appliance[:type] == 'EL_SMART_METER' }
echonetlite_properties = el_smart_meter[:smart_meter][:echonetlite_properties].each_with_object({}) do |echonetlite_property, hash|
hash[echonetlite_property[:name].to_sym] = echonetlite_property[:val].to_i
end
ambient = Ambient.new(ENV['AMBIENT_CHANNEL_ID'], write_key: ENV['AMBIENT_WRITE_KEY'])
ambient.send({ d1: echonetlite_properties[:measured_instantaneous] })
After
require 'dotenv/load'
require 'nature_remo_e'
require 'ruby-ambient'
client = NatureRemoE::Client.new(ENV['NATURE_REMO_API_TOKEN'])
ambient = Ambient.new(ENV['AMBIENT_CHANNEL_ID'], write_key: ENV['AMBIENT_WRITE_KEY'])
ambient.send({ d1: client.measured_instantaneous })
できること
- ECHONETプロパティ全てをHashクラスで取得できる
- ECHONETプロパティを個別に取得できる
名前 | プロパティ |
---|---|
normal_direction_cumulative_electric_energy | 積算電力量計測値(正方向) |
reverse_direction_cumulative_electric_energy | 積算電力量計測値(逆方向) |
coefficient | 係数 |
cumulative_electric_energy_unit | 積算電力量単位 |
cumulative_electric_energy_effective_digits | 積算電力量有効桁数 |
measured_instantaneous | 瞬時電力計測値 |
この名前はNature社が独自に命名したもので、将来的に変わる可能性があるとのこと。
使い方
変更があるかもしれないので、正確な使い方はREADME.mdへ。
Gemのインストール
$ gem install nature_remo_e
コード
require 'nature_remo_e'
client = NatureRemoE::Client.new('token')
client.echonetlite_properties
#=> {
# :coefficient=>1,
# :cumulative_electric_energy_effective_digits=>6,
# :normal_direction_cumulative_electric_energy=>36039,
# :cumulative_electric_energy_unit=>1,
# :reverse_direction_cumulative_electric_energy=>10,
# :measured_instantaneous=>630
# }
client.coefficient
#=> 1
client.cumulative_electric_energy_effective_digits
#=> 6
client.normal_direction_cumulative_electric_energy
#=> 36039
client.cumulative_electric_energy_unit
#=> 1
client.reverse_direction_cumulative_electric_energy
#=> 10
client.measured_instantaneous
#=> 630
残タスク
最低限のものしか実装していないので未完成の状態である。
現時点で思いつくのは以下の2つ。
- 例外処理
- 積算電力量の取得