Nature Remo E EVパワーステーション (EVPS) 機能開発日記

ファームウェアエンジニア中林です。先週Nature Remo Eの新機能としてEVPS (EVパワーステーション) への対応をリリースしました🎉今回の対応で、Nature RemoアプリからEVPSの操作および充放電量の確認ができるようになっています。

nature.global

本エントリでは今回のEVPS機能がNatureでどのように開発されたか、その雰囲気をお伝えしようと思います。

EVPSとは?

EVPS (Electric Vehicle Power Station) は、電気自動車の充放電設備です。ここでポイントとなるのが、電気自動車を充電できるだけでなく、家庭の電源として放電できるいわゆるV2H (Vehicle to Home) と呼ばれる機能があることです。大容量のEVバッテリーを家庭用蓄電池のように利用することができます。

なぜNatureがEVPSをやるのか

NatureではBehind The Meter (BTM) を新しい事業の軸として捉えており、太陽光 & EVが家庭のエネルギーマネジメントで重要な役割を果たすと考えています。こちらについては代表の塩出さんがエントリを書いているのでそちらも参照ください。

note.com

Nature Remo Eが発売された2019年当初よりEVPSに対応する構想はありました。そのため、Nature Remo Eでは発売前にECHONET Lite AIF認証1の電気自動車充放電器2を取得しています。昨年、Natureスマート電気で電気小売事業に参入したことで、Remo E + 電気小売を組み合わせたサービスを提供する土台が整いました。その中で次にNatureがやるべきこととして、家庭内のエネルギーマネジメントで重要な役割を担うEVPSへの対応をついに果たすこととなりました。

EVPSの調査

この時点ではEVPSに詳しいソフトウェアエンジニアが不在でした。そこでバックエンドエンジニアの北原さんとECHONET Liteの規格書3を読み込み、EVPSがどのように振る舞うかの理解を進めました。これまでに対応している蓄電池と比較すると、次の点でEVPSがより複雑です。

  1. EVとの接続確認が必要 (蓄電池は常にバッテリーがある状態だがEVPSではそうではない)
  2. EVとのコネクタによって接続確認の挙動が変わる (日本ではCHAdeMOというコネクタが主流だが欧米では違ったコネクタが主流)
  3. ECHONET Lite AppendixのRelease versionによって挙動が違う

コネクタがCHAdeMOの場合、HEMS機器側から能動的に接続確認を実施し、その後充放電可否状態を見に行かなければなりません。いずれにしても「EVとの接続確認」がキモであることは見えてきましたし、ファームウェアの変更箇所も把握することができました。しばらく規格書を読みながらSlack上であーだこーだ議論していましたが、実機の動作を見てみないことにはなんとも…という空気になりました。

f:id:tomo-wait-for-it-yuki:20211028093418p:plain
規格書を読むだけではわからないこともある

そこで、湯河原にあるスマートエナジーラボの出番です!何を隠そうNatureには多様なECHONET Lite機器を導入した夢のスマートホーム実験設備があるのです!湯河原ラボにはEVPSも設置済みだったため、湯河原ラボに行きEVPSの実機動作を確認することにしました (ソフトウェアエンジニアも現場百回なのです) 。実機での動作確認により開発は次の段階に進む、…とはなりませんでした。

開発とは関係ありませんが湯河原ラボにはレモンの木があって、冬にはたくさんレモンがなっています。冬に湯河原ラボ行ったときは収穫してきてオフィスで配るのが恒例になっています。

f:id:tomo-wait-for-it-yuki:20220211212937p:plain:w400
湯河原ラボのレモンの木

ECHONET Liteのバージョンが古い問題

導入していたEVPSはECHONET Liteのバージョンが古く、現在世の中で主流のEVPSとは大きく振る舞いが異なりそうなことがわかりました (私も北原さんも車に乗らないのでEVの充電方法が全然わからない、という問題もありましたが、そのあたりはSlackで他メンバーに色々教えてもらったのでなんとかなりました!) 。 2020年5月以降に出荷されているものは新しいバージョンに対応している、という情報を手に入れ、ひょっとしたらファームウェアアップデートでなんとかなるのでは?という淡い期待が沸きました。そこで、サポートセンターに電話で問い合わせましたが、残念ながらファームウェアのアップデートはできない、とのことでした…(北原さんが電話苦手なんだよぉ…と言いながら勇気を出して問い合わせたのに現実は非情ですね)

動作確認しようにも実機がない!困った…。Remo Eの開発ではECHONET Lite機器がなくて実験できない問題がわりと問題になりがちです。

状況を社内Slackで共有したところ、代表の塩出さんから、知人の会社でEVPSのシェアサービスやってるからちょっと貸してもらえるかも!という話が舞い込みました。こういうとき塩出さん動きがめちゃくちゃ早いので大いに助かります!

かまぼこの里編

北原さんと中林の2人でかまぼこの里へEVPSの動作確認をしにいきます。ちなみにこういう時に「旅のしおり」を作るのがNatureの風習になっています。「しおり」にはスケジュールや集合場所、持ち物、何をやるかなどまとめておきます。遠足みたいでワクワクしますね?

f:id:tomo-wait-for-it-yuki:20220211210800p:plain:w500
鈴廣かまぼこの里 EVステーションしおり

挨拶を済ませ、ECHONET Liteで会話するためのネットワーク設定をした上で実験開始です。ここで半日、実際のEVPSを相手に実機動作、特にECHONET Lite通信の挙動を中心に調べます。作業場所は普通の駐車場なので、EVPSを操作しながら社内で作業します。途中から雨が振ってきて大変でしたがRust製のツールのおかげで効率良く実機動作確認を終わらせることができました。Rustはいいぞぉ。

f:id:tomo-wait-for-it-yuki:20220211205932p:plain:w700
Rust製ツールで実機動作確認中 in かまぼこの里

実機動作を確認すると想定外のことが色々わかります。メモをSlackに雑に残して、撤収することにします。Slackに残したメモは後日まとめなおします。

f:id:tomo-wait-for-it-yuki:20220211205257p:plain:w400
かまぼこの里でおそば

北原さんは帰りにクラフトビール (箱根ビール・ピルスナー) を買ってご満悦の様子でした。中林は子どもにトミカかまぼこを買いました。大好評でした。

湯河原ラボにもEVPS新設

やはり手元に機材がないと開発が容易でははない、ということで湯河原ラボに改めて新しいEVPSを設置してもらうことになりました。

ちなみに湯河原ラボの電気配線は複数系統の太陽光発電システムを導入しており、非常に複雑になっています。そのためEVPS設置にあたり、メーカー推奨の電気配線からはかけ離れた状況であるため、ハードウェアエンジニアの神園さんが電気配線図を書いて、施工会社にお願いしなければいけない、というイベントも発生していました。半導体不足で量産管理が大変な中、開発が滞らないように対応していただいた神園さんに感謝です!

ただ、湯河原ラボにEVPSが設置できるのは早くて2ヶ月後でした。その間開発を止めるわけにもいきません! そこで登場するのがRust製のECHONET Liteツールです。こんなこともあろうかと、かまぼこの里を訪問する前にエミュレータを作るにはどういうデータが必要か、を検討しており、かまぼこの里で一通りエミュレータ用のデータを入手しておきました。 あとは北原さんの要望に合わせて段階的にEVPSエミュレータの機能を充実させていきます。

ソフトウェアのリファクタリング

Remo Eのベースとなっているソフトウェアは2年前に開発されたものです。その後の機能拡張や運用で改善が必要な部分もありました。

開発の方針として、まずユーザーに機能を提供するため、EVPSと蓄電池をまとめた最小のUIでリリースを目指すことにしました。サーバーの実装では北原さん以外のメンバーが書いた部分への修正も必要だったため、コードやドキュメントを読み解きならが機能を追加していきます。その中で、一部の機能にテストケースが不足している箇所に気づき、そこを足掛かりにします。まずテストケースを充実させ、その後テストケースを活用しながらEVPS機能を追加していきます。

サーバー側では全体としてはプラガブルに機器を追加できる設計になっており、機器追加自体は比較的容易でした。一方、アプリ側はプラガブルになっておらず、今回コードベースをリファクタリングして、プラガブルな設計に直すことで、機器を追加しやすくしています。

ファームウェアとしてはRemo Eのマイナーフィックスを継続していましたが、今回は久々のメジャー機能追加でした。ファームウェアファームウェアでコードが完全に引き継がれているわけではないので、関連するところに仕様化テストを書いて理解を深めました。Remo Eのファームウェアも細かく修正を加え、内部リリースして既存機能への影響がないことを確認します。

このままだと開発続けていくのに無理が生じる、と感じたところは、このようなタイミングで少しずつ解消を進めています。今後の開発速度を維持するためにも知見が貯まって現状に則さなくなったところは積極的に直したいところです(手つかずになっちゃっているところも多々あるので直したい…!)。

湯河原ラボで再挑戦

そんなこんなで2ヶ月が経過し、湯河原ラボに待望の新しいEVPSが設置されました!ファームウェアとしてはやることがほとんど完了していたため、主に北原さんが実機動作を確認しながら、とりあえずのアプリUIを用意して、サーバーを作り上げていきます。

f:id:tomo-wait-for-it-yuki:20220211212403p:plain:w500
湯河原ラボに新規設置されたEVPS

突然ですがこれは湯河原で食べた、いくらとろろ丼です。麦とろ童子というお店でめちゃくちゃ美味しいです。

f:id:tomo-wait-for-it-yuki:20220211212704p:plain:w400
湯河原でいくら丼

サーバー側の作り込みが完了し、アプリから大体の動作確認ができたところで、アプリチームにバトンタッチです。

アプリ

おおよその機能実装ができたあとは、モバイルアプリを作り込んでいきます。このあたりから各所との連携が増えていきます。アプリUIはデザイナーと、プレスリリースに関して広報チームと、ビジネスパートナーとのやりとりでビジネス開発担当者と、そしてユーザーと直接コミュニケーションを取るCSチームも新しい機能をきちんと案内できるように新機能を1から使い込んで開発にフィードバックします。

今回、アプリ開発ファームウェア開発も担当している亀田さんが行いました。EVPS機能開発では、亀田さん自身もデザイナーも「EVPSが何ができて、何ができないのか?どうやって使うのか」がおぼろげにしかわからない状況からのスタートでした。湯河原ラボに連日通い、手探りで実装を進めていきます。

特に苦労したのが、「接続済み」という状態です。EVPSを使用する時、EVPSコネクタをEVに挿入して「ロック」をしなければなりませんが、ECHONET LiteではEVコネクタが未接続の状態と、接続されているがロックされていない状態の区別がつきません。ここをユーザーにどうわかりやすく伝えるか、が1つのポイントでした。

EVPSコネクタが接続されていない状態から、接続状態に変わるときに、UIエレメントをどのように表示するか、は湯河原で動作を見ながら微調整しました。開発初期の段階では、最初に接続処理をしなければ、充電 / 放電といった操作ができないようにUIを隠していました。しかし、ユーザーは日頃からEVPSを使用しておりEVPSに慣れているため、丁寧に手順をなぞるよりは、できることを全部見せておくが操作できないようにしておく方が戸惑いが少ないのではないかと考え、UIを変えました。UIは今後もユーザーフィードバックを受けて良くしていきたいところです。

ところで、下はせっかく湯河原まで行ったのに開発用のMac Book Proを忘れてしまい、落ち込んでいる亀田さんです。

f:id:tomo-wait-for-it-yuki:20220211210412p:plain:w300
湯河原ラボにMac Book Proを忘れて心なしか落ち込んでいる亀田さん

おわりに

先週リリースされたEVPS機能がどのように開発されたか、その内情をお届けしました。新機能をリリースするまで、社内の様々な人に助けられたり、協力しながらわいわいと開発を進めています。NatureではNature Remo、Nature Remo E、Natureスマート電気を融合させ新しいエナジーマネジメントの体験を作りたいと思っています。一緒にわいわい開発をしてくれるエンジニアを積極的に採用しています。

herp.careers

カジュアル面談も実施していますので、Natureでの開発の雰囲気など、メンバーから直接聞いてみたい方はぜひお申し込みください。

herp.careers