💡

Teslaという「おもちゃ」で遊んでみた

2022/12/25に公開

前置き

完全にノリで超久しぶりにアドベントカレンダーにエントリーしましたが、ネタ探しはやはり難しいです。
適切な消費カロリーがなかなか掴めないのがこの年末イベントの最も大変なポイントだといつも思います。
今年も弊社のアドベントカレンダーは珠玉のネタのオンパレードで、みなさんには是非読んで欲しいです
この記事なんかより栄養価の高いものばかりです。
https://adventar.org/calendars/7459
最終日ではあるが、特に最終日だからと言って特別なネタはありません。
タイトルの通り、テスラの話をします。

導入的なサムシング

今年Teslaというガジェットを手に入れまして、それを弄る話を少し書いとこうと思います。
株の話はしませんし、ビットコインの話もしません、なんなら車の話もしません。
なので、あえて車ではなく「ガジェット」という言葉を使わせてもらいました。

「おもちゃ」を「遊ぶ」話をします

基本今年やってみたことを浅く広く書いてみようと思います。

一応目次

データを遊んでみた

TeslaMate

https://docs.teslamate.org/docs/installation/docker/
走行データなどを記録するLoggerで、ローカルもしくはクラウドサーバーで起動して置けば、加速減速やエネルギーの消費など細かいデータまで全部見れるものです。

Localで動いてるTeaslaMate

実際の導入手順は結構簡単なので、ちょっと飛ばして違う話します。

走行データで遊ぶ


TeslaMateは車のログをPostgreSQLに入れています。

せっかく細かいデータまであるから、雑にWebAppでも作ってそれを読み込んでなんか遊び作るかなって
車を動かせばログが追加され、能動的にアクションもリアクションも取れるし、インタラクティブ性あるじゃんないですか!

というわけで、PostgreSQLだしElixir+Phoenixで雑にWebApp作って、TeslaMateのDBに繋げて大体こんなイメージで

それっぽいミッション作って、なんとなく

ただ、致命的なのは

  • ビジュアルがないからいまいち盛り上がらない…
  • TeslaMateはただのLoggerなので、常に立ち上がってる必要がある
    とりあえず動くは動く、なんか遊び作れそうな気はしています。
    最近仕事忙しいので落ち着いたらまたなんか弄ってみるつもりです。

ゲームを遊んでみた

Steamが来るらしい

この前のニュースで、次のOTAアップデートで新型のモデルSとモデルXにはSteamが追加されるみたいですが
4桁万円を超えるような代物はうちには関係ない話です。

でも、高級モデルでないけど、なんか、できそうなんですよね。

車で!

これはもう「家でやれ」の一言に尽きますが…
ただ、「できそうでできない」という気持ち悪さがどうしてもあるので、いろいろ弄ってみました。

つまり、ここで!ちゃんとしたゲームをしてみたい!

まずすぐに思いついたのは「Xbox Cloud Gaming」です
https://www.xbox.com/ja-JP/play?ranMID=24542&ranEAID=TnL5HPStwNw&ranSiteID=TnL5HPStwNw-KKRNm06qUrmTiA.LhvPvgg&epi=TnL5HPStwNw-KKRNm06qUrmTiA.LhvPvgg&irgwc=1&OCID=AID2200057_aff_7593_1243925&tduid=(ir__btlondjap0kfbh9kqfiwwls9yn2xchujnptwsh1x00)(7593)(1243925)(TnL5HPStwNw-KKRNm06qUrmTiA.LhvPvgg)()&irclickid=_btlondjap0kfbh9kqfiwwls9yn2xchujnptwsh1x00
グラボないのでやはりここはクラウドゲームですね
OSはLinuxベースだけど多分動くでしょう、とりあえずはブラウザから入ってみることにしたら、なんと

意外とあっけなくできるようになりました、箱コントローラーにもちゃんと対応しています。

ただ、画面小さいのが気になります。
ブラウザーで起動すると、どうしても画面の左半分しか使えません。

フルスクリーンで!

どうしたら、フルスクリーンにできるのか
いろいろ試してみました
そして
ブラウザでYoutubeに入ろうとすると、OS搭載のYoutubeアプリにリダイレクトされて、フルスクリーンになることに気づきました。


これは使えそうです

https://www.youtube.com/redirect?q=https://www.xbox.com/ja-jp/play
Youtubeを踏み台にXbox Cloud Gamingに飛びます

そしたらこうなって

こうなって

こうなりました

車内でXboxゲーム遊べるようになりました!

充電中や待ち合わせ時間の暇つぶしがとして新たな選択肢ができました。

APIで遊んでみた

TeslaApi

Teslaは公式のスマホアプリで車の制御いろいろできます。

実は車の情報の取得や車の制御など全部APIで実現することができます。
https://tesla-api.timdorr.com/
https://www.teslaapi.io/
↑を参考に、いろいろできそうなのが分かります

※ ただ↓

Is this API official? Absolutely not. These endpoints are a result of reverse engineering Tesla's mobile applications and vehicle software.

とりあえず5時に充電を止めたい

自宅充電で深夜1時〜5時で充電すると電気代がお得になるプラン契約しているため、
基本1時〜5時の間だけ充電したいですが、Teslaの設定では
「1時から充電開始」と「5時に充電完了」のどっちにしか設定できないため、まずこれをなんとかしたい。

POST /api/1/vehicles/{id}/command/charge_stop

これで充電止まるので、これを5時に呼ばれるように仕込んでおけばおk、簡単な話です

id

GET /api/1/vehicles

で取れるので

あとは
https://www.postman.com/
を使って

auth.tesla.com/oauth2/v3/authorize
auth.tesla.com/oauth2/v3/token

でアクセストークンを取得すれば、あとは適当なBotに5時に充電停止命令を送信するように仕込んでおけばおkです。

妄想ネタいろいろ

トランクキックセンサー

実は非公式のオリジナルパーツとしても存在するトランクキックセンサーですが
車本体の回線カスタムして、足をかざせばトランクが開くという代物です。

赤外線センサーと

POST /api/1/vehicles/{id}/command/actuate_trunk

で同じ機能を実現できるのではないのか?
試してないけど、そもそも必要ない気もしますw

オートドア(?)


こんな形しているから、暗くなるとドアハンドルが見つからないのはあるあるネタです(僕だけかも)

安い蛍光シールから高価なパワーハンドルまでいろいろソリューションがあるけど


この前のOTAアップデート(2022.36)で追加された「運転席ドアのラッチを解除」機能のAPIがあれば
手をかざせばドアが開くとかできそうな気がしますけど、スマホで↑のボタン押せば一発なのでやはり要らない気もしてます。

最後に

だらだらとここ数ヶ月テスラで遊んでみたことを書いてみましたが、皆さんいかがでしたでしょうか?
法規制などの事情でOTAアップデートで毎回いくつかの機能が日本だけオミットされ、なかなかフルパワー発揮できないテスラですが、デジタルガジェットとして結構いじり甲斐あって楽しいです。
こんな駄文で今年のアドベントカレンダーをしめるのは恐縮ですが、皆さんメリークリスマース&良いお年を!

最後に、アカツキゲームスでは一緒に働くエンジニアを募集しています。
カジュアル面談からでもぜひ!
https://hrmos.co/pages/aktsk/jobs?category=1220948640529788928

Discussion