fhcの宣伝とhomekit解説

62
ソソソソソソソ ソソソソソソソソソソソソソソソソ 、。 ソソソソソソソソソソソソソソソソソソソソソソソソソソソ ソソソソ rti ソソソソソソソソソソソソソソソソソソソソ C++ ソソソソソソソソ PHP ソソソソソソソソソソI‘m CEO,Bitch! https://rti-giken.jp/

Upload: hiroyuki-fujie

Post on 05-Apr-2017

608 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: FHCの宣伝とhomekit解説

ソフト屋さんと、ネット屋さんとかをしていました。アーキテクトという肩書きで雑用係をやっていました。現在は、独立して rti 技研という会社をやっています。好きな言語は C++ サーバサイドでは PHP のお手軽さが好きです。I‘m CEO,Bitch!       https://rti-giken.jp/

自己紹介

Page 2: FHCの宣伝とhomekit解説

フューチャーホームコントローラー

Page 3: FHCの宣伝とhomekit解説

手に何も持たないハンズフリーの音声認識を提供します。手ぶらの音声認識を提供します。言葉でしゃべるだけです。

マイクまで 1m ~ 2m 程度の距離でも動作します。マイクを部屋の中央におけば全部をカバーします。

Page 4: FHCの宣伝とhomekit解説

リモコンに勝たないと意味が無いリモコンを使った家電操作

スマホを使った家電操作

フューチャーホームコントローラーを利用した操作

リモコンを手に取る ボタンを押す 涼しくなる

スマホを手に取る ロック解除・アプリ起動 クリックするか、スマホに話しかける 涼しくなる

「コンピュータ、エアコンつけて」という 涼しくなる

Page 5: FHCの宣伝とhomekit解説

スマートフォンから「も」操作することもできます。

Page 6: FHCの宣伝とhomekit解説

開発時の取材・掲載

取材・掲載

Page 7: FHCの宣伝とhomekit解説

マルチデバイス HTML5 対応

スマホPC

Page 8: FHCの宣伝とhomekit解説

設定はブラウザから簡単にできます。

Page 9: FHCの宣伝とhomekit解説

・非インターネットの環境でも動く

・雑音が多い場所でも 認識するアルゴリズムを開発

・誤動作を起こしにくいアルゴリズムを開発

・ arm でも動作する身軽さ

オープンソースをベースに開発した音声認識エンジン

Page 10: FHCの宣伝とhomekit解説

いろいろなリモコンを学習できる賢い学習リモコンエンジン

Page 11: FHCの宣伝とhomekit解説

フューチャーホームコントローラー

Page 12: FHCの宣伝とhomekit解説

様々なカスタマイズ

Page 13: FHCの宣伝とhomekit解説

ユーザ : スマートウォッチ Pebble 連携

http://www.nicovideo.jp/watch/sm20654023

Page 14: FHCの宣伝とhomekit解説

ユーザ : vim から家電操作

http://www.youtube.com/watch?v=Uqm8sYyzwO8

Page 15: FHCの宣伝とhomekit解説

ユーザ :Ring と連動

Page 16: FHCの宣伝とhomekit解説

ユーザ : 認識単語を呪文で家を操作

Page 17: FHCの宣伝とhomekit解説

私の作品 : 家 mount

ls -la /mnt/drwxr-xr-x 5 root root 0 1 月 1 1970 .drwxr-xr-x 23 root root 4096 12 月 8 15:39 ..drwxr-xr-x 7 root root 0 1 月 1 1970 エアコンdrwxr-xr-x 4 root root 0 1 月 1 1970 照明drwxr-xr-x 4 root root 0 1 月 1 1970 扇風機

Page 18: FHCの宣伝とhomekit解説

体の不自由な方の介護機器として

Page 19: FHCの宣伝とhomekit解説

V8(javascript) で機能を拡張できます。 ( 上級者向け機能 )

ブラウザから javascript で、家をプログラミングすることができます。

Page 20: FHCの宣伝とhomekit解説

フューチャーホームコントローラー

Page 21: FHCの宣伝とhomekit解説

音声認識のホームコントローラー FHC 2017/1/31 までキャンペーン価格で提供中https://rti-giken.jp/ 定価 : 36800 円

Page 22: FHCの宣伝とhomekit解説

直売の他、秋葉原の愛三電機で展示販売中

Page 23: FHCの宣伝とhomekit解説

FHC の話は去年も話したので、今年は、少し別の話を。

Page 24: FHCの宣伝とhomekit解説
Page 25: FHCの宣伝とhomekit解説

Homekit

Page 26: FHCの宣伝とhomekit解説

ios homekit 解析のお話

Page 27: FHCの宣伝とhomekit解説

オープンソース homekit 実装例JavaScript HAP-NodeJS(homebrigde) Lisence:apache2.0

C++ Personal-HomeKit-HAP Lisence:mit

Java HAP-Java Lisence:mit

Page 28: FHCの宣伝とhomekit解説

オープンソース homekit 実装例JavaScript HAP-NodeJS(homebrigde) Lisence:apache2.0

C++ Personal-HomeKit-HAP Lisence:mit

Java HAP-Java Lisence:mit

Page 29: FHCの宣伝とhomekit解説

C++で書かれているPersonal-HomeKit-HAP は、ライブラリとして可能性がある。ライセンスもMITだし。ただし・・・

Page 30: FHCの宣伝とhomekit解説

多少問題があるソースコードはとりあえず書いた感じかなあ。・一度停止して再実行できない作り。・そこそこのメモリリークがある。・バッファオーバーランしそうな実装がある。・ Un*x でしか動かない。

Page 31: FHCの宣伝とhomekit解説

これはやばい

Page 32: FHCの宣伝とhomekit解説

と、いうことで、全部修正しました。https://github.com/etwmc/Personal-HomeKit-HAP/pull/64

(ソースコードの作り以外全部直した)

Page 33: FHCの宣伝とhomekit解説

https://github.com/rti7743/Personal-HomeKit-HAP

・再突入性の保証( 停止 -> スタート -> 停止 -> スタート可能 )・メモリーリークの排除・バッファオーバーランの排除・ windows 対応( ソースコードの作りは、 書き直すしかないので、あきらめましょう。 )

これで大丈夫。安心です。

Page 34: FHCの宣伝とhomekit解説

https://github.com/rti7743/Personal-HomeKit-HAP

これであなたのプログラムもhomekit(siri) で操作できます。

Page 35: FHCの宣伝とhomekit解説

やったね。

Page 36: FHCの宣伝とhomekit解説

やったね。

Page 37: FHCの宣伝とhomekit解説

さて、せっかくなので、homekit プロトコル説明

Page 38: FHCの宣伝とhomekit解説

homekit プロトコル1 Bonjour (mDNS) で端末検索↓2 相手端末の IP と port を特定↓3 http みたいなプロトコルで端末間通信( 暗号は SRP chacha20 Poly1305 などで実現 )↓4 最終的に json 形式でデータをやり取り

Page 39: FHCの宣伝とhomekit解説

1. Bonjour (mDNS) で端末検索Linux( オープンソース ) だと avahi( あばひ ) という実装がある。実装としては、DNS の srv レコードとか txt レコードで情報のやり取りをします。

Page 40: FHCの宣伝とhomekit解説

2. 相手端末の IP と port を特定$avahi-browse -a+ eth0 IPv4 rti ___ MacBook Air _smb._tcp local+ eth0 IPv4 rti ___ MacBook Air _rfb._tcp local+ eth0 IPv4 FHC _hap._tcp local+ eth0 IPv4 fhc _ssh._tcp local+ eth0 IPv4 fhc _udisks-ssh._tcp local+ eth0 IPv4 fhc [7c:66:9d:48:b4:28] _workstation._tcp local+ eth0 IPv4 raspberrypi [b8:27:eb:b4:3a:ad] _workstation._tcp local+ eth0 IPv4 raspberrypi _udisks-ssh._tcp local...

Page 41: FHCの宣伝とhomekit解説

3. http みたいなプロトコルで端末間通信( 暗号は SRP chacha20 Poly1305 などで実現 )

あまり詳しくないが、 chacha20-Poly1305 は、 RFC7539 で定義らしい。これら暗号化はあの djb 大先生が提唱されているっぽい。

Page 42: FHCの宣伝とhomekit解説

4. 最終的に json でやり取りPUT /characteristics HTTP/1.1Host: FHC._hap._tcp.localContent-Length: 78Content-Type: application/hap+json

{"characteristics":[{"aid":3,"iid":9,"ev":true},{"aid":3,"iid":10,"ev":true}]}

Page 43: FHCの宣伝とhomekit解説

homekit プロトコル1 Bonjour (mDNS) で端末検索↓2 相手端末の IP と port を特定↓3 http みたいなプロトコルで端末間通信( 暗号は SRP chacha20 Poly1305 などで実現 )↓4 最終的に json 形式でデータをやり取り

Page 44: FHCの宣伝とhomekit解説

Homekit データ構造説明

Page 45: FHCの宣伝とhomekit解説

homekit データ構造Accessory ( 扇風機 )

Service (serviceType_fan)Characteristics( 名前 charType_serviceName)Characteristics( モデル名 charType_modelName)...Characteristics( 電源 ON/OFF charType_on)Characteristics( ファンスピード

charType_rotationSpeed)... それがどういう特性をもっているのか書いていく

Page 46: FHCの宣伝とhomekit解説

ようするに、こういうことだなstruct FAN{

bool On; // 電源 ON/OFF

std::string Name; // 名前std::string Model; // モデル名int RotationSpeed // ファンスピード

};

windows でいう activeX(COM) モデルを見ているようだ。

Page 47: FHCの宣伝とhomekit解説

サービスによって必要な特性が違うHAP-NodeJS HomeKitTypes.js を見た方が早いService.Fan = function(displayName, subtype) { Service.call(this, displayName, '00000040-0000-1000-8000-0026BB765291', subtype);

// Required Characteristics this.addCharacteristic(Characteristic.On);

// Optional Characteristics this.addOptionalCharacteristic(Characteristic.RotationDirection); this.addOptionalCharacteristic(Characteristic.RotationSpeed); this.addOptionalCharacteristic(Characteristic.Name);};

Page 48: FHCの宣伝とhomekit解説

変なモデルを送ると、登録時に無視されたり、消せないアクセサリーができたりといろいろ変なことが起きる。

Page 49: FHCの宣伝とhomekit解説

バグったらここで初期化できるよ

Page 50: FHCの宣伝とhomekit解説

安心です

Page 51: FHCの宣伝とhomekit解説

間違ってもiosは壊れないのでいろいろやって遊びましょう。

Page 52: FHCの宣伝とhomekit解説

homekit 課題

Page 53: FHCの宣伝とhomekit解説

string 型の扱いが難しいテレビのチャンネル切り替えが実装できないっぽい

int 型で 10ch にとかいうのは不可能ではないらしいが、テキスト型で 千葉テレビにして というのは無理っぽい。

Page 54: FHCの宣伝とhomekit解説

UI 的な課題ON/OFF 以上のことをしようとすると UI 的に詰む。( 今のところあるのは長押しで、スピード調整等の int 型を操作だけ? )

Page 55: FHCの宣伝とhomekit解説

Apple らしい好意的に見れば、シンプル悪意的に見れば、単機能( マウスのボタンが1 つしかなかった apple らしい )

Page 56: FHCの宣伝とhomekit解説

それでも、面白い機能であるのでいろいろ遊んでみましょう

Page 57: FHCの宣伝とhomekit解説

・オリジナルhttps://github.com/etwmc/Personal-HomeKit-HAP・修正版 (pull request がなかなかマージされないので )https://github.com/rti7743/Personal-HomeKit-HAP

Personal-HomeKit-HAP

Page 58: FHCの宣伝とhomekit解説

To apple's executives.If you have any problems, please buy us.

I will keep it very cheap. :)

Page 59: FHCの宣伝とhomekit解説

最後にもう一度 宣伝

Page 60: FHCの宣伝とhomekit解説

フューチャーホームコントローラー

Page 61: FHCの宣伝とhomekit解説

直売の他、秋葉原の愛三電機で展示販売中

Page 62: FHCの宣伝とhomekit解説

音声認識のホームコントローラー FHC 2017/1/31 までキャンペーン価格で提供中https://rti-giken.jp/ 定価 : 36800 円