Future Home Contorller の Homebridge対応ハック


FutureHomeControllerをHomekit(siri)に対応させる追加プログラムを作成しました。
このプログラムを設定すると、iphone取り出して、hey,siri 電気消して で、電気が消えます。
https://github.com/rti7743/homebridge-fhc

npmモジュール化したので、以下で入ります。
npm install -g homebridge-fhc

platformsとして実装したので、導入は簡単です。
こういう設定を書くだけで、FHCに登録されているすべての家電を利用できます。

"platforms": [
     {
         "platform" : "FHC",
         "name" : "FHC",
         "apikey" : "<<APIKEY>>",
         "host" : "http://127.0.0.1"
     }
]

ただ、HomeKitでの細かい処理の定義の書き方がよくわからないので、
今のところ基本的にできることは、ON/OFFだけです。


こんな風にすると、自由なキーワードが取れそうですが、残念ながら取れません。

statusService
.addCharacteristic(KeyCharacteristic)
.on('get', this._getKey.bind(this))
.on('set', this._setKey.bind(this));

function makeKeyCharacteristic() {
	KeyCharacteristic = function() {
		Characteristic.call(this, 'Key', '2A6FD4DE-8103-4E58-BDAC-25835CD006BD');
		this.setProps({
			format: Characteristic.Formats.STRING,
			unit: Characteristic.Units.NONE,
			//maxValue: 10,
			//minValue: -10,
			//minStep: 1,
			perms: [Characteristic.Perms.READ, Characteristic.Perms.WRITE, Characteristic.Perms.NOTIFY]
		});
		this.value = this.getDefaultValue();
	};

	util.inherits(KeyCharacteristic, Characteristic);
}

テレビとかのチャンネル切り替えとかはどうやっているのか未だによくわかりません。
samsungtv 対応のルーチンがあるのですが、 chunnel切替とかを真似してみたが、どうもなにか違うらしい。
https://github.com/CONNCTED/homebridge-samsungtv

このあたり、うまくできている方は、やり方をぜひ教えて下さい。
どうやれば、ON/OFF以外の、チャンネル切り替えとかのような操作ができるのでしょうか?
テレ東にして!とか、緑ボタン押して!とかやりたいです。


また、HomeKitのためだけにnodejsを動かすのはサーバリソース的にもったいない!
ということで探してみると、 HAPのC++の実装もあるみたいですね・・・動くかどうかはわからないですけど。
https://github.com/etwmc/Personal-HomeKit-HAP

HomeKitは、端末を探すのに Bonjourで、
イベントの送信には、魔改造したHTTP+Chacha20+なんかいろいろ やっていてEVENT/1.0 200 OKとかで通信する感じ?


そもそも、Chacha20ってなんだよ。チャチャなんて赤ずきんチャチャぐらいしか知らない。
仕方ないので、検索してみると、「新しいTLSの暗号方式ChaCha20-Poly1305 - ぼちぼち日記」というところでChacha20とかについて解説されている。

HomeKitには、いろいろと新しい技術がふんだんに使われていそう。
この実装とその理解は難しそうです。