RaspberryPiでスマートホーム 〜赤外線リモコンでエアコン操作 その3〜

エアコンのコマンドを組み立ててUSB赤外線リモコンアドバンス用ファイルを出力。そのファイルを使ってbto_advanced_USBIR_cmdコマンドでエアコンを操作できるようになりました。

次は以前作った自作のスマートホームシステムに組み込みます。

受信側

ラズパイ側の受信プログラムを修正します。リソース”aircon”の追加です。

他の機器と違うところはコマンドファイルを生成するという処理が間に入ります。生成した後は同じように”ir.sh”で送信します。

あと、複数のコマンドを一度に受け付けられるように、受信するJSONに”extras”という配列を追加しています。これは冷房をつける場合に、”電源をつける”、”モードを冷房にする”、という2つのコマンドを同時に送信できるようにするためです。

上記のJSONを受け取ると

python daikin.py --power on --mode cold

を実行します。

送信側

次は送信側です。Javascript版とAlexaのスマートホームスキル版を作ってましたので、それらを修正します。

Javascript

こちらは簡単です。HTMLファイルにエアコン関係のコマンドを増やします。

こんだけ。

Alexaスマートホーム

こちらはAWSのLambdaの修正になります。が、色々と問題があります…

Alexaのスマートホームスキルには〇〇Controllerという名前でいろんな家電を操作するための機能インターフェースがあります。簡単に言うと”操作するために使える言葉”という感じでしょうか。

例えば電源のオンオフはPowerControllerを使って実現しています。スマートスキルにはThermostatControllerという温度を設定するためのインターフェースも用意されているのですが、日本語に対応してないため日本では使えません。

汎用的なインターフェースであるPercentageControllerは日本語でも使えそうですが、最後に”パーセントにして”とつけないと駄目っぽいかんじ。つまり温度を25℃にするためには…

 

アレクサ、エアコンを25パーセントにして。

 

一言だけど面倒くさいのと、ちょっと違和感が…我慢してこれで行くか、カスタムスキルを併用するか…

という訳で電源のオンオフはすぐにでもできますが、温度・風量・タイマーといった機能がそのままでは無理そうです。どうしたものか。

とりあえず電源だけ対応させます。”エアコン”、”暖房”、”冷房”の3つを追加しました。Discoveryデータを追加したのと、endpointが”暖房”、”冷房”の時はmodeコマンドも合わせて送るようにしてます。

”暖房をつけて”、”冷房をつけて”はそれぞれ電源をオンと同時にモードを切り替えます。”エアコンをつけて”は前回のモードで電源が入ります。

続く…