スマートスピーカーを遊びたおす会 vol.3 - connpass https://kotodama.connpass.com/event/97273/
車載Google Homeで写真撮影堂前清隆[email protected]https://twitter.com/IIJ_doumaehttps://www.facebook.com/kdoumae1
View Slide
Idea• 運転中に「写真に撮っておきたい(あとでtweetしたい)」という場面にしばしば遭遇する• 運転中なのでカメラやスマホが操作できない• ドライブレコーダーも搭載しているが、面倒• いちいちファイルを回収するのが面倒• 長い動画から必要な場所を切り出すのが面倒• 音声操作で写真が撮れればいいじゃん!2
ConceptGoogle AssistantMobileWi-Fi(1)(2)(3)(4) Webhook (HTTPS)(5) MQTT(6) shoot(7) HTTPS(8)OK, Google.Take a Picture.Mobile Service3
[PR] IIJmio IoT Service• IIJmio IoTサービス (MVNO SIMカード)• IoT利用を想定・個人向け (クレカ支払い)https://www.iijmio.jp/mit/ 4
Experiment5
Movie6
Results• ひとまず動いた• スマホに写真が送り込まれるのは便利• 動作が遅い (タイムラグがある)• 指示→撮影 (5sec)• Google AssistantとIFTTTの反応が遅い• 音声の応答があってからWebhookが飛ぶ• 撮影→slack (15sec)• 解像度を高くしたことと、カメラの都合 (後述)7
Camera• カメラの特性• 今回使用したカメラはLogicool HD Webcam C615• FullHD・オートフォーカスなど、比較的高級• 起動直後にゲイン調整が行われる。調整前のタイミングで撮影すると、露出があっておらず真っ白/真っ黒になる。• fswebcamだとこの現象が発生する (コマンド実行してからカメラが起動される?)• 数フレームディレイさせると回避。ディレイを増やせばより画質が良くなるようだが、撮影に時間がかかるようになる。• 安物のカメラだとこういう調整が行われないので、影響が出にくい (そもそも画質が悪いが)8
Device• Google Homeじゃなくてもいい?• Google Home Mini• 電源・モバイルWi-Fiルータが必要• 音声認識は比較的良好 (それでも取りこぼしはある)• HUAWEI P10 lite (Google Assistant)• 単体で通信可能・電源不要• ラジオがかかっていると音声認識の失敗が多い• 他のデバイス• LINE Clova Friends• ペットボトルサイズでドリンクホルダーに収まる• バッテリー搭載なので電源配線なくてもOK• かわいい 9
Traffic• Google Homeの通信量• 今回の実験での通信量 20MByte程度• 音声コマンド20回、画像15枚程度• 画像が大きい(1MB強/枚)• モバイル(SIM)で利用することを考慮すると、どの程度通信が発生しているか気になる→そこで…• 自宅のGoogle Home miniで通信量を測定してみた• 車の中とは雑音の状況が異なるので、あくまで参考値10
Environment• 自宅・リビングに設置• Wi-Fi AP・ルータ・Flets回線でインターネットに接続• 用途は家電(TV・エアコン)のコントロール程度Wi-Fi AP InternetSEIL/X1tcpdumpIIJmiowithFlets11
OverviewDay1 Day2 Day3 Day4 Day5 Day6 Day75.26MB 6.04MB 6.95MB 4.64MB 4.69MB 9.09MB 9.20MBDay8 Day9 Day10 Day11 Day12 Day13 Day1411.01MB 8.89MB 7.30MB 7.68MB 9.92MB 12.87MB 10.34MB• 5分間ごとに通信量を集計∵1回のアクションが5分を超えることはない• 14日分のデータを重ね合わせ• 200KB, 400KB, 600KB…と、ピークに特徴がある(ような気がする。あくまで大雑把な感触)→1回のアクションで200KB程度通信してる?12
Detail• アクションがあった時間帯からサンプリング• 5分間に発生した通信 (約200KB)• 別の時間帯で8.8.8.8にDNS queryを投げているのも観測 (DHCPで通知されたDNSは無視する?)プロトコル 通信量 (Bytes) 通信相手ICMP 1232FCM (5228/tcp) 562 2404:6800:4008:c00::bc (tm-in-xbc.1e100.net.)FCM (5228/tcp) 2106 2404:6800:4008:c02::bc (tg-in-xbc.1e100.net.)HTTPS (443/tcp) 6458 2404:6800:4004:80a::200e (nrt12s23-in-x0e.1e100.net.)HTTPS (443/tcp) 178905 2404:6800:4004:80b::2004 (nrt20s09-in-x04.1e100.net.)HTTPS (443/tcp) 9280 2404:6800:4004:80d::200a (nrt12s17-in-x0a.1e100.net.)HTTPS (443/tcp) 2895 2404:6800:4004:80f::2003 (nrt13s49-in-x03.1e100.net.)HTTPS (443/tcp) 18577 2404:6800:4004:818::200e (nrt13s50-in-x0e.1e100.net.)FCM: Firebase Cloud Messaging13
Attention • < 50KB/5minのグラフを拡大• アクションを起こしていないときにも通信が発生していることがわかる• 5KB/5minと20KB/5minにラインが見える14
Transition• ヒートマップ風に表示してみた• 青: 15KB/5min 以下• 橙: 15KB/5min 以上 (40KB/5min以下)• Day6の2:30頃を境にアクションがない時の通信の傾向が変わっていた!• 何か挙動の変化があったと思われる15Date→Time→
Before• ~Day6 2:30(変化前)の中からサンプリング• 無アクションの時間帯、5分間に発生した通信プロトコル 通信量 (Bytes) 通信相手ICMP 1288NTP (123/UDP) 112 2001:4860:4806:c:: (time4.google.com.)FCM (5228/tcp) 594 2404:6800:4008:c00::bc (tm-in-xbc.1e100.net.)FCM (5228/tcp) 676 2404:6800:4008:c02::bc (tg-in-xbc.1e100.net.)HTTPS (443/tcp) 2863 2404:6800:4004:818::2003 (nrt13s50-in-x03.1e100.net.)16
After• Day6 2:30~(変化後)の中からサンプリング• 無アクションの時間帯、5分間に発生した通信プロトコル 通信量 (Bytes) 通信相手ICMP 1400NTP (123/UDP) 112 2001:4860:4806:c:: (time4.google.com.)FCM (5228/tcp) 384 2404:6800:4008:c00::bc (tm-in-xbc.1e100.net.)FCM (5228/tcp) 700 2404:6800:4008:c06::bc (tk-in-xbc.1e100.net.)HTTPS (443/tcp) 3407 2404:6800:4004:809::2003 (nrt20s02-in-x03.1e100.net.)HTTPS (443/tcp) 3407 2404:6800:4004:80c::2003 (nrt12s22-in-x03.1e100.net.)HTTPS (443/tcp) 3407 2404:6800:4004:80d::2003 (nrt12s17-in-x03.1e100.net.)HTTPS (443/tcp) 3407 2404:6800:4004:819::2003 (nrt13s51-in-x03.1e100.net.)HTTPS (443/tcp) 3407 2404:6800:4004:81a::2003 (nrt12s13-in-x03.1e100.net.)17
Conclusion• 車にGoogle Homeを積んでみた• 音声操作での写真撮影を試した• タイムラグは少々悩ましい• Google Homeの通信量を確認した• 1回のアクションで200KB程度通信しているのでは• アクション無しでも20KB/5min程度通信が発生する• 突然挙動が変化することもあるようだ• ストリーミング(ラジオなど)を利用する場合は当然その分の通信が発生する18