Raspberry Pi 2で実現するスマートハウス

2017-03-30 21:48 | 技術 | § 0

Raspberry Pi 2を使った我が家の自動化システムを紹介します。
ひとり暮らしの1Kマンションでやっています。

やっていること

  • 外出時にリモコンのボタンで照明が消灯し、「いってらっしゃい」と喋る
  • 帰宅時にリモコンのボタンで照明が点灯し、「おかえりなさい」と喋る
    • リモコンのボタンを押さなくてもiPhoneの存在が検知できれば帰宅したと見なす
    • リモコンが万一機能しなくてもNFCタグのタッチで同じ事ができる
  • リモコンの[PC起動]ボタンを押すとデスクトップPC、液晶ディスプレイ、DAC(アンプ)の電源が一斉に入る
  • リモコンの[TV起動]ボタンを押すとTVチューナー、液晶ディスプレイ、DAC(アンプ)の電源が一斉に入り、自動でNHKが選局される
  • リモコンでエアコンとサーキュレーターを同時にON/OFFできる
  • 朝になると外気温と室温、湿度などを声で教えてくれる
  • 日の出・日の入り時に鐘の音を流す
  • 夜7時になるとNHKラジオの7時のニュースが流れる
  • 寝る時間が近づくと直接照明が間接照明に変わる
  • メンテナンス時にリモコンでRaspberry Piの電源を落とせる

以下で順に説明していきます。

構成

全体構成図

使っているもの

  • Raspberry Pi 2 Model B (5,500円くらい)
    • Bluetoothアダプタ
    • Wi-Fiアダプタ
  • HUIS REMOTE CONTROLLER (25,000円)
    ボタン配置をカスタマイズできる学習リモコンです
  • Philips Hue (22,464円)
    ネットワークに接続して使うAPI付きLED照明です
  • netatmo Weather Station (17,280円)
    気温や湿度を10分ごとに記録してくれるデバイスです
  • IRKit (7,700円)
    据え置きして使うAPI付き学習リモコンです
  • Bluetoothスピーカー (3,000円くらい)
  • NFCリーダー (2,605円)
  • NFCタグ (10枚入り1,319円)
  • 赤外線センサ (100円)
  • iPhone
    ※在宅検知用

プログラムは基本的にシェルスクリプトで、一部Pythonも使っています。

各機能の解説

ここからは各機能についてやっていることを説明していきます。

在宅管理

  • 外出時にリモコンのボタンで照明が消灯し、「いってらっしゃい」と喋る
  • 帰宅時にリモコンのボタンで照明が点灯し、「おかえりなさい」と喋る
    • リモコンのボタンを押さなくてもiPhoneの存在が検知できれば帰宅したと見なす
    • リモコンが万一機能しなくてもNFCタグのタッチで同じ事ができる

このシステムの目玉、在宅管理システムと照明の連動です。

我が家の照明はシーリングライト(直接照明)とPhilips Hue(間接照明)があります。外出時はどちらの照明が付いていようと強制的に消灯します。帰宅時はシーリングライトかHueのどちらかを点灯させます。夕方~夜はシーリングライト、遅い時間(寝る時間が近い場合)はHueです。

我が家のシーリングライトはリモコンに対応していなかったため、リモコンスイッチを後付けして制御可能にしました。これを付けた分天井との間に隙間が空いて地震の時などに危なっかしいです。発泡スチロールを挟んで揺れを吸収するようにしていますが、それでも不安定になるのでオススメはしません。

無理やりリモコンスイッチを挟んだシーリングライトの裏側


Raspberry PiがIRKitのAPIを叩き、IRKitからシーリングライトへON/OFF信号を送ります。Hueは直接Raspberry PiがAPIを叩いています。

シーリングライト(直接照明)のとき


Hue(間接照明)のとき

「いってらっしゃい」と喋るのはフリー素材として公開されている声データを使用しています。MP3を再生するだけです。元々はOpenJTalkで合成音声を都度生成していたのですが、我が家に来た人が「声が気持ち悪い」というので変更しました。

赤外線リモコンによる制御の実現方法はこちらの記事を、NFCタグによる制御の実現方法はこちらの記事を参照してください。

帰宅の自動検知はいつも持ち歩いているiPhoneの存在をBluetooth経由で確認することで実現しています。外出してから30分間待機して、その後ポーリング(hcitool使用)を開始し、存在が確認されたら帰宅とみなして照明を点灯します。無駄なポーリングを抑えるために待機処理は不在時のみ行います。

10秒ごとにポーリングしていて、うちの環境だとだいたい玄関の扉を開けた瞬間に検知してくれるので、暗くなった部屋に入らないで済みとても便利です。

PC周りの一斉電源ON

  • リモコンのボタンを押すとデスクトップPC、液晶ディスプレイ、DAC(アンプ)の電源が一斉に入る

液晶ディスプレイとDACは赤外線リモコンで制御できるため、IRKitに信号を学習させ、Raspberry PiからAPIを叩くようにしています。PCの電源ONはWake on Lan(WoL)を利用しています。

TV周りの一斉電源ON

  • リモコンのボタンを押すとTVチューナー、液晶ディスプレイ、DAC(アンプ)の電源が一斉に入り、自動でNHKが選局される

我が家にはTVがなく、TVチューナーと液晶ディスプレイとDACが分担してTVとして機能しています。いずれも赤外線リモコンが使えるのでIRKitに信号学習させて一斉制御しています。液晶ディスプレイもDACも外部入力が複数ありセレクター機能を備えているので、どの端子がセレクトされていようとTV用のセレクトに戻す必要があります。そのため電源を入れた後にセレクト信号を送るまで、sleepを挟みながら順番に信号を送るようにしています。

このシステムが動くまではHUISをいちいち機器に向けて複数のボタンを押していました。HUISにはマクロ機能がありますが、正確に受光口に向けないと機能しない機器があるのであまり頼りになりませんでした。

エアコン周りの一斉電源ON/OFF

  • リモコンでエアコンとサーキュレーターを同時にON/OFFできる

サーキュレーターと書いてますが実際には扇風機を使っています。エアコンも扇風機もIRKitに信号学習させています。エアコンは細かい機能を使おうとすると現在状態の管理が必要になって非常に面倒くさいのですが、我が家では全部の設定を[自動]に固定していて温度設定だけをチョコチョコいじるだけなので状態管理を入れなくてもあまり困っていません。

在宅管理と連動させていません。短い外出の場合など、必ずしもエアコンをOFFにする場合だけではないからです。

温度を声でお知らせ

  • 朝になると外気温と室温、湿度などを声で教えてくれる

OpenJTalkでメイさんが喋ってくれます。実現方法はこちらを参照してください。
cronで定時に実行されるようにしています。リモコンでもトリガーできます。不在時は起動しません。

外気温と室温の差に応じてエアコンを制御しようとしたのですが断念しました。人がやる時は今後の外出予定や今後の天気の見込みなどで判断するため、ルール化ができませんでした。

湿度に応じて加湿器を制御したいのですが、我が家にある加湿器はリモコンに非対応なので不可能でした。将来balmudaのRainを買うようなことがあればいじりたいと思います。

日の出・日の入りの管理

  • 日の出・日の入り時に鐘の音を流す

ビットラボのAPIから緯度経度に応じた日の出・日の入りの時間を取得できるので、現在時刻と比較して判定する処理を行っています。我が家のある東京だと日の出は4:20~7:00頃、日の入りは16:20~19:10頃の範囲に収まるので、処理もその間で起動する設定にしています。不在時は起動しません。

NHKラジオの再生

  • 夜7時になるとNHKラジオの7時のニュースが流れる

cronで起動させています。リモコンでトリガーを引くこともできます。不在時は起動しません。
実現方法はこちらの記事を参照してください。

リモコンのボタンを押してから再生開始・停止に数秒の時間がかかるので、リアクションとなる音を鳴らしてから再生開始・停止するようにしています。

照明の切り替え

  • 寝る時間が近づくと直接照明が間接照明に変わる

cronで起動させています。リモコンでトリガーを引くこともできます。不在時は起動しません。

リモートシャットダウン

  • メンテナンス時にリモコンでRaspberry Piの電源を落とせる

開発やメンテナンス時のための機能です。定位置に置いたり卓上に置いたり電源をON/OFFさせる必要があるときにいちいちコンソール開いてシャットダウンして……というのが面倒なのでリモコンでトリガー引けるようにしました。本当にシャットダウン中なのか分かりにくいので、認識したらまず音を鳴らしてからシャットダウン処理に入るようにしています。

そのほか

このシステム、セキュリティリスクを考慮して外部からのアクセスは受け付けていません。やるとすれば帰宅が近づくとエアコンがONになる仕組みなんかを作りたいですが、今のところ後回しになっています。

うまくやればRaspberry Pi 2に赤外線発信機能を付けてIRKitをお払い箱にできるのですが、先にIRKitを導入していて、家電をすべて制御できるベストポジションに設置してしまっているのでそのままシステムに組み込んでいます。Raspberry Pi本体の設置場所が制限を受けないのでこれはこれで満足しています。

断念したこと

在宅管理とエアコンの連動
前述の通り、短い外出の場合などで必ずしもエアコンをOFFにする場合だけではないのでルール化できませんでした。

朝になると自動でカーテンを開け、夜になると閉める
ニトリの電動カーテン(12,072円)を購入しましたが、非力すぎて満足に開け閉めできませんでした。カーテンが重いのかと思って薄くて軽いのを買ったのですけどそれでもダメだったようで、現在は家の片隅でホコリを被っています。

常に身につけているFitbit ChargeHRを帰宅判定デバイスに加える
そもそもコイツのMACアドレスをどうやって確認すればよいのか分かりません。誰か教えてください。

スマートロックの導入
まだ現在の技術では解錠に時間がかかるらしいのと、そもそも誤作動した場合どちらに転んでも困るのが確実なので見送りました。

やろうとしていること

  • 一定以上の地震を検知したらNHKラジオを再生する
  • Bluetoothリモコンでの制御
    いちいち赤外線リモコンを一定の方向に向けるのが面倒
  • Juliusを使った音声認識
    真夜中に起きたときなど、暗い中リモコンを探し回るのが面倒なので声で操作したい
  • HomeKitを使った音声認識
    いまのところ使いどころのないSiriに出番を与えたい

こんな感じで置いています

テーブルの下にダイソーで買ってきたワイヤーネットを置き、ワイヤーカゴを2つぶら下げて、Raspberry Piとスピーカーをそれぞれ収納しています。合計324円。

通信はすべて無線(Wi-Fi/Bluetooth/赤外線)なので、接続されているのは電源用USBケーブルのみです。無線だと取り回しが良くて楽ですね。

カゴから取り出すとこんな感じ。

Raspberry Pi 2の外観

Raspberry Pi 2には無線機能がないため、後付けでWi-FiアダプタとBluetoothアダプタを刺しています。NFCリーダーと合わせるとUSB端子4個中3個まで埋まってしまっています。

こちらはHUIS REMOTE CONTROLLERのボタン配置です。よく使うボタンはほぼ一画面にまとめています。

関連

Raspberry Pi 2からBluetoothでスピーカーに音を飛ばす
Raspberry Pi 2でNFCタグを読み取って音を鳴らす
Raspberry Pi 2とnetatmoで室温を声でお知らせ
Raspberry Pi 2を赤外線リモコンで操作可能にする
Raspberry Pi 2をリモコン操作してNHKラジオを聴く


Raspberry Pi 2をリモコン操作してNHKラジオを聴く

2017-03-29 21:41 | 技術 | § 0

用意するもの

  • Raspberry Pi 2 Model B
  • 赤外線リモコン

動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • RTMPDump 2.4 ※今回導入します
  • MPlayer 2.0 ※今回導入します

続きを読む »»


Raspberry Pi 2を赤外線リモコンで操作可能にする

2017-03-28 20:10 | 技術 | § 0

用意するもの

  • Raspberry Pi 2 Model B
  • 赤外線リモコン受信モジュール PL-IRM2121 (38kHz)
    ※秋月電子で100円くらい。類似品でも可
  • ジャンパワイヤ(メス~メス) 色違いで3個
  • 赤外線リモコン
    ※学習させるので赤外線の出るリモコンなら何でもOK

動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • lircd 0.9.0-pre1 ※今回導入します

続きを読む »»


Raspberry Pi 2とnetatmoで室温を声でお知らせ

2017-03-27 19:27 | 技術 | § 0

用意するもの

  • Raspberry Pi 2 Model B
  • スピーカー
  • Netatmo Weather Station

動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • Open JTalk 1.07 ※今回導入します

続きを読む »»


Raspberry Pi 2でNFCタグを読み取って音を鳴らす

2017-03-26 14:52 | 技術 | § 0

用意するもの

動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • Git 2.1.4 ※今回導入します
  • nfcpy 0.10 ※今回導入します

続きを読む »»


Raspberry Pi 2からBluetoothでスピーカーに音を飛ばす

2017-03-25 17:48 | 技術 | § 0

用意するもの

  • Raspberry Pi 2 Model B
  • Bluetoothアダプタ IODATA USB-BT40LE
  • Bluetoothスピーカー ELECOM LBT-SPP20
  • オーディオケーブル(有線接続の確認用。省略可)

動作確認環境

  • Raspbian GNU/Linux 8.0 Lite (Jessie)
  • Bluetoothd 5.23 ※今回導入します
  • PulseAudio 5.0 ※今回導入します

続きを読む »»


HUIS UI CREATORで遊んでみよう(カスタマイズ編)

2016-06-27 21:28 | 技術 | § 0

準備編でHUIS UI CREATORが使えるようになったので、早速リモコン画面をカスタマイズしてみます。

[New]をクリックして新規作成画面に移動し、中央の作業領域の何も無いところをクリックすると、左側領域で背景画像が選択できるようになります。

ui-creator-5

任意の画像を指定します。

ui-creator-6

Saveをクリックして「保存してHomeに戻る」を選択すると、すぐに同期されます。UI CREATORを終了してからHUISの接続を切断すると反映されます。

IMG_9035

追加されていますね。


カスタマイズ例です。詳細は省略します。

ui-creator-7

上半分のボタンはうちの液晶モニタ、下半分のボタンはAVアンプを学習させて割り当てています。
便利。

IMG_9033


詳しい説明はGitHubのREADMEを読みましょう。

できること、できないこと、注意が必要なことを挙げておきます。

HUIS本体で作成した画面とUI CREATORで作成した画面は別管理っぽい
HUIS本体で作った画面を直接UI CREATORで編集したり、その逆をしたりはできません(不具合?)。UI CREATOR上でボタンのコピーはできますので、既存ボタンを新規作成した画面へコピーするなどしてうまく編集しましょう。

ボタンタップ時のアクションを変更できるが、プリセットされている内容からしか選べない
UI CREATORで作ったボタンにリモコン学習したアクションを割り当てることができません。HUIS本体側で適当なボタンに一旦リモコン学習させておいて、UI CREATOR上でそれをコピーしてから編集する必要があります。

テキストのフォントサイズや位置設定が反映されない
UI CREATOR上でフォントサイズを指定しても反映されないようです。また、UI CREATOR上ではテキストがセンタリングされているのに実際には左寄せで表示されます。

フォントサイズの件は不具合っぽいので、正式リリースまでに解消されるのではないかなーと思います。


HUIS UI CREATORで遊んでみよう(準備編)

2016-06-27 21:28 | 技術 | § 0

IMG_8810

SONYの電子ペーパー式学習リモコン「HUIS REMOTE CONTROLLER」を購入しました。

HUISが他の学習リモコンに比べて優れているのは、ボタンの大きさや形をソフトウェアで自由にカスタマイズできるということ。

ただ、そのカスタマイズに必要なソフトウェア(UI CREATOR)がまだ正式にリリースされていません(8月末予定)。現時点ではプリセットされたいくつかのボタンの中から選ぶしかありません。片手落ちですね。

とは言え、UI CREATORプレビュー版のソースコードは既にGitHub上で公開されていて、環境を揃えてビルドすれば今からでも使うことができます。

GitHub: sony/huis-ui-creator
https://github.com/sony/huis-ui-creator

私にはちょっと難しくて上手くいかなかったのですけど、とある友人の協力によりビルドされたものを入手できたので、使ってみようと思います。


まず、HUIS側のソフトウェアを2.0.3にアップデートします。ちなみに6/27現在、公式で公開されている最新バージョンは2.0.2です。

アップデートファイル「update_2.0.3.dat」をダウンロードページからダウンロードします。

HUISをPCに接続すると、ストレージ「HUIS-100RC」として認識されます。

ストレージとして認識された状態

ストレージとして認識された状態

ストレージの直下にアップデートファイルを移動します。

アップデートファイルを移動した状態

アップデートファイルを移動した状態

HUIS上で、設定ボタン→システム→「アップデートする」をタップ。

IMG_9027

「アップデート」をタップ。

IMG_9028

アップデート中…

IMG_9030

アップデート完了。

IMG_9031


次に、UI Creatorのファイル一式をここからダウンロードして、ローカルに展開します。

ファイル一式でだいたい188MB程度

ファイル一式でだいたい188MB程度

huis.exeを起動します。このときHUISをPCに接続した状態にしておきます。

起動画面1

同期中画面

同期画面が一瞬出て

起動画面2

起動画面

起動が完了します。ここで[New]をクリックすると

編集画面

編集画面

リモコン画面の新規作成ができます。

準備は以上です。

HUIS UI CREATORで遊んでみよう(カスタマイズ編)へ)


[書評]面白ければなんでもあり 発行累計6000万部――とある編集の仕事目録

2016-04-08 22:29 | 書評 | § 0

面白ければなんでもあり 発行累計6000万部――とある編集の仕事目録
三木一馬
KADOKAWA (2015-12-09)
売り上げランキング: 4,784

とある魔術の禁書目録 1580万部
ソードアート・オンライン 1130万部
灼眼のシャナ 860万部
魔法科高校の劣等生 675万部
俺の妹がこんなに可愛いわけがない 500万部
アクセル・ワールド 435万部
乃木坂春香の秘密 200万部
電波女と青春男 150万部
嘘つきみーくんと壊れたまーちゃん 135万部
しにがみのバラッド。 130万部
撲殺天使ドクロちゃん 110万部
ヘヴィーオブジェクト 120万部

キャリア15年でヒット作を数多く手がけてきた売れっ子編集者の回顧録。あるいは仕事目録であり仕事術のまとめ本。ライトノベル界を牽引してきた電撃文庫の重要人物だけに、中身は非常に濃い。企画術、創作術、編集術といったノウハウ本として読めるし、創作に関係なくともビジネス本のようにも読める、あるいは一人の編集者の実績カタログでもあり、各作品の裏側を紐解いたファンブックとしても捉えることができる。

第一線でエンタテイメントに関わる人だけに、文章にグイグイ引き寄せる力がある。難しそうな話も平易に砕き、裏話を交えつつ終始興味を引くように作られてあり、著者が如何に優れた編集者であるかが分かる。

構成は何十もあるノウハウの寄せ集めなのだが、全体を通して一貫している点は「加点法でとらえる」という点で、本書中ではこのことが何度も登場する。作家の原稿を読むときも加点法で「いいね!」をたくさん付けていき、良くない点は極力伝えないという方法を採る。伝えない代わりに、良い点をさらに伸ばして書き直してもらうと、自然と良くない点は押し出されて消えてしまうという。

創作をしている人へのメッセージの中にもこの「加点法でとらえる」が出てくる。ネガティブな意見に囚われて創作意欲を無くすことは誰の得にもならない。加点法でとらえ、ネガティブ意見より何百倍、何千倍も多いポジティブな意見(売上や反響)を気にするようにして、作品を待っている人がいることを忘れないようにと語っている。また、日々の暮らしにおいても、メンタルコントロールとして「加点法」を推奨している。

創作の世界の(一ジャンルの)頂点を知る人の言葉は重い。人間業とは思えない作家のエピソードなども登場するので、この本を読んで創作する心を折られる人もいるだろうし、益々創作意欲を燃え上がらせる人もいるだろう。


[書評]「豊かさ」の誕生

2016-02-06 15:51 | 書評 | § 0

「豊かさ」の誕生(上) 成長と発展の文明史 (日経ビジネス人文庫)
ウィリアム・バーンスタイン
日本経済新聞出版社
売り上げランキング: 97,339
「豊かさ」の誕生(下) 成長と発展の文明史 (日経ビジネス人文庫)
ウィリアム・バーンスタイン
日本経済新聞出版社
売り上げランキング: 109,125

文明が急速に発展するための条件が4つあると仮説を立て、近代史に照らし合わせて検証した本。

人間の歴史上、文明が急速に発展する時代を迎えている。例えば中世の時代に何か発明をしたとしても、それが各地に広まるまでは何十年何百年とかかっていた。生産性の上昇など何年かかってもほとんどなかった。それが今では比較にならないほどの進歩になっている。この過去と現在の間で、どの地点で科学進歩のペースがアップしたのかを考えると、どうやら1830年前後に行き着くらしい。著者はそのタイミングで何があったかを思考し、その前後で文明の急速発展に必要な4要素が揃ったのではないかと仮説を立てた。

4つの条件とは、

  • 私有財産制 …財産が没収されないこと
  • 科学的合理主義 …思考が宗教に縛られないこと
  • 資本市場の発達 …資金源があること
  • 輸送と通信の発達 …低コストのインフラがあること

である。

さらに近代史を紐解き、1830年前後に至らずとも4要素が成立していた例(17世紀オランダ、18世紀英国)を取り出して、どのように4要素が揃うことになり、実際にどのような成果をもたらしたかを述べている。一方で、大国でありながら4要素が揃わず文明を牽引するほどの発展を生みだせなかった例(フランス、スペイン)を取り出して、どのように結果が開いていったかも解説している。

例えば18世紀フランスは絶対君主国家で慢性的な財政不足で、度々徳政令が出されたことから資本市場が発達しなかった。また、国内が諸侯によって細かく領地分割されており、関税や通行税がかけられていたために輸送が発達しなかった。17世紀スペインでは異端審問の嵐で、科学的合理主義はまったく望めなかった。このように近代的な文明発展の足を引っ張っていた様々な要素があり、それを克服できたのが17世紀オランダや18世紀~19世紀の英国で、世界の覇者となり得たのだった。

この本の注目すべき点は、戦争や歴史に残る革命などがあったかどうかに関わらず、国が発展するかどうかを左右するのは国の制度設計であることを示したところにある。
4要素さえ揃っていれば、二度の大戦で焦土と化したドイツであっても一貫して高い発展・経済成長ができたのだ。この点は日本も同じだ。

この本は3部構成になっており、1部と2部は各国々を例に挙げて4要素により急速発展ができたか(あるいはできなかったか)を検証している。3部ではそれらをベースとして、各地域や国家の抱える現在の問題とその未来について分析している。

著者は元々投資アドバイスの本を書いていて、ハッキリとは言わないが各国(たとえばイスラム諸国や中国)が投資見込みがあるかどうかが挙げられているので、参考になるかも知れない。

とは言え、最後の第13章では結論として「人間の歴史上この200年間はほんの一瞬であって、今のような安定した成長は今後とも続くわけでは無いだろう」と言われて冷や水をぶっかけられるので、お気を付けて。


 1 2 3 4 5 6 7 8 ... 50 51 52 Next
  • このページについて

    yagitchの日本語練習帳です。本のレビューとか技術的なメモとか。詳細≫
  • 過去の記事