既存のデバイス、あなたのオリジナルのデバイス、クラウド上の仮想リソース、あなたの家族など、様々なヒトやモノはSatellite-Kitを使ってほんの少しコードを書くことで実現することができます。

Satellite-Kitは既製品のような手軽さはないですが、その分いくらでも作り込むことができます。この記事では、ここでは、Satellite-Kitで作り込んでいった先の「すべてがつながる世界」の具体的な例をご紹介します。

既存の機器をスマート家電化できる

すでにNatureRemoシリーズやSwitchBotシリーズで実現されている領域ですが、既存の機器をSatellite-Kit上のデバイスとして定義することでActions on Google Smart Homeから操作できるスマート家電化することができます。ただし、スマート家電化するには対象の家電が何らかの方法(赤外線、BLE、Web APIなど)で操作や状態の取得ができるようになっていることが前提です。

また、標準でActions on Google Smart Homeに対応している製品であっても、デバイスの全ての機能がTraitでサポートされているとは限りません。そこがもどかしく思える場合は、メーカーから提供されているActions on Google Smart Homeの連携を利用するのをやめて自身で全て作り込んでしまえば、好きなだけTraitを盛り込むことができます。

デバイス間の状態を考慮した処理を定義できる

Satellite-Kitでデバイスを定義した場合、ローカルでデバイスのStateを保持することができます。そのため、〇〇のCommandが発動した場合、△△だったらCommandを実行し、□□だったらエラーを返す、といったデバイス間の状態を考慮した処理を定義することができます。

似たような機能として、Google Homeでも「ルーティン」という機能はありますが、基本は予め決めた処理を順に実行するのみで条件分岐などの機能はありません。**なお、Satellite-Kitで定義したデバイスと、それ以外のプラットフォーム(例えばSwitchbot)で定義されたデバイスの連携はできません。**同じユーザーアカウントに紐づくデバイスであっても、プラットフォーム間のデバイスの参照はできません。

より複雑な処理を定義できる

Commandには正しい合言葉を言わないと実行できなくするもの(pinCode)や、本当に実行するかの確認を求める機能(askNeeded)が用意されています。Satellite-Kitではこれらもサポートされているため、例えばpinCodeを活用して、合言葉が日付によって毎日・毎時変わるCommandを定義することも可能です。子供がゲームをやりすぎないようにpinCodeで意図的にコマンドを封じたり、ちょっとした算数の問題の答えがそのままpinCodeになっていたら面白いかもしれません。また、askNeedを活用して、夜間にオーディオのボリュームを一定以上にあげようとしたら、「本当にあげますか?」と確認させても良いでしょう。

オリジナルのデバイスを持ち込める

現在はRaspberry Piをはじめとして、M5StackシリーズやArduinoなど、プロトタイピング用の安価な開発キットを誰でも簡単に入手できます。Satellite-Kitであれば、こういった開発キットで作成したオリジナルデバイスもスマート家電として持ち込むことができます。上記で紹介した既存のデバイスのスマート家電化に比べ全て自身で作ることができる分、自由にTraitなどを組み込むことができるでしょう。

なんでも持ち込める。全てはあなたの発想次第

DeviceTypeという言葉から考えると家電や電子機器などが対象と思い込んでしまいますが、これらに囚われる必要はありません。例えば、家族をデバイスとして定義してOn/Off Traitを持たせるのはどうでしょうか。家族に活動量計をつけさせて寝ているか否かをOn/Offで表現すれば、あなたはオフィスにいながら、家族が起きているのか、寝ているのかをAssistant経由で知ることができます(この場合、もちろん家族を操作することはできないのでCommandはありません。あくまでもStateの更新・確認のみです)。また、Amazon EC2などのクラウドサービス上の仮想サーバをデバイスとして持ち込んで、起動、停止などを声で操作するのも面白いかもしれません。本来は仮想サーバ用途ではないですが、Reboot TraitやNetworkControl Traitなどを取り入れると、操作の幅が広がりそうですね。