みんなのケータイ

Pixel Tabletのスクリーンセーバーで自宅の電力状況をチェックしてみよう

 2年前に太陽光発電システムを自宅に導入して以来、スマホやタブレットで発電量や蓄電量、売買電などの情報を随時チェックするのが習慣になっています。

 今日は天気がいいから発電が順調だなあとか、使用量が思ったより大きいけど余計な家電を動かしてないかなあとか、楽しめたり気付きがあったりするので飽きません。

 ただ、少しだけ不満なのが、いちいちアプリを立ち上げなければ確認できないこと。家庭内の電力関係の情報を把握できるようにするデバイス「Nature Remo E」を使っていて、そのアプリ画面から見るしかありません。

家庭内の電力情報を表示する「Nature Home」アプリ

 アプリをずっと立ち上げていればいいのですが、ホルダー充電時はしばらくするとスクリーンセーバー(Daydream)に切り替わってしまいます。かといってスクリーンセーバーをオフにしてしまうのもディスプレイ的にはあまりよろしくなさそう。

 だったらスクリーンセーバーに電力情報を表示すればいいのでは? ってことで、Codexの力を借りて(というか完全に頼って)アプリを作ってみることにしました。

Pixel Tabletのスクリーンセーバー選択画面
Codexでスクリーンセーバーを作ってみることに

 電力関連の情報を取得する方法は我が家では2通り。1つは外部APIを利用するもの。もう1つは自宅の太陽光発電システムが対応しているECHONET Liteという通信規格に則って直接データを取得するというものです。

 1つ目については、Nature製品のユーザー(開発者)向けにAPIが無料提供されているので、それを使います。自宅の太陽光発電システムの発電量、蓄電・放電量、売買電量などを取得でき、宅内で使っている電力はそれらの情報から計算して算出できます。

APIが開発者向けに提供されている
APIを使えるようにするためトークンを取得

 ただし、頻繁にアクセスできないよう5分間に30回までという制約があります。最大でも平均10秒に1回、という計算です。ネットワーク負荷をあまりかけないように、ということを考えると30秒に1回くらいに抑えておきたいところ。しかしそれだと画面の変化が乏しくなって実用性も若干落ちてしまいます。

 そこでECHONET Liteのデータを使う方法も組み合わせます。この場合は売買電量が取得できないので、そこだけNature RemoのAPIを使いますが、他の情報取得には大きな制約はないので頻繁に通信してもOK。とはいえ、やはりこちらもエコな運用にしたいので10秒に1回としました。

ECHONET Liteのデータを取得できるかどうかをまずテスト

 これで電力関係の情報を取得して、Pixel Tabletをホルダーにセットしたときのスクリーンセーバー画面に表示できます。けれども、単純に文字で情報表示するだけだとつまらない!

 なので、家っぽいグラフィックを追加することにしました。2Dイラストだと面白味がないので3D化するためにThree.jsを使い、ぐるぐる視点を変えられるようにしたうえで、時間帯に応じて明るさや影が変化するように。晴れた日の夕方は夕焼けに染まり、夜はライトアップされるようにしました。

Three.jsを使った自宅風3D CG。時間帯に応じて見た目が変わる

 ついでに電気の流れが分かるようにアニメーションさせて、電力の推移は別途グラフ表示。あと天気も分かった方がいいかなと思い、外部APIを使って現在の天気と1週間予報を配置。だったら3D画面にもそれっぽい演出を入れた方がいいよね、ってことで現在の天候に沿って晴れ、曇り、雨、雪などのグラフィックに切り替わるようにしました。

天気に合わせた演出も

 最後に、風向きも知りたいなあと思い、屋根の上にでっぷり太ったニワトリの風見鶏を追加して、だいたい完成。作っていくうちにどんどん欲望が膨れ上がってしまいましたが、他の仕事をしながら片手間に作業して7~8時間といったところでした。さすがGPT-6 Astra(中)さんです。

風見鶏を屋根に取り付けた
いろいろ設定を変えられるように

 よく考えるとディスプレイを守るための「スクリーンセーバー」にはなっていないので、もう少し工夫した方が良さそうですが、こうやって自分の欲しいものをすぐに作れる時代になったのはすごいし、ありがたい。

 それとともに、今回で言えばThree.jsや各種APIなど、自分にとって新しい技術・知識に気軽に触れられるのも素晴らしいこと。さらに既存資産(IoT機器など)を最大限に活用できるようにする手段としても、AIコーディングはとても有用ではないかな、と思ったりするのでした。