アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

センサーが追加されたのでHap-node JSを最新にアップデート

○Hap-Node JSのアップデート

前回、ここでHap-node JSにセンサー類が無かったため、Occupancy Sensorを作って適当に使ってましたが、最近 Motion Sensorが追加されたのでそちらを使いたいと思います。

私の場合、accessoriesディレクトリ以外は触っていないので、こんな感じで強制的に最新にしました。

// 自分のaccessoriesディレクトリの退避
> mv accessories accesories_org

> sudo rm -R persist
> git reset --hard origin/master
> sudo npm rebuild
> sudo npm update <--これがないとHap-node JSが起動しなかった。

// 自分のaccessoriesディレクトリの復活
> cp accessories accessories_new
> mv accesories_org accessories


○Motion Sensorの変更

さて、MotionSensorの方も普通に温度センサーと同じようにTimeIntervalが使えるみたいで、ポーリングで定期的にモニターしておくと常に最新の情報をHomeKitの方に通知することができます。

私の場合は以下のように変更しました。

ここに参考になりそうなサンプルコードがあります。


var MOTION_SENSOR_CORE = {
number: id,
device: device,
room: room,
motionDetected: false,
getStatus: function() {
//set the boolean here, this will be returned to the device
MOTION_SENSOR_CORE.motionDetected =
Boolean(remote.getDetection(MOTION_SENSOR_CORE.room));
},
identify: function() {
console.log("Identify the motion sensor!");
}
}

.....中略.....

setInterval(function() {

if(MOTION_SENSOR_CORE.motionDetected !=Boolean(remote.getDetection(MOTION_SENSOR_CORE.room))){
MOTION_SENSOR_CORE.getStatus();
console.log("Motion sensor(" + MOTION_SENSOR_CORE.room + ") updated status to: " + MOTION_SENSOR_CORE.motionDetected);
motionSensor
.getService(Service.MotionSensor)
.setCharacteristic(Characteristic.MotionDetected, MOTION_SENSOR_CORE.motionDetected);
}
}, 10000);



○ホームアプリ側の変更

あとは、ホームアプリ側でセンサーの通知を許可する必要があります。
Motion Sensorを長押しします。

IMG_0108.PNG

以下のように設定画面が出てくるので、「状況と通知」を選択。

IMG_0109.PNG

以下の画面で「通知を許可」をONにします。

IMG_0110.PNG

そうすると普通に外にいる状態でも以下のようにMotion Sensorの通知が届くようになります。

IMG_0107.PNG


○ホームハブの設定

ここにも書いてありますが、iPad または Apple TV(第4世代) をホームハブとして設定して、HomeKitアクセサリを自動化し、iOS デバイスからリモートコントロールすることができます。

私自身はApple TV(第3世代)とiPadを持っており、今までApple TVを常時ONの状態にしてハブの役割を担っていましたが、オートメーションに興味があって、iPadの方に移行しました。

ちなみに、Apple TVの方はiCloudをサインオフしてハブ機能を使われないようにしないと登録デバイスが全て見えなくなるというおかしな現象が起きました。


iPadをハブにすると以下のようなオートメーションが使えるようになりましたが・・・既に組み込んでいる機能もあって特につかっていませんがそのうち使うかもしれません。

IMG_0111.PNG




Siriに「おはよう」「行ってきます」と言って家電コントロール

あけましておめでとうございます。

ところで「ホーム」アプリのシーン作成がかなり便利なので、イメージを掴んで貰うために設定メニューのスクリーンショットと動画をとってみました。

ここに記載されていますが、簡単に申しますと「おはよう」と言った時に動かしたいデバイスを設定できるわけです。


○設定メニュー

私の場合、各部屋で以下のようなデバイスがコントロールできるようになってます。

IMG_0023.PNG
IMG_0024.PNG
IMG_0025.PNG

以下のように「おはよう」というシーンでリビングのライトをONするように設定することができます。

IMG_0021.PNG

ちなみに以下は、「行ってきます」というシーンにセキュリティーモードをONする設定をしています。
(このモードは私の自作でONにすると、ONの状態の家電を全てOFFして、セキュリティー状態に入るモードです。)

IMG_0022.PNG



○動画






ちなみに英語で言ってみるとこんな感じ。









ホームアプリその後・・・人感センサー(OccupancySensor)に対応

最近、Hap-NoeJSを使って人感センサーを追加しました。

参考までにHap-NodeJSというのは一言でいうと以下の通りで、Homekitのアクセサリサーバーを立ち上げることができ、工夫次第でそのサーバー経由で色んなデバイス繋げて、iPhoneから制御ができてしまうというマニアックだけど素晴らしいツールです。

"HAP-NodeJS is a Node.js implementation of HomeKit Accessory Server."

ちなみに今、Hap-NodeJSの中では最近サポートされつつあるIP-Cameraがホットな話題になっていて、私も待ち遠しい限りです。

話を元に戻します。

AppleからリリースされているHomeKitもIP-Cameraが追加されたりなど日々デバイスが追加されていて、知らない間にOccupancySensor(人感センサー)が追加されていたので、早速Xbeeシステムに繋げてみました。

使い方は至ってシンプルで、以下のようなサービスの登録して終了です。
(TempSensorのサンプルコードを見ると参考になると思います。)

os
.addService(Service.OccupancySensor)
.getCharacteristic(Characteristic.OccupancyDetected)
.on('get', function(callback) {
callback(null,OccupancySensor_CORE.getDetection());
});


ホームアプリを確認すると人を検知しましたと表示されます。

IMG_1273.jpg


ただし、ホームアプリを開かないとHapNodeJSからデバイスにアクセスしに行かないので有効かどうかは微妙なところです。

あと、私のApple TVが第三世代であるため、外部からアクセスできない時があります

勝手な想像ですが、おそらくこんな感じだと思います。

1) 内部ネットワークからホームアプリを立ち上げれば、第三世代のApple TVを叩き起こすことができる。
2) 第三世代のApple TVでは外部ネットーワークから起こすことができないので、スリープ設定にしておくとスリープ時には外部ネットワークからアクセスできない場合がある。

とはいえ、第四世代はSPDIFがなく、AVアンプに光オーディオで音楽を流して使っている私にとっては踏ん切れないところがあります。

もうすこし、第三世代で色々調査してみます。







iOS10にアップデート、ホーム機能が中々良い

早速、一般的ではない「Home」を使うためにiOS10にしました。

ちなみにHomeというのはiOS10で追加されたHomeKitで制御できるデバイスを手軽にコントロールするアプリです。詳細はここを参照してください。


○何が良いかというと、以下のような感じ

1) Apple TVがHubとなるため、別のApple Deviceで(Siriからもホームからも)家電制御ができる。

2) 家以外の外部からでも家電制御ができる。


それ以外にも近づいたらスイッチを入れるというようなことがオートメーションという機能で設定ができるらしいのですが、まだ試せてません。(AppleTVの第四世代と書いてあったので、私が持っている第三世代ではできないかもしれません。)


○手順
アプリはHomeKit Catalogを使い、サーバー側はHAP-NodeJSを使います。


1) HomeKit Catalogのソースコードをここからダウンロード。

2) Xcode 8をApp Storeからダウンロード。

3) HomeKit Catalogをコンパイル。やり方はここを見てください。
DEVELOPER ACCOUNTは必要ありません。

4) Hap-NodeJS + Xbeeシステムを動かす。(Persistディレクトリを削除して再起動)

5) HomeKit Catalogを開いて、デバイスの登録して完了。



○追加したデバイス
こちらがHomeKit Catalog上で見えるデバイス。

IMG_1128.jpg

こちらがホームで見えるデバイス。

IMG_1129.jpg




○デモ動画
参考までに動画もアップしておきます。

iPhoneでリビングとワークルームのデバイスを制御した後に、iPadで同じデバイスを制御するようにしています。




こちらはWiFiを切り、外部からテレビ・ライトをコントロールするデモです。




Home Kitを使ってSiriで家電をコントロール その2 - 部屋の指定

前回、HomeKitでLiving RoomやBed Roomといった部屋がSiriで認識しないと申しましたが・・・間違いでした。

認識するようです。。。。。。ただし英語で。

ここにその手の記事を見つけ、同じようにしたらちゃんと動きました。


"Turn on the living room light"と言えば、ちゃんとリビングルームのライトだけをOnできました。

ちなみに日本語では、未だにやり方がわからずダメみたいです。



Home Kitを使ってSiriで家電をコントロール

Home Kitというのをご存知ですか?

iOS8から家電を制御するために組み込まれた機構です。

SiriProxyが使えなくなってから早1年。

どうしたものかと思っていたら、Appleからこーゆーアプローチで去年リリースされました。

それを、また有志の凄腕プログラマーが、HAP-NodeJSというHome Kit SeverとiPhone側のHome Kitデモアプリを公開してくれてます。

それを我が家のXbeeシステムに組みこまれたRaspberry PiとiPhoneに組み込んでSiriを使ってみるとこんな感じです。



ちなみにデバイスは以下のように割り当ててます。

1) リビングにあるファンとライト
2) キッチンにあるライト

本来、HomeKitではRoom, Zoneという概念があり、その空間あるデバイスを一まとめにすることができて、「リビングの電気消して」というとリビングにあるライト、ファンの家電を消すことができます。

だけど、今のバージョンではリビング・ベッドルームが認識しません。
(HomeKit側の問題とHAP-NodeJSのBugの方に書いてありました。)

ただ、面白いことにキッチン(台所)は認識します。

あと、Thermostatが認識しません。。。というか・・日本語で何と呼べば良いのか良くわかりません。
部屋自体は、Xbeeでエアコンも制御できているので、早く追加したいところです。









<< 前へ    
検索
検索語句
記事ランキング
最新記事
×

この広告は30日以上新しい記事の更新がないブログに表示されております。